Apache Gump |
- What is Gump?
- How does Gump work?
- Where is Gump?
- When does Gump run?
- Who is Gump?
- Why was Gump written?
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?
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.
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.
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.