With Sun's recent announcement that they are planning on freeing Java under the GPL and Adobe's decision to open source the Actionscript Virtual Machine, I thought it would be good to take a look at other open source Rich Internet Application solutions. One of the most famous is Gnash, a GNU Flash movie player. I talked with Rob Savoye, the lead developer on the project, about what Gnash is and what the goals for this implementation for open source Flash are. If you are interested in trying it out, you can download Gnash here, and Rob said a new release is expected very soon.
Update: Gnash has a new release available on the Gnash homepage.1. Can you talk a bit about the history of the Gnash project?
Gnash started life as GameSWF. GameSWF was a public domain Flash player project that I did some work on for a customer (I'm a consultant and contract programmer) about a year and a half ago. I didn't think much of it until one day John Gilmore asked if I'd make it a plugin for Firefox. I thought about that for a few months while I was busy doing Katrina relief work (I'm a search and rescue volunteer), and when I came back, I decided a free Flash plugin was a good thing. The maintainer of GameSWF had zero interest in a more actively developed project, so I forked GameSWF and made it into Gnash. Much of the GameSWF code has been rewritten to support new features and other improvements, but it was a good code base to start with. At this point in time, Gnash is substantially different than GameSWF.2. How many developers contribute to the project?
Right now Gnash has several of us that are working on Gnash full time, and many more are contributing part-time. Being a free software project, we find we get contributions of code, patches, bug fixes, and user testing from the community. While there are probably about 6 core developers, we feel there are many more people all helping make Gnash into a better Flash player.3. What are the goals of the Gnash project?
Well, our primary goal is to make a high quality Flash player, because the free software community needs one. I don't think we're trying to compete with Adobe at all. Now my personal interest as a long time embedded systems engineer is to see Gnash running on small devices, like smart phones, PDAs, etc... because Flash is a good graphical environment for UI developers. I've also seen a huge amount of support in the consumer electronics industry that endorses this idea as well. I think it's highly likely you'll start seeing devices shipping later this year with Gnash inside.
At the same time, many people want to use Gnash as a browser plugin, so we spend a lot of time improving functionality in Gnash to play random Flash movies off the net. So in the long run, we will wind up with a fully compliant Flash player at the v9 level.4. How does Adobe's announcement that they are open sourcing the ActionScript Virtual Machine affect the Gnash project?
I seriously doubt it. We already have a good VM in Gnash, and we've already implemented most of the ActionScript classes. As we won't be using Tamarin, there really isn't anyway we could contribute. They're welcome to steal code from us though if they don't mind the GPL. :-)6. What features does the current version of Gnash support?
We support a large chunk of ActionScript2 classes, and Flash v7 movies. There is some support for v8 starting to get added as it's not very difference from v7. Although streaming video currently works in CVS, it's not fully functional yet. I find that Gnash plays the majority of web pages Flash ads (unfortunately), and many movies randomly grabbed from the net. Many of us are using Gnash as our only Flash player without much trouble.7. What is the near term roadmap for Gnash? What are you planning to implement in the next couple of versions?
The next release will be out any day now... and includes much better support for web page navigation using Flash, sound works, and you can cross compile Gnash and run it on your PDA. This release will also include a much higher performance 2D backend using AntiGrain, as often OpenGL is overkill, and many embedded targets only have a framebuffer.
The next release will have full streaming video support, more improvements for embedded targets, and will support Gnash "plugins" to add custom ActionScript classes, or extend Gnash much like Firefox supports extensions. This will enable Flash to become more of a general purpose scripting language than it is now, as it's possible to write wrappers for any development library much like Perl or Python supports.
Following that, v9 support finally lands on the TODO list, probably coming out sometime next summer. Our focus is currently more on making a higher performance Flash player, fixing existing compatibility issues with the commercial player, and refactoring of Gnash internally to support the new features we want to add.8. What distros does Gnash run on?
Most all of them. :-) Currently Gnash is available for all the BSD variants, most GNU/Linux distributions, and the embedded versions of Debian. I don't really check that often, but it's also available with Fedora and Ubuntu. For anyone on a BSD platform, or running on a 64 bit architecture, Gnash is their *only* option for Flash.9. The SWF SDK is only available under a license that forbids development of an alternate player. How do you work around that?
We use Ming to generate Flash movies for testing purposes, plus collect Flash movies off the net. Now that Adobe has donated code to Mozilla, we hope they'll publically support the creation of other free Flash players, like they supported other free PDF or Postscript viewers. If anyone that uses the Flash IDE can't work on any Flash technology, then I doubt the Mozilla team will find there will be no comm unity involvement. Finding engineers that haven't purchased the SDK is very difficult, which I'm sure is the purpose of this clause in the license. It turns out it's actually unenforceable in many countries.
If Adobe is truly supportive of open source, they should publically announce there is no problem for Gnash developers to use the Flash IDE. Otherwise, I think that even Mozilla developers can't use the Flash IDE to work with Tamarin. So in this case their donated software isn't really free of issues for developers.10. If Adobe become consistent in releasing the Linux version of the Flash Player, does that make Gnash less important?
I don't believe so. For one thing, Gnash supports more platforms than Adobe's player. Adobe is moving in a direction of bigger and better with Flex or Apollo. Gnash is moving in the opposite direction, smaller, more portable, and flexible. It's important that the free software community has it's own Flash player, just like we need a browser, office software, etc…11. Are you planning to still support SWF 8, or will you go right to SWF 9?
We're slowly implementing v8 features. Most of v8 were internal changes in the Macromedia Flash player. Our main use of Tamarin will be to see what the new opcodes are, and the other differences between v8 and v9 so we can implement them. In the embedded world, the version of the player is much less important as the movie will likely be tailored to the player.12. Have you looked at implementing SWF 9? Will it require a rewrite of the code in Gnash so far? Do you plan to incorporate the open AVM?
To start, the open AVM is a tiny subset of what is needed for v9. It doesn't even cover all the classes used by the Flash player. Gnash already has support for all the classes in Tamarin, so there really isn't any reason to use it as is.
The Adobe v9 player has two VMs inside, one for v9, and the other for older movies. I personally think this is a design mistake. Our plans are to extend the Gnash VM to handle any Flash version. I have enough experience with VM design that I'm not that worried about it based on my initial research.13. Since Gnash has become one of the Free Software Foundation's high priority projects, have you seen an uptake in interest on the part of both users and developers?
Oh yes. Having the support of the FSF is very useful, because it encourages people to contribute. And it's user contributions that really help make a project like Gnash a successful project.
A big thanks to Rob for taking the time to talk with me and answering my questions.