Code by Any Other Name

Oracle forks Jenkins

by Ian Robertson

February 6, 2011



Summary

There's been a lot of talk lately about a decision by the community to fork the Hudson continuous integration project, but the real fork has been done by Oracle, not the community.


Oracle forks Jenkins

The history

Since Thanksgiving of last year, there's been quite a lot of drama surrounding the open source project Jenkins, formerly known as Hudson. The catalyst was when Oracle started a migration of the project to its new java.net infrastructure, and failed (without malice, it appears) to notify the Hudson developer community in advance. Upon discovering that the migration process would leave the community without the ability to make commits for a week or longer, Hudson founder and chief contributor Kohsuke Kawaguchi shifted to using github in order to allow contributions to start flowing again.

While Oracle didn't consider the situation serious enough to speed up the java.net migration, they did inform the Hudson community that they felt Hudson should continue to be hosted on Oracle-owned servers. In particular, Oracle SVP Ted Farrell stated that:

Because it is open source, we can't stop anybody from forking it. We do however own the trademark to the name so you cannot use the name outside of the core community.

Was the project forked, and if so, by whom?

In response to this statement, consensus quickly formed within the developer community to change the name of the project from Hudson to something that was not already trademarked; Jenkins was soon chosen as the new name. Talks were held with Oracle, and once it became clear that Oracle would not relinquish its claim to the Hudson name , the decision was made to go forward with a rename. A vote was held, and the community overwhelmingly agreed to rename the project to Jenkins.

As soon as the community started to coalesce around the idea of moving the project hosting to github, Oracle started to refer to the move as a fork, as seen in the quote above. The fork rhetoric later heated up in a post by Ted Farrell stating bluntly that "We are talking about a fork, so IMO we should call it what it is." I believe this choice of wording was part of an intentional effort to paint those in favor of renaming as an offshoot of the "real" community. Indeed, the term fork often carries with it a negative connotation, and forks are often viewed as selfish acts which are divisive to the community. However, in this case, I would argue that it is Oracle, not the developer community, which has made the decision to fork Jenkins.

The decision to rename a project is certainly not, in and of itself, a fork. Mozilla's web browser went through a couple renames before landing on its present name of Firefox. In that case, as with the rename to Jenkins, the name changes were driven by conflicts with existing trademarks. No one considered it a fork. The fork really occurred when Oracle made it clear that they did not wish to go along with the change, but would rather take their ball (trademark) and go elsewhere. While Oracle does have a developer who is slated to continue work on the old Hudson project, it's contributions to Hudson have been less than 1% of the commits since Kohsuke left Oracle.

Normally, I wouldn't worry too much about corporate rhetoric. Unfortunately, it appears to be having repercussions. Most notably, Jason van Zyl of Sonatype has said that Sonatype will be working on Hudson, not Jenkins. Jason didn't use the work "fork", but his wording amounted to the same image:

I think this whole situation is unfortunate, but ultimately Kohsuke has the right, like everyone else, to do what he feels is right. I honestly do not believe what has happened is in the best interest of users, but this is my opinion and only time will tell.

When the representative of Oracle says it to my face that I should just go find something else to work on, or that I need to immediately stop making [infrastructure] changes or the next email I will receive will be from their lawyers, or when you hear him describe me as a hurdle to the community, I think writing on the wall is pretty clear to me.

Some of you reading this may know and respect Kohsuke. Those who do no doubt have little reason to doubt him when he writes that:As I see it, Hudson was not forked, but merely renamed. Oracle's unwillingness to work with the creator and chief contributor of the project then led it to fork Jenkins, using the Hudson name they hold the trademark on. This was done regardless of the detrimental impact this fork could have on the community.

My own belief is that regardless of the course Oracle and Sonatype choose, the legacy Hudson project will be unable to keep up with the community driven innovation that Jenkins will continue to enjoy. I may be proved wrong; it may be that Oracle and Sonatype will be able to move the new Hudson project forward in a way that can outshine Jenkins. In the mean time, however, users will have to choose between Jenkins and the new Hudson project. Efforts to label Jenkins as the fork and Hudson as the original project amount to little more than attempts to influence people to walk away from Jenkins out of fear. If you currently run a legacy Hudson distribution and need to decide which path to take, I encourage you to examine what both projects will offer going forward and make your informed decision accordingly, free of FUD.

Talk Back!

Have an opinion? Readers have already posted 15 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Ian Robertson adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Ian Robertson is an application architect at Verisk Health. He is interested in finding concise means of expression in Java without sacrificing type safety. He contributes to various open source projects, including jamon and pojomatic.

This weblog entry is Copyright © 2011 Ian Robertson. All rights reserved.