June 2, 2005

GPLFlash lives again

Author: Jem Matzan

The original GPLFlash project, which was meant to bring to GNU/Linux the ability to play Macromedia Flash movies, stalled when Macromedia released a 32-bit binary Flash Player for Linux. Because of that, and because of a lack of development help, the last significant update to GPLFlash was in June 2000. But in the past year there has been a surge in developer interest in the GPLFlash project, and now it's back, with greater stability and fewer bugs. Unfortunately, it would take a complete rewrite of GPLFlash to play the vastly different Flash 6 and Flash 7 file formats. That's why GPLFlash2 is now under development, with the goal of being a fully Flash 7-compliant replacement for the restrictively licensed Macromedia Flash Player and browser plugin.

If you've seen the recently redesigned Free Software Foundation Web site, you may have noticed that the FSF has listed three projects that it says the community is in "vital need" of help with: GPLFlash, GNU Classpath, and the GNU Compiler for Java. The reason listed for their importance is the allure of using proprietary Java and Flash browser plugins and proprietary operating systems that include them. A competent, free replacement for Macromedia Flash Player would remove a significant hurdle in the FSF's goal of encouraging a complete desktop GNU/Linux operating system that is devoid of proprietary software. Because so many Web sites rely on Flash to deliver content, completely free operating systems are limited in their ability to browse the Web. All that may change with GPLFlash2.

Developer Olivier Debon started the GPLFlash project in 1998. The first version was barely usable, but with some work, the GPLFlash browser plugin generated a lot of attention -- even from Macromedia. "Macromedia contacted me to ask, 'Where are you going with this?' I explained my cause, [to help] the Linux community," Debon said. Macromedia subsequently released its own proprietary Flash Player for GNU/Linux and other non-Microsoft platforms. Debon believes that his efforts may have spurred Macromedia into action.

Shortly thereafter, Debon stopped working on the project to concentrate on other things, and asked for developer help with GPLFlash. None came. Debon went on to work for Netgem, where he helped develop a program to play Flash on set-top video units. He added some tweaks to GPLFlash for embedded devices and other commercial purposes, but in 2000 he'd released the last version of GPLFlash.

That's not to say that the project was finished for him. Debon originally had access to some code that some Macromedia developers -- including the inventor of Flash, Jonathan Gay -- had posted to a public newsgroup. Initially he used that code, which provided important functionality in his Flash player. He could not release that code under the GNU General Public License though, because although it was publicly posted and, in a sense, "given away," he did not have the permission from the copyright holders to relicense it. This version of GPLFlash could never be licensed under the GPL until two files, adpcm.cc and scrip.cc, were recoded. Debon has since recoded them, but has not released that code to the public.

Regarding the Flash specifications that Macromedia now publishes, Debon said, "If you carefully read the agreement, you're supposed to use them to produce SWF (Flash content), not use them to make a player." The original documentation, which Debon says contained errors in the SWF specifications, did not have this stipulation.

Since he now has his own business, Debon doesn't have the time to work on his old GPLFlash project, but he has advice for those who do. "I wish [future] contributors would think of system independency and embedded systems. Making a bloated piece of code to play Flash (as Macromedia [did]) is senseless. I do believe with some friends that it should remain something like FlashLite 1.1 with better Action Scripting support."

The next generation

Macromedia filled the Flash Player hole for x86 GNU/Linux users, but the code is proprietary, not free software. That means that, for many in the free software community, the work is far from over. That's where Tomas Groth and Christophe Choquet come in.

Like Debon, Groth needed a Flash player that did not -- and still does not -- exist. This time it was for a version of GNU/Linux that runs on his PowerPC-based Apple iBook. Macromedia does not provide a PPC GNU/Linux port of Flash Player, so Groth decided to revive the GPLFlash project last June and give the code some critical updates to make it more modern. But GPLFlash won't see heavy development because its structure prevents it from playing newer Flash files. For that reason, it will be eventually replaced by GPLFlash2, a from-scratch replacement for GPLFlash being developed mostly by Choquet.

Might the new project provoke a legal threat from Macromedia? Choquet said, "Macromedia has done nothing to either support or stop us yet. The SWF format and the ActionScript specifications are available on the Web. I don't think they have any interest in stopping us, since we actually help spread their animation format to more platforms."

Macromedia did not respond to calls or email requesting comment on GPLFlash and related topics.

So when can we expect a usable release of GPLFlash2? "To make an alpha release," Choquet said, "we need to improve the following things:

  • Improve external resources support, so the player may redirect to a location or use external data
  • Implement keyboard inputs
  • Fix button problems
  • Have an ActionScript engine that works. ActionScript libraries may not be completed, but the engine should work.
  • Make the plugin more robust, especially concerning fonts and memory allocation
  • Fix the configure file and the makefile so everything will get installed properly on different GNU/Linux distros"

A usable Flash player should be available soon. "Given the amount of work, I don't expect any kind of preliminary release before the end of June or July. If we don't do that before we make an alpha release, people will be disappointed as they will not see any benefits compared to GPLFlash."

Groth added that more development help will produce a complete, free Flash player and plugin in a shorter amount of time. Interested developers can contact Groth and Choquet through the GPLFlash mailing list.

Click Here!