If you own a smart phone, tablet, “phablet” or follow the tech industry at all, you will have heard this one word used over and over again in a ton of blog posts (including this one), news articles, and pretty much anything else you can think of:
In the context of phones, tablets, and the like, fragmentation is defined in a basic form as:
Fragmentation is the result of many generations of smartphones or tablets running various versions of the same operating system.
While fragmentation has been primarily used in reference to Android and iOS, it is also present in Windows, Mac OS X, and Linux operating systems, though it is not near as severe there as it is in mobile devices. Further, fragmentation does not occur solely in the core of an operating system (arguably the worst kind), it can occur to any form of software. For example, Niels Leenheer wrote an excellent article on Android web browser fragmentation.
Fragmentation is not just a term that is randomly tossed around by techies and developers; it is a real situation that affects even the non-techie consumer, from the 10-year-old next door to your mother. A real life example of fragmentation could be how your phone runs Android 4.1 Jellybean but your friend’s tablet that he bought at the same times runs Android 4.2, and looking solely at technical specifications, both could run Android 5.0 Lollipop, but it will never happen because the manufacturer of both devices took 8 months to push Android 4.3 to a higher-end smart phone from the same hardware release period.
For the rest of this post, I would talk to write a bit on what I perceive as the two biggest issues with fragmentation, primarily related to Android’s release fragmentation, and a way it could be combated.
- Fragmentation makes everyday use by techies and non-techies difficult. I am a self-described techie, not a geek nor a nerd but am fluent with and knowledgeable in technology. As a techie, I am often asked questions by people who are not very “computer literate”. As I have personally noted, fragmentation makes tech support more difficult for myself and all other
GOTOtech support people, and possibly even paid support reps. Everyone has to remember how to perform action X on OS version A, then has to remember the same action on OS B. However, OS C has a helpful feature or different access path that OS A and B does not have, so now you have to recall and remember how to enact a totally different set of steps to achieve the same end result. As a techie, I may better remember the various steps across each version, but the average user will not and will get frustrated when they cannot remember them. Although I have been abstract in my example, I believe it clearly demonstrates the majority of issues fragmentation creates.
- It makes app development more complicated. A developer or group of developers want to make an app. They map out a plan, define features, milestones, deadlines, flowcharts, pseudocode, and all those goodies in order to create it in the best way possible. When they are done, the app is published and runs on all devices no matter how old or how new it may be. This is a developer’s utopia, a pipe dream.
In the real world, that is all it will ever be. Android devices and operating systems of all generations are used (Google’s own charts show just how much Android 4.x is still used), and this constant fragmentation is making development more complicated than it should be. It is already complicated enough! I can guarantee you there are multiple sections of code in the majority of Android apps that tailors specifically to one particular version’s API. These sections are nearly the same except for a few changes in the API that makes a line (or multiple lines) incompatible with one or more operating systems that they support. Yes, there are also key low-level hardware differences that must be accounted for, but that area is irrelevant here. 😉
On a nontechnical level, have you ever tried to install an app only to find your device did not support it? What about a feature you really wanted but is only available on OS version C and newer, and/or version B and lower has experimental support? You now have firsthand witness of the effects fragmentation has on development.
If fragmentation is really so bad, why has nothing been done to slow it down and prevent it from occurring even further? Some things have been done to slow it. Both Android 4.4 and 5.0 have performance gains which should allow it to run better on older hardware, Android 4.0 Ice Cream Sandwich unified the formerly separate phone and tablet versions (this in itself was a big step in reducing fragmentation), and 4.4 was directly advertised as bringing Android to everyone.
Android 4.4 is designed to run fast, smooth, and responsively on a much broader range of devices than ever before — including on millions of entry-level devices around the world that have as little as 512MB RAM. (emphasis original)
Other actions that can be taken include developers not supporting as many OS versions and people buying a new phone and/or tablet with the new version preloaded. However, both of these solutions have their drawbacks. Dropping support risks losing users that want to use your app but cannot. Most people do not have the money to even buy a new device every two to three years, let alone every year!
Yet another way is for users to update their device to the newest Android release- but wait, the manufacturer says there is no update available while clearly there is. What gives?
Since Android’s inception, any and all updates have been handled by the device manufacturer. Thus in the case of my Sony LT30at, Sony gets to decide if and when my device gets an update. Truth is, it has received only one update in its Sony-supported lifetime: Android 4.1.2, one patch version increase from the factory-installed 4.1.1.
Such a version would and phone would be declared a dinosaur now. However, didn’t I hear that Android 4.4 has been optimized to run even on devices as far back as 2.1? Then perhaps Sony will release an update to that version and I can be one of those “another million users” Google wants to reach!
Nope. Time and time again we hear how only the newest devices get the latest updates, but sometimes devices released 6 months ago may not get any updates. Even the military is affected by the lack of Android updates. Yes, Google has recently taken steps to combat security issues by releasing monthly updates to their Nexus line, but what about everybody else? We get nothing. There is some reasoning behind the slow or lack of updates, but for many people it is not satisfactory. So updating our devices to reduce fragmentation is out of the question (unless you install CyanogenMod, which even then may not work due to compatibility issues or risks).
We have now exhausted our options for reducing fragmentation. We have hit dead-ends everywhere we have turned. Everyone seems to agree that fragmentation is bad and should be stopped, yet nothing changes and fragmentation continues to get worse. What do we do now?
I have no idea. When I started this post almost a year ago (31 December, 2014), I had hoped 2015 would improve matters, but it seems they have gotten no better, if not worse. I wish it were not so, but it is.
I guess it means a possible switch to a Windows Phone 10 phone might be an even more likely option for me.