An up-to-date look at free software and its makers

Projects on the Move


This month, we look at free projects as a replacement for Flash and Java. Both Flash and Java are so widespread that you can't realistically do without them, so it's a pity that both are released under proprietary licenses. The community has started to remedy the situation.

By Carsten Schnober

The Flash plugin is the most popular browser extension among users of any operating system [1]. Some of the most popular websites - such as YouTube and MySpace - rely on Flash to render videos, music, and interactive animations.

GNU + Flash = Gnash

The explosive propagation of Flash forces free software fans either to do without the offerings of numerous websites or to compromise their freedom. The Flash plugin might be free of charge, but Adobe still retains distribution rights and the source code. The GNU project is unwilling to accept this status quo, and this is why project members have been working for nearly two years on integrating GNU and Flash. The results have been dubbed Gnash [2].

This said, Gnash was not developed completely from scratch. The underlying code was taken from GameSWF [3], by Thatcher Ulrich. The developer from Botswana had something different in mind than Gnash when he programmed GameSWF; his idea was to use the SWF format to provide games with an attractive interface and a minimum of effort.

It was GameSWF co-developer Rob Savoye [4] who finally had the idea of developing a free browser plugin, and it seemed like a good idea to use the work they had already put into SWF as the basis for Gnash. Both projects are still at an early alpha stage; however, the third version of Gnash has just been released with clear signs of progress.

SWF 7 Almost Complete

Gnash version 0.8.0 supports most SWF version 7 functions and is capable of playing Flash-based videos on YouTube (Figure 1) and Lulu.tv. The programmers placed particular emphasis on this feature when developing the new Gnash.

Figure 1: The latest version of the free Gnash Flash player can play YouTube videos. A couple of display bugs in the control bar still need removing.

Gnash 0.8.0 works well for an alpha version. In our lab, the only bugs I experienced were slight display glitches that affected the controls, like those shown in  Figure 1. Fast-forward and reverse functions for the video stream are not yet implemented, and there is currently no support for webcams or microphones.

Another problem is that Adobe has already released version 9 of the SWF format. Although many sites continue to use Flash version 7, you can expect them to migrate. Gnash needs the ability to render SWF version 9 in the near future to avoid becoming a wallflower.

But Gnash has an advantage over Adobe in another respect: Gnash is not only available as a browser plugin, but the project also includes a standalone Flash player (Figure 2). This gives users the ability to play SWF movies and animations they have downloaded or made themselves without having to embed them in a web page.

Figure 2: Gnash plays Flash animations either as a browser plugin or as a standalone application.

Free Versus Proprietary II

Because of its technical capabilities, Sun's Java programming language has many fans. Java combines elements of various languages, such as Smalltalk and C++, but its major advantage is that Java gives developers cross-platform programming abilities. To execute the programs, you need a Java Virtual Machine (JVM). Thus, if a JVM is available for your OS, any Java software normally will run on it.

Just like Adobe's Flash Player, the license was a major handicap for many years. The Java Runtime Environment (JRE) needed to execute Java software, and the Java Development Kit (JDK) were both available for free (as in beer, but not as in freedom). Therefore, many free distributions did not include the JRE for a long time, forcing users to install the JRE before they could run Java software.

Jim Pick [5] came to the rescue. Jim launched the Kaffe [6] project with the aim of emulating the JRE, but under a free license. The core of the project is the JVM, but you typically need more than this to run Java programs. The free counterpart lacks various critical security features, but more importantly, it lacks Java packages and their classes, which many Java applications need at run time.

Although Jim Pick has started to program Java packages, it is hard to imagine the project ever achieving full compatibility because of the ongoing development on Sun's version of Java. GNU Classpath [7] is a similar project that focuses on free implementations of Java classes instead of the virtual machine.

Java programmers, and Linux distributors in particular, have been trying for a while to convince Sun to open up the programming language by placing it under a free license. In November 2006, Sun promised to look into the issue; Sun wanted to avoid Java being replaced by other, free languages. Early in 2007, Sun released the OpenJDK [8] development kit under the GPL.

Releasing OpenJDK is not the same as opening up Java. To compile a Java environment from OpenJDK sources, you still need the non-free official Sun JDK, from which the OpenJDK copies "binary plugs" (non-free classes and add-on packages). This process results in a software package that cannot be released under a free license in its entirety. The binary plugin source code is not public.

From Java to Iced Tea

Red Hat has launched a new initiative to create a free version of Java based on OpenJDK. The IcedTea project [9] combines the work that went into OpenJDK with GNU Classpath and Kaffe. What has motivated Red Hat to take this step is the need to add a Java environment to the Fedora distribution, because this variant of the commercial Red Hat distro includes only free software.

IcedTea developers have announced some initial progress. The free Java environment can be compiled and used without relying on proprietary software. This said, IcedTea is not geared to replacing Sun's Java yet. IcedTea lacks support for cryptographic routines, sound, SNMP, and the AWT and Swing GUIs.

It remains to be seen whether IcedTea will ever be capable of completely replacing Java because all it takes to question the reliability of the environment is a couple of minor incompatibilities. Despite this, Red Hat's move to merge existing, free Java alternatives is a step in the right direction - even if it only serves to increase the pressure on Sun to open up Java.

INFO
[1] Adobe Flash Player penetration: http://www.adobe.com/products/player_census/flashplayer/version_penetration.html
[2] Gnash: http://www.gnu.org/software/gnash
[3] GameSWF: http://www.tulrich.com/geekstuff/gameswf.html
[4] Rob Savoye: http://www.welcomehome.org/rob.html
[5] Jim Pick: http://jimpick.com
[6] Kaffe: http://www.kaffe.org
[7] GNU Classpath: http://www.gnu.org/software/classpath
[8] OpenJDK: http://openjdk.java.net
[9] IcedTea: http://Icedtea.classpath.org/wiki//Main_Page