Even before the FSF called, Savoye, a Colorado-based consultant, was taking an in-depth look at free Flash implementations at the request of a client working on an embeddable player. He found SWFDec had no ActionScript support, and GPLFlash was in the process of a ground-up rewrite. He decided to work on GameSWF, a game-development library that includes Flash support. GameSWF supported ActionScript and had the most complete feature set, implementing a large portion of the Flash 7 specification.
Electronic Frontier Foundation founder and major GNU contributer John Gilmore knew Savoye from his years of involvement in high-profile GNU projects, and approached him in the spring of 2005 about the possibility of adapting GameSWF's Flash implementation into a Mozilla/Firefox Web browser plugin.
Then hurricane Katrina hit. Savoye took several months off to work on Gulf Coast relief projects. Upon returning to work, Savoye decided to fork his browser plugin code from GameSWF, and formally launched Gnash in December.
Gnash bears the distinction of being one of the FSF's high priority projects, a list that also includes free BIOS, drivers for ATI video cards, and the GCJ Java compiler. Items on this short list are described by the FSF as "vital needs" because there are no adequate free replacements.
The Flash specification is sometimes described as "open" or "free" because Macromedia -- and now Adobe -- has long made it available at no cost through a Software Development Kit. This is erroneous, however; the SDK is only available under a license that explicitly forbids development of an alternative Flash player. Adobe's interest is strictly limited to allowing third-party software to generate Flash-compatible content; all free Flash players must reverse-engineer the format.
The FSF has been publicly promoting the development of a free Flash player for several months. In addition to its utility as a plugin for alternative operating systems and architectures, there is increasing interest in Flash support for embedded devices such as portable media players and set-top boxes. Savoye's hope is that the FSF's official adoption of Gnash as a solution will attract more programmers and accelerate the pace of development.
Gnash currently works as a standalone application, implementing almost all of Flash 7. The project is developing a test suite to ascertain what remains to be done, and Savoye hopes the suite will prove valuable to other free Flash implementations as well.
Adapting the standalone player into a Mozilla/Firefox plugin is more challenging, Savoye says. Although detailed resources are available for developers creating browser extensions, Savoye reports that there is little documentation for plugin creators.
The current development release plugin (0.7) uses OpenGL graphics, a solution Savoye admits is burdensome, but temporary. The informal road map he posted to the Gnash mailing list indicates his goal is to get the plugin functioning first, then worry about replacing the OpenGL back end.
Curious users can check out the code today from CVS or wait for the next development release. Savoye encourages anyone interested in helping to join the Gnash mailing list, or simply try out the player and report bugs.