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.

Advertisement

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.

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.

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

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.

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:

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.

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.