The system of automatic software builds and tests can help developers make better apps with less effort

Continuous integration, in which software builds are automated and tested as code flows in, is becoming more prominent lately thanks to several trends: economics, agile software development, open source options, and distributed, complex projects.

With continuous integration, software is put together quicker and tests are done faster, says developer Kohsuke Kawaguchi, who started the open source Hudson project in 2004 and moved on to the Jenkins fork last year after a dispute with Oracle. Code is constantly being integrated and tested, and farms of computers can become involved. "It becomes easier for developers to produce high-quality software," Kawaguchi says. The second benefit, he adds, is it "makes the project more transparent and more visible." This is beneficial for managers and testers who do not have the level of insight into the code as developers, he says.

Continuous integration systems trigger build systems like Apache Maven to start creating software. "It monitors your version control system, waiting for anybody to check in new code. As soon as it sees that a check-in has occurred, it grabs everything and builds it and tests it and then sends out via email or various other notification mechanisms the details of whether it worked or not," says Paul Julius, a co-founder of the CruiseControl open source continuous integration system that automates the process and offers rapid feedback, he says. Julius estimates that CruiseControl has millions of users.

Economics drive continuous integrationWhile the concept of continuous integration has been around for several years (CruiseControl debuted in 2001), officials and experts in the software industry see continuous integration becoming a more vital component in software development shops in the current business environment. Kawaguchi cites economics as a key driver. The price of computing is getting cheaper and cheaper, but the price of people remains more or less constant, he says.

Continuous integration, like IDEs before it, thus tries to shift the effort from developers to software, to reduce overall costs. "When I think of [continuous integration] servers, the main role that it achieves is to effectively harness the computing power in the lab or in the data center to make developers productive without making them do more work," Kawaguchi says.

The recent adoption of agile software development, in which software is developed in short iterations rather than mapped out months in advance, is a perfect fit for continuous integration, says Mike Milinkovich, executive director of the Eclipse Foundation, the new proprietor of Hudson. Continuous integration and the ability to share work across different development teams in agile projects "is an absolute must," says Milinkovich. "Agile implies you are doing things rapidly, and a big part of this is constantly pulling in the work of developers."

"People are finding the value of more agile practices and the value of integrating on regular basis, bringing the changes together," says John Wiegand, a distinguished engineer and chief architect at IBM Rational.

Continuous integration has also become more popular as applications become more complex and as development teams -- people contributing code -- become more distributed, says Jim Jagielski, chairman of the Apache Maven project management committee. A continuous integration system "helps maintain the QA associated with source code," says. These systems can make sure builds are not broken. "The main drivers have been the complexity of the environment itself and the large number of teams that are focusing on an app."

Continuous integration can be started without a lot of training, Julius says: "Continuous integration is one of those practices that is pretty easy to adopt even if not everybody on the team is fully on board."

Open source eases continuous integrationAlthough there are some commercial tools staking a claim in continuous integration, such as Microsoft's Team Foundation Server and IBM Rational's TeamConcert, the proliferation of open source makes adoption easier for technologies like continuous integration, Julius says. "[Users] can go and download an open source tool for free" and begin to see how the concepts apply, he remarks.

Eclipse's Milinkovich sees open source as helping continuous integration go completely mainstream in the last few years: "Hudson helped make it more generally available for developers who perhaps couldn't afford the commercial tools."