Continuous Integration: Hudson vs. Jenkins
And what this battle meant for all of us.
Most of us remember back in 2011 and 2012 when the internet was alight with a heated debate into the Hudson vs. Jenkins affair. Passions were understandably strong among us developers, who saw this debate in its real context, a battle to keep open source software free and open to all.
I aim to use this article to revisit the details of this battle in order to give my impassioned summary as to why the outcome of the Hudson vs. Jenkins battle was so important to us all, and to explain why Jenkins’ victory was a win for free enterprise and open source coding throughout the world.
The article begins with a brief history lesson regarding the initial Hudson affair, which I believe is necessary to put the argument into a clear perspective, before going on to explain why despite being two similar programs, Jenkins came out on top and became an emblem to all those on the right side of the open source software debate.
List of the topics I will cover:
History of the Hudson and Jenkins split – Background
Hudson is a continuous integration tool (CI) that was written by Kohsuke Kawaguchi, while he was working at Sun Inc. It is written in Java and can be operated in a servlet container such as Apache Tomcat. Hudson rose to fame in 2008, when it gained popularity as an alternative to the very popular CruiseControl. By 2010, Hudson had an estimated 70% of the CI market, something that did not go unnoticed by Sun’s new owner, Oracle.
The Hudson project was set up as an open source tool which ended up under the control of software giant Oracle. Though I personally have a lot of admiration for the things that Oracle has achieved, in this instance, the company was about to head down a road that was to take it into conflict with developers and software engineers everywhere. After a series of blunders relating to Oracle’s stewardship of the Hudson project, things finally came to a head, when in November 2010, a problem in Hudson’s hosting infrastructure led Oracle being again caught with their pants down, so to speak. Many developers, frustrated by a recent Hudson outage, felt that enough was enough.
This discontent boiled over when Kohsuke and many key Hudson developers demanded that Oracle relinquish some control over the project, including the rights to the name, something that Oracle refused to do. Oracle had already submitted a trademark in December of 2010, in an attempt to gain exclusive rights to the Hudson brand, something which would have then allowed it to begin to monetize it.
This was the straw that broke the camel’s back and initiated the split. After being approved by 214 votes to 14 votes in January 29, 2011, Hudson was renamed Jenkins and moved out of Oracle’s control. This triggered a mass exodus of key developers who disassociated themselves from Oracle and followed Jenkins out. From this moment on, the two CI servers began to be developed independently of each other in a race to see which one would be the big kid on the block.
What happened next?
Well, it was clear from the beginning just how much passion and controversy this split had created. Despite both Hudson and Jenkins being the same java based CI tool, no sooner than they became two different entities and began to develop independently, the internet was swamped with comparisons and debate as to which one was best.
If you search the internet, even going as far back as early as February 2011, it is impossible to find a single review that favored the Hudson platform. To me, at this early stage this was something that was unquestionably down to emotion rather than sheer pragmatism. Since at this stage they were both essentially the same program with the same fundamentals in common, most of these articles were rather redundant from the perspective of pointing out substantial differences, honestly speaking.
After the split, the two development teams mirrored so much of what the other was doing that even today both Hudson and Jenkins share many of the same features. As a result, it was left to a few well-informed articles, such as this interesting 2011 article by Cloudbees (where Kohsuke worked for a number of years), to highlight the real differences between the two programs at this time and to give us a good indication of their separate innovations.
2012, the decisive year
By 2012, RebelLabs estimated that despite fierce competition from the likes of Bamboo and TeamCity, Hudson and Jenkins still commanded a dominant 49% market share. The above graph, produced by GitHub.com, shows the level of commits for both CI servers during the first full year following the split. It certainly makes for interesting reading, that’s for sure.
With the exception of July 2016, it is obvious what a real lame duck Hudson became immediately after the split. Aside from negative sentiment towards parent company Oracle for causing the split, Hudson also had larger problems eating away at it from within.
The mass exodus of skilled, and most importantly, passionate developers, left a hole in Hudson that Oracle was never able to fill. This passion has to date, created over 600 different plugins for Jenkins and helped it to gain over 50,000 active installations, figures which even with the full weight of Oracle behind it, Hudson was never able to come near to matching.
A brief look at where things stood in 2016.
In 2016, the ZeroTurnAround website published an article where it revealed the results of a survey in which it mapped current trends among developers. This article highlighted just how far the once mighty Hudson had fallen in such a short time. While Jenkins commanded an impressive 60% market share (a steady growth on previous years), Hudson could only manage a lowly 3%, a figure which in effect, relegates it to almost total obscurity and means that it is only a matter of time until it is either swallowed up by another company or simply discontinued altogether.
Hire expert developers for your next project
1,200 top developers
us over the last 3 years
I am 99% certain that the final nail in the coffin of Hudson will come in the next 4 to 5 years, though exactly how this will happen remains to be seen. Though technically still breathing, for anyone who has visited Eclipse’s Hudson web page recently, you will have surely noticed that Hudson’s last update was back in February 2016, meaning that it is no longer being supported and is effectively dead.
My Final Thought
According to Kohsuke back in 2011, the total number of developers who almost immediately migrated from Hudson to Jenkins was around 85%. This is a staggering amount and is a figure that really puts a smile on my face since it represents a decisive moral victory for both the little guy and for open source software development in general.
I believe strongly in the importance of open source software and the huge benefits that it brings to us all. For me, it is an essential way to allow software developers who are driven by passion rather than money the freedom to innovate and develop new ideas. All of us in the software development community are aware of just how many problems the Windows operating system has caused software developers simply because Microsoft wouldn’t allow open source development, which is an example of why we feel so strongly about open source software.
What Oracle tried to do was for me criminal, and happily, the company paid the price for it. As I said in my introduction, I am a great admirer of many of Oracle’s innovations, particularly its cloud platform, but in this case, the company got greedy and deserved what it got.
Open source software should always remain as its name suggests, open. I think what Kohsuke Kawaguchi and the original Hudson development team did when they jumped ship was to lay down an important example that I hope others in the future will be brave enough to follow. For this reason, I we all owe a debt of gratitude to Kohsuke and all those developers who followed him over to Jenkins in protest against the attempted hijacking of an open source CI platform.
Often, we individuals feel powerless to fight against change and injustice, but what this whole saga shows is the leverage that we as a community actually have against the giants of industry and the injustices that they attempt to wreak on us in their thirst for profit.
So, from a passionate software developer, I would like to extend my heartfelt thanks to Kohsuke Kawaguchi and the development team at Jenkins, and to take this opportunity to remind all of you in our development community that we can really make a difference, provided we all work together as one.