Monday, March 29, 2010

Android: fragmentation is innovation, bit it could kill you

Every time open source is in play, the risk of fragmentation is visible. If the code is out there and every hacker in the world has access to it, what prevents a fork? What prevents the original code to have 50 variations?

Nothing prevents it. It happens. But it happens less often than you might think.

First of all, most of the forks die. If there is a company behind a project, they die faster. Not because the fork is bad. It is just that the volume of development is so significant, the original developers stay with the main branch and the brand is attached to the original code (open source commercial projects protect the brand through trademark, so there is very little a fork can do to claim they are the original).

Forks ultimately die because they do not get enough traction, the developers get depressed, the fork gets stale. It is a vicious negative spiral.

If a few fork survive, the result - in most cases - is innovation. "Fragmentation is innovation", as Sean Moss-Pultz once said. I know many people out there believe the opposite, but think about it: if a fork includes smart ideas, and the open source license requires the code to be visible to the public, would you not expect the original project to embed them over time? Yes, me too.

Sometimes, the original project gets stale, there is no innovation, developers get bored, and they fork. Therefore, innovating. The developers of the original project wake up, improve their code, absorb some of the changes in the forks, and regain control. The result: a better product. More innovation. Nothing bad, something actually very good.

Now, let's look at Android. Any real forks out there? Yes, one from China Mobile. It might get actually successful, and I am sure the Google people are pissed at it. But it could generate a lot of good ideas, that they can embed in their project (assuming the not-invented-here mentality does not pervade the Google campus ;-) Overall, I do not believe it will be a major problem for Google.

It is China Mobile that has a problem: they need to keep the new OS compatible to the Android main branch. If they don't, all apps that are developed for Android will not work on their phone. The final result in my opinion? They won't make it. It is too difficult. They will create a China-only operating system, used by Chinese people, with apps developed by Chinese developers for the domestic market only. A missed opportunity for developers (although that market is big...). A sign of China refusing globalization and fighting Google and the US as a whole. A losing proposition, but nothing that would kill Android in the rest of the world, actually only hurting Chinese developers trying to export their good stuff.

So, is there a real problem with Android? Yes, but it is internal. The real fragmentation, so far, has been created by Google itself. They have released way too many operating system version, too fast. 1.x is not compatible with 2.x, in most cases. So much that our community client was built on 1.x, but for our commercial product we chose only 2.x. The effort of supporting two different clients was too much (hint: if you have an Android 2.x, check the Android Market for Funambol. It is an amazing client).

Was Google wrong at releasing so fast so often? I believe not. I believe they have been right. At the beginning of the cycle, you need to move fast, catching up with the competition. When the product is mature (they are almost there), you can start to slow down. In a year, nobody will remember Android 1.x or the G1 (a.k.a. the garage door opener).

Now it is time for Android to slow down. The next two Android releases, Froyo and Gingerbread (yep, what were you expecting after Cupcakes, Donuts, and Eclairs?), are going to be way more backward compatible than the initial ones. I am very sure about it. Most likely, they will change very little of the core or SDK, moving their apps on the Market (Maps, Gmail, Talk, Voice, Goggles, Gesture Search and so on) and making sure they work across all versions.

Google can afford external fragmentation (which is innovation), but not internal fragmentation (which is suicide). They know it.