Building notes, projects, and occasional rants

Fragmentation: the good, the bad, and the ugly

During the past year there was a discussion about the Android platform fragmentation. Before someone complains, I'll defined "Android fragmentation" as the problems developers have to deal with because of the multiple Android devices, when said devices have different capabilities, specially with regard to the display resolution.

On one side we had Google explaining that the word "fragmentation" is meaningless, and on the other we had some app developers (and some Apple fanboys, but I tend to ignore them) explaining what the problem is for them, specially developers porting apps from iOS.

The good

The fact that you have so much devices, with so much choice, is a very good thing for the end-user, because he can pick up the one with the best set of features to match his requirements. Also, choice and competition leads to better prices.

Compare that to the version 4 of the iPhone: you get four combinations between two sizes of internal memory, 16 and 32Gb, and two mobile technologies, GSM/UMTS and CDMA. Everything else is exactly the same. Even compared to previous versions of the iPhone, the screen keeps the same aspect ratio, with a very simple multiplier between resolutions, and new sensors.

I believe that this fragmentation is a good thing. It allows end-users to test and choose the best format, and eventually certain categories will naturally survive the selection process, and dominate all the others. It might take some time, but eventually it will happen.

The bad

The bad part of all this is that application developers have much more work developing in a fragmented environment. With time developers will get better at dealing with this, and better tools will be created to help them out.

Even in the latest Android 3.0, we can see an acknowledgement from Google about this situation, with the improvements to the APIs, and in particular with the new Fragments API.

But its not all doom and gloom. The experience Android developers will gain dealing with this, is something that iOS developers don't have, but might need eventually.

Its a very complex proposition to assume that the iOS-powered devices will keep evolving with easy changes to adapt to. If or when a new iPad resolution is released, will it really be twice the current 1024x768 resolution? It would be awesome for sure, but its a huge number of pixels to get right in the LCD production.

So its very likely to see the same screen resolution fragmentation that we now have on Android appear on future iOS devices.

The ugly

What I don't really understand is Google's attempts at denying the situation. I assume that they feel the mention of the "fragmentation" word is seen as something terrible and they must fight it any way they can.

But this places them in the untenable position of convincing us that there is no fragmentation, that black is white. Its a lost argument.

It would be much better to embrace it, and work really hard to make sure the persons who have to deal with them, the developers, have the best tools to do it. Maybe this is more APIs, or maybe just better testing resources, specially a hardware lab with lots of Android devices, and a new process to define test suites, sending them to the lab, and have your app tested on them.

Whatever it is, Google would be better off stopping denying the Android fragmentation, and openly embrace it as something good.