Agile development has profoundly changed the pace at which applications are developed. Now continuous integration is about to have the same effect on the way applications are consumed.
Today, applications are released using pretty much the same notion of a release cycle that goes back to the dawn of application development. The only difference is that, in the age of the cloud, those release cycles take place two to four times a year, instead of every two years.
But with the rise of open-source continuous integration tools such as Jenkins and Hudson, the whole notion of a release is rapidly becoming an anachronism. David Clarke, vice president of technology development at Workday, which delivers human resource software-as-a-service, wrote in a blog post that it is moving to a single code base in part because it greatly simplifies continuous delivery.
Rather than artificially pulling together a few features to create a release, Clarke wrote, new features are being continuously slipstreamed into the application. In addition to making feature releases independent of one another, being able to release new features continuously allows Workday to test them in a sandbox environment. Rather than subject every customer to a new feature all at once, Workday can see how a subset of its customers will react to those features in a more controlled manner. That gives Workday more options in terms of when features are generally released.
In fact, when it comes to consumer software, he wrote, the whole notion of a release has already been rendered obsolete.
There is no shortage of approaches to continuous integration, but Jenkins is rapidly emerging as the dominant vehicle. Like other types of continuous integration engines, Jenkins works by deploying servlet code through which all the copies of an application that developers are working with are integrated multiple times a day. Beyond keeping all the developers continuously in synch with one another, this approach makes it simpler and faster to identify when updates to one part of the application are in conflict with another.
Created for Java, Jenkins has been extended via plugins to support a wide variety of application development languages. In fact, as a foundational element of any Agile development effort, continuous integration engines are widely used by software developers to bring some order to what would otherwise be a chaotic set of DevOps processes.
As such, support for continuous delivery engines such as Jenkins and Hudson is also now commonly found in a variety of application lifecycle management (ALM) tools inside and out of the cloud. For example, CollabNet, which recently partnered with Tech Mahindra to make its TeamForge ALM software available in the cloud, supports both.
Of course, the proliferation of continuous delivery may not deter marketers from announcing new releases. After all, most of those announcements are aimed at potential rather than current customers. But from a purely technical perspective, those announcements may still leave a lot of customers scratching their heads when many of the so-called new features being touted are things that most customers have being using for months.