I'm ditching Continuum for Hudson at work. My team has been using Continuum for about three years (for several dozen projects), and it took about an hour and a half of experimenting with Hudson for me to make the decision to switch us over.
Problems with Continuum
- very slow performance
- long standing bugs
- unstable (crashes after a week or two), loses track of child processes
- long release cycles, not much change between releases
- small team of committers (seemingly spread very thin between other Apache projects)
- small community, relatively small installed base
- antiquated code base (Struts, JDO)
- unintuitive UI, poor documentation
- migration issues (I had several failed attempts at migrating between versions)
- no plugins and little customization
- no reporting functionality
My team kind of hung in there with Continuum for a while, partly because of inertia, but primarily because I somehow had the mistaken impression that Hudson did not have good Maven integration. It turns out that the Maven support in Hudson is actually pretty good.
Hudson is so good overall that the Continuum folks should probably just pack it in and focus their efforts elsewhere. (It is a little telling that the Maven guys at Sonatype use Hudson instead of Continuum.)
Great things about Hudson
- it just works, with very simple configuration
- seems very stable so far
- automatic build dependency triggers
- short release cycles (several per month)
- huge set of plugins
- large and active community
- full time developer at Sun (Kohsuke is the man!)
- distributed build support (build cluster)
- good Maven integration
- trend reports for junit, checkstyle, findbugs, etc.
The best thing about Hudson is the ease of use. It just works. (You can even launch it via WebStart to play around with it.) There's no database or any XML to mess around with, everything is configurable through the UI. You can even make Hudson upgrade itself through the web interface!
The second really great thing about Hudson is the large selection of cool and useful plugins. There is support for all of the major VCSes and lots of different notifiers, as well as plugins to customize the build process. There are also some are some very innovative plugins like the Amazon EC2 plugin to use the Amazon "cloud" as your build cluster. Of course, there is always some room for improvement.
The few things that are better with Continuum
- "build environment" concept
- globally configurable schedules
- better Maven integration in a few areas
I had the opportunity to meet Kohsuke Kawaguchi, the creator and leader of the Hudson project, at JavaOne 2009. Kohsuke is one of those rare developers who is clearly quite brilliant but also very friendly and welcoming at the same time. If Hudson had a BDFL, he would definitely be it.
Related Links
- Continuous Integration in the Cloud with Hudson (presentation at JavaOne 2009) - http://docs.google.com/present/view?id=dws34c6_0ck3nzbcq
- Continuous Integration with Hudson (JavaWorld) - http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html
Technorati Tags: build, continuous integration, hudson, maven
Recent Comments