The Intersection of Software and Politics

This entire rant spawned off this post.

I don’t think of myself as an evangelist for open source software but having been balls deep in android the last few days has given me insight into a lot of the problems facing android as an open source project. Recently one of the XDA guys was pinched for piracy in his ROM and it really came to a head.

The background we have to consider is that the ROMs themselves are thoroughly grey market. The phones can run on Linux, but the drivers for the hardware are typically closed source and non-free. Finding the license to them is impossible, as is finding the source to the drivers. We’re put in a situation where it’s not particularly clear what is and is not GPL at this point – the android OS has a monolithic kernel except for the cellular portion which might as well be a preemptive kernel which overrides the running kernel when the phone rings. The problem is the GPL was largely designed to keep the kernel and the drivers free and open, and as an extension of The nVidia Problem (shim loaders) the kernel is no longer free and open on the android. This is a really old argument and has been beaten to death. The android kernel has shim loaders and we have to live with it. The big rub then is how do we legally develop for the android? We are protected by the DMCA and allowed to reverse engineer (clean room) the drivers because no other legal route is provided, but the solution of the day has been to grab the drivers and firmware from other releases of android and pull them into the future. In essence, shimming the shim loaders. Performance, as you can guess, is hit or miss. In the SGH-T959’s case, it’s a real mess when it comes to the GPS. Where it goes from annoying to dangerous is the problem that AOSP ROMs don’t have valid, working call routing. To get the call routing to work, you have to use the samsung proprietary drivers. This is obviously a contention between de facto piracy and public safety as call routing is what makes E911 work.

More recently this whole issue of presentation came to a head with neobuddy’s ROM. Aside of his worst sin of loving anime, he “rebranded” some commercial software in an effort to add spit and polish to the ROM. MIUI has done the same with their ROM but everyone sort of gave it a pass being Chinese. MIUI also occupies a grey market area where they charge (on the chinese side) for enhanced features. It hasn’t made it weirdly enough to the US version of the site but I’m waiting for it to happen. MIUI therefor has been the stalking horse of ROM developers where they pick bits and pieces of it. Better to steal from the Chinese than steal from a company like Samsung. Neobuddy took it one step further and rebranded several apps where (ironically enough) the author installed his ROM and took offense. jrummy not only admonished neobuddy for piracy but posted that the official version from the market had bugfixes people were complaining about.

Now, this is a particularly sticky wicket. On one hand, it’s morally wrong to put your  name on someone elses software. On another hand, jrummy’s application is a ROM flasher which needs those drivers discussed earlier to work if not in some very indirect way. Finally there is no google market in india. Neobuddy lives in Mumbai, he couldn’t have gotten the software legally. (Krishna – correct me if I’m wrong). This is the intersection of aspiration and incompetence. All fine and understandable, except that when XDA asked Neobuddy to show them the sources, he added “kernel rolled by nelson” to his thread instead of linking to a git of the linux kernel. Sigh.

Fast forward a week while XDA discusses what the heck it means to post your sources and finally they just throw their hands up and lock the thread. I don’t blame them. This immediately balkanizes the community. Neo starts a thread on facebook (which as a software git is useless) and the XDA guys get thrown under the bus. 12 hours after getting his thread locked, someone posts a mirror of the ROM and had removed the software he put his name on and posted a link to the git of the kernel sources. Neo eventually makes this particular ROM the official working ROM and removes the other links, which firmly cements us in meta-piracy land.

The commentary on facebook has been really contentious and it’s hard to understand why people would put effort into a pursuit like this. Fortunately it’s easy enough to roll a kernel that the cyanogen assholes don’t have a monopoly on it, but it seems people have a weird opinion that ROMs live above the ecology of software. In reality the OS is subservient to the application, which is one of the reasons why I haven’t jumped onto ice cream sandwich yet. It doesn’t even run facebook, but people seem to want the latest and greatest from google while disregarding the fact that everything has to be done through the browser until the apps catch up. Commentary on facebook was largely “THE XDA GUYS ARE MEANIES YOU CAN DO WHATEVER YOU WANT”. Nevermind that if this ROM actually went legal (how?), someone else might exercise their moral imperative to change Neo’s name and rebrand the ROM for themselves just as he did with the software. To that end, most of the people posting on the facebook group had no idea that rebranding the software was in fact illegal as was burying the kernel source on some back woods git no-one would have noticed and certainly wasn’t linked to.

To his credit, neo removed the offending rebranded software and has separate download links. The kernel source they’re using is now posted to a git. XDA put the thread back up and most of the people on facebook haven’t figured out how the rest of the internet works so XDA remains safe. It looks like we’re going to get some Nexus S backport of ICS, which is nice. jrunner has not nuked Mumbai.