Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Why it’s time to support only Android 4.0 and above (dannyroa.com)
28 points by purpl3p3rs0n on Oct 18, 2013 | hide | past | favorite | 45 comments


Site is giving me a database error, so I'm committing the sin of posting based only on the title :(

Hipster Mountain View/Palo Alto is not the world. Most people who manage to afford to buy a smartphone, use the thing until it dies. I personally just upgraded from an Android 2.3 device, and my latest Apple device is on iOS 2. And I read Hacker News for christ's sake.

Maybe for your app, your community the norms are different. But be careful not to bias your data - you better be sure that you are not unknowingly turning away people who would be customers if only you supported their device.


Even in the world outside of "hipster palo alto", 70% of active Android users are on 4.0+: http://developer.android.com/about/dashboards/index.html It seems to be growing 5% per month, so already by the end of the year 2.3 market share might fall below 10%.

Starting from 4.0, many APIs were cleaned up, many bugs were fixed, and it seems that many carriers/manufacturers have stopped shipping bizarrely broken custom modifications.

Unless you have a large development team and absolutely must reach every possible customer, targeting 4.0 and upwards seems to be the most efficient choice.


FWIW, remember that these figures are biased in construction.

Less importantly, they only take into account devices that have the Play Store (which you might consider your audience, but there are tons of people in the world happy to buy things from alternative markets available on their devices).

However, and this is somewhat insidious: they measure devices used in the last seven days. How often do normal users "actively visit the Play Store"? I find it highly unlikely that every normal user does so at least once every week.

In fact, I would be much less surprised by a universe where people only "visit the Play Store" once a month at best, and only when there's something specific for them to be doing (maybe they hear about a new product, and go to download).

I would then further submit that this frequency decreases the older the device is: during the first month of owning your device, you probably have tons of things you suddenly realize you want, because the device comes with no apps installed.

With an expectation curve on the usage of the device thereby working against older devices, you will see a chart that only looks at the most recent 7 days biased towards recent versions as the probability of older versions dips.

Let's look at what happens then if we posit that the average 2.3 user is using the Play Store once every four weeks, while the average 4.x user is using the Play Store once every two weeks: this mild skew makes 30/70 become almost 50/50.

Are these people who are using 2.3 really outside of your target market because they only download an app every month instead of every couple weeks? If you market to them, and make it clear your app supports them, will they not buy it?

While that might be true, it isn't something you can support with just these numbers from Google. It's even worse, in fact, when you remember that when Google was tracking "active devices" instead of "devices actively visiting Play" the 2.3/4.x split was so far in the other direction as to be unbelievable, and when Google decided "fine, we are limiting it to active users" the numbers jumped.

And now, we see the numbers creeping better and better... but did you notice that they changed the time range from 2 weeks to 7 days in the few months since Apple lambasted their uptake at WWDC? If not, you aren't paying enough attention ;P, as that's a really critical detail: Google keeps moving the goal post, so you can't take any solace in "we are making progress".


And by the middle of next spring, the number of users on 2.3 will be negative!


I use an Android 2.3 device. I'm not paying for a new phone until this one breaks.

On a side note, I'd love to update the software on it, but Samsung/Telus have not offered an upgrade path. So, 2.3 it is.


I think this is the true problem.

How many devices are out there that could be running 4.0+ but aren't due to manufacturer or carrier interference? Not everyone is capable of rooting and installing custom versions of the OS.

Android fragmentation is purely a manufacturer/carrier issue. To the article's point, maybe developers can help that process by enforcing 4.0+.


as someone who paid google $600 for a nexus one that can only run 2.3 (2.3.3 with CM), i'm very offended. Even more so because they could have easily ported all the features such as browser rendering engine to the device.


Need to resize my server. Can't handle traffic.

Read the blog post then decide.

Wrote perspective from different Android devs in the blog post.


caching?


I'm on the cheapest plan on Digital Ocean.

I'm resizing to a bigger plan.


Since it looks like you're on Wordpress, the supercache plugin (http://wordpress.org/plugins/wp-super-cache/) should help even on the cheapest Digital Ocean plan.


Thanks. I'll install that.


You can't scale your blog server but you're an authority on what version of Android to support?

Cool story bro.


You can be a great developer and not know the first thing about server administration. They aren't mutually inclusive skill-sets in the least. If I spend my day working on embedded systems, why would I give a rat's ass about a webserver?


Well, going off the title since the blog is down, Gingerbread is still 28% of Android phones out there. (Source http://developer.android.com/about/dashboards/index.html )

Not to mention there are still plenty on new GB phones sold in developing markets.

He's advocating dropping potentially 30% of his potential consumers because it's technically easier. Some of us can probably afford that, some can't. But I just think broad statements like "Just drop support for the older version, it'll push people to upgrade and make the entire system better" is a stupid argument.

The reality is people paid a lot of money for their sweet new Android 2.3 phones 2 years ago or less. Why should you punish them now and not spend the extra time to make your app work well there?

The biggest problem with GB that I've seen isn't necessarily the lack of certain APIs , but the constraints in terms of resources on phones with GB, which tend to have worse hardware (because they are older devices or lower-end devices). If you think by developing on ICS/JB you magically can stop worrying about performance or resource constraints, you'd be mistaken. Some of the new cheaper Android phones in developing markets are very resource constrained.

Cheap devices aren't going away. Dropping GB support does not mean you can stop writing performance-optimized code or profiling your app.


Interesting tone. I would have flipped it to the opposite: "He's advocating dropping support for the 30% least valuable users, who are in reality your least likely customers. Some large developers might be able to support such a cost, like Facebook, but for most developers its probably not worth the cost.

People with older phones that they paid only a few hundred bucks for two years ago should not have the expectation for it to keep working. It is not punishment, they can continue to use their devices as is perfectly fine."


Well, let me know what you think once you read my blog post.

Site is back up now.


It's true, Gingerbread devices are still very common (I have a rooted Kindle Fire that's still running GB, and there's nothing I can do to change that). However, something to note is that there are new Gingerbread phones being sold in the US right now. A friend of mine just bought one. He's a student without a lot of money, and it was inexpensive and didn't require a long term contract. He doesn't have data on this phone, or even text messages. He has voice only, and does everything else over wifi.

They're still out there, absolutely.

Also, writing code to work well on lower end phones might be a pain, but it means it's going to make your app even smoother on the higher end devices. It requires more time, buy you get more of a performance buffer.


>>(I have a rooted Kindle Fire that's still running GB, and there's nothing I can do to change that)

Well, ...not _nothing_

http://forum.xda-developers.com/showthread.php?p=26920609

...but I understand that only techies dare to go download random images from the interwebz and attempt flashing their device. Personally, my Kindle Fire is running this SimpleCM9 Android 4.0.4 quite well.


Well I'll be. I guess I hadn't taken a look at what's being done to modify the Kindle Fire in a while, I shouldn't have doubted someone would build a newer ROM for it :)

Thanks for that link!


>Most people who manage to afford to buy a smartphone, use the thing until it dies.

I've been making this argument for a while, whenever someone cries about fragmentation, mainly from my personal experience. I'm a "techy"; I want the latest and greatest. But in my family there are 4 Android users, 3 of which don't know what version they're running, or care in the least. They use the phone to make calls, check email, text, browse the internet and maybe download an app or two. Every version of Android has those capabilities.


> and maybe download an app or two

So, as an app developer, ignoring them would not be a terrible thing.


It's amazing to me that we're saying that a three year old OS is too old to have software written for it. Especially given that a part of the laptop market has metamorphosed into the tablet market.

I guess that's not a problem if you buy new tablets/phones every year, which is what we're moving towards.


Most people buy apps when their device is new-ish. Three year old phones are fine. Five year old phones are fine. But you are not going to sell the users of these devices an app that you started writing today. And you won't lose customers if you stop upgrading them, either.


Maybe it will not be the same when Android 4.0 turns 3-years old.

Android 4.0+ is just much more mature than 2.3 in terms of UI and API.


> Android 4.0+ is just much more mature than 2.3 in terms of UI and API.

Maturity is a very important point. Between 2.3 and 4.0, Android became scale-able across tablets and handsets, with unified APIs enabling a unified code-base.

Compared to that big change, dealing with API differences from Android 4.0 to 4.4 is a relatively small matter, comparable to testing for hardware capabilities (and often tied to hardware capabilities). You can test for the API version on the fly and keep a unified code base.


I feel that supporting Android 2.3 at this time is roughly equivalent to supporting IE6. For the majority of people, just stop targeting 2.3 support as a requirement. Perhaps it'll net you some additional marketshare in emerging markets, but for the most part, ≥API14 is ubiquitous to a point where this is a sensible decision.


<API14 is 30.8% of the user base.

http://developer.android.com/about/dashboards/index.html

IE6 is 4.9%

http://www.ie6countdown.com/

They're completely different.


I'm no Android developer, but with as many API versions I know of for Android it's not hard to imagine that the development experience is very similar. Supporting <API14 may cost more in development and support than the potential customer base gain, especially if the target market is the sort that would have newer devices.


Yea, I think that's a pretty bad comparison. If you look at the IE graph you posted, it's less than 1% in the US.

Another graph that might make things easier to visualize (the blue and above is who we're talking about abandoning): http://en.wikipedia.org/wiki/File:Android-dist-by-dessert.pn...


I will grant that it is a bad comparison. But, not for percentage based reasons. I initially wrote the comment that abandoning <14 now is like abandoning ie6 back in 2010, when google dropped support[1], but percentage wise, that's not fair either.

Since Android API 14 is just celebrating its 14th birthday, I'd guess (nothing to back this up) that you're going to see a sharp dropoff of Android 2.3 marketshare as people replace their old phones. Between developing for the future, and incentivising people to switch away from old technology (people don't want to buy an old phone that can't run the latest goodies), I think this is still the correct path to choose.

Kill it with fire. I don't take much issue with making Android 2.3 a second-class citizen at this point.

[1] http://gs.statcounter.com/#browser_version-ww-monthly-201001...


>I'd guess (nothing to back this up) that you're going to see a sharp dropoff of Android 2.3 marketshare as people replace their old phones... Kill it with fire. I don't take much issue with making Android 2.3 a second-class citizen at this point.

You could very well be right, but I think you have the wrong impression of the users.

We view IE6 users as a completely technology inept minority. They could upgrade to a better browser in seconds (not including the enterprise).

Android users on the other hand? I've been an Android user for 4 years. I got tired of getting gouged by Verizon and just switched to Republic wireless. So I have a brand new phone and I'm on 2.3.

Even leaving the percentages out of it, I don't think it's appropriate.


I'm not going to lie--I think buying any device running 2.3 at this point is a giant waste of money, comparable to buying a laptop with Windows XP on it. There is no reason. Nexus 4s are recently out of stock at $200, and the Nexus 5 will probably compete in that area too.

It's a shame that republic wireless is handing out 2.3 devices--that really should stop.


It seems like there is some backstory behind the phone and the versioning (this is the only phone currently offered until the Moto X next month, which has 4.2) http://en.wikipedia.org/wiki/Motorola_Defy#Manufacturer_crit...

Sorry you think it's a "giant waste of money." I need a phone and I'm now saving something like $40/month over my previous plan.


Perhaps worth looking at the drill down based on country/language...


Most users can easily upgrade their browser if forced to. Upgrading your phone is not as easy.


Not supporting IE6 will cost you lucrative enterprise dollars, Android 2.3, while popular, is not nearly as profitable.


There is a big difference though. People who run IE6 would be usually capable of running some more recent browser, but for various reasons choose not to. People who are stuck with Android 2.x are stuck because their hardware can't support newer versions of Android (well there are various custom ROMs that "work" with various degree of success on older devices, but not really in a usable form).


People running IE6 are doing it because their IT department won't let them upgrade.


People running Android 2.3 are doing it because their carrier won't let them upgrade.


There are certain circumstances where you want to support ie6, though not many outside enterprisey things.

ie6 has lost widespread support. Heck, google stopped supporting it three years ago


I'ma let him finish when his site comes up, but here why I generally recommend targeting Android 4:

1. If you want to make a UI that scales across all device sizes, and you don't want to use hacks like ActionBarSherlock that will become a maintenance headache after the moment of convenience, build your app skeleton around Android 4 APIs.

2. Targeting Android 4 avoids use of the Support Library for back-compatibility, and therefore avoids using FragmentActivity. This isn't as bad as some of the back-compatible action bar hacks, but it is still an unnecessary complication in most cases. N.B. you may still want to use the Support Library for new APIs like PagerAdapter.

3. Tablets are going to increase in importance, and for some apps, tablets are the main target. Center your implementation strategy around tablets as the ideal experience, with multiple fragments on each tablet-size layout that are "unrolled" into sub-activities when running on a handset.

4. If you think the above point implies a unified code-base, yes, it does. Targeting Android 4 and above will simplify your unified code base.

The exception is apps that MUST target every user, and every device in the field. For example, my consultancy had an engagement with a dating site that needed to upgrade their Android app. After weighing the pluses and minuses, the conclusion was that it was better to put in more effort and incur some technical debt to reach every possible user. On the other hand, if you are writing an enterprise app for a green-field deployment, don't even consider supporting old versions.


Site is back up!


Excellent article! I'll link it on G+ and on the Programming Andorid page.

I would add to the list the fact that people buy apps most often when they have just bought a new handset. Supporting old versions is like making a retrofit product. The market is inherently limited and more costly to support.


Just remember that in some countries Android 4.0 is yet to be the norm...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: