Rob Savoye of Open Media Now! (OMN) gave
an overview of the work OMN has been doing on making free versions of various
Adobe products available for use on free platforms. He concentrated mostly
on Gnash, the GNU Flash player,
but also touched on the Cygnal
media server, and the Ming
ActionScript compiler. Gnash has been one of the Free Software Foundation's
for several years,
which has resulted in more developers as well as raising the profile of the
Flash is important because it is used for web site navigation, video web
sites, and, perhaps most importantly to Savoye, for educational applications.
There are an enormous number of educational programs written in Flash and free
software couldn't support running them. Because he is a
"fanatic" about freedom, Savoye never installed the Flash
plugin, which made him and others like him into "second-class
citizens on the internet".
There are a number of reasons to implement a free replacement for the
Flash plugin, beyond just being able to view YouTube. The Adobe plugin is
full of security problems and doesn't integrate well with Linux. There is
no 64-bit support and it is essentially only available for the x86
architecture. In addition, some day archeologists may want to play Flash
content and the Adobe plugin may have long faded away.
Though he likes working on Gnash, Savoye is no fan of Flash. In answer to
a question at the end of his talk, he said: "I hope Flash falls over
dead", and that is something he is starting to see happen. In the
meantime, though, he recommends against using Flash for web sites, and to
use HTML 5 instead. He also suggested encouraging sites that do use Flash to at least
test against Gnash so that the site will work for those on other platforms.
Gnash was started in 2004 because Savoye wanted a user interface for his
stereo system. That was Gnash's first platform and he still
runs his stereo that way today. In 2005, John Gilmore asked him to turn it
into a browser plugin, and he delivered plugins for Firefox and Konqueror
in 2006. YouTube support came in 2007.
The development community that formed after the FSF high-priority rating
decided that it "would be really nice to have funding", so
they started OMN, which has been funded by Bob Young, Mark Shuttleworth,
John Gilmore, and others. They have continued to reverse-engineer the Adobe
formats and protocols, while also getting Gnash running on "all sorts
of weird hardware".
He put up a slide with a picture of Gnash running on various embedded
devices: OLPC, Sharp Zaurus, Pepper Pad, Classmate PC, OpenMoko,
Playstation 3, etc. He noted that Adobe Flash didn't run on any of them.
The OLPC isn't able to redistribute the Adobe Flash player, so they turned
to Gnash. As part of getting better Gnash performance on the OLPC, Savoye wrote
some GCC and Glibc optimizations for the Geode processor.
Gnash is a clean-room re-implementation of Flash, which means that none of
its developers have ever used Adobe's Flash. The EULA that comes with the
Flash plugin restricts users from being able to create a competing
Flash implementation. So, all of the development was done using publicly
available documentation, which is important because if it wasn't done legally,
the distributions won't include it. Though they were worried about legal
action in the first few years, Adobe recently announced that Gnash is a
"legal re-implementation" of Flash.
Gnash can be run either standalone or as a browser plugin for Firefox and
Konqueror, with Safari support coming soon. It got OpenGL support for
desktop graphics rendering before
Adobe did, and has added Anti-Grain
Geometry (AGG) support for embedded framebuffer-only devices.
One of the areas that Gnash has concentrated on is security. Adobe's Flash is
"really insecure", Savoye said, and if you use a banking site
with a Flash interface, you should "be worried". It also has
better privacy protection because, by default, Gnash deletes all Flash
cookies whenever it exits.
Gnash allows users to extend ActionScript with their own code, or by
writing a wrapper around an existing development library. It also supports
patent-free codecs, he said, in addition to the standard proprietary ones.
Compatibility, portability, and performance
Gnash can read SWF ("Shockwave Flash") version 9 and earlier files, but
primarily supports SWF
version 8. Version 9 is under active development, though. Roughly 80% of
the ActionScript v2.0 library has been implemented, and the rest of it he
has "never seen in the real world". SWF version 10 support is
underway as well, but "it's pretty nasty". The ActionScript v3.0
library can reuse many of the v2.0 classes, but version 10 requires support
for all of the previous versions, each running in different virtual
machines, so there is a lot of work to be done.
Savoye said that they rarely port Gnash any more as it is just a matter of
reconfiguring and recompiling it for new hardware. It will run on any
system that is POSIX conforming and has ANSI C++ support. It also supports
some non-POSIX environments; he noted that he
had never heard of Haiku, which is a BeOS clone, but saw it and Gnash
running on it down on the SCALE Expo floor. Gnash supports many different
architectures, with big or little-endian processors of 32 or 64-bits. It
also supports many different GUIs and desktop environments, as well as
several back-end renderers (AGG, OpenGL, and Cairo).
For performance, Gnash can use the X11 Xvideo extension for high-resolution
full-screen video. Xvideo also reduces the memory footprint. Support is
also being added for hardware video decoding on Intel, ATI, and NVIDIA
hardware using libvaapi.
It is written in C++ and uses the Boost libraries. Gnash uses either
Gstreamer or FFmpeg for media handling. He noted that most distributions
use Gstreamer to avoid the codec issues, but that FFmpeg is much faster and
Gstreamer can use that as well. For HTTP and HTTPS, Gnash uses libcurl. It
supports either GNOME or KDE desktops, or no desktop at all, he said.
Much like Perl or Python, Gnash can wrap any development library so that
they can be used from ActionScript. Currently, there are extensions
available for things like direct filesystem access, MySQL, GTK2, D-Bus, and
so on. The extensions are added directly into ActionScript and can be
accessed just like any other ActionScript class.
The Gnash team is currently concentrating on supporting SWF 9 and 10, as well as
ActionScript 3. "Chasing Adobe" is what they will be doing
"for the rest of our lives, at least in this project", Savoye
said. There is also ongoing work on the RTMP protocols for Gnash and
Cygnal, getting better performance from low-end hardware, and better
support for hardware acceleration. They are also working on Flash-based
video conferencing so that there will be free solutions in that area.
There is also a lot of work going into Cygnal because there isn't a good
rich media server in the free software world. Various groupware and video
conferencing applications are written in Flash, but they need server-side
support. By implementing a free media server, they can concentrate on
better security and privacy than Adobe or another proprietary company is
likely to provide, he said.
How to help
Savoye was not shy about suggesting "free beer" as one of the best aids for
helping Gnash development, but there are others as well. "Good bug
reports" are crucial. The usual suspects for a free software
projects: translations, documentation, web site development and
maintenance, build farm help, and so forth, are areas where people could
help out. Also, donations are always
appreciated, he said.
While it is sometimes galling to think that the "open web" requires some
way to play Flash content, it is an unfortunate reality today. In six
years or so, Gnash has come a long way towards replacing Adobe's closed
plugin on x86 desktops, and is the only solution for many other devices and
architectures. When one considers that Savoye and the rest of the Gnash
team have never actually installed Flash for themselves, that feat is even
more amazing. If the adoption of the newer versions of Flash can be
slowed—or stopped—there is even hope that Gnash can catch up
and we can get rid of one more non-free blob on our desktops.
to post comments)