|
|
Subscribe / Log in / New account

SCALE 8x: Gnash, the free Flash player

By Jake Edge
March 10, 2010

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 priority projects for several years, which has resulted in more developers as well as raising the profile of the project.

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.

Some history

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".

Weird devices

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 features

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.

Current focus

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.

Index entries for this article
ConferenceSouthern California Linux Expo/2010


to post comments

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 3:17 UTC (Thu) by cry_regarder (subscriber, #50545) [Link] (1 responses)

> 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.

Is this confusing or is it just me? I though that this said Adobe released source code and Rob was making a free version of it.

OMN isn't making free versions of any Adobe products. They are making free implementations of the protocols.

Cry

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 7:43 UTC (Thu) by ctg (guest, #3459) [Link]

Just you :D

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 4:34 UTC (Thu) by amit (subscriber, #1274) [Link] (1 responses)

Thanks for the article -- and to the developers, for Gnash. Great work.

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 12:24 UTC (Thu) by wookey (guest, #5501) [Link]

Indeed. I started using gnash a couple of years ago when it became too hard to use the net flashless, and it's come on in leaps and bounds since then. It's still pretty hit and miss what works, but overall it's a very capable substitute for adobe's flashplugin.

I am sometimes dismayed at how many allegedly hardcore free-software developers can't be bothered to use the free option and just install adobe's flashplayer for an easy life. It's important that we use the free tools so that web-developers get complaints about their flash stuff causing problems, and gnash developers get to know what's still broken. Average users aren't going to swap just yet, so we are the ones that need to bear the pain during development. That pain is now very bearable (youtube works fine :-) and so do nearly all silly flash menus).

There was a tiresome false dawn on Debian at least where youtube worked (hooray!) and then broke again for about a year (boo!, but at least there is clive and youtube-dl). Now it is back, and muich else besides.

The BBC on the other hand deserve a good kicking as their enormous news video output has never worked with gnash SFAICT (and is not available via get_iplayer).

Rob is clearly a genius and deserves really stonking amounts of Free Beer.

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 6:35 UTC (Thu) by dlang (guest, #313) [Link] (1 responses)

there is a 64 bit flash from adobem sort of

http://labs.adobe.com/downloads/flashplayer10_64bit.html

this latest release seems to be quite a bit better, and it's definantly better than the ndis wrapper approac to run the 32 nit version on a 64 but browser

SCALE 8x: Gnash, the free Flash player

Posted Mar 11, 2010 15:06 UTC (Thu) by mrshiny (guest, #4266) [Link]

Yeah, I've been using the 64-bit flash since they released the first alpha years ago and it has been (for me) as good as flash ever is.

Note: I browse with flashblock on, because most flash annoys me. However, I have rarely encountered problems that I can attribute to flash. With the first release of Fedora 12 flash video caused a crash but changing from the nouveau driver to the nVidia driver fixed that. I can see youtube, dailymotion, etc, and all non-video flash sites work fine.

Sure, non x86 or x86-64 platforms are not as lucky, but that's a fairly common problem with those architectures: proprietary software doesn't support it. Heck, most Free software doesn't support it as a first-class platform, but dedicated users of those platforms can usually make stuff work.

Flash switcher?

Posted Mar 11, 2010 15:12 UTC (Thu) by mrshiny (guest, #4266) [Link] (3 responses)

Does anyone know of a firefox extension, or a plugin-wrapper, or anything that makes testing gnash easier, by allowing a user to run gnash and Adobe Flash Player at the same time?

My time for testing software and reporting bugs is limited. But if my browser ran gnash by default, but had a quick way to allow me to flip over to Adobe, then I could give gnash a better run for its money without wasting tons of time. Ideally this switcher would also report to the gnash folks the url of the flash site that didn't work (optionally, of course) and/or let me specify a problem description.

Flash switcher?

Posted Mar 11, 2010 17:02 UTC (Thu) by admorgan (subscriber, #26575) [Link] (1 responses)

Using Firefox's extension manager you can have both installed and activate/deactive which is used even during the same browser session. I did this frequently back when Hulu still worked for 64bit. Now I just use gnash.

Flash switcher?

Posted Mar 11, 2010 17:54 UTC (Thu) by dlang (guest, #313) [Link]

every time I've tried to enable/disable flash I've been told by firefox tha tthe change will take effect after the next restart.

Flash switcher?

Posted Mar 14, 2010 3:08 UTC (Sun) by njs (subscriber, #40338) [Link]

In firefox, if you have multiple flash plugins installed and browse to a site that uses flash, a tiny icon will quietly appear in the lower-right corner. If you click this icon, a window will pop up with a drop-down that lets you select which plugin to use on the current web site (and maybe change the default for future web sites, I'm not sure).

However, this doesn't work if you use the flashblock extension. (I guess because firefox only checks for the presence of flash in the website when the website is first loaded, and with flashblock there is never any flash present.) It does work to disable flashblock (*not* using Add-ons -> Flashblock -> Disable, which requires a restart, but using Add-ons -> Flashblock -> Preferences -> Enable Flashblock), reload the page, click the little icon to fiddle with flash settings, and then re-enable flashblock.

This feature is generally a bit buggy for me and I've never seen it documented anywhere, but it WFM.

SCALE 8x: Gnash, the free Flash player

Posted Mar 12, 2010 8:55 UTC (Fri) by The_Barbarian (guest, #48152) [Link]

>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.

Maybe it does support non-POSIX environments, but running on Haiku doesn't prove that. Haiku, like BeOS, strives for full POSIX compliance.

Flash on the PS3?

Posted Mar 17, 2010 4:16 UTC (Wed) by xkahn (subscriber, #1575) [Link]

Hmm... The Playstation 3 comes with flash (version 9?) built in to their
web browser. It works fairly well on most sites. Also, as others have
noted, 64-bit flash is available now, although it isn't officially released
yet.

That said, good article on an important project.

SCALE 8x: Gnash, the free Flash player

Posted Mar 18, 2010 9:09 UTC (Thu) by Imroy (guest, #62286) [Link]

I just tried Gnash on my Debian Sid box and Youtube doesn't work. According to the gnash-dev mailing list, Youtube has been using an SWF 10 player since October of last year (http://lists.gnu.org/archive/html/gnash-dev/2009-10/msg00...). If Gnash doesn't properly support SWF 10, why is everyone saying that Youtube works? Am I doing something wrong?

SCALE 8x: Gnash, the free Flash player

Posted Mar 20, 2010 3:21 UTC (Sat) by pixelpapst (guest, #55301) [Link]

> In addition, some day archeologists may want to play Flash content
> and the Adobe plugin may have long faded away.

Yeah they will !


Copyright © 2010, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds