Note: As usual, I have over-analyzed an issue that normal people wouldn’t spend two minutes thinking about. I apologize to my three readers in advance, but unlike more famous commentators on open source I often find that it is not possible to explore the nuances of issues in our community with a couple of short sound bites.
I have been in Italy for the last week scouting locations for our Italian headquarters. I’m thinking Positano would be a great place:
I was also able to take a few days off for a short holiday, but I couldn’t stay off the Internet for long. As I was skimming through my news feeds, I came across a post by Brian Aker about dual licensing open source software, and it stuck in my mind. It wasn’t necessarily the topic but it was the, well, harshness of his post. It was full of absolutes and hyperbole which is very unusual coming from Brian, and it must have struck a chord with others as it managed to appear on Slashdot as well.
For a little background: Brian was one of the early contributors to MySQL, and MySQL pioneered the idea of “dual licensing” open source software. The legal basis for open source is based on copyright law (distribution of software is considered in the same fashion as distributing “copies” of other works, such as books and music). The holder of the copyright is able to set the terms by which copies can be made. MySQL published its code under the GNU General Public License (GPL) which allows for derivative works to be created and distributed as long as the requirements of the license are met. By its very nature the GPL makes it difficult to commercialize the code itself, since when it is distributed one is required to include the source.
However, MySQL retained 100% of the copyright to its code, and so it was also able to offer it under a license that was different than the GPL. Thus if a company wanted to embed MySQL into its product but didn’t want to be subject to the GPL, they could purchase the rights to use the software under a proprietary license. This enabled MySQL to create a revenue stream from the code, which allowed it to hire more people, advertise, etc.
In my very first post on the subject of open source licensing and business models I mentioned this model as being an acceptable way to fund open source development. The main caveat was that there may be some resistance from the community to contribute code if they had to transfer the copyright to MySQL, but it didn’t appear that the MySQL community cared.
Well, times change. It is my understanding that as MySQL grew they started to offer code to their commercial clients ahead of the community, and they may have even adopted more of an “open core” model where some of the code was never offered under an open source license (I’m not 100% sure of the details). Eventually, MySQL was bought by Sun and now Sun is in the process of being purchased by Oracle.
And this is where the trouble begins. MySQL was one of the first, if not the first, open source database projects that aimed to provide an alternative to commercial products such as those sold by Oracle, so one has to wonder what Oracle will do with MySQL. It is doubtful that a company like Oracle will focus on undermining its main product line with an open source alternative. I’m not saying that they will kill off the product as I seriously doubt that, but the motivations behind it have changed (see the 451 Group for a better timeline on this).
This has resulted in some turmoil in the MySQL community and the announcement of a number of code forks to MySQL. At issue is that since Sun, and possibly now Oracle, holds the copyright to the code there are some limits placed by the GPL for anyone wanting to commercialize those forks or even create free alternatives. Brian Aker works on a fork of MySQL called Drizzle, and I believe that his involvement in, and possible frustration with, the whole copyright issue lead to his post on “The Peculiar Institution of Dual Licensing“.
He starts off with a quote from Richard Stallman that ends:
With excellent management and considerable trust within the user community, MySQL became the gold standard for web based FLOSS database applications.
I think the key phrase here is “considerable trust”. In the case of MySQL, there must have been some considerable trust within the community to contribute code since it became the property of MySQL. More on this in a moment.
To move on to Brian’s comments, the first sentence that struck me as odd was:
Dual Licensing is nothing more then the creation of yet more software, where the end result is the creation of not more open source software, but the creation of yet more closed source software.
I had to think about this one. The only way I could make it work was that if open source code is available under a dual license, then that code can become part of closed source software through the purchase of a commercial license. That code is by definition closed source, since there would be no reason to purchase a license if it was open source code. But my guess is that any real open source software company would use the money raised from such licenses to focus on the main open source product, thus increasing the amount of open source software. Also, if the “Bubba’s Inventory ‘n Stuff” application chooses to license and embed MySQL, its distribution will probably be more limited than MySQL itself, so the ratio of open to closed software is relatively unchanged and may even increase with respect to open source.
Brian continues:
The GPL’s approach is to provide a stick or carrot. If you are open source, then you don’t pay, assuming of you are “the right” sort of open source. If you are close source or pick a license which is not compatible with the GPL you are forced into paying for use of a commercial license. When you “pay” for open source the freedom that was originally offered to the end user is removed.
I don’t understand this talk of “‘the right’ sort” of open source. It’s like the guy who compared the GPL to DRM. The creators of open source software have a wide variety of licenses they can use, from the very permissive Apache and BSD licenses to the more restrictive GPL. Brian seems to be making the case that some are better than the others. He used the word “forced” – who is “forced” to use open source software? If you don’t like the license, don’t use the code. It’s not about forcing people to use software but offering a choice. Dual licensing actually increases freedom – you have the freedom to use the software at no cost under the open source license, and you also have the freedom to purchase the right to use it outside of such a license.
Recently I’ve been giving a talk about what it is like to run a business based on open source software. While the presentation is constantly evolving, it starts off with the two main options for creating powerful open source software. One is to form a “foundation,” preferably non-profit, that is funded by companies with a vested interest in seeing a certain type of application created. This has resulted in a number of amazing projects such as Firefox and Apache. A company like IBM may want to have an alternative to Microsoft Office without having to own such a product line, so they fund OpenOffice. Rackspace may need the benefits of a project like Cassandra, and so they keep people on the payroll to make it a reality. In many cases these projects are published with very permissive licenses so that the commercial entities behind them can take full advantage of the software without many restrictions like those imposed by the GPL. Since permissive licenses allow easy integration into closed source software, I’m not sure if Brian would consider this the creation of more of the same, but in any case it is hard to argue that certain projects have thrived very well under the foundation model.
The other way to produce large scale open source software is to create a company to support the project, such as is the model with OpenNMS and The OpenNMS Group. In this case funding the effort is more problematic. Without a “patron” supplying the resources like in the foundation model, a business has to look more seriously at the bottom line. It has to build up a customer base and a brand, and in the case of a bootstrapped company like OpenNMS this takes time. Despite that we have created some really amazing code, but without a more restrictive license like the GPL someone with money could take our work and quickly commercialize it. It is important that the ownership of OpenNMS is controlled by a single group to enforce the license and to prevent this. Brian has his own comments about ownership:
At the heart of dual licensing is “ownership rights”, which inevitably come into conflict with the nature of open source. Open Source projects that preserve the ability to do dual license come into conflict with the developers who contribute the code. For the project to continue it must ask the original developer to give up their rights to the code via copyright assignment (there is some debate on whether copyright can be held in joint, but this is often disputed by lawyers). Thus dual licensing forces any developer who wishes to contribute into a position of either giving up their rights and allowing their work to end up in commercial software, or creating a fork of the software with their changes. In essence it creates monopolies which can only be broken via forking the software. Forking software over small changes is for the most part unviable because of the cost of keeping a fork of the software up to date, but it is not impossible.
I really dislike this paragraph since it tries to paint in shades of black and white a subject that is anything but. Since the entire concept of open source software is based on copyright law, by its very definition it requires an “owner” to enforce the copyright. At OpenNMS we found out the hard way that when the copyright is held by multiple parties it makes it very difficult to enforce any license.
I also don’t think that it is “inevitable” that these rights will cause conflict. Brian is probably experiencing some friction between Drizzle and MySQL, but I don’t think that one example makes conflict “inevitable”.
He then brings up my original criticism of MySQL’s contributor agreement which required that a developer assign all rights to any contribution to MySQL. Think about it – suppose some person came up with a cool algorithm that improved performance and contributed to MySQL, assigning all rights. This would not only give MySQL complete ownership of the work product, but it would prevent the developer from using his work in another project.
This is why at OpenNMS we adopted the Sun Contributors Agreement which allows for multiple copyright holders. Contributors assign copyright to the maintainers of the project, which allows them to more easily protect it from abuse (as well as dual licensing the code if they so chose), but they retain the copyright to their work. For example, Bobby Krupczak contributed a data collector for XMP, a new network management protocol he is developing. He assigned copyright to that work to OpenNMS so we could use it in our project but he retained the rights to his work so he could also contribute that code to another project or create one of his own. The contributor loses no rights yet the project can maintain some form of control over the whole work. I think this is an awesome concept but Brian states that “this is often disputed by lawyers”. He doesn’t link to a single example and while I am certain there are one or two lawyers who would be willing to raise an argument against it, in my experience it isn’t a concept that is “often disputed”. It reminds me of the fear, uncertainty and doubt spread around the GPL and its enforceability, but as time has shown the GPL does stand up in court and I think the idea of dual copyright will as well.
In addition, dual licensing provides an option for companies that would like to use open source software and perhaps even contribute to it but for a variety of reasons cannot. One recent example would be Apple’s use of ZFS. It was obvious that they were considering support for ZFS but for some reason they changed their mind, and the rumours indicate licensing. As it would have been in Apple’s best interests to contribute back to the project, this would have been a win for ZFS, but now that option for improvement is gone.
I think that Brian is reacting more to a problem specific with MySQL than with open source as a whole. His frustration is evident with such loaded phrases as “take the rights from others” and “lack of imagination”. I don’t believe anyone’s rights have been taken away, except for those that freely gave them to MySQL. If there is some assumed right that open source code can be used by anyone at any time for any reason, then we are no longer talking about open source. The creators of open source software have always been able to protect both their work and their rights through a variety of means, but there has never been a real or implied right granted to end users that wasn’t specified in the license. It seems Brian wants to move the slider from “open” to “free” but I don’t think that is sustainable in many cases.
What I do think is sustainable is a 100% open source project that also has a dual license option. It does involve a level of trust between the copyright holder and the community and the implied covenant that profits from such licenses will be fed back into the project, but it is definitely doable. In this instance Stallman got it right.
Win.
In my opinion MySQL and its licensing is a mess. I’ve preferred PostgreSQL for many years for technical reasons, but the Postgres licensing has MySQL’s beat.
PostgreSQL is quite similar to OpenNMS in some ways. They both have a simple licensing situation and they both have one or more companies offering support and development who will feed back into the open source project.
I know which approach I prefer…