The Java Packaging Nightmare

The talk shows the problems of packaging Java code in a way that the result conforms to minimal packaging standards. Sometimes code does not get build completely from source, sometimes non-free software gets used and sometimes the license terms are not correct. Ways to improve that situation will be shown on the example of Maven.

Debian is the largest free software distribution and ships a large variety of software products. Unfortunately we ship only a small part of the huge amount of Java software that often uses free licenses like Apache-2.0, (L-)GPL, EPL, and BSD. The talk tries to find the reasons for the situation and shows some ways to improve the situation.

The number of source packages maintained by the Java packaging team has increased a lot during the lasts years to about 500 but important packages like the popular JBoss application server are still missing. Compared to Java the Perl group is maintaining about 1600 source packages. This talk won't cover the JDK like OpenJDK and it won't criticize the Java programming language.

The Debian Free Software Guidelines (DFSG) are some basic requirements that any software must fulfil in Debian's main archive component. The software must be built from source only and all build dependencies must be part of main, too. Every single source code will be checked for correct licensing before it will be accepted into the package archive.

There have been many improvements in the GNU compiler collection, the eclipse compiler, and the classpath library during the last years but the most important change was the GPL relicensing of Sun's JDK which is called OpenJDK now. Almost every Java software can be built with free compilers and run with free virtual machines on the most important architectures. This is a huge step forward compared to the Etch release. But you need some complex build tool and a growing number of libraries to build a modern Java software package. O Out of lazyness such tools and libraries are often shipped in binary form only or just downloaded as binaries during the build process. This violates the DFSG requirements obviously.

Apache Maven has become a very popular build system in the Java world. The talk will discuss all the problems that needed to be resolved before it could be integrated into Debian. It will show how Maven can be used as a packaging tool now. Java developers will get directions on how to improve their own upstream packaging to help the Debian maintainers.