Menu

The DARK Side of CyanogenMod aka Cyanogen Inc

A few days ago CyanogenMod announced Cyanogen Inc, a new commercial company which already had an investment of $7 million. A few days later Focal was removed from CyanogenMod due to differences with Focal’s developer Guillaume Lesniak aka xplodwild. The initial removal commit message said that there were a lot of issues with Focal and it was not working well with a lot of devices, later Steve Kondik aka Cyanogen jumped in and mentioned about the rift and that it was better that Focal continued as an independent identity.

We never got to know why xplodwild or Cyanogen decided to remove Focal from CyanogenMod, we now have a complete background from xplodwild. It all started a few months ago when koush aka Koushik Datta told xplodwild that Focal would have to be relicensed as GPL wasn’t ideal. The question was why isn’t GPL right for an open source software. The reason was that it could very well have been sold as a proprietary software to Cyanogen Inc’s customers (phone manufacturers or carriers). The app as a whole wouldn’t have been proprietary but some features could very well have been.

So this is where I started to feel screwed. I didn’t think much further, but I felt like I had no other choice but comply with Cyanogen’s relicensing, and allow them to do whatever they want with my code, and sell it customized to their vendors. They used the Contributor License Agreement as an argument, saying that basically they could do anything with my code since I submitted it.

Then cyngn.com was discovered by a few members of CyanogenMod community and the domain was linked back to Kirt McMaster, Steve Kondik & Koushik Dutta by pulser_g2. Kirt, Steve and Koushik had been working on a secret company at a secret location and not even mentioned about it the contributors of CyanogenMod. On being asked about this secret project the CM leads never ever gave a satisfactory answer and would give vague answers instead and at times not even answer.

Xplodwild then told pulser_g2 about his Focal discussion with Cyanogen and how they would relicense Focal, to his surprise pulser_g2 knew a lot about Cyanogen’s future plans of making money. Pulser_g2 then told xplodwild that

this wasn’t legally right: 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.

I didn’t want to be a jerk on that licensing story, and went ahead to resolve the issue directly in private with Steve. At the same time, other people such as Andrew Dodd (Entropy512) beginned to hear echoes about something was going on with Cyanogen, and heard about the GPL licensing issues around the time Land of Droid revealed the connections. He got really upset about that, getting only silence or vague answers from CM leads, turning around sentences.
That’s where they started lying to the community, denying they had something to do with cyngn.com, denying there was a commercialization of CyanogenMod going on. When people said “Why would Focal get relicensed?” they would just say “No, it’s not relicensed. It will stay GPL.” – yes, that’s where “relicense” became “dual-license”, where the app would remain GPL publicly, but still allow Cyanogen Inc to do what they want with it. But they didn’t mention that publicly.

Trust me if I would have been in xplodwild’s place I would have felt cheated because I was being lied to just so that someone could sell the software I had coded.

A commercial relicensing of Focal with assignment of commercial rights to Cyanogen, Inc. does not give xplodwild any additional freedoms whatsoever – He already has the freedom to relicense Focal if he chooses IF there are no other contributors (however, Hugin’s presence may result in Focal not being relicensable even if xplodwild wanted to). The only organization who gains any additional freedoms from such an arrangement is Cyanogen, Inc – and the only freedom they gain is to create a closed-source proprietary derivative. So Steve claims not to be trying to create a closed-source derivative – but one of his first actions (actually, it was Koush’s action, Steve supported him though) was to take an action that can only lead to a closed-source derivative. Actions speak louder than words. What is especially scary is the fact that Koush didn’t ask politely, he just went to xplodwild and said, “We’re relicensing it, the contributor agreement allows us to do so.”

First: The CM contributor agreement allows for sublicensing, not relicensing. It doesn’t allow someone to sign away a right they may not have in the first place. (In the case of GPLed code, the contributor agreement doesn’t magically allow CM to relicense GPL contributions.)
Second: Focal was forked into CM via github, bypassing the contributor agreement, so it doesn’t apply.

On top of this, the first rule of bending xplodwild over and giving him the shaft is – don’t talk about bending xplodwild over and giving him the shaft. There has been zero discussion of this even in internal private CM channels, and any attempt to discuss it has been squashed rapidly, including pressuring xplodwild not to talk about their attempt to shaft him to anyone.

Something that used to be a way for me to get my mind off of stress has now become a massive source of stress for me.

I’ve been staying quiet about this in public for a while now, only hinting to issues, hoping things could be resolved amicably. But the fact that the project leadership insists on sweeping this under the rug and not discussing it at all means it’s highly unlikely to get resolved.

Which leaves me in a ****ty position – I really can’t motivate myself to contribute to an organization that pulls **** like this, but there isn’t really much else in the Android world. Yes, there’s been some discussion of possibly forking – but my stress levels are high enough as it is. I’d rather just go back to shiny blinkenlights and microcontroller projects than deal with this drama.

Cyanogen Inc has been moving removing features left and right for the upcoming CyanogenMod phone. Just to list a few:-

Save to external SD disappeared as well from the AOSP Camera app, because it breaks Google’s CTS.

Root access is planned to be COMPLETELY removed by default, and to be downloaded in a separate package. Users don’t use root anyway, they say.

These are just a few of the features which have been removed, even though they will be available as a separate package. Don’t be surprised if you see a more developers and contributors leave CyanogenMod because they feel cheated. Why wouldn’t they, the contributions they have made to the community are being relicensed and may longer be open source or may even be removed so that Cyanogen Inc can be sold.

the community can feel let down at some point. People from external ROMs would have loved to contribute back to CM at some point. However when Cyanogen’s leaders refers to Paranoid Android or AOKP, they call it “that other ROM”. Steve, always saying “Go ahead and fork”, isn’t actually taking seriously contributions from other developers. And since external contributors know their contributions are going to be ignored, they just don’t submit anything.
I could go on and on with many other things, how the code review is done (or rather, not done), how submissions are just -2’d without explanations, how they criticize XDA users (yes, where ¾ of their user base come from), how they complain people don’t contribute, when they DID but the patch was ignored because the maintainer didn’t want it at that time, how unstable devices are tagged as RC/stable (without asking their maintainers ; Netflix won’t run on a “stable” build of CM for exynos devices), etc.

CyanogenMod is no longer a hobby, it’s a business called Cyanogen Inc and the way it was done was not right, lying to the very people who have made CyanogenMod popular and the most installed custom Android rom. I guess the saying “it’s all about money, honey” holds true. If this is how Cyanogen Inc was born, by stepping on the work of other people, snubbing the very community which made them popular and famous then trust me it’s the last time I would be running CyanogenMod on any of my devices.

Alas, ladies and gents… The Cyanogenmod team have managed to surpass even themselves in misdirection and disorganisation. I honestly am surprised just how absurdly short-sighted they are. Seriously. In fact, I would like to suggest that anyone who feels strongly about this lets them know about it as loudly as they deem necessary.

There is one individual, Ricardo Cerqueira (aka arcee), who seems to have single-handedly decided to go and remove huge sets of features from CM. Particularly device specific ones, under the auspices of “tidying up the settings menu”. Sure, by all means have a go, but don’t REMOVE functionality in the process… If you must do it, do it a step at a time – remove the features from “Advanced” as they are created into the new menu.

By way of example, recent builds have removed the Advanced menu, offering you amongst other gems, the ability to change HSPA/HSDPA/HSUPA modes, as well as to disable the incredibly annoying button backlights on the soft keys on the note 2. Oh, and the ability to remove Samsung’s garishly over-saturated colours of the AMOLED screen.

All this comes from the same individual who denied Mako (nexus 4) users many advanced options, because of his own personal dislike of the “Advanced” menu. While I cannot find any public acknowledgement of this, Nexus 4 users were denied many features and tweaks due to his maintainership of the device, and there are countless occurences where his own dislike has emerged in private, hidden discussions, that you are being kept from.

Ask yourself – why were users not made aware of this discussion? Why were these changes decided by one man on his own personal crusade? Why was there no consultation carried out before his own personal dislike was imposed upon us all?

Alas though, these discussions take place in secret, behind closed doors, which you and I do not see, because we are not felt “worthy” to see what happens there. Have no fear though, for I shall expose each and every one of these things, including the upcoming commercialisation of CM.

Yes, that’s right… You heard me right – CM are attempting to now licence all new contributions as dual GPL and commercial licence. Why? To allow them to go on and sell the rights to the open source code to third parties. And one of their own “leads” even tried to strong-arm a valued contributor into re-licencing his work. I had to step in there, and point out they actually had no right to do so, as the contributor agreement doesn’t cover that eventuality. Nonetheless, his attitude was frankly horrendous, TELLING the contributor it would be relicensed, not asking permission. That’s gone quiet for now though. The reason they want to be able to licence the code commercially? To allow them to sell YOUR contributions to a third party, such as an OEM or carrier, who wants the features, but doesn’t want to follow the open source licence of a GPL component.

They’re also selling out and going commercial – there’s rumours around the internet, but a little bit of smart thinking will lead you to the answers.

Unfortunately, due to CM now trying to be as secretive as possible, you probably won’t see any of this elsewhere. They are making every effort to be as closed as possible in their structure, and decision making processes. That means you, the user, are running code where the changes are arbitrarily decided with no input by yourself, beyond the “false” pretence of their gerrit instance.

There are significant contributions made to CM which bypass their gerrit code review (mainly upstream merges), but also other large pushes. There is also the “submit and +2″ mentality from their leads, where their own contributions are beyond testing, and should be pushed immediately, often leading to breakages.

There is a lot more going on, and I will expose more and more of it. Please encourage your beloved CM people to have a look at this. Also, let them know that their “secrets” are not safe, since they are ridiculously easy to find on the internet. So if they try to stop me finding things out, I will simply share more and more with the world. Fair is fair, right? The less open CM are, the more open I will be. When you’re running code on your device, you expect the developers to be open, upfront, and honest with you, right? Is that happening?

What does this all mean? Well, there won’t be any new “upstream” builds for a while, until I resolve a few issues such as the major removal of important features, thus crippling CM from being usable. I need to figure out what to do, whether it’s re-adding them, or rewriting the settings to work properly. It will be worth it in the long run though! Trust me on that I might introduce some more #nicethings

Finally, if any of the CM leads wish to engage in a dialogue about this, feel free. You can do so, in public, here because the public trust you in running your code, so why not trust them in return? Or is this a trustless relationship? Perhaps your users should stop trusting you?

CM are currently working hard to make their rom pass CTS testing. This is why root feels ‘broken’ out the box, as it needs to be manually enabled. They do this to meet CTS testing that says no extra daemons may run. This is on gerrit, I’ll post a link if desired by anyone.

The problem is that with every step towards passing the android CTS suite, it’s another step towards becoming “just another stock ROM”. Another example I saw recently was the move away from allowing camera to take photos to the SD. Why?, I hear you ask…

To meet CTS requirements.

If CM is trying so hard to do this, isn’t it going to spoil the whole experience for everyone who likes the current custom ROM situation, giving them control over their device in a way Google won’t allow.

I suggest, ladies and gents, if the direction is towards passing CTS, that this direction is at odds with the desires of most people who commented here, wanting a custom ROM with the features and improvements they desire. I mean seriously – removing ability to save photos to a hardware SD? I honestly was shocked when I saw that exchange take place…

Sure passing CTS would be lovely if it didn’t remove all the good things about CM. But I counter the criticisms here by suggesting that to go down this route will end up removing the reasons to use a custom ROM in the first place.

No carrier will likely ship a device without CTS as it would mean no Google apps. So take a read of CTS and see what other things it prevents… Saving photos to SD is just the start of it. By complying with CTS to the letter, it’s a push to become “Google friendly” at the expense of being power user friendly.

If you peeps need some more proof the blatant lies head over this article on landofdroid which has an email chain between Steve Kondik and John the Editor-in-Chief at Land of Droid.

Thing is that as the largest AOSP derivative project, CM attracts more attention from Google than any other project. If a smaller project flagrantly violates the CTS, if they’re small, Google may not find out or pay attention. However the CM team has a long history of working with Google – that’s how the gapps compromise came to be, among other things. So when a Google engineer says, “This is a really bad idea” – the team listens. (That’s why Cornerstone never made it in and you’ll never see PA’s Halo make it in – these are fundamental violations of the CTS/CDD, and the ways in which they break apps were described quite clearly by Dianne.) Also, I think Google sees CM as leading by example, so if CM starts setting an example that is contrary to Google’s goals in a way that breaks the Play Store apps, members of the team will get pinged about it. (For example, someone from Google pinged multiple CM members to make sure no one was going to pull in PA’s per-app DPI stuff.)