XDA-Developers Urges OnePlus to Comply with GPLv2 and Release Kernel Sources
While XDA-Developers, and a large sector of its user base, have been routinely impressed by OnePlus’ commitment to supporting the developer community, we’ve been anxiously awaiting the release of kernel sources for the OnePlus 3/3T since the release of Android Nougat on December 31, 2016.
OnePlus has not provided such sources even though they’ve already rolled out the release of the official OTA on several countries, and users have been using VPNs or manually installing the update to upgrade their devices as well. While the company was extremely swift in its original release of kernel sources shortly after the device launch, they haven’t been as keen to upload their sources since. This isn’t a mere inconvenience for the developer community, it’s also reprehensible as OnePlus is effectively violating the General Public License by not providing the GPLv2 licensed source code in a timely manner.
Suggested reading: XDA-Developers and the GPL
We are fond of the GPLv2 at the XDA, and I have personally made it my task to call out OEMs who do not comply, from repeat-offenders like Xiaomi to the more disappointing cases like Motorola (and Lenovo). We also do give credit where credit is due, but a late release of the necessary source code does not correct the fact that the sources should be made available as soon as possible. The GPLv2 ‘requires’ companies to release any modifications to the ‘GPLed’ code base (the Linux kernel) that they ship to their customers. That requirement is what allows communities like XDA to thrive, and the viral nature of the GPLv2 has made Android what it is.. Releasing sources is not just part of the spirit of Android nor for the benefit of developers only, as OnePlus itself has benefited by developing a kind of “developer-friendly” reputation with its devices, the latest of which are informally dubbed the “successor to the Nexus line” by vast numbers of users. While OnePlus has worked with XDA in looking for ways to expand developer support for their devices, as well as helping developers get their hands on hardware, we see this latest behavior on their end as something that goes against the interests of the community and, quite frankly, OnePlus’ best interests as well.
READ: Francisco Franco's Full Statement Regarding OnePlus and Sources
The Linux Kernel is under an utilization license called GPLv2, which, among other rules, requires anyone who modifies, or links proprietary code to GPL licensed functions, and releases the Kernel binary to the public, to release the source code. Any Android OEM is bound by this rule and MUST release the exact same code tree they ship the binary with.
The majority of the OEMs do not comply with this simple rule, and we’ve fought for years, but little has changed. Names like Meizu, Xiaomi are among the worse. Others release the source code in tarballs, HTC, Samsung and LG. The source code is there, but we have no commit history, no commit messages, no nothing. We can’t see in detail what they’ve done, and bugs introduced are hard to find/fix because we have no context. The best ones are Motorola, Sony. They provide the entire tree + commit history + detailed commit messages, and everything is offered on github so anyone can easily fork/inspect what they’ve done. Google isn’t an OEM, but it’s the undisputed champion. They are VERY detailed in what they do and release the sources in a timely fashion. It’s just perfect.
One Plus is a mixed bag. They do release their Kernel sources on github, but it’s not without its faults:
1 – They usually take some sweet time to update their trees when there’s an update. They say it’s because the otas aren’t yet 100% globally released, so they won’t commit before that. It’s a very lame excuse;
2 – They have the entire commit history from Qualcomm/CodeAurora, but all their modifications are a big stash of their changes, provide no information what-so-ever, so we have to read their, sometimes, big 50k line commit to understand what they’ve done. It’s bad;
3 – They barely follow any Linux Kernel code standards and sometimes it’s hard to read or understand their goals. There are clear and written code practices for Linux open source contributions, they should make an effort to follow them;
4 – They say they are a development friendly company and they pledged for Zero-day Kernel source drops, but they really just go half way, while they do have _extraordinary_ developer support with free hardware, their open source shenanigans hinder it and leave us hanging while they decide it’s a good time to publish the source code (or not). It’s frustrating needing to constantly remind them about this;
At this point you might think “Why do you care so much?”. For starters they gave me free hardware, so I want to work on it. Then their devices (specially the One Plus One and the 3 and 3T) are really amazing. The OPO was being worked on by the Cyanogen OS team, and they really did a terrific job with their open source contributions. They even pushed patches before the otas were released, gave us time to test, get community feedback and sometimes even send them bug reports before the production otas were released. The 3 and 3T are terrific devices, with A LOT of users, and we want One Plus to keep working on new fantastic devices, while being as developer friendly as they think they are.
I sent them, privately, a list with suggestions on how to tackle the points above, which I’ll try to condense below:
1 – Kernel source needs to be publicly released as soon as the otas are released, it doesn’t matter if it’s a 5% roll-out, or 100%. New public binary is out, source needs to be out, period, end of story;
2 – For every code they work on they SHOULD write detailed and separate commits with detailed messages explaining what the code changes are, what they are for, what they fixed/improved and if needed, comparisions of pre-post patch (if it’s warranted like power consumption reductions, or performance improvements). Without this we’re basically just left in the dark trying to guess what was the goal of the code;
3 – Easy, read the Linux Kernel “how to contribute” docs and follow them. Not only it helps them maintaining better code quality, but it helps us understand the code better;
4 – Stop pretending everything is amazing on their open source movement, and start acting on it. There are a lot of good people trying to work on their products, if you support us with hardware, then do your best with the software too;
I do have to end with a positive note, I can’t thank them enough for providing me and others with free hardware. Barely any OEM does this and I hope they keep doing it since that’s a differentiation point and gives them a lot of value.
– Francisco Franco
Prominent developers with many followers are speaking out against OnePlus’ lack of source releases, with a notable example being XDA Recognized Developer franciscofranco of Franco Kernel fame. He has voiced his frustration on Twitter , and he’s not alone — we’ve also reached out to OnePlus in order to pressure them into releasing the Nougat sources, but there was little our direct contacts could do past passing on the pressure to internal teams. You can read the full statement Francisco Franco provided to XDA by expanding the toggle above. We haven’t heard much in the way of explanations from OnePlus, only excuses and expected responses, which is typically the kind of comeback we hear when OEMs are pinned down on why they aren’t complying with the GPLv2, which they implicitly agree to follow in exchange for the ability to use the licensed base. If we are to be specific, it doesn’t matter whether the Nougat OTA/release has reached global saturation, nor any other excuse, just like it didn’t matter that Xiaomi’s source code could have tipped future devices; OnePlus is compelled to make GPLv2-licensed sources available upon request, and many members of the Android community have been asking for it.
We can’t know for sure what’s taking them so long to upload their due sources – after all, the software is already built and released – and the optimist in me hopes that the code will be provided alongside the camera blobs we’ve been waiting for. That said, we know not to get our expectations up, and OnePlus’ actions have been damaging the tremendous progress the OnePlus 3 and 3T have made in terms of developer support. Without Nougat sources, for example, we won’t get an official Nougat TWRP ironed out, custom kernels for OxygenOS 4 ROMs won’t become available and custom ROM diversity will stagnate and suffer. Moreover, much of the trust and enthusiasm OnePlus has built behind their devices will get irreparably harmed, particularly if the issue persists or such reluctance to comply with the GPLv2 manifests itself in the future.
We hope OnePlus manages to provide their due sources swiftly. While we initially hesitated to publish this article due to the unpredictable nature of this matter, after speaking to key contacts we have reached the conclusion that this might not be reversed without a consolidated outcry from the community. We might be very fond of OnePlus’ hardware and many of their practices and community outreach attempts, but we are determined to call out any OEMs’ dangerous practices and poor decisions — OnePlus is no different. While we appreciate the quick response times and turnarounds they’ve provided in the past, this is one of the most sensitive topics for the XDA community and our patience has worn thin.
XDA encourages readers and OnePlus 3/3T users to help make the voice of the community heard through submitting feedback via their form or the OnePlus community app and by messaging OnePlus representatives inquiring about the matter. Please keep all requests respectful, but if you do care about the GPLv2, the spirit of Android, the development community of your OnePlus 3/3T or the company’s future among enthusiast circles, please help us out by carrying the message.