The free software community has two independent projects working toward the
implementation of a free Flash player: Gnash
. 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?
: 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
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.
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
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 Lulu.tv, 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.
: 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
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?
: 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
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
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...
: 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
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
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.
: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
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 :)
: 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
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.
: 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.
to post comments)