There has been a lot of talk lately in the Android community about the fragmentation of the ecosystem, what people should and shouldn't do, who is to blame. And many people have come quite quickly to point at this and that trying to convince everyone they've found the real cause for device fragmentation. In this post I will try to argue that the biggest cause for Android's ecosystem fragmentation is Android itself through its huge market share capture in so little time and that no one has done anything wrong, it was inevitable and can be dealt with.
The first version of Android was released almost 3 years ago. And when it was born it came to a world where most people used cellphones whose most advanced capability was running severely limited Java midlets. Midlets are small programs written in Java that were a dim reminder of the powerful applications found on modern day computers. The
smartphones were split between two categories, firstly, the hunky, chunky, hard to use Symbian or Windows based phones on which it was very hard to install applications and which lacked seriously in one or another of the essential features required by the growing crowd of social networking, always on maniacs spawned by Web 2.0. The second category was owned by the glamorous iPhone, known for the long queues of fanatics in front of Apple stores waiting to get their hands on the new version of the phone, the never ending device shortages and all the innovative and interesting apps (new buzzword at the time) people could have on their always connected (to the Internet) devices.
From the beginning Android had to deal with 3 problems: every day users' lack of understanding as to what smartphones were, the huge advantage Apple had because of their little over one year of experience in the market and, thirdly, all the disparate platforms phone manufacturers had build their phones and branding on. So, from the beginning, the only possible strategy for Android was grow and match. Android had to grow fast, be available quickly, everywhere and it had to match or provide more than any other competing smartphone.
A number of tactics were used to align with this strategy.
The first one was to release new versions often. This helped with a number of things: it kept Android on everyone's mouths, it gave a feeling of freshness and speed, but the most important two things were that it helped create a image of Android as a operating system close to Apple's iOS and gave phone manufacturers access to new versions of the operating system quickly. This helped them build newer and newer phones with more features, more capabilities, helped manufacturers get used to it and have confidence in the platform. Manufacturers create more and more types of phones and release them as soon as possible thus making sure there are always phones on the market that have the latest operating system and the latest hardware to support that operating system.
The second tactic was to share the profits with everyone and lower the costs. For the manufacturers it is cheaper to build a phone now, when the operating system is already there which means less hardware development time, it means almost no software development time. For phone operators that didn't have Apple's iPhone (and there were many) it provided them with something to use to entice customers and help them forget about not being able to get an iPhone. It also gave them the possibility to tap into the revenue stream from app purchases. For developers of apps it is easier to program in Java, one of the most known computer programming languages world wide. It is also easier to program when you don't need to sign up for a 100$ a year developer program just to try out the software on your own phone. Or when you don't need to spend about 1000 euros (or dollars depending on where you live) on a new dedicated laptop.
To deal with the unknowledgeable users phone manufacturers came up with the idea of using their own user interfaces on top of the current Android one. This means that for someone that already owns brand X of phone it is easier to switch to the Android phone from brand X because all the buttons and texts and icons look the same. I witnessed this the other week when one of my friends switched from a phone running brew from HTC to one running Android 2.2 from HTC. The custom user interface on both of the phones (called Sense UI) helped him know how to use the phone from the moment he took it out of the box. HTC is not the only company building a user interface on top of the Android one, Sony does the same and so does Samsung (in a smaller degree). Custom user interfaces solve the problem of people having to adapt to a new environment by making it more familiar.
To deal with the extremely high prices of smartphones a new category was created. Producers like Huawei came up with cheap, not that powerful or interesting phones such as the IDEOS. These cheap phones helped increase the market and most importantly mind share even more. With more people having Android devices the value of the whole Android ecosystem grows. The more people have Android phones, the more developers will come to the platform creating good apps which make even more people come to Android. An effect called the network effect.
And all of these tactics are working great. People are moving to Android from Symbian, Windows mobile and normal cell phones. Android has more market share then its initial rival, the iOS. Symbian is going down and the whole world has gone smartphone crazy. It is estimated that by 2012 the Android marketplace will surpass the AppStore. So, everything seems to have worked, if you disregard the side effects.
The wide variety of device models leads to a great variety of hardware and screens. This means that software developers have to do more work in order to make sure their app works on all the devices with all the screen sizes. And this doesn't sound that bad if you're a developer working on applications only. But if you're a game developer, where every little bit of performance and every single non perfect pixel on the screen are the difference between success and failure, then you see Android as a mess. And, indeed, at the last mobile development presentation I attended, the speaker called Android a mess and said that his company has no plans to go to Android with games. They will develop apps, but not games. It just happens that the mobile hardware research world, just like its desktop or laptop counterparts are founded heavily by gamers' money.
The large variety of models with the large variety of interface customizations are proving to be a hurdle for manufacturers to keep up to date with the latest versions of the Android OS. This causes frustrations from customers who would like to have the latest software features and bug fixes and also from developers whose live would be easier if they could rely on the Android version from one year ago as the default instead of Android 1.5 or 1.6 from about two years ago. But its not the manufacturers' fault. They brought the customizations in order to make it easier for their clients. And keeping a larger and larger army of developers paid to work on this issue makes no business sense. They don't make any money as long as you keep your current phone.
As to application stores, there are many, too many of them. That makes it confusing and frustrating for users and developers and increases the security risks, as we've indeed seen in the past year as Android worms have spread through some stores.
But if one takes a look at the neighbor, iPhone, they don't seem to have that issue. And there are simple reasons for that. One, there are currently only two versions of the iPhone screen and they were designed to allow apps to run great on both of them. Apple supports only the current generation and the previous generation, combined with their yearly release cycle, it means that everyone that got their phone within the time frame that goes from the present and up to and excluding 2 years ago, ca get access to updates for their devices. For comparison, in the Android world, phone generations are as often as monthly.
Further more, every update to supported phones brings Apple money. Let me explain, every phone that is behind on updates can access less applications from the AppStore, that means less money to both developers and Apple. Contrast that with the Android world where the manufacturer makes no more money after they've sold you the phone.
But how can this be solved?
1. Force manufacturers to update their phones for a predefined period of time, say 2 years. This would bring more stable ecosystem version wise, thus helping developers. On the other hand it would also mean higher costs for the manufacturers and it would shave off some of the attractiveness of Android from the manufacturers' eyes.
2. Provide phone updates as a paid service. This one might seem weird, but I would be more than happy to pay 10 euros every six months to make sure my phone gets the latest release the week after its been released. This would be less effective in normalizing the operating system version, but it would also make sense for manufacturers.
3. Stop customizing the user interfaces. The number of Android users is high enough and knowledgeable enough for the custom user interfaces not be needed anymore. This would relieve manufacturers of some of the burdens of porting the custom interfaces, which would translate in more updates coming out. On the other hand it would also take away one one marketing and competitive advantage. It would make the devices more similar, which means harder to sell.
4. Release Android versions less often. The six month release cycle works great with Linux, but that doesn't have to necessarily be the case for Android. Most of the times a new release comes out it offers support for new hardware like new sensors or new graphics. I think Apple has the perfect release cycle. Every one of their releases that targets new hardware comes out at the same time with the hardware and that happens every year in June / July. Android would benefit as well from releasing versions with big features yearly and maybe have a shorter, minor, release cycle in between to deal with bugs, optimization and maintenance.
There are other things that will, in time, solve some of the issues of Android. For example, as display prices lower, more and more devices with ship with high density screens, which will make it easier for developers to provide a consistent experience over the fleet. As the Android market rush settles down, we will see a few major app markets dominating, and thus, ensuring quality delivery and security for the devices.
It is important to understand that, like every major change, it will take time until the Android ecosystem settles down and becomes stable and profitable enough for everyone. Until then, we should push towards change and improvement.