Apache Gump
Apache Gump

the Apache Gump site
 
   

Apache Gump

What is Gump?

Gump is a social experiment. The primary goal of Gump is to get diverse projects to communicate early and often about integration, dependencies, and versioning management. One way to think about it is that some of the concepts of Extreme programming applied to Continuous Integration on an unprecedented scale.

Essentially, the reasoning goes like this - if continuous integration is a good thing on a small project, why not apply it recursively and include all dependencies for which access to source is provided?

Fixme (Community)
The Gump team are looking for volunteers to extend Gump, to install/manage public/private/cascaded Gumps, and generally spread Gump to an even broader section of the OSS community. Interested?
Also, Gump is developing, and a has outstanding TODOS that you could help with.
Contact us on the Gump mailing list

How does Gump work?

With Traditional Gump, project definitions are converted from XML to scripts native to the platform on which you are running. With Python Gump the XML is mapped into in memory objects for processing. Scripts execute cvs or svn update commands for every module which contains a project being built, and invoke builds for each project in an order that ensures that dependencies are satisfied. Build outputs are processed and, if successful, dependent projects are then built on these outputs.

Warning
Traditional Gump is undergoing a re-write into Python, see Python Gump. Be aware that some of this documentation might be in transition, or state traditional information (when Python information difers.) Please report any such findings to us.

The commands use the actual build.xml files from the projects, but do not use the scripts or jar files checked into CVS/SVN. Instead, the CLASSPATH is set and properties are passed on the command line.

Note
Gump set's Ant's build.sysclasspath to only and manages the system classpath:
To quote Ant:
Only the system classpath is used and classpaths specified in build files, etc are ignored. This situation could be considered as the person running the build file knows more about the environment than the person writing the build file

The net effect is that every project is built every day with the latest version of every dependency - including the latest Ant, latest JUnit, latest XML parser.

The results are captured into html pages that largely are consistent with the style of the Jakarta project. An extensive amount of hypertext links are added to allow quick and easy navigation, and failures are color coded on the main build page.

A Perl script which is driven off of a naglist will optionally send e-mails to various newsgroups upon matching strings being found in the build output. This is typically used to alert developers of build failures.

Where is Gump?

When does Gump run?

For Gump to have the desired social effects, it must be predictable. Given the global scale of open source development, there is clearly no one time when everyone is inactive.

The run at midnight US/Pacific time causes nag emails to be sent. Interrim runs are now done evey eight hours, based on the hardware kindly donated by Sun and Covalent. Below is the schedule for all runs relative to several representative time zones.

Site JVM Comments
Rubix Unavailable
Nagoya Unavailable
Covalent 1.4.0_00-b05 Traditional Gump
CocoonDev Traditional Gump
LSD 1.4.2-b28 Python Gump
DotNot 1.4.1_02-b06 Python Gump
TrySybase 1.4.2_03 Python Gump

Who is Gump?

Gump was named after Forrest Gump, the title character in a movie. The process for building was to do a "Generate", followed by cvs "Updates", followed by a "Build All". This was repetitive, so a command was created to combine these operations - and it was named "guba". This sound this made when spoken reminded me of "Bubba Gump".

This seemed oddly appropriate as much of the motivation for Gump derived from the frustrations building Cocoon. The FAQ for that project indicate that the project was named after a movie that the creator of that project was particularly fond of, so it seemed fitting that this effort would be named after a movie.

A number of other fortunate coincidences proved this was the right choice for a name. From the role of the feather in the opening and closing scenes (something adapted to the Apache feature for the Gump icon), to the catch phase of "Stupid is as Stupid does" - something that captures the spirit of a large number of build errors caught by this process. And most significantly (to some) - the wisdom passed on from Gump's mother that "Life is like a box of chocolates - you never know what you are going to get!". I can think of no more apt description of a build process which takes the absolute latest versions of almost everything and attempts to build them together!

Why was Gump written?

That question is complex enough that it deserves a separate page.

by Sam Ruby, Adam Jack, Community
Valid HTML 4.01!Valid CSS!Built with Apache Forrest logo