mozilla

Category Archives popcorn maker

Popcorn Maker 0.2

Popcorn Maker has hit the 0.2 milestone.

Popcorn Maker will empower everyone to make interactive video for the web. Read about the vision and our roadmapping efforts. If you want to help out, have a look at the open tickets in Lighthouse.

Happy 0.2 Birthday, Dave

Last week, the Popcorn team wrapped the 0.2 milestone toward Popcorn Maker, cheekily codenamed Ghostbusters. (This made for a great release party, with a special screening of the movie and a Stay Puft-themed cake).

This release encompassed 104 tickets, which is pretty intense. Major props to Bob Richter, Jon Buckley, Scott Downe, Chris, Dave, and the rest of the CDOT crew. And this is just getting started.

Because this is a release focused on rewriting Popcorn Maker’s foundations, we’ve skipped deployment for 0.2. But you can play around with the new UI in a sandbox here. And you can also check out the changelog.

What’s new?

A lot has changed. I’ll call out 4 things in particular:

1. Stronger software foundations

Butter is the software development kit for Popcorn Maker and other Popcorn-powered web apps. In the past, Butter was tucked into the Popcorn Maker app, which loaded HTML templates in an iframe and communicated with them in a somewhat unreliable way.

We want the foundations of Popcorn Maker to be strong. So we’ve re-factored Butter to live inside user templates. This makes for much more elegant code and reliable interactions.

A cool side effect of this is that any page can be turned into a Popcorn Maker template by simply including butter.js.

2. New and improved UI

Popcorn Maker UI, version 0.1

Popcorn Maker UI, version 0.2

Because Popcorn Maker is a WYSIWYG tool, it’s important that users have as much screen real estate as possible to visualize their projects.

So we’ve shrunk the tray to the smallest practical size. It’s 25% thinner than before. And we’ve moved the playhead to the status bar, so you have access to the whole timeline even when the tray is minimized.

We’ve added a layer of polish all around—lots and lots of nice touches. Track events are now distinguished by color and have more pleasing regions for moving and stretching. Track events are now selectable, which will pave the way for multiple event selection, copy+paste, and undo operations. In all, this makes the app feel much more tangible, and approaching the level of polish you’d expect in a native app.

3. Droppable regions

Popcorn events are now drag-n-droppable.

Popcorn Maker now lets your drop a Popcorn event (say, a map) directly onto the page target.

This is a small change that will make the app many times more usable. We’ll be introducing an even nicer “Add Popcorn” flow in the next release. And we’ll be exploring other drag-and-drop concepts over the year (like dropping a video into the page to upload).

4. Accounts and saving

Thanks to Cornfield—the Popcorn server—this is the first Popcorn Maker release with server-side project storage. We have initial support for creating accounts with BrowserID and saving project data to the cloud.

Cornfield needs to be made more secure, so we have no public demo just yet. But if you’re inclined, you can clone Butter and Cornfield and test this locally.

Next up: 0.3, “Breakfast Club.”

This month, we’ll be rolling up all this work into a version of the app that will stand on its own. The 0.3 release, codenamed Breakfast Club, should be approachable by users and enable top-to-bottom project creation, saving, and publishing.

This release will introduce a temporary template loader that will tide us over between now and June, when we stand up a proper Django backend.

It will be a big challenge to coordinate all these things—Butter, Cornfield, the template loader, templates and documentation. But Popcorn Maker is getting more real—and more powerful—every day. Exciting stuff.

Roadmap Popcorn Maker 1.0

Roadmap for Popcorn 1.0

We are hard at work on Popcorn Maker.

Currently at version 0.1, Popcorn Maker is a little crufty. But Popcorn Maker 1.0 will hit hard in November of this year.

Popcorn Maker 1.0 will empower you to make cool web-based media, whether you’re a beginner or pro. With over 20 plugins—ranging from Twitter to Google Maps to video processing—you’ll be able to stitch up a stylish video that’s “woven” into the web. And, of course, it’s 100% free and open source.

Users will be able to publish and share their creations on their blog, Twitter, or Tumblr (or just grab the code). And the app will reward them for learning more advanced HTML, CSS, and Javascript skills.

When it hits critical mass, Popcorn Maker will be an engine for community innovation in open video.

I blogged about the Popcorn Maker vision in July of last year. Since then, it’s moved to the center of the Foundation’s “Maker” strategy for 2012.

Roadmapping

Last week—thanks to four intense, caffeine-fueled days—the project team arrived at a pretty solid roadmap and vision for Popcorn Maker. Our issue tracker also includes several hundred new/reassigned bugs, mapped against cheeky code names for each release. (We’ve chosen a blockbuster movie motif, so look forward to 0.2 Ghostbusters, 0.3 Breakfast Club, 0.4 Top Gun, 0.5 Pulp Fiction, 0.6 Terminator, 0.7 Amelie, 0.8 Rushmore, 0.9 Wrath of Khan, and finally, 1.0—Matrix.)

What’s new? A heightened level of ambition, matched with increased rigor to get it done.

Starting in 0.7, you'll be able to embed a viral Popcorn player on third-party sites.

Importantly, we’ve developed a working theory of how Popcorn can become a webmaking virus, which Brett Gaylor has blogged about here.

All of this is reflected in a shiny vision document, which is a work in progress (we’ll share next week). We’ve hashed out some user stories, gotten granular on the technical challenges, and imagined how the UI/UX might work. We need to kick the tires a bit before we’re confident in both the user stories and the roadmap, but we’re close.

We’d love to have your feedback in our Lighthouse issue tracker. (And, as always, we’d love to hear your template ideas! Feel free to create a ticket and let us know what’s on your mind.)

Here’s a look at some of our thinking.

Editor UI

Most users will experience the app as a special editor tray that sits on top of the project you’re working on (Popcorn Maker is a WYSIWYG tool). We need to get the editor UI/UX right. It needs to be compact but not constraining.

We’re moving event editors to the tray (in lieu of floating windows) and making it more intuitive to add Popcorn events to a page (just drag and drop onto the page target).

To make the app more versatile, we’ll offer a simple CSS editor UI to change your styles, without isolating you too much from the actual CSS:

Popcorn Gallery

The life-force of Popcorn Maker will be the Popcorn Gallery, which will let contributors share templates that others can build on. Call it the “WordPress.org effect.”

Plugins

You can use any popcorn.js plugin in Popcorn Maker. Even write your own.

Last but not least—plugins. Popcorn.js plugins are what make Popcorn Maker magic. We’re currently planning on supporting the following plugins, each with a pleasing editor UI (these are subject to change): Image, Video, Webpage, Wikipedia, Attribution, Media control, Apply class, Google map, Open Street Map, Chroma, Video effects, 3D object, Processing, WordRiver, PDF, DocumentCloud, Twitter, Facebook graph, Flickr.

One of the coolest things about Popcorn Maker, though, is that it will support every Popcorn.js plugin through a default editor. And plugin authors can create editor UIs for their plugins. In other words, the project is intentionally modular, so the Popcorn.js community can help us build out the functionality of the app.

As the community grows, the app becomes more powerful.

Seriously. Check out Seriously.js, then read that again.

Roadmap—want to help?

It’s going to be a hard sprint. But it’s super plausible, especially with Bobby Richter, Dave Humphrey, and the brilliant students of Seneca’s CDOT at the wheel. Here’s our roadmap, which will likely change a bit before we freeze it this month. Want to help? Join #popcorn in irc.mozilla.org, or join our mailing list.

Buffy slays Twilight:how to make pop-up video mayhem

Remember those awesome pop-up videos on VH1? Thanks to Mozilla Popcorn, the new HTML5 tool for supercharging web video, the pop-up format is about to get a whole new lease on life.

Exhibit A: this wicked “Buffy the Vampire Slayer vs. Edward from Twilight” remix, created by the mash-up maestro from Rebellious Pixels. Check it out here. Then get started making your own pop-up video here.

“Hacking pop culture”

First posted in its original form in 2009, the “Buffy vs. Edward” remix video has garnered over 4 million views, been subtitled into 30 languages, and received media attention from NPR radio to Vanity Fair (“Buffy Could Kick Edward Cullen’s Precious Sparkly Emo Ass“).

The new Mozilla Popcorn-powered “pop-up” version adds a new interactive layer over top, with added annotations, commentary, and tips on protecting yourself from real-life stalkers.

The video’s creator, “pop culture hacker” Jonathan McIntosh, says the remix is all about hacking gender roles and Hollywood cultural coding — a theme he’s explored in other projects like the hilarious “Gendered Advertising Remixer,” now also available in HTML5 format.

 

Create your own pop-up video with Mozilla Popcorn

Want to add annotations and pop-ups to your own videos? Popcorn Maker is designed to make the power of Mozilla Popcorn more accessible to non-developers and mere mortals. Popcorn Maker’s “pop-up video” template makes it (fairly) easy for you to add annotations and context to just about any video on the web.

The software is still in early alpha version, so there’s still lots of rough edges. But you can check it out and get started now. Just pick “Pop Video” from the “Choose a Template” menu. Or have a look at the Popcorn Maker user manual here.

Popcorn Maker 0.1

After my recent stint in Europe for the Mozilla Festival and MozCamp I had the opportunity to reflect on the development environment of Popcorn Maker, courtesy of the 8 hour flight from Berlin to New York. The result is a version of Popcorn Maker which can be proudly labeled as 0.1, and very friendly to developers.

 

History Lesson: Butter

Butter Butter was an initial exploration of making a GUI for producers hoping to use popcorn.js for their projects. The app enjoyed some success, but it was eclipsed by the need to expand the app in different directions, which I have written about previously. Like most promising experiments, it needed to be rewritten to be the powerful app we hoped it would become.

Consequently, there was a lot of discussion about how to engineer the experience which was to become Popcorn Maker, which Brett and Ben detailed in their post, Designing the Popcorn Maker. In short, the current goal is to create a web app which encompasses the same ideas as Butter, but makes traditional content producers (usually of the film persuasion) comfortable by drawing memes from other popular pieces of software. However, a functioning web app is only a piece of the puzzle, since harnessing community involvement is a very powerful concept. Eventually, users will be able to use Popcorn Maker like they use WordPress – by downloading and installing the app on a machine of their choice – but with unique sharing capabilities and editing opportunities, like publishing your popcornizedtm template which might be a remix of something like a youtube video page.

Require Saves The Day

Butter - Popcorn Maker The subsequent struggle to design an acceptable user experience and its contention with pace of development and fluctuating feature requests hasn’t offered the opportunity for Popcorn Maker’s codebase to settle. As a result, Popcorn Maker’s developers have had to suffer through a poor debugging experience and a sub-optimal development environment.

Now, that has all changed. Some geniune thinking time and my recent exploits inside Paladin with James Burke, the creator of require.js, has changed Popcorn Maker for the better – for developer and users alike.

Using require.js, I was able to split up Butter’s core and constituent modules into several files respectively. require’s module system makes this process natural and provides a method for producing dependency chains. So, Butter’s core relies on the existence of several smaller modules like Media, Track, and TrackEvent, while Butter’s Timeline module depends on some of the same (plus some others). In other words, dependency chains let a module rely on other modules which may be already shared amongst others still. Of course, this is nothing new to traditional developers who get to use #import to solve a similar problem.

Now, developers are able to isolate and fix bugs without involving a compilation process every time they make a change (since Butter is best suited as a library inside of Popcorn Maker).

Onward: To 0.1

Popcorn Maker + Butter Setup Since Popcorn Maker is an app that wraps Butter, developers can contribute from several perspectives:

  • Popcorn Maker: developing the app itself (UI, storage, exporting, etc.)
  • Templates: building general-purpose Butter templates to let users jump into editing a powerful popcorn experience quickly
  • Editors: providing html-based editors for popcorn plugins which would benefit from specific UI (e.g. Google Maps)
  • Butter: enhancing the core of Butter to fix bugs or provide better functionality or compatibility (standards like to change)

The beauty of the approach we’ve taken in 0.1 is that these elements are as decoupled as possible because they are actually separate require projects. Then, it’s no problem at all to have them share components, and they can depend on each other to provide a nice unidirectional development flow.

Part of the magic is a pattern which James has worked on that circumvents the data-main attribute traditionally attached to a require.js script tag. Instead, a script like this is referenced (in this case, butter.previewer.js):

(function () {
    // Stub for has function.
    function has() {
        return true;
    }

    if ( has( 'source-config' ) ) {
        // Get the location of the butter source.
        // The last script tag should be the butter source
        // tag since in dev, it will be a blocking script tag,
        // so latest tag is the one for this script.
        var scripts = document.getElementsByTagName( 'script' ),
        path = scripts[scripts.length - 1].src;
        path = path.split( '/' );
        path.pop();
        path = path.join( '/' ) + '/';

        document.write( '<script src="' +
          path +
          '../../external/require/require.js"></' +
          'script>' );

        document.write('<script>' +
          '(function(){' +
          'var ctx = require.config({ ' +
            'baseUrl: "' + path + '../",' +
            'context: "butter.previewer",' +
            'paths: {' +
              // Paths are relative to baseUrl; Notice the commas!
            '}' +
          '});' +
          'ctx(["previewer/previewer"])' +
          '})()' +
        '</script>');
    }

    var ButterTemplate = function() {
      if ( !ButterTemplate.__waiting ) {
        ButterTemplate.__waiting = [];
      } //if
      ButterTemplate.__waiting.push( arguments );
    }; //ButterTemplate

    if ( !window.ButterTemplate ) {
      window.ButterTemplate = ButterTemplate;
    } //if

}());

This pattern, which writes its own require.js-specific script tag when necessary (when not compiled), takes advantage of require contexts (returned from a call to require.config()), and is easily generalized. In fact, it’s used to load event editors, and butter itself. In other words, Butter (and Popcorn Maker, by extension) contains several require projects, each of which can be compiled to provide a minified version. Butter is actually a collection of libraries which can be included independently to provide functionality specific to things like Templates or Event Editors.

So, to create a simple Butter Template, all you need is this:

<html>
  <head>
    <script src="../../lib/popcorn/popcorn.js"></script>
    <script src="../../lib/popcorn/popcorn.subtitle.js"></script>
    <script src="../../butter/src/previewer/butter.previewer.js"></script>
    <script>
      /* Uncomment to provide custom functionality
        ButterTemplate(function() {
          // namespace has loaded; create your custom template here
        });
      */
    </script>
  </head>
  <body>
    <div id="main" data-butter="media"></div>
    <div id="subtitle-container" data-butter="target"></div>
  </body>
</html>

Similarly, to create an Event Editor, you need this:

<html>
  <head>
    <script src="../../lib/popcorn/popcorn.js"></script>
    <script src="../../lib/popcorn/popcorn.subtitle.js"></script>
    <script src="../../butter/src/previewer/butter.previewer.js"></script>
    <script>
      /* Uncomment to provide custom functionality
        ButterTemplate(function() {
          // namespace has loaded; create your custom template here
        });
      */
    </script>
  </head>
  <body>
    <div id="main" data-butter="media"></div>
    <div id="subtitle-container" data-butter="target"></div>
  </body>
</html>

Finally, Butter can be imported in the same way (in Popcorn Maker, for example):

<html>
  <head>
    <title>Popcorn Maker</title>
    <script type="text/javascript" src="lib/require/require.js"></script>
    <script type="text/javascript" src="butter/src/butter.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
  </head>
</html>

Notice the extra require inclusion here, which is necessary only because Popcorn Maker is also a require.js project. This way butter.js does not depend on Popcorn Maker to include require.js, and every layer of the project can be nicely compiled.

To reiterate, the very best part is that there is no need to re-compile Butter if a change needs to be made. require.js will let us compile the project only when we want to distribute it.

Enjoy

So, have a look at the app at mozillapopcorn.org/maker(on Monday), or clone the source for yourself to see what you can do locally. As always, reporting bugs is paramount, and is worth almost as much as fixing them. Check out our 0.1 milestone on our lighthouse project, where you’ll almost certainly find a plethora of things to do.

Article source: http://robothaus.org/blog/blog/2011/11/24/popcornmaker-0-dot-1-for-the-developers/

What we made at Mozfest

We’ve had a week to reflect on the explosion of creativity that was Mozilla’s Media, Freedom and the Web festival (MozFest). The festival marked the launch of Popcorn 1.0, and the alpha version of Popcorn Maker. We also partnered with the National Film Board of Canada to premiere One Millionth Tower, a documentary film made entirely in WebGL, using Popcorn as the event system. David Humphrey has written a great writeup on his impressions on the festival, I’d encourage you to read it. Meanwhile, on this blog, I wanted to round up some of the early press reactions, as well as a few links to demos that were made at the fest.

Popcorn.js @ Mozilla Fest 2011

David Humphrey and Brett Gaylor announce Popcorn 1.0 at Mozfest

The Press

From the front page of Wired.com (Nov 5):
“The makers of the new film One Millionth Tower reinvented the documentary format…. The resulting film is unlike any before it.

One Millionth Tower, which is premiering on Wired.com the same day it premieres at the Mozilla Festival in London, is not just a static story recorded on film and then edited together for audiences…. Everything is triggered by [Mozilla's] Popcorn.js, which acts like a conductor signaling which instruments play at what times.

Webmonkey: Mozilla Reinvents Web Video With Popcorn 1.0
“Video on the web has always been a bit disappointing. After all, it’s pretty much just like television, only smaller. Unlike the rest of the web, video is just as much a passive experience in your browser as it is anywhere else.

Mozilla would like to change that.

Gizmodo: Here’s How You Make a Documentary Only Using HTML5 and WebGL

One Millionth Tower makes specific use of a Javascript tool called [Mozilla] Popcorn, which was designed to integrate web APIs into online video. What director Katerina Cizek did was utilize Popcorn to control the movement of the video frame, having it effectively behave like a video camera.”

Boing Boing: A documentary built with WebGL and other open standards

Damn cool.” –Cory Doctorow

TechCrunch: Mozilla Festival salutes more Popcorn and less developer-ghetto

Emmy-award winning filmmaker Kat Cizek described herself as ‘super-chuffed’ when she came on stage to present the world’s first HTML5 film at #mozfest. It was the world premiere of ‘One Millionth Tower’, a documentary that works like the web itself: ever-changing, updated by the minute.

The film was developed with the help of Popcorn.js, Mozilla’s recently launched JavaScript library that works similarly to the hypertext principle in seamlessly mashing up online video with virtually anything online – the most obvious examples would be Wikipedia, Flickr or Twitter. It turns film into a more semantic experience, allowing for more dynamic and interaction.

“We can’t just think about interaction at the end but need it from the beginning to create a conversation between the filmmaker and the audience,” agreed the students involved in the development of Popcorn. “This kind of storytelling is just getting started.”

The New York Times:
One new technology launched and then workshopped at MozFest was Popcorn.js, a library of video augmentation tools that makes it straightforward to overlay content layers per the time signatures in digital video. The Popcorn.js workshop developers took little more five minutes to produce their Web version of popup videos.

The demos

The biggest thrill was seeing the largest gathering of popcorn developers ever assemble roll up their sleeves. There were many new faces, as well, such as the developers from RAMP, who came to the festival to launch their recent foray into popcorn development. Much of what was made over the 2 days is impossible to capture – new connections, new ideas, the start of many projects. A few demos stood out, however, and were showcased at the “closing circle” of the festival:

Popcorn.js @ Mozilla Fest 2011

Popcorn Remote


A great showcase of having popcorn content play simultaneously on 2 screens – imagine a television show with related content on your tablet. Created by the CDOT crew: David Seifreid, Jon Buckley, Christopher DeCairos, Scott Downe.

Popcorn Colour Tracker

Berto Yanez made a great demo showing the possibilities of tracking a colour within a video element, and inserting HTML into this colour.

The Pirate Bay “Augumentary”
With help from the Popcorn community, filmmaker Simon Klose realized a proof of concept for his upcoming documentary “The Pirate Bay – Away From Keyboard” in which related content appears in a sidebar.

See you at next year’s Mozfest!

(photos CC BY-NC-SA by Jonathan Mcintosh)

Get Email updates on Popcorn and Mozilla

Follow and Tweet

Please wait while our updates load

If you can't wait - check out what we've been tweeting

/

Connect with Mozilla