Have to agree with author and Android developers should just do what Apple/ Apple developers do and leave out features, or just don't support older versions.
Going by all the chaff it's thrown up, lumping in desktop Linux with Android was the article's main rhetorical innovation.
I'm critical of Android's fragmentation problem, and I talk to other people who are too, but I've never heard anyone make the case that Linux is in the same boat. Kernel aside, the two camps of developers tend to have different markets, different distribution models, different funding sources, different UI expectations, different degrees of acceptable UI complexity, and different development timeframes. And when I say different, in most cases I mean "non-overlapping".
Yup. That's why Apple has always sold more computers than IBM compatibles. The fragmentation in the hardware market prevented developers from using MS Windows. And all those versions every couple years... Man, just horrible.
Oh wait, that's exactly the opposite of what happened.
Choice is not bad. Differing hardware doesn't matter.
> Windows was always consistent across Dell, HP et cetera.
This is so very far from the truth. Different OEMs ship with different patches, and some have custom drivers written, or "management" software that replaces key windows applications. If you've ever tried to write a game for Windows you'll know that once you get to testing, you'll find a ton of just plain strange setups that make no sense.
You are however quite correct in saying that differing software is the key issue here.
I guess you're right, yes. From a technical point of view, Windows is quite fragmented. However, it always offered surface-level consistency, with the exception of proprietary management software for certain tasks.
Put a customer in front of a Windows machine, and he'll feel at home. Give a customer a smartphone from HTC, Samsung and Motorola, and I'd be surprised if he could tell that it's the same OS on all three.
This software fragmentation is both a blessing and a curse. Without it, Android would never have taken off the way it did, because networks/hardware developers like the malleability. However, from a customer's perspective, this is sub-optimal.
Well, actually, for a while there were some applications available in Windows x86 and Windows Alpha (DEC) versions. Now we have x86 and x64 versions, which is not all that different when you think about it.
I've yet to be convinced that anyone making these analogies knows anything about either Windows or Android.
The last Dell laptop I saw had a Mac OS X style Dock, as just one example. Before XP service pack 2 everyone added their own software for doing wireless. I had another Dell laptop that included 2 different display settings in the Control Panel, one of which was simply ignored which was frustrating when trying to get it working with a projector, you needed to use the one provided by the maker of the video chip (Intel I think, but could have been ATI).
Let's not even start on crapware, trialware and "Control Centres" that try to upsell you various services.
Jobs had to describe Windows as "open" to make his rhetoric work, which is a major warning sign. If you have to rewrite the history of Windows so that it's a pristine and consistent experience across vendors then that's a bad sign for your argument too.
That would be true if the fragmentation in the hardware was between Sparc, Alpha, X86, Arm, Etc. The market example you attempted did the opposite, it consolidated around X86.
No it didn't. It (largely) concentrated around the x86 instruction set. But there's 32-bit and 64-bit, Intel and AMD (and in the past Citrix, etc.), and let's not forget about the ARM chips.
But that's just the CPU. Don't forget about all the different expansion bus designs (ISA, PCI, and a few others through the years), memory bus designs, graphics accelerators (and their interfaces), mass storage (IDE, SATA, a plethora of SCSI variants). We've got multiple types of interfaces for mice and keyboards, printers,
The set of computers that I could buy to run Windows on my desktop has a huge degree of variety.
Come off it. Making some hardware and writing a device driver is hardly fragmentation. If the SATA drive didn't run on Windows the day it shipped, there would be no point shipping it.
You comment on my point about disk drives. However, the differences between mass storage media is most certainly a factor that authors of many applications need to consider. Capacity and performance characteristics are relevant in video editing, for example. Optical disc burning software must consider the quantity, performance, capacity, erasability, etc., of the drives (and discs) present -- and must deal with different driver interfaces as well.
The difference between graphics adapters is an extreme difference. Authors needing advanced graphics capabilities must be able to handle different capabilities (resolution of course, but also shaders, etc.), and in extreme cases, GPU code downloaded to the adapter. They may have to deal with different software interfaces (DirectX vs OpenGL). And the handling of multiple monitors is a common question these days.
Even CPUs, as glibly dismissed, have far more differences. For some kinds of applications the developer may need to deal with the presence of SSE2 or SSE3 instructions, for example.
There really is a tremendous amount of fragmentation in PC-compatible hardware.
And your reply about "writing a device driver" is, of course, part of the answer. When the variance is sufficiently important, developers create abstraction layers so that they don't need to worry about it -- that's the point of things like OpenGL or TWAIN.
If you have ever developed for Android or BlackBerry you would quickly realize that having different screen resolutions and sizes, as well as having different OS versions, isn't that big of a deal. A tiny bit of extra work goes a long way when it comes to working with these platforms.
Also, the sheer volume of Android phones means that supporting 2.1+-only is not that big of a loss (You still hit 60-70% of Android users), and dropping support for older BlackBerry devices (pre-4.5) isn't a big deal either.
If we where looking at 1920x1200 vs 1620x1020 then resolution is not much of an issue. But, at lower resolutions you need to know where each pixel is to produce a really high quality interface.
Also, if limit yourself to a subset of Android phones that have the features you want, it's harder to justify supporting them. It's one thing to think 10 million users of this App store it's another thing to say well 6 million is still enough to go for. etc.
Or you can just use the resolution-independent features of Android, including their 9-patch image/button system for generating a UI that scales with the device's resolution.
There is no way to show an arbitrary 20x20 image in a 19x19 or 21x21 pixel box without it making some of them look like crap. So, yea you can make a generic app that works ok in on most Android devices but you are sacrificing both looks and functionality to do so.
PS: The minimum screen size is (240x320) but if an image has 1 pixel height or width, it may not be shown on the screen due to rounding issue. So they actually force you to waste a fair amount of space on a very limited device.
It's not always as easy as dropping support for older devices/OSes. When you have to support older systems (for client requirements, as an example), it goes from a "tiny bit of extra work" to "a tiny bit of work and a whole lot of extra testing". Just adding a single different type of device (i.e. supporting Blackberry Bold and Storm) almost adds twice the testing effort.
I'm not trying to say that developing for resolution independence is extremely difficult... but it's no walk in the park; it takes time. You truly have to ensure that your application can run on a wide gamut of devices and that the user can interact with it appropriately.
I think there's a huge startup opportunity here for a new, high-quality Android app store. I think it would be very interesting to see a Market that only let in high-quality apps (I don't think this goes against openness, as users can still install any app they want, it just wouldn't be from this store).
Those sorts of marketplaces have mostly an exploratory role today anyway, the user goes there to find good apps, not specifically to download an app the user knows is good. If the store itself weeded out all the crapware, it could make a killing very very quickly.
It's is very difficult for a third party app store to get started on Android. To get a large number of users using it you need to get it pre-installed on phones before they are sold. Many carriers already have plans for their own app stores, however, or already have one like in South Korea. So that makes it even tougher to get deals like that.
Google doesn't allow app stores to be offered via the Google Android Market, so there isn't even a runner up option of having users download it through the channel many of them do have. Non-AT&T Android phones do allow installing from a URL. So conceivably users could get the app store from a URL, but it is even tougher to get users to do that than it is to get them to download from Android Market. They also have to enable the unknown sources option in their settings, which some of them won't do.
Without a large user base, developers won't post their apps to your store. I'm a developer and I've posted a few of my apps to third party stores. I get hardly any downloads compared to Android Market. So it just doesn't make sense for me, as a developer, to go posting my app to all these dead water third party app stores. There are a lot of them too. Hardly a week goes by where I don't get some spam email from a third party app store that scraped the developer emails off the Market listings. So even if I did post to a third party app store, it would be making a choice amongst a large number of them.
Ah, I see. I don't have an Android phone, so I wasn't aware of the security settings and possibility to install things from a URL, thank you for the information.
Equating fragmentation with choice doesn't do the phenomenon justice. The question isn't if there should be choice: it's quite clear that there should be. I'd suggest that Jobs would not object to this.
But it's crucial to have sensible choice. Consumers get to choose between iOS, webOS, RIM OS and Android. Well, theoretically at least. Instead they get to choose between iOS, webOS, RIM OS and several slightly different, often incompatible and almost always very much un-free Androids. That's the fragmentation problem - Jobs doesn't advocate NO CHOICE, he advocates GOOD CHOICE for the consumer.
I own an Android phone. The stuff Motorola has put on it, without any legal way of removing it, is crap and has nothing to do with vanilla Android. Friends own HTC phones. They have a different half-baked Android-y OS. This fragmentation is bad for the consumer. Choice - between truly different strands of Android - is good for the consumer. Don't conflate these issues.
Also, never mention Linux on the Desktop in any discussion. It's like waving a white flag. Personally, I run Ubuntu and Debian on all my systems. Still: not a compelling argument for anything. Especially since fragmentation IS a massive problem for "consumer Linux".
"Choice - between truly different strands of Android - is good for the consumer. Don't conflate these issues."
I think part of the problem is branding. When someone says they have an Android phone, how do you know what that means? Whereas "Fedora Linux" or "Ubuntu 10.4" are quite clear for those who care to differentiate.
If manufacturers and carriers and everyone else specified things like "HTC-modded Eclair Android" or "Stock Donut Android" or whatever, you'd at least be able to more easily choose between two phones. And with clearer choices, consumers could express their preferences in dollars more clearly.
Fragmentation in software is not the same as competing laundry detergents, even by the same company. I'm not a detergent engineer (a real job title?), but I bet that if the scent in one detergent proves popular, it's not so hard to add it to another.
By contrast, if there are 30 branches of an OS, although it does allow different ideas to compete, it also divides up the efforts of people who want to contribute, and even complicates the decision to contribute at all. And it's not always trivial to take good ideas from one project and port them to another.
Is fragmentation overall good or bad? Hard to say. But it does present challenges that go beyond just competition.
In short, sometimes the most helpful answer to "I'm not happy with the direction of this project" is not "fork it," but "talk and compromise or deal with it."
"Of course, specific choices don't tend to survive if nobody wants them--that, too, is part of a competitive marketplace. If there isn't demand for them, individual choices will disappear."
The competitive market between desktop Linux distros is small and weak compared to the desktop OS market as a whole. Quality control seems non-existent from a naive user's perspective, as things often just don't work like they claim to, or work for the moment and regress when there's a software update they were prompted to install.
This isn't an insoluble problem, but it's hard to see how we can get there from here. Microsoft solves this problem (in users' minds, at least) by throwing enormous resources at QA and bugfixing -- more resources that all desktop Linux vendors together even have. Apple solved this by limiting hardware to a comparatively few models, but if a desktop Linux vendor did this and had enough sales to justify it, they would have already either defragmented the market or grown sales enough to escape the trap.
Basically, the lack of quality control in desktop Linux distros seems mostly attributable to the fragmentation, as distros try to differentiate themselves via UI design and package managers rather than helping solve the upstream problems that seem to be holding adoption back.
The server-side software I write works on any Linux server, be it Red Hat or Debian-based, and web-pages are served properly on any desktop, including Linux (minus desktops with IE6, for which I don't pay enough attention).
> the lack of quality control in desktop Linux distros seems mostly attributable to the fragmentation
I'm counting ~ 185 words in your reply, and you still haven't defined the "fragmentation" you're talking about, just some random rumble about lack of QA.
The only thing Linux does differently (compared to alternatives) is a lack of binary backwards compatibility, but this is by choice since most software for Linux comes with source-code and can be recompiled. The other major gripe is that you've got multiple APIs you can choose to target (be it graphics, sound, UI) ... but every major distribution has compiled packages for everything that you can pull as dependencies.
Case in point, XMMS, an ancient Winamp clone written with GTK+ ver.1 can still be made to work on every Linux distribution available.
I cannot say the same thing about OS X, which breaks backwards compatibility more often than Linux (like once every 2 or 3 versions).
You're unfamiliar with Linux distros? There more than twenty "desktop Linux" distros mentioned here: http://www.desktoplinux.com/articles/AT7386380154.html , and that's merely the "especially interesting" ones. In contrast, there are probably less than 20% of OS X users on versions of OS X older than 10.4, and binary compatibility isn't a major issue for anyone except Windows.
OS X, which breaks backwards compatibility more often than Linux (like once every 2 or 3 versions).
That's true, but while there are tools to mitigate that (Rosetta, Classic), it's completely orthogonal to what I'm talking about, as is your server-side software.
Your point about software that "can be made to work" is exactly spot on: virtually anything is possible, in a way that it's not always possible on Mac or Windows, but almost nothing is easy.
I have never seen an install of desktop Linux where the install went smoothly and it found all the hardware and correctly set it up, and all the settings did what they say they do, and all the software available in the built-in software installation tool actually worked. As soon as a person unfamiliar with what to avoid starts playing around with a desktop Linux install, things start to go wrong, and if they're lucky it's a dozen little things that just don't quite work right, and if they're unlucky they stumble into things that really make the system unusable.
I've seen this happen over and over with friends I'd encouraged to try Linux when they were griping about Windows, and I know of only one group (a family) who successfully made the switch. How did they do it? Well, they've learned not to try to adjust things too much, and they mostly keep their hands inside the cart and sit very still, and when things go wrong they quietly wait for the next Ubuntu release in the hopes that the problem will be fixed without too much other stuff breaking. Oh, and they purchased Ubuntu-specific hardware, but things still stop working randomly on update from time to time.
This is what I mean by having a QA problem. Desktop Linux needs a thousand QA and dev people focused on tracking down and fixing all these issues, and it can't get them, and I don't see any way that's going to change.
Edit: Oh, and you'd have to fork about a thousand different pieces of software to achieve consistency and interoperability that didn't immediately fall apart on the next minor release of those applications. Putting together a coherent Linux desktop seems like one of those things where we should be surpised that anyone succeeds at all, rather than upset that they didn't do well at it. "It's not how well the bear dances", and all that.
All I'm saying is that fragmentation never bothered me so much, and even on Linux where you've got a thousand options available, there are a couple of paths that you can go on which will make everything less painful.
When it comes to Android development, yes you need to test on multiple devices, but what's mostly broken is the design that has to have adjustments for multiple resolutions ... but then again, I haven't done stuff too complicated thus far.
I feel this is the same gripe people have with the web, where I do have experience and where fragmentation never was an issue for me. All I had to do was to look around for abstractions, and for IE hacks try not to reinvent the wheel on every single project (and just ignore IE6 since about a year ago, but with a nice warning for users to know what's going on).
I think Jobs is absolutely correct, in the context of consumer-facing mobile app stores (and probably consumer computing in general). Choice is great until it becomes a barrier to purchase. Non tech-savvy types flock to Apple because it "just works". No education required, no need to decide between six different almost identical models. The purchase is brainless, and the consumer gets a device that does what he expects. A savvy user who wants to tinker and operate outside a prescribed set of use cases will want choice--Android. Everyone who purchased the iOS product had full knowledge of what it can do--and doesn't care that it may not be able to do anything/everything else.
If only "savvy users who want to tinker and operate outside a prescribed set of use cases" want to use Android devices, why are Android and iPhone neck-and-neck in sales figures?
For US sales, I think there are two reasons: Verizon and taking over for basic / feature phones. Verizon has put some serious money behind the Droid brand and since we don't have a Verizon iPhone it makes a lot of sense that they are selling quite a bit.
The second reason is a little harder to justify. My basic premise is that many of these phones are going for the same price as feature phones and are being pushed hard. The data plan makes them more money so it is a net win for the carrier. My big reason on this one is the low number of apps bought per phone compared to the iPhone. It seems like they should have higher sales unless people were actually treating it more like a non-smart phone. This isn't really that bad for the carrier or Google, but it really needs to turn around to help more developers. I get the feeling the Amazon store might correct the attitude because of Amazon's reputation and ability to get people to buy online.
"My big reason on this one is the low number of apps bought per phone compared to the iPhone."
I actually use a Nexus One while my wife uses an iPhone. I confess that I like the Nexus One for the reason that the original poster mentions -- I am a geek and a customizer.
One thing I've noticed, having spent time with both devices, is that there seems to be much more competition from free or ad supported apps on Android than on the iPhone. I probably have 20 or so apps installed on my phone, but every single one of them is free. On the other hand, my wife has 5 or 6 paid apps installed on her phone. Furthermore, the iPhone seems to be well optimized as an app-delivery platform, whereas Android seems to be more focused on an integrated suite of tools (like Blackberry) -- it ships with a lot of stuff that I would have to grab as an app in iOS.
Very sloppy reasoning, bordering on the fallacy of false dichotomy.
<"Fragmentation," as I suggest above, is simply a derogatory term for "choice," something not only valued but expected in most product categories. >
Errr, no Katherine. Fragmentation is not a synonym for choice - in fact it's very nearly an antonym. Choice means that I can substitute one product for another - I have a choice!.
Fragmentation, at least in the sense that Jobs and Strohmeyer both clearly meant, is about interoperability. That is, if I buy a Product 2 to work with Product 1 that I already own, will Product 2 continue to work if I replace Product 1 for a new Product 3. The likelihood of this question having a negative response is a measure of the fragmentation of the market. Obviously, if changing from Product 1 to Product 3 means that I lose the ability to use Product 2, that is a cost barrier that is going to make me less likely to change, ie have less choice.
> Fragmentation is not a synonym for choice - in fact it's very nearly an antonym.
Err, not exactly. The word 'choice' doesn't inherently imply that each option must never contain any constraints (even though it is generally desirable to minimise them). In fact if all the options are identical in result it's not really a choice. So why do we have all these different product options in so many categories? Why doesn't someone just work out what 'the best' one is, so we can all save the hassle of having those other options? One reason is that people's requirements actually are different. The benefit of choice is that individuals get to decide on which constraints and characteristics suit them best. The longer term benefit is in the competition between different approaches and organisations it fosters.
Interoperability is a property referring to the ability of diverse systems and organizations to work together (inter-operate) (from wikipedia). To me this sounds a bit like the 'inter' part implies separate entities or 'fragments'. I'm not even sure if the word really applies to a monolithic platform like iOS.
Recently Microsoft have suggested that European governments can fulfil their "interoperability" requirements by the simple expedient of everyone buying Microsoft products.
Seems like Apple's taking a similar tack. So much easier than using open (there's that word again) standards.
Whilst your thesis is trivially true (there must be differences in products, otherwise we effectively have no choice), in a practical sense it leaves a lot to desire. To have choice, the vast majority of functionality must be fungible between two different, competing products. If I have a Ford, and want to buy a new car, the new car can be used on the same roads, my driving experience can be transferred, I'll have access to the same fuel in the same service stations, I can park the car in the same places, etc. The two products are highly fungible, and where they are not, it's because they are being specifically targeted at a need that I have. I do not have to give up using roads, or the service station network just because I need a bigger car to hold my kids - the big cars are still designed to fit on the same roads.
To use a computer example, I use Fedora at work, because our CPU manufacturer provides their tools (port of binutils etc) only for Fedora, and it's a major pain in the neck for me to deal with having to repackage them for my desktop of choice when the tools or my OS is updated. I would prefer to use Ubuntu, but I can't, because the two products are not sufficiently fungible, ie the market is fragmented, and I don't have a choice.
I do support/sysadmin work for companies and executives.
Android phones, on the whole, lack polish, and often have unexpected behavior.
For example, just yesterday I had a non-technical customer who got a Droid X, with 2.2. Had battery life issues with the phone, and frankly didn't want/need to learn about task management (understandable - do you make the company CEO look at your server's process tables for zombies/runaways?). Plus, the phone had linked a bunch of unrelated contacts between his Exchange and Google accounts, so his contact came up linked to his wife's hairdresser, for whatever reason. That's about par for the course with Android phones.
My take on Android is "great if you're technologically competent and able to deal with issues that come up, not so great otherwise". None of these people are going to run custom ROMs, or take the time/know how to get the crapware off their phones. They're going to be left behind on old versions of the OS as soon as the vendor drops support.
None of these (apart from the unusual contact linkage) are technical objections about Android per say - I have a good friend with a Droid X and he's customized the heck out of it - it looks/works great and has great battery life. He also knows what he's doing. Most people aren't him.
I don't see a good solution to this that would survive carrier intervention...
And how does that differ from Windows Mobile? I helped a person running Windows Mobile 6.5 with battery issues. Turned out he kept opening applications and not closing them. The exact same problem, but on a different system.
Now I'd argue Windows Mobile is crap, but this kind of stuff is par for the course. And it really has nothing to do with fragmentation which is what this article (and thus this discussion) is about.
This whole discussion about fragmentation is a tempest in a teapot.
The fact is, people are buying lots of Android handsets. If you've used the Android Market, you'll know that there are lots of apps. The apps in Market may not be as nice or as many as those in the App Store, but it's enough to sell lots and lots of phones.
If you're writing mobile software right now, you should be targeting both iOS and Android (and probably BlackBerry) if you want to get your application in front of as many eyes as you feasibly can.
If you're writing mobile software right now, you should be targeting both iOS and Android (and probably BlackBerry) if you want to get your application in front of as many eyes as you feasibly can.
"A tempest in a teapot" is an argument that has no bearing on how events will actually play out.
Fragmentation is just a conversation for geeks. My sister is going to buy an Android phone because it's cheap and pretty good. It doesn't matter to her that the market is fragmented -- hell, the fragmentation (and corresponding competition) is probably part of what made it cheap enough for her to consider it.
Mobile developers are going to have to live with this fact, because there's a lot of eyes on the line. So far, fragmentation has not been a problem so hard to solve that it has driven developers away. As long as that's the case, the "problem" will feed on itself.
Then, too, there's the recent survey of developers by Appcelerator and IDC that found an overwhelming preference for Android over iPhone.
Bullshit. Android rated higher in some questions, but trying to pass it off as having found an "overwhelming preference" (for either platform) is a gross distortion. From the top-level findings of the survey:
"Apple iOS continues to dominate in all categories relating to market/revenue opportunity and current devices. iPhone continues to lead overall developer sentiment with 91% saying they are “very interested” in developing for the device compared to 82% for Android phones."
Overwhelming, huh? The rest of the results are kind of interesting and kind of predictable, but definitely not what the author is trying to pass it off as.
I'd just like to quickly define "Fragmentation" from a developer perspective. "Fragmentation" occurs when I have to write code to support oddities on a specific device. Diversity is good. 'Fragmentation' is bad. I think it's an important distinction that's often missed in the constant Is-Android-Fragmented discussion.
56 comments
[ 3.6 ms ] story [ 166 ms ] threadI'm critical of Android's fragmentation problem, and I talk to other people who are too, but I've never heard anyone make the case that Linux is in the same boat. Kernel aside, the two camps of developers tend to have different markets, different distribution models, different funding sources, different UI expectations, different degrees of acceptable UI complexity, and different development timeframes. And when I say different, in most cases I mean "non-overlapping".
s/he/she/, though.
Oh wait, that's exactly the opposite of what happened.
Choice is not bad. Differing hardware doesn't matter.
This is so very far from the truth. Different OEMs ship with different patches, and some have custom drivers written, or "management" software that replaces key windows applications. If you've ever tried to write a game for Windows you'll know that once you get to testing, you'll find a ton of just plain strange setups that make no sense.
You are however quite correct in saying that differing software is the key issue here.
Put a customer in front of a Windows machine, and he'll feel at home. Give a customer a smartphone from HTC, Samsung and Motorola, and I'd be surprised if he could tell that it's the same OS on all three.
This software fragmentation is both a blessing and a curse. Without it, Android would never have taken off the way it did, because networks/hardware developers like the malleability. However, from a customer's perspective, this is sub-optimal.
Photoshop doesn't come in a version for "HP Windows" and one for "Dell Windows", and ...
It is the application level that matters for consumers buying apps. Very few users reinstall the OS on their mobile phone.
The last Dell laptop I saw had a Mac OS X style Dock, as just one example. Before XP service pack 2 everyone added their own software for doing wireless. I had another Dell laptop that included 2 different display settings in the Control Panel, one of which was simply ignored which was frustrating when trying to get it working with a projector, you needed to use the one provided by the maker of the video chip (Intel I think, but could have been ATI).
Let's not even start on crapware, trialware and "Control Centres" that try to upsell you various services.
Jobs had to describe Windows as "open" to make his rhetoric work, which is a major warning sign. If you have to rewrite the history of Windows so that it's a pristine and consistent experience across vendors then that's a bad sign for your argument too.
But that's just the CPU. Don't forget about all the different expansion bus designs (ISA, PCI, and a few others through the years), memory bus designs, graphics accelerators (and their interfaces), mass storage (IDE, SATA, a plethora of SCSI variants). We've got multiple types of interfaces for mice and keyboards, printers,
The set of computers that I could buy to run Windows on my desktop has a huge degree of variety.
You comment on my point about disk drives. However, the differences between mass storage media is most certainly a factor that authors of many applications need to consider. Capacity and performance characteristics are relevant in video editing, for example. Optical disc burning software must consider the quantity, performance, capacity, erasability, etc., of the drives (and discs) present -- and must deal with different driver interfaces as well.
The difference between graphics adapters is an extreme difference. Authors needing advanced graphics capabilities must be able to handle different capabilities (resolution of course, but also shaders, etc.), and in extreme cases, GPU code downloaded to the adapter. They may have to deal with different software interfaces (DirectX vs OpenGL). And the handling of multiple monitors is a common question these days.
Even CPUs, as glibly dismissed, have far more differences. For some kinds of applications the developer may need to deal with the presence of SSE2 or SSE3 instructions, for example.
There really is a tremendous amount of fragmentation in PC-compatible hardware.
And your reply about "writing a device driver" is, of course, part of the answer. When the variance is sufficiently important, developers create abstraction layers so that they don't need to worry about it -- that's the point of things like OpenGL or TWAIN.
What exactly is your definition of "fragmentation" then?
Also, the sheer volume of Android phones means that supporting 2.1+-only is not that big of a loss (You still hit 60-70% of Android users), and dropping support for older BlackBerry devices (pre-4.5) isn't a big deal either.
Also, if limit yourself to a subset of Android phones that have the features you want, it's harder to justify supporting them. It's one thing to think 10 million users of this App store it's another thing to say well 6 million is still enough to go for. etc.
The Android SDK includes a lot of simple ways to mitigate differences between various devices: http://developer.android.com/guide/practices/screens_support...
PS: The minimum screen size is (240x320) but if an image has 1 pixel height or width, it may not be shown on the screen due to rounding issue. So they actually force you to waste a fair amount of space on a very limited device.
I'm not trying to say that developing for resolution independence is extremely difficult... but it's no walk in the park; it takes time. You truly have to ensure that your application can run on a wide gamut of devices and that the user can interact with it appropriately.
Those sorts of marketplaces have mostly an exploratory role today anyway, the user goes there to find good apps, not specifically to download an app the user knows is good. If the store itself weeded out all the crapware, it could make a killing very very quickly.
Google doesn't allow app stores to be offered via the Google Android Market, so there isn't even a runner up option of having users download it through the channel many of them do have. Non-AT&T Android phones do allow installing from a URL. So conceivably users could get the app store from a URL, but it is even tougher to get users to do that than it is to get them to download from Android Market. They also have to enable the unknown sources option in their settings, which some of them won't do.
Without a large user base, developers won't post their apps to your store. I'm a developer and I've posted a few of my apps to third party stores. I get hardly any downloads compared to Android Market. So it just doesn't make sense for me, as a developer, to go posting my app to all these dead water third party app stores. There are a lot of them too. Hardly a week goes by where I don't get some spam email from a third party app store that scraped the developer emails off the Market listings. So even if I did post to a third party app store, it would be making a choice amongst a large number of them.
But it's crucial to have sensible choice. Consumers get to choose between iOS, webOS, RIM OS and Android. Well, theoretically at least. Instead they get to choose between iOS, webOS, RIM OS and several slightly different, often incompatible and almost always very much un-free Androids. That's the fragmentation problem - Jobs doesn't advocate NO CHOICE, he advocates GOOD CHOICE for the consumer.
I own an Android phone. The stuff Motorola has put on it, without any legal way of removing it, is crap and has nothing to do with vanilla Android. Friends own HTC phones. They have a different half-baked Android-y OS. This fragmentation is bad for the consumer. Choice - between truly different strands of Android - is good for the consumer. Don't conflate these issues.
Also, never mention Linux on the Desktop in any discussion. It's like waving a white flag. Personally, I run Ubuntu and Debian on all my systems. Still: not a compelling argument for anything. Especially since fragmentation IS a massive problem for "consumer Linux".
I think part of the problem is branding. When someone says they have an Android phone, how do you know what that means? Whereas "Fedora Linux" or "Ubuntu 10.4" are quite clear for those who care to differentiate.
If manufacturers and carriers and everyone else specified things like "HTC-modded Eclair Android" or "Stock Donut Android" or whatever, you'd at least be able to more easily choose between two phones. And with clearer choices, consumers could express their preferences in dollars more clearly.
You haven't explained why that's a bad thing. You've just stated it as if it's self-evident.
By contrast, if there are 30 branches of an OS, although it does allow different ideas to compete, it also divides up the efforts of people who want to contribute, and even complicates the decision to contribute at all. And it's not always trivial to take good ideas from one project and port them to another.
Is fragmentation overall good or bad? Hard to say. But it does present challenges that go beyond just competition.
In short, sometimes the most helpful answer to "I'm not happy with the direction of this project" is not "fork it," but "talk and compromise or deal with it."
The competitive market between desktop Linux distros is small and weak compared to the desktop OS market as a whole. Quality control seems non-existent from a naive user's perspective, as things often just don't work like they claim to, or work for the moment and regress when there's a software update they were prompted to install. This isn't an insoluble problem, but it's hard to see how we can get there from here. Microsoft solves this problem (in users' minds, at least) by throwing enormous resources at QA and bugfixing -- more resources that all desktop Linux vendors together even have. Apple solved this by limiting hardware to a comparatively few models, but if a desktop Linux vendor did this and had enough sales to justify it, they would have already either defragmented the market or grown sales enough to escape the trap.
Basically, the lack of quality control in desktop Linux distros seems mostly attributable to the fragmentation, as distros try to differentiate themselves via UI design and package managers rather than helping solve the upstream problems that seem to be holding adoption back.
> the lack of quality control in desktop Linux distros seems mostly attributable to the fragmentation
I'm counting ~ 185 words in your reply, and you still haven't defined the "fragmentation" you're talking about, just some random rumble about lack of QA.
The only thing Linux does differently (compared to alternatives) is a lack of binary backwards compatibility, but this is by choice since most software for Linux comes with source-code and can be recompiled. The other major gripe is that you've got multiple APIs you can choose to target (be it graphics, sound, UI) ... but every major distribution has compiled packages for everything that you can pull as dependencies.
Case in point, XMMS, an ancient Winamp clone written with GTK+ ver.1 can still be made to work on every Linux distribution available.
I cannot say the same thing about OS X, which breaks backwards compatibility more often than Linux (like once every 2 or 3 versions).
You're unfamiliar with Linux distros? There more than twenty "desktop Linux" distros mentioned here: http://www.desktoplinux.com/articles/AT7386380154.html , and that's merely the "especially interesting" ones. In contrast, there are probably less than 20% of OS X users on versions of OS X older than 10.4, and binary compatibility isn't a major issue for anyone except Windows.
OS X, which breaks backwards compatibility more often than Linux (like once every 2 or 3 versions).
That's true, but while there are tools to mitigate that (Rosetta, Classic), it's completely orthogonal to what I'm talking about, as is your server-side software.
Your point about software that "can be made to work" is exactly spot on: virtually anything is possible, in a way that it's not always possible on Mac or Windows, but almost nothing is easy.
I have never seen an install of desktop Linux where the install went smoothly and it found all the hardware and correctly set it up, and all the settings did what they say they do, and all the software available in the built-in software installation tool actually worked. As soon as a person unfamiliar with what to avoid starts playing around with a desktop Linux install, things start to go wrong, and if they're lucky it's a dozen little things that just don't quite work right, and if they're unlucky they stumble into things that really make the system unusable.
I've seen this happen over and over with friends I'd encouraged to try Linux when they were griping about Windows, and I know of only one group (a family) who successfully made the switch. How did they do it? Well, they've learned not to try to adjust things too much, and they mostly keep their hands inside the cart and sit very still, and when things go wrong they quietly wait for the next Ubuntu release in the hopes that the problem will be fixed without too much other stuff breaking. Oh, and they purchased Ubuntu-specific hardware, but things still stop working randomly on update from time to time.
This is what I mean by having a QA problem. Desktop Linux needs a thousand QA and dev people focused on tracking down and fixing all these issues, and it can't get them, and I don't see any way that's going to change.
Edit: Oh, and you'd have to fork about a thousand different pieces of software to achieve consistency and interoperability that didn't immediately fall apart on the next minor release of those applications. Putting together a coherent Linux desktop seems like one of those things where we should be surpised that anyone succeeds at all, rather than upset that they didn't do well at it. "It's not how well the bear dances", and all that.
All I'm saying is that fragmentation never bothered me so much, and even on Linux where you've got a thousand options available, there are a couple of paths that you can go on which will make everything less painful.
When it comes to Android development, yes you need to test on multiple devices, but what's mostly broken is the design that has to have adjustments for multiple resolutions ... but then again, I haven't done stuff too complicated thus far.
I feel this is the same gripe people have with the web, where I do have experience and where fragmentation never was an issue for me. All I had to do was to look around for abstractions, and for IE hacks try not to reinvent the wheel on every single project (and just ignore IE6 since about a year ago, but with a nice warning for users to know what's going on).
The second reason is a little harder to justify. My basic premise is that many of these phones are going for the same price as feature phones and are being pushed hard. The data plan makes them more money so it is a net win for the carrier. My big reason on this one is the low number of apps bought per phone compared to the iPhone. It seems like they should have higher sales unless people were actually treating it more like a non-smart phone. This isn't really that bad for the carrier or Google, but it really needs to turn around to help more developers. I get the feeling the Amazon store might correct the attitude because of Amazon's reputation and ability to get people to buy online.
I actually use a Nexus One while my wife uses an iPhone. I confess that I like the Nexus One for the reason that the original poster mentions -- I am a geek and a customizer.
One thing I've noticed, having spent time with both devices, is that there seems to be much more competition from free or ad supported apps on Android than on the iPhone. I probably have 20 or so apps installed on my phone, but every single one of them is free. On the other hand, my wife has 5 or 6 paid apps installed on her phone. Furthermore, the iPhone seems to be well optimized as an app-delivery platform, whereas Android seems to be more focused on an integrated suite of tools (like Blackberry) -- it ships with a lot of stuff that I would have to grab as an app in iOS.
<"Fragmentation," as I suggest above, is simply a derogatory term for "choice," something not only valued but expected in most product categories. >
Errr, no Katherine. Fragmentation is not a synonym for choice - in fact it's very nearly an antonym. Choice means that I can substitute one product for another - I have a choice!.
Fragmentation, at least in the sense that Jobs and Strohmeyer both clearly meant, is about interoperability. That is, if I buy a Product 2 to work with Product 1 that I already own, will Product 2 continue to work if I replace Product 1 for a new Product 3. The likelihood of this question having a negative response is a measure of the fragmentation of the market. Obviously, if changing from Product 1 to Product 3 means that I lose the ability to use Product 2, that is a cost barrier that is going to make me less likely to change, ie have less choice.
Err, not exactly. The word 'choice' doesn't inherently imply that each option must never contain any constraints (even though it is generally desirable to minimise them). In fact if all the options are identical in result it's not really a choice. So why do we have all these different product options in so many categories? Why doesn't someone just work out what 'the best' one is, so we can all save the hassle of having those other options? One reason is that people's requirements actually are different. The benefit of choice is that individuals get to decide on which constraints and characteristics suit them best. The longer term benefit is in the competition between different approaches and organisations it fosters.
Interoperability is a property referring to the ability of diverse systems and organizations to work together (inter-operate) (from wikipedia). To me this sounds a bit like the 'inter' part implies separate entities or 'fragments'. I'm not even sure if the word really applies to a monolithic platform like iOS.
Seems like Apple's taking a similar tack. So much easier than using open (there's that word again) standards.
To use a computer example, I use Fedora at work, because our CPU manufacturer provides their tools (port of binutils etc) only for Fedora, and it's a major pain in the neck for me to deal with having to repackage them for my desktop of choice when the tools or my OS is updated. I would prefer to use Ubuntu, but I can't, because the two products are not sufficiently fungible, ie the market is fragmented, and I don't have a choice.
Android phones, on the whole, lack polish, and often have unexpected behavior.
For example, just yesterday I had a non-technical customer who got a Droid X, with 2.2. Had battery life issues with the phone, and frankly didn't want/need to learn about task management (understandable - do you make the company CEO look at your server's process tables for zombies/runaways?). Plus, the phone had linked a bunch of unrelated contacts between his Exchange and Google accounts, so his contact came up linked to his wife's hairdresser, for whatever reason. That's about par for the course with Android phones.
My take on Android is "great if you're technologically competent and able to deal with issues that come up, not so great otherwise". None of these people are going to run custom ROMs, or take the time/know how to get the crapware off their phones. They're going to be left behind on old versions of the OS as soon as the vendor drops support.
None of these (apart from the unusual contact linkage) are technical objections about Android per say - I have a good friend with a Droid X and he's customized the heck out of it - it looks/works great and has great battery life. He also knows what he's doing. Most people aren't him.
I don't see a good solution to this that would survive carrier intervention...
Now I'd argue Windows Mobile is crap, but this kind of stuff is par for the course. And it really has nothing to do with fragmentation which is what this article (and thus this discussion) is about.
The fact is, people are buying lots of Android handsets. If you've used the Android Market, you'll know that there are lots of apps. The apps in Market may not be as nice or as many as those in the App Store, but it's enough to sell lots and lots of phones.
If you're writing mobile software right now, you should be targeting both iOS and Android (and probably BlackBerry) if you want to get your application in front of as many eyes as you feasibly can.
That seems tautological. :)
Nothing else you say really backs this up, your point seems to be more along the lines of "you can't afford to ignore Android".
Fragmentation is just a conversation for geeks. My sister is going to buy an Android phone because it's cheap and pretty good. It doesn't matter to her that the market is fragmented -- hell, the fragmentation (and corresponding competition) is probably part of what made it cheap enough for her to consider it.
Mobile developers are going to have to live with this fact, because there's a lot of eyes on the line. So far, fragmentation has not been a problem so hard to solve that it has driven developers away. As long as that's the case, the "problem" will feed on itself.
Bullshit. Android rated higher in some questions, but trying to pass it off as having found an "overwhelming preference" (for either platform) is a gross distortion. From the top-level findings of the survey:
"Apple iOS continues to dominate in all categories relating to market/revenue opportunity and current devices. iPhone continues to lead overall developer sentiment with 91% saying they are “very interested” in developing for the device compared to 82% for Android phones."
Overwhelming, huh? The rest of the results are kind of interesting and kind of predictable, but definitely not what the author is trying to pass it off as.
[the survey]:http://www.appcelerator.com/mobile-developer-report-Septembe...
[submitted previously]:http://news.ycombinator.com/item?id=1798878