Slashdot Mirror


Devs Grapple With 100+ Versions of Android

Barence writes "The scale of the challenge facing Android developers has been laid bare by Twitter client TweetDeck. During beta testing of its new software, TweetDeck encountered more than 36,000 testers using an enormous pool of 244 different handsets. Not only was hardware for the platform fragmented, but Tweetdeck had to contend with more than a hundred different versions of Android, highlighting just how muddled the market is for the open-source platform. The splintering of Android is making life difficult for app developers. 'It's not particularly harder to develop for Android over iPhone (from a programming standpoint),' said Christopher Pabon, a developer who writes apps for both the iPhone and Android platforms. 'Except when it comes to final quality assurance and testing. Then it can be a nightmare (a manageable nightmare, mind you).'"

22 of 386 comments (clear)

  1. So? by RMH101 · · Score: 5, Insightful

    Seriously, this is getting as bad as Engadget with their phantom Android Fragmentation issue.
    You have a basic hardware spec (number of buttons etc) laid out by the OHSA, you have processors of varying speeds and some have keyboards and better GPUs. The market can already limit what you see based on these requirements. App developers just need to think about the spec they want vs the number of handsets of that spec in the market. Hell, if your app's good enough, it'll drive the spec of the handset. It's just like what they have to do in the world of PC app development, made easier due to the rapid churn of handset specs as they get steadily faster and cheaper.
    Android's not doing at all badly compared to Apple's iOS, is it?

    1. Re:So? by revscat · · Score: 4, Insightful

      So?

      So it means that you have a lower return on investment, given that your testing costs are higher.

      Hell, if your app's good enough, it'll drive the spec of the handset.

      This is both irrelevant and wishful thinking. App popularity does not change the amount of testing required to get it popular in the first place, nor would popularity reduce the number of configurations you must test against even were the spec to change.

    2. Re:So? by delinear · · Score: 5, Insightful

      So how is this different to developing games/apps for the desktop (or, hell, laptop, tablet, netbook variants thereof), or every other phone OS other than iOS to date? Is this really a surprise to these people? If so they only have themselves to blame for going into the market blindly, as I'd have thought this would be self evident to anyone developing for an OS that's deployed to multiple hardware platforms.

    3. Re:So? by shawn(at)fsu · · Score: 4, Insightful

      Agreed.

      I don't see how it can be an issue. Look how prolific development is for windows is, you have no guarantee what the hardware is yet that didn't seem to hinder development for Windows esp if you compare Windows to Apple.

      --
      500 dollar reward for tip(s) leading to the arrest of the person(s) who stole my sig.
    4. Re:So? by shadowrat · · Score: 4, Insightful

      it's different because apps cost $0.99 and don't have as large a potential consumer base. is $0.99 going to be profitable when you have to pay an army of testers overtime and have developers working feverishly to squash bugs for a year?

    5. Re:So? by Anonymous Coward · · Score: 4, Funny

      Did you really just defend Windows? ... on Slashdot?

    6. Re:So? by afex · · Score: 4, Informative

      it is not different, and we (android users) still have the same problem that PC gamers have: random video card glitches, this game doesn't work while i have program X open, game X performs better in SP3 compat mode, etc. I'm not for or against it, but it is absolutely an issue. One of the reasons i have moved 75% of my gaming to the console - just pop the disk in and get a polished experience.

    7. Re:So? by jmichaelg · · Score: 4, Interesting

      You're missing a key point.

      Back in the early days of DOS, the OS was relatively stable but the hardware on which it ran was all over the map. We wanted to port Crystal Quest from the Mac to the PC but punted when we saw that we had no way of knowing how many PCs there were that had both a mouse, sound hardware and a video card that could handle bitmap video. All of those features were standard on a Mac but were customizations on a PC. It wasn't until Windows 95 came out that Microsoft started dictating minimum hardware specs that all machines had to have and Microsoft wouldn't let the manufacturer say the PC could run Windows 95 until Microsoft had QA'd the box.

      Android is still in the DOS days. Once Google gets around to learning the same lesson Microsoft learned (albeit slowly) and develops a QA test suite that they administer, the problem will only get worse.

  2. The more things change... by cheddarlump · · Score: 4, Insightful

    It's interesting to me that this is the same problem facing PC's, where there are hundreds of different versions of open source OSes vs. Windows/OSX.

  3. Why More Difficult Than Desktop Apps? by pscottdv · · Score: 4, Insightful

    Programmers write software for a myriad of different versions of Windows running on thousands of different types of hardware without these QA issues. What is Android doing that causes this problem?

    --

    this signature has been removed due to a DMCA takedown notice

    1. Re:Why More Difficult Than Desktop Apps? by molnarcs · · Score: 4, Insightful

      Programmers write software for a myriad of different versions of Windows running on thousands of different types of hardware without these QA issues. What is Android doing that causes this problem?

      As you probably suspect... nothing. There are thousands of useful apps working on all handsets without problems. I have about 30 installed on my Nexus One, carefully read the user reviews for each on AppBrain, and there is a reason most of these have 4.5+ stars... In other words, there are programmers who can do, and programmers who can whine on their blog. What I don't understand is why Slashdot links to random whining programmer to inflate the issue of fragmentation. Actually, you're right on target with the windows analogy. There are shitty programmers whose apps suffer due to hardware/platform (win7/vista/xp) differences, and then there are apps that work fine across all versions of the OS/hw.

    2. Re:Why More Difficult Than Desktop Apps? by jorenko · · Score: 4, Insightful

      The way I see it, the issue is OS rev fragmentation, moreso than hardware. Imagine if Windows 95, 98, 2000, XP all came out 6 months apart, with Vista slated to launch next month and 7 in the spring, and 50% of computers shipping today had 98 installed, and no support for higher versions.

      Related is the carriers' insistence on adding a layer on top of android to make it their own, which just delays the release, meaning by the time they're done the next OS version is out.

  4. Mainly the five most recent releases by Sockatume · · Score: 5, Informative

    2.2, 2.1 update 1, 2.1, something called 020201 (2.0?) and 1.6 account for almost all of the users. The remainder are custom ROMs you're not really obliged to support. Not that having five major releases operating in the wild is much better, mind.

    --
    No kidding!!! What do you say at this point?
  5. Oh, so its like OpenGL/DirectX by RyanFenton · · Score: 5, Insightful

    So, you've got to query for functionality, design to fallback in some cases for the features you work with/around, then design tests to make sure it works in the cases you design for. From that, you budget your time, allocate test machines/staff, and ballpark your costs.

    Doesn't sound too unusual - the more features you implement, the more combined testing you have to do for edge cases.

    It's just like with video cards and graphics programming - you design for a limited subset of possible cards, have code to query the cards capabilities, have fallback code for some cards, then test against a good range of cards. Blaming card manufacturers at large for their variety of design isn't productive - they're what makes the market you have the chance to code for.

    Ryan Fenton

  6. Android Dev by tobes · · Score: 5, Interesting

    As I say in the original post (http://blog.tweetdeck.com/android-ecosystem), it's great that our app can run on so many different devices. It has been a bit more work supporting all the custom ROMs and hardware specs, but there are more difficult platforms to develop for.

    One REALLY nice thing about developing for Android was that we could have a beta period that involved 36k users. Being able to distribute the APK outside the Market was a real blessing. It's much harder to test iPhone software before submitting it to Apple.

    1. Re:Android Dev by codepunk · · Score: 4, Insightful

      The flip side to that is it takes a whole lot less testing to hit the targets on the iphone / ipod / ipad. In fact a couple of my apps did not require any modification when the ipad was released it just ran.

      --


      Got Code?
  7. Re:BS by delinear · · Score: 4, Insightful

    Not to mention most of the custom builds are just vanilla builds with the UI tweaked, and where they do something different it's usually to add base functionality rather than removing it, so I'd be surprised if an app that was tested and working on the standard build failed to work on a custom ROM.

  8. Re:US Cellular sells naked android 2.1 by bem · · Score: 5, Informative

    (Only the Nexus one and some tablets have 2.2).

    Wrong. Droid, Droid 2, Droid X from Motorola are all on 2.2.

    HTC has several 2.2 Phones (Incredible, Evo 4G, Desire)

    Your information is dated.

  9. Cost/Benefit by bill_mcgonigle · · Score: 4, Insightful

    So it means that you have a lower return on investment, given that your testing costs are higher.

    Right - this should be a simple cost/benefit analysis.

    "I want access to these additional six million customers and it's going to cost me an additional $4600 per year to test for them. Worth it or not?"

    Sure, 'free' would be lovely, in some kind of dream world. But "I want to have these customers and I don't want to bother testing for them," just smacks of greed and/or stupidity. Perhaps the smart developers will seek to stand out by letting people know they've actually tested their software on the device the potential customer owns.

    Is there some sort of contractual obligation that precludes the developers from saying, "sorry, we haven't tested our app on this $130 non-flashable off-brand 7-inch Android tablet that you got from the local bedding supply store on clearance?"

    --
    My God, it's Full of Source!
    OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
  10. Missing some key information, I think by Xaroth · · Score: 5, Insightful

    Many of the highly modded posts right now seem to be missing some key information about exactly how Android is fragmented. It's not just the hardware - that can usually, but not always, be worked around in the ways they suggest. But it's also the software - every carrier and handset manufacturer likes to put their own little spin on the underlying software, and this causes more problems than one might expect.

    You get scenarios where some functionality is partially implemented or simply broken on some devices but not others, so you can't rely on simply querying to see if that functionality is available. The OS will happily tell you it's working, but it won't, so you have to find ways to work around it and/or implement long lists of special cases in the code. On some devices, the way that some input elements are displayed will have forced styling that's inconsistent with the rest of the platform, which you won't learn about until you've actually tried it on that device and seen your layout get destroyed. The autocomplete functionality or keyboard input method can vary substantially from device to device, potentially impacting how one's UI flows work. The list goes on.

    Limiting supported major OS versions and querying for hardware only solves part of the fragmentation problem. The fact that most every device has its own little fork of Android is more what causes the QA challenge. Since - generally speaking - one doesn't have these kinds of problems for mainstream desktop OS's, that's why people keep bringing up fragmentation of the Android platform as a major sticking point.

    1. Re:Missing some key information, I think by Xaroth · · Score: 5, Insightful

      That's exactly my point. One specific example I remember from a while back had to do with telling a list view to redraw itself. For most devices, it would work without difficulty. On a certain set of devices, the exact same call would happily return without actually updating the listview, because the handset manufacturer and/or carrier thought they knew better and tinkered with the underlying functionality of the OS and subsequently broke something.

      That sort of fragmentation - a million tiny undocumented forks - can't be gracefully handled by abstractions, capability querying, or API versioning. And the only way to discover that this sort of problem will occur is to actually run the software on the afflicted devices to see what breaks. *That* sort of problem is what TweetDeck is referring to when they say "more than a hundred different versions of Android", and is the sort of problem that causes people to complain about Android fragmentation.

  11. But how many are relevant? by Todd+Knarr · · Score: 5, Insightful

    Sure, there's lots of versions of Android out there. But how many of those really matter? No, not in the sense of market share or anything, but in the technical sense of you have to worry about them in the code.

    I run into this programming for Unix. Sure, there's probably hundreds of versions of Unix out there, hundreds of thousands if you count variations in installed software. But in large part I can ignore them. The major question is usually "SysV or BSD?", that is are the system's APIs based on BSD's or System V's. Some libraries I care about version but I often only care about large swathes of versions, eg. I care whether OpenSSL is 0.9.7 vs. 0.9.8 but I don't care about 0.9.8e vs. 0.9.8n (other than that 8e has bugs that're fixed in 8n, but that won't usually affect my code). And of course different hardware has different screen resolutions, but then I shouldn't be hard-coding for exact screen resolution anyway. Make the relevant calls to find out the screen size and just adapt to it, and you'll usually find you have a few general sizes you need to handle and a plethora of one real close to one of those general sizes that you can just handle automatically. Eg. a 328-pixel width probably can use the same layout, icon sizes etc. as a 320-pixel width, just make the main area 8 pixels wider or add a pixel to each side of padding and border spaces to make up the 8 pixels.

    You don't handle driving a car by learning how to drive a Ford Focus, and then learning how to drive a Ford Fusion, and then learning how to drive a Chevy Cobalt, and then learning how to drive a Toyota Camry, and so on, and then when faced with a Hyundai Sonata you have to sit there and wait for someone to teach you how to drive one because you haven't driven one before. You learn how to drive a car, and you apply that general method to the particular kind of car you're in at the moment. The controls may be a bit different on each make and model, but the truly basic ones boil down to "Manual or automatic?". Beyond that, things like the headlight switch, turn signals, wipers, radio and all the rest are usually a matter of a couple minutes to sort out. If someone complained that there's thousands of makes, models and years of car out there and it's so much work learning to drive all of them, you'd laugh at them I'm sure. Computer systems are the same way: you don't learn every variant individually unless you're just starting out, you learn different kinds of systems and how to categorize any particular system by what kind it is in a particular area.