Hacker News new | past | comments | ask | show | jobs | submit login
iOS App Store now allows legacy downloads to support older OSes (9to5mac.com)
86 points by cleverjake on Sept 17, 2013 | hide | past | web | favorite | 80 comments

It's a wonderful half-measure, but also serves to highlight a problem with cloud-based installs that I'm not optimistic will ever go away.

When software was distributed physically, the consumer always had the freedom to use any version of an application they liked. Want to run a lightweight version of Word because you don't need all the latest features, or maybe you just hate the new UI? No problem. Did you like some video game better before they "improved" it? Just get the old disk out and play it.

Some people will argue that software developers should be able to require that their customers always have the latest versions of their product. I personally believe that decision should be in the hands of the user.

I'd love to see Apple allow side-loading for consumers, at the very least. The best solution, in my opinion, would be to also allow users to access some kind of "advanced" menu that would let them choose whichever older version of an app they choose.

As long as you keep a backup of your old app bundles on your computer (for instance using Time Machine) I don't think it's a problem to load old apps. The exception being if some of those apps require online services that are no longer available.

Keeping and installing old copies of app bundles doesn't seem like a very viable option for non-technical users.

Maybe not, but it is exactly how software has worked since approximately the dawn of time, and it is exactly what the grandparent comment was proposing should be allowed.

Using outdated and unsupported versions of software doesn't seem like a very viable option for non-technical users.

I don't like your comment. You use the same words to directly counter the parent, but these words don't match the case. What do you mean by "viable option" here? Some "options" for non-technical users are in this thread's first comment.

Of course the non technical user is not generally the one complaining.

> Some people will argue that software developers should be able to require that their customers always have the latest versions of their product. I personally believe that decision should be in the hands of the user.

Did somebody say Internet Explorer 6?

Now, being serious, I agree that the customers should be the ones to decide, BUT they must be conscious of the implications (lack of support, security issues, bugs that got fixed in a recent version, etc.).

Well that was in a time when Apps were self-contained software, before they started talking to the Internet and require a wide array of specific webservices to be online and functional. As developer you don't want to keep old services running forever, because you want to evolve the app and eventually change something that breaks older versions.

It should be your choice but most people aren't knowledgeable enough to manage versions themselves. You would certainly give up any rights for support in doing so as well.

> When software was distributed physically, the consumer always had the freedom to use any version of an application they liked. Want to run a lightweight version of Word because you don't need all the latest features, or maybe you just hate the new UI? No problem. Did you like some video game better before they "improved" it? Just get the old disk out and play it.

In theory, the cloud could do this, too - if done right.

This is actually an advantage of cloud distribution. What if you want to run an older version of Word but haven't bought it yet? It can be a pain to find an old copy to buy. Whereas Apple has all the old versions on their servers and can deliver the exact one that will run on your system.

Whereas Apple has all the old versions on their servers and can deliver the exact one that will run on your system.

"The one that will run on your system" is not necessarily "the one you want", though. It's still not in your hands.

Provided Apple (or whatever other provider) actually distributes the old versions. Somehow, that never seems to be the case.

What do you mean? The whole purpose of this new feature is that Apple is giving users older versions when they need them...

Which is novel enough to be a news article.

That's why we're discussing the news.

What if your backend APIs have changed and you never expected to support that older version? I can see a lot of the older apps not working at all in that case.

How is this scenerio different from one where the user installed your app a year ago, and hasn't upgraded to the newest version?

You'd need to handle it in either case.

It's different because prior to this change, you could make an educated decision about whether to support an older version of your API based on usage of your app. When the legacy version reached some threshold percentage of your user base you could be fairly confident that you were inconveniencing a small and dwindling fraction of users and drop support.

With this change you can no longer be confident that app usage for legacy versions will always decrease. If your app suddenly becomes very popular (as most app developers are aiming for), you might have a substantial contingent of users who are on an old OS downloading an outdated version that you no longer support.

This was my immediate fear. We're geared up to take offline versions 1.0-1.3 of our API, which are used by less than 2% of users (and we gave them a nice banner urging them to update with a future cut-off date). This announcement has me worried, mostly from the customer support standpoint.

No offense to anyone but I have a serious question: why are we hearing about this from a Mac blog rather than from Apple directly? This is quite an important change and to learn of it by scanning HN et al seems a tad ridiculous.

Apple will just add new features without press releases all the time.

The feature is announced via a popup when affected users try to install apps - I.e. They announce it to users for whom it's relevant.

That's much better than them mindlessly issuing press releases to the world every time they change a feature that affects a minority of users.

The next step is allow us to do maintenance upgrades to legacy versions. In many situations it is easier to maintain a legacy app, with a separate iOS7 code base. Unfortunately there is no way to do this without creating duplicate apps in the store. The alternative is a single code base that is very difficult to reason about the behavior due to tons of feature/version checking.

For that the only solution is what already happens in android. You see lots of apps that have 20 versions for each device/OS version.

Just to highlight the problem... i can't download a game on an iphone from [Adult Swim] because it requires a front facing camera!

I've been playing the same game on the new ipad with the front facing camera for 2 months. Never found anything that use the camera. go figure.

I don't know if things have changed, but we used to add random "requirements" like that to our app when we needed to remove support for hardware that was too old and slow. Our app ran terribly on the original iPhone (largely due to the nature of the app) so we added some requirement that only the iPhone 3G had.

oh, didn't see that as a 'feature' for the developers... my bad. and i really wasn't expecting something like that.

Oh, that's an NSA-only feature, no need to worry about that.

I think this will help out consumers overall, but I don't want customers posting negative reviews of my app because the old version they downloaded crashes due to a Facebook or Twitter API change that I patched the app for months ago. Considering that folks post reviews from to-be-released versions of the OS, I assume Apple will let these folks post reviews as well?

Apple could have told developers about this during WWDC, but didn't.

My guess is Apple decided to do this last minute, after they saw the number of iOS7-only apps that developers were submitting.

It probably would've been useful to know before iOS7 app submissions were open, but, if that's their reasoning, it's a chicken-egg problem.

looks like they're fearing slow/low iOS7 adoption, considering how boldly they emphasize how few legacy iOS users are out there.

No. It's looks like they are telling developers the state of affairs, so that they don't fear slow adoption.

Agree. Knowing that users of old devices will continue to be able to use your app makes me a lot more excited about releasing for iOS7 only.

A good thing for consumers, but I wonder how developers feel about this. If they fix some bug that may have been causing big problems on a server-side component, won't they now have to worry about these older versions being used?

That's something you've always had to worry about though. You can't force a user to upgrade, so your best bet is to handle those issues server-side.

> You can't force a user to upgrade

Sure you can. Netflix will sometimes have to do this. The old software just isn't allowed to talk to the server anymore.

Which would be handling thins server side.

You can do this app-side by checking the version versus what's in the app store via itunes webservice. For example: http://stackoverflow.com/questions/2221436/can-i-force-an-ip...

I don't recommend that unless you have a mission critical bug, and even then I'd discourage it. A user is in charge of his/her device. I version APIs on the backend and then simply push out updates like any other software. If they choose not to use it then not much I can do. Eventually I'll turn the older API versions off and they'll either have to upgrade or stop using the app.

If there was a bug in the old version that is not compatible with the latest, there was no way to fix it anyway. This change doesn't solve that issue, but it solves 99% of the cases I deal with, which is old users complaining they can't get the app they bought after a release drops an old iOS version.

I wonder if this applies to the Mac App Store, but I doubt it.

I want to purchase Logic for an older Macbook, but the OS doesn't support Logic X. Apple won't sell a compatible version and there is no shrink-wrapped version.

Sure there is; while Apple no longer produces it or sells it directly, it's still in the channel, e.g., from Amazon[1].

[1] http://www.amazon.com/Apple-Logic-Studio-Old-Version/dp/B002...

Is this an acknowledgement by Apple that there will be tens of millions of iOS users who cannot upgrade their devices to iOS7?

I'm personally in this camp, with iPhone 3GS and iPad 1. I'm hoping to be able to get an iPad Mini Retina soon, but the older devices remain in use. (The original iPhone doesn't get much use anymore, though...)

This is likely an attempt to head off the jailbreaking and app copying that many people resort to after discovering their otherwise fully functioning device is basically a paperweight in that it can't install any apps.

Unfortunately from real world tests it doesn't appear to be available for many truly older iOS versions.

What truly older iOS versions?

I see it available on 4.2.1 but not 3.1.3.

Happy to see this being codified - Spotify currently has an old version for <= iOS4 as a separate app, which is fantastic for my old iPod I have lying around. I was concerned that at some point Apple would forbid them from doing this, glad they went in the opposite direction.

Can you tell us if you were able to successfully download the old version? Just curious if it definitely works for your use case.

Do they have the experience with this "fragmentation" to pull this off effectively? What will it do from a developer's perspective?

This is great for customers.

I wonder if and how having that popup appear will affect people upgrading to the latest and greatest.

Presumably, you'd only see the pop-up if you're running a non-current version of iOS (and need the previous version of the app)?

Correct, what I'm wondering about is how this popup will drive people to realize that "hey, I can upgrade to a new version of iOS".

iOS already has a pretty fast adoption rate for new versions, I wonder if this will make it even better.

Does this apply to new purchases as well, or just redownloading something you already bought before?

I expect you'll buy the app [the new version] and this will allow you to download the old version from an older device logged in to your account.

This is basically Apple themselves showing they don't trust everybody will like iOS7.

I don't think so - I think it's more that Apple are strongly pushing developers to support iOS 7 only for newer apps. Apple are now suggesting developers should be using auto layout by default (which in iOS 7 saves considerable time), but until now the toolset for working with auto layout was woefully inadequate (...some might say it still is).

It's a lot easier to sell supporting iOS 7 only if all the users who haven't - or can't - upgrade can since have access to older versions of your apps.

It's less that and more that there is now a significant-enough installed base that can't upgrade to the latest OS. There's now a lot of older iPhones and iPods Touch out there that will never get 7.

Knowing that, developers will become increasingly reluctant to leave those customers behind -- and so will keep building for 6 and earlier, and won't use the new 7-only stuff.

This way, devs can immediately go to 7, knowing that customers stuck on older versions will not suddenly be unable to buy or (re)install their apps.

It's probably significant that the 3GS is not getting iOS 7. The original iPhone was fairly underpowered, and the iPhone 3G changed essentially nothing besides the case and the addition of 3G cellular data. The 3GS was the first real upgrade, the first iPhone with a decent camera, a decent amount of RAM, and a decent CPU. It ended up as the longest-lived iPhone model yet, starting out as the high-end model in 2009, then dropping down to a secondary model in 2010, and it was only discontinued with the release of the iPhone 5 in 2012. It was on the market for almost three years, and while sales no doubt dropped off after a while, it must have sold a ton of units.

Prior to this, the only iOS devices that stopped receiving OS upgrades were the original iPhone and the 3G, the roughly corresponding iPod touch models, and the original iPad. The addition of the 3GS to the "no more OS upgrades" category probably vastly increases the set of people with devices that cannot be upgraded.

In addition to the numbers, there's also timing. The last new 3GS was sold less than a year ago. To already lose OS updates is a blow to those users.

So if I had to guess, a large part of this move is probably the 3GS, due to it suddenly contributing a large number of devices to the pool of those that the latest OS doesn't support, and due to it still being sold until relatively recently.

I'd say it's more likely to be iPod touches - only the newer touches are getting ios 7 and there's no contracts (and hence no "cheap" upgrades). Plus It's also quite likely to belong to a child.

Anecdotally, I rarely see a 3GS any more.

Could be. I haven't paid as much attention to the Touch. Either way, I think the overall general point is that iOS is hitting an inflection point where the number of devices not supported by the current OS is set to increase substantially.

I'm one myself, since my 3GS still works.

If iOS7 were any good in my opinion, I would feel compelled to upgrade to a 4 or 5 though, as already happened before for users of 3 and prior.

This App Store change makes people like me even less compelled to upgrade, so this move is kinda unexpected coming from Apple, since it keeps the inertia.

Have you tried iOS7 on an iPhone 5?

I think it's also to alleviate the burden for developers to maintain two separate apps. iOS7 design conventions drastically differ from iOS6, so keeping both up to date within the same app will be a pain due to legacy code. If the backend doesn't change, this makes it easier to move forth with a new design.

This is Apple themselves recognizing that hardware that is too old to run iOS7 is still useful.

Nah, this is because of the new 64 processors.

There's still no mechanism that allows for 64 bit iOS7/32 bit iOS6 fat binaries, it's either 64 bits iOS7/32 bits iOS7, or iOS 6 only. Probably the first time that apps compiled for the latest and greatest can't run on old phones at all.

That's badly wrong. It's true that you currently have to choose between 64-bit and supporting older OSes. But apps built for older OSes still run on the iPhone 5S. There's no "iOS 6 only".

Pretty sure it has zero to do with 64-bit processors. iOS7 is still going to be running on old 32-bit chips.

Yes, which is precisely why you need 64-bit/32-bit fat binaries. Problem is that the current SDK can only generate 64-bit/32-bit fat binaries for iOS7 alone.

Yes, which is precisely why you need 64-bit/32-bit fat binaries.

I don't recall OSX refusing to run 32-bit binaries when it allowed 64bit computing.

You don't need the fat binary to make 32-bit work in 64-bit machines. You need it to make it so that you can take advantage of the 64-bit machine with a build that still works in a 32-bit machine.

Although you can do both, either 32-bit only or a combined, the preferred way to do it is as you say, a combined binary. I imagine that the differences will be fairly small because of the shared types and the resource sizes not changing. I'll have to experiment and see the results.

Just a note on how to build for 32 bit and still target IOS: You have to set the architecture for armv7, armv7s and then set your deployment target to 7. I have yet to deploy an app doing this so your mileage may vary.

You don't "need" fat binaries. You can just build for 32-bit and be happy. 64-bit is purely optional.

All my apps have compiled without an issue into 64bit on XCode 5 GM. Now that's not the actual hardware, however I don't anticipate any 64Bit transition related issues.

You shouldn't see any issues until you hit the size limits of the data types and/or have related alignment issues. You'll notice these types here: https://developer.apple.com/library/mac/documentation/Darwin...

why is it "64 bit iOS7/32 bit iOS6" ?

iOS 7 is 64-bit only on the iPhone 5S.

iPhone 5S will run 64 bit iOS 7 and can run both 32 bit and 64 bit applications.

iPhone 5C, iPhone 5, iPhone 4S, iPhone 4, iPad 4, iPad 3 (or whatever they are called), iPad 2 and the iPad mini all will run 32 bit iOS 7 (kernel, libraries, drivers and the Applications themselves).

When you build your iOS app, you specify the minimum system version. If you use iOS 6 (or 5) as a minimum, it will only build the 32-bit binary. If you specify iOS 7 as the minimum, it will build a fat 32-bit/64-bit binary.

Good move Apple!

year-2024 Banana statement to its customers: "As a sign of the commitment of the Banana Inc. to its customers freedom in a uOS App Store near you, the uOS no longer controls where are you going, and gives you complete permission to go to the grocery store or to play with your kids.. talk badly or curse Banana Inc. is expressely forbiden of course, as usual, and you will receive an instant eletro-shock (from the spy app you can never remove). Therefore you are completely free. only in the next versions of the uOS in a store near you"

its in times like these that i miss shows like Monty Python..

Those guys could show with a good dose of intelligent humor, how stupid people behaviour are sometimes..

Im very happy my comment its the last one on this particular post.. :)

this news to be on the front page of HN like if it was a good thing, its just ludicrous..

if you have a pocket relation with apple thats understandable and forgivable.. but the ones that accept this kind of policies by only one company, because they are attached to the "brand" in somehow? its beyond sanity

There are bad implications to us all, if this model make its way into others companies and take over our culture, you could even say bye-bye to your beloved startup culture or the ability to launch the technologies that eventually will make a good thing to us all, and have people using it..

oh, they put money on your pocket? but whats is the real price that everybody else will have to pay for it?

you consume it? then its like that thing you like and make you happy, lets say a chocolate.. but or do employ slave labours, or have bad environment implications.. if you have conscious, you will always fell bad to feel good about it..

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