A couple of days ago I saw a post by Dana Blankenhorn continuing the discussion of copyright assignment in open source. He pointed to a piece by Michael Meeks that he describes as:
This may be one of the most important papers on open source since The Cathedral and the Bazaar. It is well worth your time to read it in full.
With a comment like that, how could I not read it?
The main driver for a lot of this discussion is the impending acquisition of Sun, and thus MySQL, by Oracle. MySQL had a policy that any code contributed to the project required that the author assign the copyright to to the MySQL corporation. This gave them full control over the application, including the ability to publish it under different licenses.
The problem I foresaw with this was that some contributors would be reluctant assign copyright, and thus community contribution to MySQL would be lessened. This really didn’t seem to affect MySQL at all, and the fact that they “owned” 100% of the code definitely helped them get bought for US$1 billion by Sun. Their ability to generate revenue from that code was also responsible for their rapid growth and in a large part helped make the MySQL database what it is.
But now that MySQL looks destined to be owned by Oracle, people are worried that Oracle won’t put much energy into the project. MySQL was designed to be a replacement for Oracle’s bread and butter products, so it is obvious that as the new owner, Oracle won’t be working too hard to put itself out of business, thus the only real question is how much less effort will be put into MySQL. Since MySQL was published under the GPL, it would be very hard for another company to commercialize it, which will limit the chances that a well funded fork could be created. MySQL’s future growth looks pretty small, or at least much smaller than it could have been under a different owner.
Because of this, one of the MySQL founders, Monty Widenius, has even started a petition to prevent the sale by appealing to the EU.
Now I’ve had a couple of e-mail exchanges with Monty and I found him to be a very friendly and nice guy, but I’m a little puzzled by his actions. One can only assume that as a founder of MySQL he made quite a bit of money on the sale of the company, and that he was also instrumental in creating the company that eventually was sold. Thus his decisions led directly to this predicament. It seems to me, well, “wrong” to accept VC money, have a record breaking buy-out and then want things back the way they were, so I have little sympathy for this effort. Perhaps instead of trying to block the sale via legal channels he would be better off forming a foundation to try and purchase MySQL back from Oracle and then he could make it as free as he wanted.
Anyway, had MySQL been licensed under a more permissive license, or had contributors not assigned copyright, it would make it much easier for a third party to step in and commercialize a fork. I responded to some of Brian Aker’s comments on the subject a few weeks ago, and now I thought it’d be fun to examine those of Michael Meeks.
The two main points I took away from Michael’s paper were that copyright assignment should be avoided, and that one should use a permissive license. This is in order to build “a social environment built for the common good”.
I can’t really disagree with his conclusions. I believe that, yes, if one wants “a diverse, and thriving developer community” creating software with the most freedom is important. But it is based on one of the biggest flaws and misconceptions about open source, which is that simply by being open source thousands of qualified people will give up nights and weekends to work on your project.
I would never base any business plan on altruism. In fact, I don’t think it exists, at least on a large scale. People are selfish, and they do things in order to bring themselves personal gratification. The trick is to align those things that benefit individuals with those that benefit the group.
In many cases the ideas that Michael describes work. If you take a look at some of the successful open source projects, the end users are also developers (Spring, JBoss and to a lesser extent MySQL). The product that is sold is usually built using the open source tools, but it is not the tool itself. Thus having permissive licenses can make this very beneficial for all involved, since they are then free to commercialize the final product as they see fit.
But what happens when the project is aimed at end users and not developers? Take OpenNMS for example: our end users are network and system administrators, not Java coders. The project is the product. In order to develop this software, someone has to write it, and the most qualified coders tend to have things like mortgages, car payments and other needs that require money. It’s fine to preach altruism when you work for a large company like Novell or Sun, but what about small companies that are dedicated to open source? How can they make money and protect their work, while still remaining true to open source ideals?
In my own experience with OpenNMS we had a company that took our project, made some changes to it and distributed it in violation of the license. They had raised several million dollars in VC money and thus were able to hire the resources necessary to rapidly advance the application, and they claim to have made millions more selling, ultimately, the work of our community.
Had OpenNMS been published under a permissive license, this would have been perfectly legal. Thus the work of a small but dedicated group of people could have easily been commercialized by a larger company with more money. But since OpenNMS is published under the GPL this was not permitted, so we decided to pursue legal action.
The first thing you learn is that you are on your own. No one really cares that someone is abusing an open source license, especially if the code being stolen is maintained by a commercial institution. Luckily we were in a position to afford to hire a legal team.
Then we hit the second hurdle. At the time no single entity held copyright to the OpenNMS code. All code up until version 1.0 was held by Raritan (which had bought the assets of Oculan after they went out of business) and most of the remaining code was held by the OpenNMS Group. The company in question claimed that if it was using the code in violation of the license, it was only the code for which Raritan owned the copyright, and thus we had no recourse, as only the copyright holder can enforce the license.
It took us a year working with Raritan before they could join us in pursuing this company, and in that time the company ripping off our community’s work tried to clean up their act by releasing a fork of OpenNMS. While I can’t see how that fork would absolve them of their licensing issues (OpenNMS is a Java program published without the classpath exception, so simply importing OpenNMS classes is the creation of a derivative work under the GPL and there is no way this forked code could have been used without importing those classes) it did muddy the water quite a bit. I also found out that the legal system in the United States is reluctant to award damages based on software that used to violate a license, even if that software was sold for large amounts of money.
Before we could pursue it much farther, that company closed its doors. Whether our actions had anything to do with it, I don’t know, but part of me likes to think that there were some consequences for the theft of our code. But we did get a benefit: Raritan was willing to sell us the copyright to the code we didn’t own. It wasn’t cheap (two houses had to be mortgaged to cover the cost of the loan) but it was fair.
Once we purchased the copyright to the 1.0 code, all that remained for us to be able to defend OpenNMS from cases like this in the future was to reach some sort of agreement concerning copyright with the 40 or so contributors to OpenNMS since 1.0. Copyright assignment seemed to be the best way to go, but it didn’t seem fair to me. For example, suppose a member of our community comes up with a cool algorithm for doing some task and they integrate that into OpenNMS. Copyright assignment would mean that they were giving away that work, and if they wanted to reuse it in the future they would have to license it back from us. While it is important for all of the OpenNMS code to have a single owner, that was not fair to, and definitely discourages contribution from, the original programmer.
Our solution came from an OGP member named DJ Gregor who suggested that we adopt the Sun Contributors Agreement (SCA). This introduces the concept of dual-ownership: the copyright is assigned to a third party yet the author also maintains copyright. While this has never been tested in court, I trust the Sun legal team that it will hold up. I was happy to see that this meets, somewhat, with Michael’s approval, as he mentions the SCA a number of times in his article.
Thus, based on my experiences with OpenNMS, for a small company trying to make it with a business based on open source software, I think restrictive licenses like the GPL are crucial, as is copyright assignment.
The key part of any community is trust, and open source communities are no different. We don’t have huge numbers of people outside of the company contributing code (heck, we tend to hire the most prolific coders) but we do have an active core of people that help keep the project moving forward. The way we’ve been able to maintain that is by promising that no matter how much OpenNMS grows or is packaged in the future, the source will always be 100% available under an open source license. This is a promise we maintain by doing all of our development publicly – even custom development projects have their own branches in our git repository.
And we truly do listen to our team (DJ’s suggestion of the SCA as a case in point) even if they aren’t employed by the commercial side of the project. They are empowered to help determine the direction of the OpenNMS even though they don’t work for the company.
I think it is easy to describe a utopian world where all software is free, especially when your paycheck doesn’t directly depend on revenue from that software, but for a company that wants to both generate revenue and remain 100% open source, some sense of ownership and control is necessary.
I agree with Dana that the article is definitely worth reading, although I’d stop short of comparing it to The Cathedral and the Bazaar. Also check out the links at the bottom of Michael’s post. It includes the aforementioned article by Brian Aker as well as a great one by Bradley Kuhn called “‘Open Core’ is the New Shareware“.
At OpenNMS we try to avoid the pitfalls of open core commercial software by publishing 100% of our work publicly, but that requires such things as a restrictive license and copyright assignment. As with any situation involving trust it takes time to build, but we hope to continue to earn it.
“Raritan was willing to sell us the copyright to the code we didn’t own. It wasn’t cheap (two houses had to be mortgaged to cover the cost of the loan) but it was fair.”
Wow! Didn’t think it would be that much.
Heh – over US$10 million was spent to develop it, and while I assume that Raritan paid significantly less than that for the IP, it was far from cheap.
This OpenNMS is good stuff (grin).
Thanks for posting this, Tarus. It’s great to hear what other FLOSS folks are doing with regard to copyright assignment.
I work on Mifos; our contributors must give us copyright. I pushed for this because we’re currently licensed as Apache 2.0, but we considered the GPL v3 at one time, and it would be a pain to change the license if we need signoff from every contributor.
With dual copyright assignment, can you change the license without asking every contributor? Not that you’d want to, I’m just curious.
Cheers,
-Adam Monsen