So remember how some of the Hudson community got fed up with hosting the continuous integration server on Java.net, decided to chuck the whole thing and move Hudson to GitHub, which sparked an internecine fight that ended up with those team members splitting off from the mainline Hudson project to form Jenkins?
Ah yes, good times.
Imagine my complete surprise, then, when it was announced this week that the Hudson community--the "official" Hudson project still governed by Oracle, who holds the Hudson trademark--held a vote to... wait for it... move their code to the GitHub repository.
That's right. Sonatype's Jason van Zyl made the announcement Monday in a tweet and the rest was history.
Now you might be thinking that van Zyl and the rest of the Hudson community is being rather audacious, since the perception was, as I mentioned, that moving to GitHub was what started the whole Hudson/Jenkins hootenanny in the first place. Indeed, there was lots of arm waving on my part when I heard finally the news last night.
But here's where I need to make a correction of the news reported, even by me: the problem that kicked off the Hudson/Jenkins split wasn't that the Jenkins crew wanted to jump the Java.net ship, it was that they wanted to do it without (in Oracle's opinion) waiting to get a broader consensus from the Hudson community.
Ted Farrell, Senior Vice President and Chief Architect at Oracle, clarified this position when someone on the Java.net message boards asked him the same thing about the initial GitHub incident. Wasn't that what started the whole problem?
"No," Farrell replied, "That was a misrepresentation of statements I made which caused a lot of confusion. I had asked to hold off on the github move until we could coordinate with more of the community. I clarified multiple times in later posts that Oracle was 'in favor of moving to a git-based repository, including possibly github, and we just wanted some time to evaluate what that means and the best way to achieve it.'"
And indeed, if you follow Farrell's link, he did make that comment back in November. At that time, the theme of his comments in the thread seemed to be a slow-down-and-let's-figure-this-out message. Farrell was concerned that the proto-Jenkins community was not truly representative of the entirety of the Hudson community.
van Zyl reported similar concerns when I spoke with him earlier this month.
In that interview van Zyl painted this is as 214 users imposing their will on a 23,000+ Hudson community which, at less than one percent, would indeed be a bit absurd. Framing the vote against the whole user base seemed a bit of of a reach. When looking at who was actually eligible in the Jenkins vote, there were about 1,300 members of the Hudson mailing list who could vote on this topic. In that context, the 214 votes for creating Jenkins represented about 17 percent of the total Hudson community, still a small minority. Representing it as something larger, van Zyl said at the time, "was a bit disingenuous."
Farrell was concerned at the time that this decision was being rushed by a small minority.
"There was no coordinated plan at that time to move to github. Just a statement that it was done, [six] days before I posted my first comments to the mailing lists," Farrell wrote in November.
It was not clear to the future Jenkins team why Oracle thought the entire community wasn't being represented. Andrew Bayer, one of the Jenkins organizers, wrote to Farrell in that November thread:
"I don't mean to be difficult, but I'm still confused as to who this silent majority is and what we as a community have been doing to drive them off--I'd love to know, so that we can address those problems, as a community. I don't see how it's helpful for anyone for Oracle to declare that the Hudson community is somehow stifling discussion without actually showing what we've done wrong, or bringing the offended parties into the conversation."
Going back over these early threads in the conversation, it's easy to see that quite a few people, myself included, misinterpreted Farrell's statements as being against a move to GitHub, when they weren't. To be fair, Farrell was making statements that seemed to be declarations from Oracle, such as this summarization for one thread participant:
"...[I]n a nutshell the goal of this thread is to bring the infrastructure and source location of hudson back to where it was a week ago, and that is java.net. It is also to let people know that Oracle would like to be involved in any decision about the infrastructure since we own it and want to continue to provide it. SVN on java.net is available now for checkins. That is where people should be committing their code. We hope to have the mailing lists and other supporting pieces up in the next day or so at which time everyone should use that. Once we get all of that back in running order, we should continue the discussion of some proposed changes such as a git-based repository and where that might live," Farrell stated on Nov. 29.
Clearly, the future Jenkins developers were not interested in waiting and ignored Farrell's call for patience.
The question now becomes, why didn't the Jenkins team want to wait? Were things so bad with Java.net that any further delay was going to be harmful to the project?
I put the question to Farrell himself, who gave me his take on the entire set of events this morning.
"Basically, moving to github was never Oracle’s main issue. How the move was done was a sign of the bigger problem. Most people believe it was a GitHub issue because of a blog post by Tyler Croy. In this post he stated a few things he called 'facts,' which weren't exactly accurate. One of the 'facts' was that on 11/23/2010 [Kohsuke Kawaguchi, founder of Hudson] 'proposed moving to GitHub on the developers mailing list.' If you look at [Kawaguchi]'s blog he states on 11/23/2010 'So going forward I'll be committing to and producing releases from the Hudson repository on GitHub at https://firstname.lastname@example.org/hudson/hudson.git.' and 'I'm just as frustrated as you are, but given the circumstances, I think this is the best course of action,'" Farrell wrote.
"Now I don't know about you, but this doesn't sound like a proposal to me. It sounds like a declaration by a single individual. Also in Tyler's blog he had a fact that Andrew Bayer submitted a formal proposal to move to GitHub on 11/27/2010. That was five days after [Kawaguchi] declared it a done deal. The mailing lists were moved off of java.net to Google groups in a similar fashion," Farrell continued.
Essentially, Farrell is confirming his position in the mailing lists back in November, but it's important to note, because while Oracle was being made out to be the scary bad guy here (and I will admit I had the same thoughts), it seems that their whole motivation here was to slow everything down and get a handle on what was going on.
"Our issue wasn't about what was happening. It was about how it was happening. I posted this in an email last week to the Hudson developers list as well. I stated multiple times in that original thread that we don't have an issue with GitHub or Google Groups, but we wanted to make sure the community was represented in the decisions before they were made so we should take a step back and think this through. That part was left out of Tyler's post, which incited a lot of the misinformation around this event," Farrell told me.
Which begged the question, why did the request for Oracle to give the Hudson trademark to the Hudson community even come up? If the problem was infrastructure, then who brought it up?
"To answer your question about the trademark, that issue was brought up by Sacha Labourey of Cloudbees, not us. He and Andrew Bayer were the ones with that issue. I stated in my summary of the discussions we had that we never threatened anybody about using the name," Farrell replied.
It might be a little tedious to keep focusing on this event, and I am sure by now most of the people involved would like nothing better to move on with their respective projects. Here's why I think it's important to get this right: figuring out the forensics of what happened is important, because this is not and will not be the only case where a corporate interest in an open source project runs into trouble. Analyzing community/commercial dynamics is critical for the long-term success of open source.
In this case of Hudson, it was all-too-easy to paint Oracle as the corporate bad guy and start defending the downtrodden Jenkins developers. I should know, I did it myself. But it is now clear the Jenkins team had their motivations, too--reasons that were important enough to split the project.
It is not clear if this fork was the goal that either side sought. Both sides have implied that it was the other side's fault that Hudson and Jenkins are split, and history will tell which side was more accurate.