If you are developing a mobile phone app you will probably ask yourself the question, how many different kinds of devices will be running my app? The answer depends on your target audience, and on what you count as a “kind of device.” But with 4,000 different kinds of devices running Android, the answer will be a fairly high number. Compare this with a similar count for Apple’s iOS operating system, where the number of device models is less than 30.
There’s no doubt about it, the Android world is diverse. For consumers that means choice and freedom, but developers can see it as fragmentation. Several companies offer services to test apps on hundreds of devices at once, and there are also other ways to economically test your apps on a range of devices. Google is also joining the fray with its new Cloud Test Lab.
As part of this year’s Google I/O conference, I waited for three hours in 55oF weather (late May in San Francisco) to get into an independent vendor’s social event. To pass the time, I asked two Android experts about their experiences with fragmentation in the mobile space. Their responses surprised me. With their permission, I recorded parts of the conversation and transcribed it (actually, paraphrased it) for presentation in this article.
One of the experts is an Android developer for a mobile software company. The other is a high-level employee of a prominent wireless phone service provider (a “carrier” company). Both told me that they’d feel more comfortable if I don’t use their names in this article. Here’s what the Android developer said about fragmentation, and about mobile operating systems in general:
“I don’t think too much about fragmentation because we build our apps to scale. The only issues I’ve run into recently are where we don’t have enough available memory (to load large images, for example). Google implemented density-independent pixels for a reason — to scale between different screen sizes. That’s one issue. The other issue is the API levels issue. Google has appcompat to help with that. There are other things out there you can use.”
What they said
What about different phone manufactures and different hardware?”
“You mean Samsung versus LG and things like that? That comes down to hardware. Sometimes there’s something weird going on with the GPU. We try to code around it. Sometimes it ends up being something the manufacturer has to fix in a firmware update.”
So, from this developer’s point of view, Android’s fragmentation isn’t a big deal. The carrier company employee had a lot more to say. But again, it wasn’t what I was expecting to hear:
“Carriers control the ecosystem. We control the hardware, the specs, and how things are mapped out. We even control the OS. We tell Google and Microsoft (and to some extent, Apple) what kinds of APIs have to be there. So we force standardization.”
I understand that carriers outside the United States have different relationships with their customers and their governments. So I asked if these claims about the carriers’ power apply to carriers in other countries.
“It depends on the size of the carrier. When I go to the big carrier summits, everyone’s there. That is, everyone that matters is there. When Google, Microsoft, Apple, Mozilla or anyone releases an operating system with an API update or a new version, everyone’s at the table.
I don’t think too much about fragmentation because we build our apps to scale.
“At this point, 8 or 9 years into Android, we’ve worked around the issue of fragmentation. We don’t deal with screen size issues anymore. The development paradigms that have evolved are dynamic. We’ve worked on Brew, Symbian and a dozen other platforms. We’ve always dealt with screen size issues and compatibility.
“The issue that we have is a kind of reverse fragmentation. Google has been closing up its model. They’ve been under scrutiny so they’ve been taking away APIs. For instance, you don’t have direct access to NFC anymore. You can’t send and receive an SMS from an app that’s not a default SMS app. The same thing happened with mobile payments.”
I asked about an app that I created recently. My ordinary app sent an SMS using only android.permission.SEND_SMS.
“You can send an SMS for now. But you can’t sniff the traffic and you don’t have access to the call log.
“Things have been closing down. We deal with fragmentation when our clients have certain abilities and then we release a new client with a stripped down set of capabilities. (We use the word “client” interchangeably with “build.” It’s a mobile client that interacts with a server component.) We don’t like taking away features from a user who’s accustomed to having those features, especially when those features are generating revenue for that device.”
What about iOS fragmentation?
“With iOS, fragmentation is a completely different beast. Sometimes you do have to have multiple clients. Apple controls the hardware, so they haven’t evolved certain features. And certain features come late. You work around it. Apple is also much less forgiving and less willing to work with you on a lot of these things. But that’s how it goes.
“Apple doesn’t like to work with carriers or major app developers (companies that help create their ecosystem). They’ll pick out their favorite partners and work with them. But the people at Apple know what they want to do and there’s no changing it. You can request APIs but you have to fight really hard to get them. If you would like to do something more and they haven’t planned on it or they don’t want to do it, it’s not going to happen. If something is going to happen which will break functionality, you have to live with it.”
Android has evolved paradigms and frameworks that deal with backwards compatibility. It’s built into the operating system.
I asked about backwards compatibility – an issue that can affect all developers, including Android and iOS developers.
“We don’t deal with backwards compatibility. Android has evolved paradigms and frameworks that deal with backwards compatibility. It’s built into the operating system.
“Apple’s iOS has gone in the reverse. They’ve had to build up to it. For iOS, we don’t deal with API variability as much because you see 95% user adoption on day one of their new OS rollout. So you don’t really worry about backwards compatibility. The people who have that backwards compatibility issue are so much in the minority that it’s not worth targeting them. You don’t get ROI [Return on Investment] on it.”
What about Microsoft?
“For now, Microsoft is the third player in the game. Every year and half Microsoft does a complete reset on its environment. First they had Pocket PC and then Windows Mobile. But Windows 8, 8.1 and 10 have been OS releases on mobile as well as the desktop. Windows Phone 8 had Windows RT. It was running their encapsulated runtime for desktop and they had about 60% API coverage of desktop on mobile. It was a complete start-over.
But we’ve heard the ‘write it once’ claim before. With Windows 10 they officially have one operating system on Xbox, on tablets, on desktops and now phones. We’ll see.
“They’ve gone from Windows Mobile to Windows 8/8.1, and now they’re jumping to Windows 10. From a carrier’s perspective, each is a complete rewrite and a brand new framework. It’s like switching operating systems every single time. A few months back they announced a Universal Windows Platform (the UWP framework) that’s supposed to fix things so you’ll write it once and it’ll work everywhere. But we’ve heard the ‘write it once’ claim before. With Windows 10 they officially have one operating system on Xbox, on tablets, on desktops and now phones. We’ll see.”
To what extent do Windows phones play a role in your company’s planning?
“From a carrier perspective, we don’t want only two players. We want many players. We want a very rich ecosystem. Otherwise it becomes a very caustic environment where everybody is going one way. We try to level the playing field and standardize the way things are done.”
Android Developer Newsletter
Do you have any final thoughts?
“When you choose a carrier, you want the experience with that carrier to be uniform across multiple devices. You want your contacts to work on Windows, Apple, Android, Brew, Symbian, Firefox, Tizen, and all other phones. If you get a new phone, you want to be able to access your account the same way and dial phone numbers the same way. You want voice mail to work the same way and to have the same call quality. A carrier’s goal is to provide this seamless experience to the consumer. Achieving this is a struggle. It’s a huge effort.”
What do you think?
Are you surprised by the responses of these two industry insiders? Do you think carriers are interfering, do they have too much power? What about fragmentation? Please let us know in the comment section below.