You’re all aware of “open-source” software, right? According to Wikipedia, open source as a development model promotes a) universal access via free license to a product’s design or blueprint, and b) universal redistribution of that design or blueprint, including subsequent improvements to it by anyone. Essentially, it’s code that’s supposed to be contributed freely, open the the public for quality inspection, and distributed freely for virtually anyone to use or modify. Unfortunately, putting all that into practice isn’t as easy as you might think, and the newly formed Cyanogen, Inc. is finding out that some developers don’t like one new definition of “free”.
What exactly is “free”?
“Free” can infer many things. It can mean:
- without cost
- without restriction
- without limitation
- not under the control or in the power of another
- able to act or be done as one wishes
- able or permitted to take a specified action
- not physically restrained or obstructed
- or even in sailing, with homage to Michael Fisher, with the “sheets eased”
When talking about “open-source” software, there are many licenses under which such code is provided and distributed. Some of the more popular licenses include, but are not limited to:
- Apache License 2.0
- BSD 3-Clause “New” or “Revised” license
- BSD 2-Clause “Simplified” or “FreeBSD” license
- GNU General Public License (GPL)
- GNU Library or “Lesser” General Public License (LGPL)
- MIT license
- Mozilla Public License 2.0
- Common Development and Distribution License
- Eclipse Public License
For illustration purposes, another popular “free” license, though not often used with code which is submitted to projects, is the Creative Commons license.
According to Google, the preferred license for the Android Open Source Project is the Apache Software License, Version 2.0. Most of the Android software is licensed under it. Linux kernel patches, however, are provided under the GPLv2 license, with some exceptions.
Are you starting to see how confusing the open-source playing field is? Unfortunately, that’s where licenses start to get really tricky (and you thought they were already tricky enough to begin with).
CyanogenMod, the project, did pretty well for quite a while. Yes, the project faced some problems with licensing, which included Google’s apps (or “GAPPS”, for short) and some proprietary device drivers, but the team has pretty much worked through those. Then they decided to incorporate. Most of us feel Cyanogen, Inc., the company, is all about getting not only the ROM but the services behind the ROM onto as many devices as possible. Some of this has been confirmed, some is still speculative deduction.
Sub-Licensing, Dual-Licensing, and Re-Licensing, oh my!
Not too long ago, some contributors to the CyanogenMod project were asked to “re-license” their code, or to sign a new “contributor’s agreement” that arguably let the Cyanogen team do pretty much whatever they wanted with contributed code.
One developer was different. His code wasn’t contributed through the “normal” channels. The code in question is the Focal camera-replacement app.
“The software is licensed as GPL, the repository on CyanogenMod’s github is forked from my GitHub, so it didn’t go through the Contributor License Agreement (which only applies to Gerrit submissions), and the Berne convention can prove through the commits history that I did fully write the app, and not Cyanogen Inc. – and even if the CLA would apply, it only allows them to sublicense the software, not relicense or dual-license it without my permission.”
But that’s just what happened, +Guillaume Lesniak, the developer of Focal, was reportedly told by Steve Kondik, Cyanogen himself, that the GPL license “wasn’t ideal” and Focal would need to be re-licensed. After some back-and-forth it was decided that Focal could keep it’s GPL licensure, but would be “dual-licensed”. The app would remain GPL publicly, but would still allow Cyanogen, Inc. to do whatever they wanted with it.
What’s the problem with that?
It breaks “openness”
Part of the beauty of the CyanogenMod project (and other open-source projects) is that any improvements that are made to the code in the project has to be made available under an equivalent license. Apparently, Cyanogen, Inc. expects some problems with that going forward.
Many OEMs don’t want to share their proprietary code (drivers, cameras, etc.) with the community. This puts open-source projects at a disadvantage because these components must be reverse-engineered and implemented, sometimes without the same benefits as the original, closed-source software. This can mean graphics don’t look as good, photos aren’t as nice, processors don’t perform as well, and so on. But these companies would rather keep that to themselves and have a product that rarely gets patched or updated than “risk” their intellectual property “getting out” — or so I have to assume.
As such, the Focal app would have to get some “closed” code to make various devices work to the highest levels their hardware would allow. But since this code wouldn’t be shared under a similar license, it “breaks” the openness of the project. Hence the need to “dual-license”.
Yikes! This is complicated!
Yes, yes it is. And it’s got more than a few developers deciding that re-licensing or dual-licensing their code goes against the benefits that “open source” is supposed to bring. Many are removing their code from the project. I don’t blame them.
What does all this mean for Cyanogen, Inc.? The company is going to have an up-hill battle trying to keep open-source contributors happy while still being able to keep updates closed. More developers are going to leave, which will require Cyanogen, Inc. to re-write code — reinventing the wheel, as it were — under a compatible license structure.
Where will all those displaced contributors go? They’ll find another open-source custom ROM to which they can contribute. In the meantime, CyanogenMod will continue to spread its influence over power user’s phones and tablets. Eventually, CyanogenMod will become available in two flavors (or many more): one (or many) on closed-source devices, and another open to the community. That kind of schism isn’t healthy for a project like CyanogenMod, and losing a notable portion of one’s contributors, well, that’s not healthy for Cyanogen, Inc.
In the end, incorporating and caving to OEMs who don’t want to share their code goes against what most of us felt CyanogenMod was designed to do, and could very well prove to be the Achilles Heel of an otherwise promising project.
What do you think?
Is this the beginning of the end of CyanogenMod as we’ve come to know it? What impacts will Cyanogen, Inc. and its licensing drama have on the custom ROM? Is all of this being blown way out of proportion? I’m curious to know your thoughts. Head down to the comments and let me hear it!