Two approaches to Flash

Two approaches to Flash
The free software community has two independent projects working toward the implementation of a free Flash player: Gnash and swfdec. There has been some talk recently about these two projects, their goals, their accomplishments, and whether it makes sense to have them both. In an effort to bring more light to the situation, LWN held a conversation with the principal developers of both projects.

LWN: Could you please introduce your project: its goal, what you think are its major strengths, and what you would most like to improve?

Benjamin Otte: The obvious goal of Swfdec is to create an open flash player that is acceptably similar to Adobe's flash player. This means that the average end user will install a Linux distro and automatically get Flash functionality in their web browser, and never know or worry about installing an add-on component.

Of course, attaining this goal will open up so many opportunities that one might consider the opening of these opportunities as the real goal. Some of these are concrete -- improving accessibility of Flash-based web applications, tighter integration with the desktop, automatic blocking of advertisements. Others are more nebulous -- now that you have a feature-rich, graphics-oriented managed platform, what can you do with it.

Rob Savoye We are the "GNU Flash" player, Gnash. Our goal is a multi-media architecture for a networked world that happens to be Flash programmable. Gnash is the client side for streaming multi-media. We also have a Flash media server project underway, and a large database of meta-data and media content so people can find things better than using Google. Gnash is the only currently released component, the rest will be announced over the next few months. All are GPL'd projects, and support multiple platforms.

Our major strengths are portability, and real support for small embedded systems. Gnash currently supports all the BSD and GNU/Linux distributions, as well as 64 bit systems, and embedded systems like the OpenEmbedded, and the OLPC. Gnash also runs on WinDoze and Darwin as well. We also support creating custom extensions to Flash, so it's now possible to embed a device driver for lets say, hardware buttons on your smartphone, to trigger event handlers within a Flash movie.

I'd like to improve the completeness of our ActionScript support, there are some classes that exist only as stubs. That and adding Flash v9 support. This is all on the roadmap, but we need more developers to make better progress.

LWN: How would you describe the current development state of your project?

Rob: We're in pretty good shape, although Gnash is not a fully complete Flash player yet. The video support is progressing nicely, and we will have full support for, YouTube, MySpace, etc... in the next release. Streaming video works in CVS, now we're working our way through the obscure bugs in the various video players to have this work 100% correctly. After the next release, we'll be focusing on performance issues, and finally starting to look at Flash v9 compliance.

Benjamin: Swfdec is actively going forward. With every release it supports lots of new Flash files, and they currently come out circa monthly. But as I mentioned on my blog it's hard to determine how far we've come as a complete Flash replacement. It's certainly still closer to the start than being a done.

LWN: Tell us about your development community: how many active contributors do you have? Why should developers join your project?

Benjamin: These days the project is primarily run by me. David Schleef, the previous maintainer is the other person that hacks on the Swfdec core. But Swfdec integrates into the greater Freedesktop and GNOME world, so we can draw from the knowledge and input of hundreds of developers. I'd like to highlight in particular the Cairo or GStreamer people, which are invaluable in making Swfdec work. And then there's a pretty big community building around Swfdec. Packagers, bug fixers, people that want to use libswfdec in their applications or those that contribute bindings to other languages like Python.

And developers should of course join the project because they want to and hacking on Flash is fun. For me it's not just wanting to play Flash files, but it's also that Flash is a platform. You can work on anything: a script language interpreter, rendering, multimedia, accessibility or security. And code that you write is immediately leveraged -- you make one thing work, and 100s of flash files start working.

Rob: We have about 6 core developers right now, and are looking for more of course. What we offer to developers is several things. One, we are a GPL'd project, which is important to some open source developers. We also have funding now to work on Gnash, which is also useful for some people to pay their bills. :-)

LWN: A working free Flash implementation would seem to be a high priority for the more desktop-oriented distributions. What sort of support are you getting from those distributors? Why do you think it's not stronger?

Rob: We get zero support from any of the distributions, we'd love to see that change. I occasionally hear from the package maintainers about packaging issues, but that's about it...

Benjamin: It would seem that way, but it isn't. For example, a free Flash implementation was not on Ubuntu's list of priorities at the last Ubuntu Developer's Summit. It seems that a lot of distributions are content with shipping solutions that are closed software when no Free software exists for a purpose. Another example for this would be Free drivers for modern graphics cards.

But I don't think it's solely the distributions' job to point out and work on deficiencies in the Free software world. It is also the job of the community. Distributions often just package what the community makes available to them. But it seems the community has also has been content with the closed solution.

LWN: Some LWN readers have complained that having two projects aimed at implementing Flash is divisive and wasteful. How would you respond to those readers?

Benjamin: The optimal number of projects for a given project space sounds like a good PhD thesis topic. Having multiple projects in a space, or multiple solutions to a problem is simply how things work in the community. Any non-trivial bug or project space has multiple solutions, and often one cannot determine which is the best solution until all have been tried. Also, people working on these projects are real people with real interests and complex motivations for working on particular projects. Simplifying it into "you currently work on A, so you'd instead like working on B in the same project space" is unrealistic. And IMO, divisiveness between similar projects often has more to do with fanboys than it has to do with developers, who obviously share interests and experiences.

Rob:Maybe in the proprietary world this would be a problem, but not in the open source world when we are both reverse engineering how Flash works. It's easy to get into tunnel vision with a single implementation, as some are bugs in our code, and others are bugs in how we think Flash works internally. Having two projects with very different implementations is very useful in finding the differences between our bugs, and Flash internals issues.

There is also a lot of coordination on things like test cases, specifications, and documentation that are shared between the two projects. So why is this a problem for some people is beyond me...

LWN: What else do you wish I had asked? Answer too, please :)

Rob: The Adobe EULA for Flash forbids anyone who has installed their Flash tools or plugin from working on Flash technologies. This has had a chilling effect on the development of free Flash players, since a developer must either choose to decide that Adobe won't sue them over this, or to do what Gnash does, which is a slow and inefficient, clean room, reverse engineering project.

Adobe has declined to comment on this issue, since the confusion benefits their lockin of the market. Although Adobe has said they support Open Source projects, and donated Tamarin to Mozilla, we'd love to see a public statement that Gnash developers won't be subject to a lawsuit. It's very difficult to find developers that have never installed the Adobe software ever, which is what we've been doing to maintain our clean room approach.

Benjamin: A lot of people would describe Flash as an "evil" format. What do you think the Free software community can gain from Flash other than supporting yet another closed format?

Flash provides features that are unmatched in the current Free software world, even when comparing it to the newest projects in the realm like SVG. And Flash is a pretty simple format. People have done great-looking sites, games or applications with Flash in your browser that are currently hard or impossible to achieve on any desktop. And they did that 5 years ago. So even if the Free software world were to not use Flash it certainly can learn a lot from it.

Another often overlooked thing is that there are a lot of content creators that create new multimedia content daily. Other people like Lawrence Lessig have already said that it is important to introduce them to Free content. In providing Free solutions to those artists and developers, the Free software community has a lot of mindshare to gain.

The original article with all the comments is
at this link.