I recently had the opportunity to attend the symposium entitled “What’s in a build? Best practice and Requirements” given by Henrik Lindberg (Cloudsmith ) and Nick Boldt (JBoss – RedHat ) at the Eclipse Summit Europe 2010 in Ludwigsburg . The goal was to brainstorm and discuss about the practices and current concerns when it comes to the build of Eclipse plug-ins, features or RCP applications, and the automatic execution of post-build processes such as testing.
Among the many popular build tools mentioned, Buckminster  , B3 , Tycho/Maven [8,9], Athena , PDE and Ant  or yet IVY , users are still concerned by the fact that there is a gap between the in-development IDE build and the headless build process. There is currently no straight “generate headless build using tool xxxx” button to trigger on the IDE side. The concern is that headless build and IDE build should be the same, at least for the same builds (i.e. excluding testing and maintenance builds for example which are not used during the coding phase) and getting headless build right from the IDE should be straight. Another usual fact is that the build process is generally seperated from the development stage of the application. The developper focuses only on getting working code for the application and does not care about the building process.
Within the participants, there was a majority who used a homegrown Ant script with PDE  for the build of their application. It seems to be a fact that setting up an Ant build script to trigger a headless PDE build is obvious, although not straight, between the Eclipse export product wizard and the headless build. Users recognize that using Ant with PDE gives quicker results, but they have to cope with the black box effect between the PDE used in the export product wizard and the headless version and have to spend much time in tweaking parameters, for an operation which should be identical to the one-click export wizard.
Another popular build integration tool is the couple Maven  and Tycho . What came out from the discussion was that for the moment the tool is prefectly stable, it is for example used in production by SAP  and Sabre , even if does not quite works out of the box and some workarounds may need to be coded in order to fit the project. The project is still young and has been accepted as Eclipse project a few weeks ago and the community around the project seems rather active for the moment. Tycho can also relegate a part of the responsibility for a working build in the hands of developpers, who then would have to locally build their part before committing.
One of the recurrent comments about Buckminster  is about its steep learning curve. Only a minority in the audience (6 out of 50 persons) seem to have master it. However all who succeeded in implementing it claim that Buckminster is one of the best solutions when it comes to headless build. They also recommend it for its robustness and for the precision in the specification of the build components (optional dependencies, target platform materializing).
In the end, there seems to be no “ultimate guide” which one can follow in order to set up an headless build for Eclipse plug-ins, features or application. Also, many examples are available from other people who have implemented the build for their systems and the practice seems to observe them and adapt to the project.
Another ironical fact is that although the conference room was full of participants coming to learn about the build practices and complaining about the fact that generally documentation concerning build is very often outdated or inexistant, no one showed any interest when it came to talk about the good practices about the documentation of builds…
 Cloudsmith, www.cloudsmith.com
 Jboss – RedHat, http://www.jboss.com/
 What’s in a Build? – Best Practices and Requirements, http://www.eclipsecon.org/summiteurope2010/
 B3, http://www.eclipse.org/modeling/emft/b3/
 Athena, http://wiki.eclipse.org/Athena_Common_Build
 Apache Ivy, http://ant.apache.org/ivy/
 Plugin Development Environment (PDE), http://www.eclipse.org/pde/
 Maven, http://maven.apache.org/
 Tycho blog by Sonatype, http://tycho.sonatype.org/
 SAP, http://www.sap.com/
 Sabre Red Workspace, http://www.sabretravelnetwork.com/home/products_services/products/sabre_red_workspace
 Buckminster, http://www.eclipse.org/buckminster/