IP rights on my Hudson contributions

There seems to be some confusion/mis-information about the IP claim I made in my previous post, so let me clarify why I think they are valid. There are two parts to it.

First, about contributions I made during the early days of the project, when it was still my hobby project. It is generally true that corporations want to own as much IP as possible that employees create (and justifiably so, since that’s what we get paid for), and Sun was no exception. However, there’s California labor code section 2870, which says employees get to retain rights under certain conditions. The question here is whether something like Hudson was “actual or demonstrably anticipated research or development of the employer.” If it’s interpreted broadly, I suppose one could say any tools can be “anticipated development for Sun.” But if the emphasis is on “demonstrably”, maybe I get to keep the rights. I honestly don’t know. (For fairness, there’s also considerable portions of code that I created that are undoubtedly owned by Sun and hence now by Oracle — I never said I own everything.)

Second, there are contributions I made after I left Oracle, before we moved on to Jenkins. I think it’s pretty clear that that portion doesn’t belong to Oracle.

If I guess Oracle’s position correctly, based on a comment from Ted in my blog, I believe their approach is that the copyright owner doesn’t really matter, as the whole thing is licensed under the MIT license. It is true that the MIT license is very non-restrictive, and one can combine it with just about any other licenses without making whole thing incompatible.

The MIT license says the following, so I’m still not sure how it can be re-licensed to any other license, but it certainly can be put side by side with code under EPL, so maybe that’s what they intend to do. Again, I just don’t know:

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

I hope that clarifies what I mean.

Oracle proposes to move Hudson to Eclipse

I was about to go into my session in JAX 2011 when I learned that Oracle made a proposal to move the Hudson project to the Eclipse foundation. Needless to say, I was quite surprised!

One one hand, I think this definitely shows the great success of the Jenkins project post divorce. As I discussed in these slides with concrete numbers. Were it not for the succcess of Jenkins, they wouldn’t be giving up the project.

But at the same time, I just wish Oracle saw that coming a few months earlier, while we were still seeking the middle ground. We were very interested in having the trademark moved under the custody of a neutral 3rd party, but they were very clear that that’s not acceptable to them. And it also disppoints me that they decided not to reach out to the Jenkins community about this move, when we’ve been conducting our governance meeting all open out there for anyone to join. But I guess they are never really interested in working with us.

I’m also curious how they intend to handle some IP related issues. Two things come off the top of my mind. The current logo, which is a Microsoft clipart. We’ve mentioned that to a representative in Oracle some time ago, but we haven’t heard back. Then there are about 6-month worth of my contributions after I left Oracle, which I don’t think Oracle can unilatelarly donate to the Eclipse foundation.

One last plea for Hudson/Jenkins vote

As Andrew posted, the vote for Jenkins is open now. You need to be a member of the users or the dev list to be eligible, and the detailed instruction can be found here. I thought I’d take the opportunity to make one last plea to the community.

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 such, regardless of the outcome of the vote, I find it very unlikely that I can continue to contribute to the Hudson project, and thus I will move on on Jenkins. I can’t control what others do, but I can at least decide what I personally do. While days leading up has been rather hard on me emotionally, now that I made up my mind, I actually feel good (besides, it’s such a nice day in San Jose today.) I’m confident that many key core and plugin contributors (who has made Hudson what it is today) will join me, and I hope users will follow us too (which is the other part of what made Hudson what it is today.)

What I’d like to ask the broader Hudson community is to have your voice heard and give us your support by voting. That you want to be with us. It lets us maintain the continuity of the project, it gives us legitimacy, and it sends a singal to the unaware silent majority which way they should follow. It’s the best way to maintain our community.

So please let your voice heard, and help us spread the word. For one last time.

On Oracle proposal about Hudson

Oracle posted their proposal on the future of the Hudson project here (the cached version is here and here in case it changes.)

In this proposal, Oracle has not shifted at all from their original position that resulted in the community posting the proposal to rename. It’ll keep all the rights on the trademark Hudson, and it will continue to collect CLA from the core contributors. The proposal includes a clarified fair use policy to derivative work, but it doesn’t include any provisions about how the project can continue to use its name in the future, which was the central issue.

I think the message is quite clear, that Oracle intends to change the way the project is run, and that they are driving the effort unilaterally. You can see it in the proposal itself:

As many of you have pointed out, there can be a fork at any time. If Oracle ever did anything that the community disagreed with, whether it was enforcing new rights on the Hudson name, or trying to muscle the community, the community could always fork at that point in time. That is one of the assurances against a corporation doing things like that. … There are many ways to run an open source project. I think in order for Hudson to grow and reach more people the core community needs to grow and become more open and equal.

Notice that in their eyes, what happened in the past two months is not something “that the community disagreed with”, and putting a stop to a well agreed GitHub migration is not “trying to muscle the community.”

In my opinion, their proposal reinforced that our concerns were legitimate and what we feared is already happening. If the outcry from the community didn’t win any compromise from Oracle, I honestly don’t know what will. This is precisely why we need to rename now, and not later. If this isn’t enough for us to be resolute, then we’ll be divided and conquered through a series of highly technical confrontations that cannot rally a larger community, the community gets gradually boiled to death like a frog.

This “our way or highway” theme can be seen in many places throughout our conversation. They are going to dictate their will on us, when they contribute less than 1% of commits since I left Oracle. They think they have a proven record of leading open-source projects, when the record shows otherwise.

Since their position hasn’t changed, I continue to stand behind our earlier proposal to rename. That is,

  1. We rename the project to Jenkins. We’ll trademark the name, and transfer that to the umbrella of the Software Freedom Conservancy, to ensure that the owner of the key assets cannot use that to unfairly influence the project.
  2. For core, we’ll also start collecting CLA assignable to SFC for the same reason, when we are admitted to SFC.
  3. Grant the trademark usage in the same way the Linux trademark is handled.
  4. We’ll foster the same open atmosphere that we always had, where everyone is a committer just by asking (plus CLA for core), proposals are discussed on their technical merits and not by the title of the proposer, inputs from plugin contributors are valued, and the consensus of the community trumps any single entity.
  5. We’ll put an interim governance board in place, until the governance structure is secured and hold an election of the board members. I suggest myself, Andrew and, if Oracle elects to remain involved, Winston Prakash, the Oracle engineer working on Hudson, be the interim board members.
  6. We’ll move our infrastructure off from Oracle-owned servers and for other infra resources that are hosted elsewhere, such as GitHub and Google Groups, we’ll rename them for Jenkins.

Now that we know all the options on the table, I believe Andrew will get a vote going soon. Please help us with your support. To borrow a line from a movie I recently watched, “when bullies rise up, the rest of us have to beat them back down.”

Bye bye Hudson, Hello Jenkins

(This post was originally made under an incorrect location, so I’m moving it here. The contents haven’t changed since its original post on Jan 11th 2011.)

As some of you may know, toward the end of the last year, Hudson project has experienced a fire drill — you can see it here, here, here, and here. In short, the issue was that Oracle was asserting a trademark right to the project name “Hudson”, and that caused some considerable concerns to the community. Since then, key community members were talking with Oracle, in an attempt to produce some kind of proposal for a stable structure and arrangement, which was then going to be proposed to the Hudson community.

And as Andrew posted in hudson-labs.org, there is an update now — the negotiation didn’t work.

The central issue was that we couldn’t convince Oracle to put the trademark under a neutral party’s custody (such as Software Freedom Conservancy), to level the playing field. In a project where the community makes commits two order of magnitudes bigger than Oracle, we felt such an arrangement is necessary to ensure that meritocracy continues to function.

Aside from this, Oracle wanted a broader change to the way the Hudson project operates, including a far more formal change review process, architectures, 3rd party dependencies and their licenses, and so on. Those policies are worth discussing on their own, but it was very risky idea to have someone external to the project draw them up. Instead, in a normal OSS project, such processes would normally come out from the dev community itself, based on how it has been functioning. This is where I felt that the lack of “level playing field” I mentioned above is already affecting us. (And on that note, there’s another asymmetry about the CLAs, that we haven’t even touched on.)

All of those still might not have been a show-stopper if we felt that there is a genuine trust between us, but in this case, we just failed to build such a relationship, even after a month long conversation.

So in the end, we’d like to propose the community that we regrettably abandon the name “Hudson” and rename to “Jenkins” — it’s another English-sounding butler name that doesn’t collide with any software project as far as I can tell. This option was something we’d have liked to avoid, for all the obvious reasons, but I’m convinced that for a long-term health of the project, this is the only choice. It makes me sad at a personal level too, as I named this project Hudson back in 2004, and cherished it ever since. But the storm is gathering over the horizon, and the time to act is now.

The details of the proposal is again in the posting at Hudson Labs, so I won’t repeat it here. One thing I wanted to stress is that we’d like to move Jenkins under the umbrella of SFC, a neutral overlord that doesn’t concern itself with the daily technical matters of the project, just like how Sun was. That’s the model under which Hudson has grown, and I think it still fits us well.

There will be a poll running to get the broader community concensus. Please give us your support, and please let your voice be heard.

Hudson java.net migration status update

Monday morning I came into work and discovered that I cannot commit to the Hudson Subversion repository. Initially I wasn’t worried — I thought it was just another java.net outage that will resolve itself in a few hours — but a little research a bit later revealed that Hudson was locked down and being migrated to new java.net infrastructure.

I and the whole community was quite surprised by this, as we are supposed to be “notified as soon as we assign a date for [our] projects to move.” But by the time the developer community noticed, the project was already locked down, repository is read-only, and mailing lists can stop functioning any time. My immediate action was to contact the folks who are doing migration to get Hudson out of this cycle of the migration, but I was told that the ship has sailed and it was too late.

Even worse, there’s no ETA — it’ll definitely take a week, but since this is a Thanksgiving weekend, it can take longer, Oracle said.

I find this situation plain unacceptable, and e-mails from the earlier migration effort made me doubt if the new infrastructure is any better. I also had a pleasure of working closely with CollabNet folks over the past years and I was also involved in some earlier conversation and experiments about the new java.net infrastructure, and when it comes to performance and monitoring, CollabNet folks really knew what they are doing. So I had multiple reasons to worry if the new infrastructure can handle the load of java.net, which the old CollabNet-hosted one couldn’t handle.

But fortunately, since the general java.net migration has been announced, we’ve discussed the migration of some of the project infrastructure. So we’ve accelerated the plan and implemented it, so as not to lose the critical project infrastructure services.

Mailing Lists

Hudson mailing lists are moved to Google Groups. See more details here and here. The new mailing lists provide a real search capability, decent UI for archives, and it makes it easier for people with multiple e-mail addresses to post from multiple addresses and receive just one copy. The stability of the service is also much better.

Source code

Hudson core source code has been long synced to GitHub. We’ve been getting several contributions through that already, and people have been asking for Git migration for long time anyway. So going forward I’ll be committing to and producing releases from the Hudson repository on GitHub at https://kohsuke@github.com/hudson/hudson.git.

The new Git-based repository would be far snappier to work with, and it’ll make it easier for people to maintain private changes and contribute changes back. There’s also a work in progress to set up Gerrit to streamline the patch review process to the core. So I think this further reduces the barrier of entry to the Hudson project and accelerate the progress.

The migration of Hudson plugin repositories still needs to be discussed, so stay tuned for the updates in the dev list today or tomorrow. I’ve developed a bulk import program whose output can be seen here, so I’m going to propose this as the migration strategy.


My apologies that these changes had to happen quickly — I’m just as frustrated as you are, but given the circumstances, I think this is the best course of action. Hopefully everything will be in place within a few days. And in the mean time, thanks for your patience.

2010 Tokyo Trip Summary

It’s been a while I visited Japan (in fact I believe it’s been two years since my last visit), but as always this 1 week trip was quite packed and exhausting.

Fist, I’ve made a number of visits to companies big and small using Hudson. I was pleasantly surprised to learn that several largest IT companies are starting to deploy Hudson in a large scale (and in some places they’ve dedlicated engineers to work on integration and deployment.) I’m working with them in the hope that they can discuss more about their experience in public, which would help spread Hudson in Japan.

I’ve also made a number of presentations. I gave one talk about how Hudson can be used to test Android apps, and another about Hudson and cloud. There was a lot of interest in the Android developer community about automated tests (especially with real devices, since there are now so many Android phones) — could be something interesting for CloudBees.

I’ve also helped organize the first Hudson user meetup in Japan, and did a presentation there as well. This was held in one of the biggest room in a local university, and Hudson users showed up in full force — I was told there were 208 people attended. 9 people took turn presenting various topics around Hudson, and there was a healthy mix of Java, Perl, and Ruby. We’ve launched Japan Hudson User Group (JHUG?) in this event, and we are working on hosting another meetup event in Feburary.

The last talk I gave was at the home-coming day of my college, and there I mainly talked about RELAX NG and how what I leanrt there was useful/unuseful in my professional carrer. I particularly enjoyed giving this talk, as it gave me an opportunity to reflect upon my past 9 years in the U.S.

Aside from those day activities, no trip to Japan is complete without incredibly good (and expensive!) sashimi, sushi, and other Japanese cuisines, and too much dose of alcohol. Unfortunately, I had spent most dinners in 懇親会 (a social get-together party after a meetup that involves beer), so I didn’t get to complete my what-to-eat list. But there’s always a next time.

Thanks for everyone who gave me chances to talk about Hudson, and it was nice meeting you all. Looking forward to seeing you again soon!

Visiting Japan next week

I’ll be traveling to Japan for the entire next week. I’ve got a number of talks scheduled, so if you are in Tokyo around that time, please come see me speak Japanese :-)

11/11 37th Cloud computing meet-up jointly held together with 2nd Android users group test SIG meet-up
I’ll be talking about Android and Hudson, as well as cloud computing and Hudson. Hudson is a system where it’s got a number of plugins that make it usable in just about any development environment, so I’ll be talking about Android and cloud from those angles. Given the audience, I also intend to do a Hudson intro as well. RSVP from here, and here for the social afterward.

11/12 Hudson user meet-up (or aka “Japan build engineers’ symposium”)
Many of the key Japanese Hudson community members (as well as users) are here to talk about various aspects of Hudson. The Japanese Hudson user community isn’t really visible as it doesn’t really interact with the main English-speaking Hudson community, but it’s a huge community. More than 200 people signed up for this meeting, so it should be fun. Again, please RSVP from here.

11/13 University of Tokyo Home coming day, Information science department symposium
This is bit different from others in that I’ll be talking more than just Hudson. I wanted to talk about more broadly about what I’ve done in the past 10 years since I came to the U.S., about RELAX NG and what I learned from it, how my college education helped me or didn’t help me, and how the whole thing led me to Hudson. The event is open to public, so please see the time/place and come see me.

As is typical with the way Japanese people work :-), most of these meetings are in the night, and that means I’m pretty flexible during the day. So if you’d like me to come talk about Hudson or otherwise just willing to have a lunch with me or something, please let me know. It’s been a while I’ve been to Tokyo, so I’m really looking forward to it. I’m starting to build a long list of what I should eat while there.

See you at JavaOne!

With a week-long Scandinavia tour over, my nexgt big week is JavaOne! JavaOne has always been an incredibly busy week for me, but this year is no exception.

  • Sunday before JavaOne, we’ll be having a full day Hackathon at Digg. If you are around, please RSVP and join us.
  • I’ll be presenting a Hudson talk (S313338 – Sep 20th 10am in Parc55). I’ll discuss the current state of the project, then I’ll spend most of the time talking about various techniques on Hudson that goes beyond simple builds & tests.
  • I’ll be on a 15-minute OTN video interview after that.
  • InfraDNA will have a kiosk outside the JavaOne vendor exhibit area. We’ll be showing our value-add Hudson distribution ICHCI, and we’d be happy to answer any Hudson related questions/comments, so please drop by. I should be at the booth most of the time.

I think it’ll be fun, and I certainly look forward to seeing as many of you as I can!

My Upcoming Presentations

I will be presenting Hudson (with a focus on its Selenium support/integration) at the upcoming San Francisco Selenium Meetup event on Jun 22nd in San Francisco. There are several Selenium-related plugins in Hudson, but running Selenium tests on Hudson involves some initial setup cost. I’d discuss those, plus general-purpose features in Hudson that really work well with Selenium.

In the week after that, from 30th to July 3rd, I’ll be in Israel, thanks to JFrog. This is my first visit to Israel, so I’m really excited. If there are any Hudson users there who’d like to meet up, please let me know, as I’m always interested in seeing different deployments of Hudson and learn from those. Or if you are interested in having me do a short on-site work, there won’t be any travel cost, so this would be a good opportunity ;-)

Further down the road, I’ll be speaking in JavaOne 2010. Historically we have a good number of Hudson committers/users in JavaOne, so we’ve been doing some get-together. I hope we can do it again, so please stay tuned as the details of the conference develops over the summer.