“How do I get our software into Fedora?”
This question has been a common one over the last year, brought to various parts of Fedora and Red Hat from software developers, community managers, and product teams working on open source software for various ISVs. Now that OpenJDK 6 is Java EESE 6 TCK certified, there is an even greater incentive for Java ISVs to get closer to the Fedora way of doing things. If your language has a free and open source implementation, it is probably in Fedora and might already be available in Extra Packages for Enterprise Linux (EPEL.) For example, take a look at how many Perl modules are available (I count 359 for el5, 236 for el4.)
Fedora anticipated this attention from ISVs when it created the EPEL project. In EPEL, package maintainers can branch any software and it’s dependencies for a special repository that provides Fedora packages for specific versions of Red Hat Enterprise Linux.
In one move, Fedora created a new and unique repository that has a compelling pathway for contributions. Fedora’s EPEL has a niche amongst repositories — be like Enterprise Linux. Focus on security updates and bug fixes to packages, not rebasing to the latest from the upstream project. This makes it possible for a contributor community to maintain nearly 1500 EPEL packages for Red Hat Enterprise Linux 4 and nearly 3000 EPEL packages for Enterprise Linux 5. Some of these packages may get branched for an Enterprise Linux update.
The answer to the how do I? question comes to this:
Along the way, you have an opportunity to grow a community around the open source software that matters the most to you. Getting software in to Fedora means a six to eighteen month jump on the Enterprise Linux beta. You can develop your software along with the operating system it runs on, and you may be able to help influence how other parts of Fedora are created.
(Edited to change “Java EE” to “Java SE”; OpenJDK 6 is Java SE compliant.)
(Edited to fix link to ISV SIG)
For those of us who slept through the month of June, the OpenJDK 6 stack in Fedora was certified as TCK compliant. Meaning it can carry the “100% Java(TM)” moniker. Rich Sharples has a nice write-up (with a second part answering the blogosphere):
In June, 2007 – Red Hat launched the IcedTea project with the goal of making OpenJDK usable without requiring any other software that is not free. That in turn would allow OpenJDK to be included in Fedora and other Linux distributions without restrictions. The IcedTea Project made use of previous work developed under the GNU Classpath Project which had been independently driving towards a free and open implementation of the Java class libraries.
This week [19 June 2008 - ed.] the IcedTea Project reached an important milestone – The latest OpenJDK binary included in Fedora 9 (x86 and x86_64) passes the rigorous Java Test Compatibility Kit (TCK). This means that it provides all the required Java APIs and behaves like any other Java SE 6 implementation – in keeping with the portability goal of the Java platform. As of writing, Fedora 9 is the only operating system to include a free and open Java SE 6 implementation that has passed the Java TCK. All of the code that makes this possible has been made available to the IcedTea project so everyone can benefit from the work.
At another point in his article, Rich mentions that we can expect to see this Java SE 6 in an update to Red Hat Enterprise Linux 5. The packages are already available from Fedora’s Extra Packages for Enterprise Linux, the source for the packages that Red Hat engineering is going to QA/test and build for the Enterprise Linux 5 update.
A previous post, How to get OpenJDK 6 for Red Hat Enterprise Linux 5, covered how to install OpenJDK for Fedora Extra Packages for Enterprise Linux (EPEL) 5. Now these instructions are at an even easier URL to remember:
http://openjdk.java.net/install/#fedora
These instructions cover installing OpenJDK 6 for Fedora 9 and EPEL 5, as well as IcedTea 7 for Fedora 8. IcedTea 7 provides the OpenJDK 7 development branch with IcedTea components to make it build under Fedora using entirely open source components. The package name remains the same in the repository, despite the trademark agreement allowing the OpenJDK mark to be used by Fedora, because it is considered too disruptive to rename it now.
Dev Fu focuses on the fresh and free OpenJDK 6 in Fedora 9 (Sulphur) because this is great news for developers. Especially developers who want to use the best software because it’s free and it doesn’t suck. However, there is much more of interest for developers than just OpenJDK:
For a good general overview of Fedora 9, read Fedora Project Leader Paul W. Frields article in Red Hat Magazine, “Fedora 9: Get yours and get involved“. The full feature list for Fedora 9 is also a good read.
The first morning of JavaOne was a great serendipitous event. How often does something fall into place like this: I saw Barton George, who looks after Sun’s relationships with Linux communities, and we decided to cook up a podcast about OpenJDK 6 in Fedora 9. As we walked to the recording room, I commented that it would be great if we could get Tom Fitzsimmons, too. Not two beats later, we rounded a corner, and there stood Tom with Patrick Macdonald. Of course they were available and happy to record with us, and away we went.
Hear Barton (and a little bit of me) interview Tom and Patrick about the journey of OpenJDK and IcedTea: OGG and MP3
Patrick Macdonald, Tom Fitzsimmons (kneeling), and Karsten Wade. Photo: Barton George from this post The discussion covered the history of making a 100% free and open source runtime in Fedora from the initial Java open source code, which itself was 96% of a complete and self-building JDK. This remaining 4% was filled with components from GNU Classpath by the IcedTea team. The term “IcedTea” came from the package name used because, at that time, Fedora didn’t have a trademark license to use “OpenJDK”. Of the GNU Classpath code used, some if it ended up completing the circle to be included in OpenJDK. Based on relationships made at FOSDEM 2007, the team from Fedora/Red Hat were able to work with folks from Sun and other places to do work in the community in advance of resolving the remaining 4%, and do it in a way that could be more easily folded into OpenJDK. What is riveting about this story is the speed and quality of the outcome that is clearly due to the open source methodology used. By opening all the code that they could, Sun made it possible for others to fill the gaps Sun could not immediately fill. By working closely throughout that process, all of the open source code was used and tested in the community. Sun had time to choose the right license so the code could be merged. If Sun had waited until they could open all the code, we would have lost an entire year of development (at least.) Now that OpenJDK 6 is available in EPEL 5 for Red Hat Enterprise Linux 5, it is only a matter of time before it gets certified to appear in an update. This is being worked on by Keith Seitz and Mark Wielaard, who have “not many” test suites to complete to be ready to pass the TCK. Once that is done, the implementation can be called “Java compliant”, which is an important step to being ready for an Enterprise Linux 5.x update. Listen to the audio to get all the details, and check out Barton’s blog entry for his viewpoint.
What’s funny is, the instructions are shorter than the title of this post.
su -c "rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm"
su -c "yum install java-1.6.0-openjdk"
Read more about how to use EPEL. Fedora EPEL is a community run project to bring Fedora packages to Enterprise Linux users when the package is not included by Red Hat in an Enterprise Linux release. Read more on the Fedora EPEL wiki pages, including links to package view (i386, x86_64, ppc) per EPEL version (4, 5 to correspond with Enterprise Linux versions.)
Weren’t we all skeptical when Sun announced their intent to open source Java? But we’ve watched along the way, as they chose a good free/libre/open source software license (the GPL), as they opened the code Sun has a copyright to, and as they have embraced (to varying degrees) the community efforts, such as GNU Classpath and IcedTea.
It should be apparent that Red Hat is looking to put its bread where the open source butter is spread, in the acquisition of middleware powerhouse JBoss. As can happen with an acquisition, that propelled Red Hat even further into the Java camp. Yet is has been several of the long-time Red Hat engineers who are also responsible for leading and coding on open source projects that enabled all this to happen (GNU Classpath, IcedTea, gcj, and all around Eclipse, to name a prominent few.) What may have started as hedging the bet that Sun would follow through, all of this work has resulted in a stronger relationship across Java camps.
In a fair article on the freeing of Java, “Java fully open-sourced ‘by end of year’“, ZDNet quotes Sun that this year is going to see the end of all the remaining unfreeable parts of the JRE. What you think about that has to be balanced with what you believe. And this time, I find I’m believing that Sun can and will do it in 2008.
See you next week at JavaOne and CommunityOne. I’ll be there, on Monday talking about Fedora (and OpenJDK), and the rest of the week in the pavilion at the JBoss booth.
Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
OpenJDK Replaces IcedTea
The OpenJDK 6 packages (java-1.6.0-openjdk*) replace their IcedTea counterparts (java-1.7.0-icedtea*). The Fedora 8 IcedTea package tracks the unstable OpenJDK 7 branch whereas java-1.6.0-openjdk tracks the stable OpenJDK 6 branch. The decision to have OpenJDK 6 replace IcedTea was made for several reasons:
- Sun has replaced most of the encumbrances for which IcedTea was providing replacements.
- OpenJDK contributes ~99% of the code in the java-1.6.0-openjdk package.
- IcedTea’s mandate is to merge as much as possible with OpenJDK, so the differences between IcedTea and OpenJDK should diminish over time.
- OpenJDK 6 is a stable branch, whereas OpenJDK 7 is unstable and not expected to ship a stable release until 2009.
- Sun has licensed the OpenJDK trademark for use in Fedora.
- Shipping both OpenJDK 6 and IcedTea would have been confusing and would have added size to the distribution.
IcedTea continues to provide autotools support, a portable interpreter for ppc and ppc64 support, plugin support, Web Start support and patches to integrate OpenJDK into Fedora. The IcedTea sources are included in the java-1.6.0-openjdk SRPM.
OpenJDK 6 is not Java compatible. Work is underway to certify it as such.
A big feature of the last few Fedora releases is the ability to spin-up a custom version of Fedora, all with the same tools used to build the distro. Some of these spins have sought a formal recognition, and one of these is the “Fedora, Developer Edition.” Available as a 1.5 GiB live media image (live DVD in this case), it tries to provide all the tools and pieces needed for every type of developer.
This spin is the brainchild of the new Fedora Development SIG, which is open to all members of the Fedora community. You can see a raw list of all the packages that are in the current live spin here.
» Read more
JBoss Seam developer and Red Hatter/JBossian Pete Muir has posted about running Seam under IcedTea, the implementation of OpenJDK available in Fedora 8.
Pete ran a “highly unscientific test” and found out that IcedTea outperformed other JDKs:
» Read more