Serenity Caldwell has written a nice explainer of On-Demand Resources and what they mean for the new Apple TV over at iMore. Reading the comments there made me realise that the tone of the discussion around On-Demand Resources is framed around it being a compromise. Apple didn’t want to ship a large expensive disks in the new Apple TV, and On-Demand Resources are a hack to get around that. More work for developers, just so Apple can ship another paltry 16GB of storage in its devices.
Actually, I think it’s a lot more than that.
On-Demand Resources move software delivery towards a streaming model, just as Netflix moved video delivery from a download to a streaming model. Netflix is very convenient for a user on a connected device; playback is near instantaneous, there is no need to worry about device storage constraints, and ultimately you still download a similar amount of data to a traditional download. It improves the user experience on all fronts. The one case where streaming is a bad experience is when connectivity is lost (you can’t, after all, stream Netflix on a plane). For constantly connected devices like TVs though, it's just better.
Would it have been easier for Netflix to instead offer a (DRM’d) download service? You bet. Streaming long videos is fraught with peril. You have to handle variation in connection speeds, download speeds on Netflix’s backend have to constantly be sufficiently high to ensure smooth playback, and otherwise trivial things like skipping through video is challenging to implement well (something John Siracusa had a good rant about on a recent ATP). Netflix did the hard engineering work of taking video streaming mainstream because it knew it would be a better experience for users, and that ultimately users would reward Netflix for doing it.
For Apple TV apps, where connectivity can be safely assumed, On-Demand Resources provides similar improvements to the user experience. In the best case users get much faster install times, no change in the total amount downloaded, and don’t have to worry about storage restrictions.
The maximum initial size of an app is fixed at 200MB. Even on my parents broadband connection in rural Yorkshire, that means the maximum wait time from getting an app to having the app open in 2015 is around a minute, and for many it will be far faster than that. To put it in some context, that size is getting within an order of magnitude of many web pages these days. I’m sure Apple will be working hard to get that even lower in the future, but even if 200MB turns out to be the sensible lower limit needed to ‘bootstrap’ an app, continued rise in broadband speeds will eventually make that payload feel pretty instantaneous for many users.
I qualified my earlier statement with ‘in the best case’, and by that I mean that developers figure out how to mask the acquisition of On-Demand Resources for the vast majority of use cases, so 99% of the time users never feel any difference in their experience. I’m sure that in the beginning some games will just throw up loading screens in between levels, but other devs will get creative and sweep all that under the rug. Loading screens will lead to negative reviews, so developers will be highly motivated to figure this stuff out to give users a seamless experience. I’m not trivializing what is a technically challenging problem, I’m just saying the incentives are right for devs to get this stuff licked in the long run.
By enforcing On-Demand Resources from the start, Apple yet again places a constraint on developers that will vastly improve the user experience in the long run. We’ve seen this before with app sandboxing, limited multitasking, and in-app purchase restrictions. In each case people throw their hands in the air and chastise Apple for mollycoddling it’s users and making life hard for it’s developers. But you know what? My mum has an iPad and she loves it. She loves that apps are installable from one place and cleanly uninstalled with a tap. She loves that the battery lasts forever, and she loves that she doesn’t have to entrust her credit card details to every individual app vendor.
Constraints in software drive innovation.
On-Demand Resources are new software constraints that have the potential to usher in the age of streaming apps. Personally, I am looking forward to seeing what that world looks like.