Sunday, March 20, 2011

An Apple File Store

How often have I been annoyed because I forgot to sync something on my iOS device before leaving the house. I store a lot of data in the cloud. There are my own personal files, of course, usually work-related Office documents (Word, Powerpoint, Exchange Outlook emails). But I store a lot of other stuff too:

  • Podcasts, music, photos – the normal content you associate with Apple.
  • Content apps, like New York Times or Economist. If I forget to download the latest, I won’t have it once I leave the house.
  • Personal content apps, like Instapaper or Evernote. These carry important data that fundamentally exist in the Cloud, but are useful to me only when regularly synced to my devices.
  • Other private information, like from my banking app, or Paypal, or LinkedIn.

Each of these is useful only if it’s up-to-date. If I have a network connection each time I access it, then it’s up-to-date. If not, I’m out of luck.

One straightforward way to give me this is to have something that downloads the data from each app in the background whenever I have network connectivity. I’d need to solve a few multi-task issues to make sure this doesn’t slow down the rest of my experience, but generally it would work.

But there’s a more clever way. What if there were a single, central store someplace, run by Apple, that apps can plug into. The data from each individual app would be stored there, in Apple’s central cloud. Then it would be Apple synchronizing my device, through whatever mechanism they like, perhaps even taking advantage of whatever newfangled subscription mechanism they can get away with.

How it works:

Apps like the New York Times or Instapaper or Paypal or Kindle save their data to Apple’s store, not to my individual device. Developers can continue to use whatever file IO they currently use; maybe Apple updates it to allow for more fine-grained control so it behaves more like IP packets rather than disk read/writes, but whatever: the point is that your app doesn’t need to care exactly where the data is kept.

My device has a file system just like today, except the data itself is in a cache, synchronized to the cloud, magically in the background, whenever the OS thinks it’s okay.

When I start an app on my device, it gets whatever data it needs from the on-device cache. An app that is currently running gets first dibs on the synchronization, so the experience works just like today.

Apple can also make a number of optimizations to make this system work more smoothly. First, there’s no reason to dump an item from the cache unless it needs the space. Play a YouTube video once and you have it for as long as the cache isn’t full. Same goes for Safari itself: don’t go online unless you know something needs to be updated.

Second, it can tell when the same data is being downloaded multiple times. So for example, if my RSS reader has an article that’s also being downloaded by my dedicated NYTimes app, it should only download it once. Similarly, if I have multiple Twitter clients on my device, it’ll only grab the tweetstream once.

Note that Apple can encourage third parties to do their own optimizations. If content publishers put an “official” copy in the Apple cloud, any app that wants to subscribe to that content can explicitly subscribe to the one from Apple. For example, an app that wants a map, or some Point Of Interest (POI) information in order to compute something can simply link to an Apple-hosted geo database and let Apple take care of storing and sending the original data to the device. The app does its processing in the Cloud: no need to bring it down to the device a second time.

Finally, the data of course can go both ways. Your photos or text messages or any other content you create on the device can automatically go to the Cloud, for backup or for different processing when you want it. You can ask FlickR or Facebook to get the photos from Apple’s cloud whenever it has a chance. You don’t need to explicitly do a thing.

Of course there are a bunch of privacy issues you’d need to square away before this can be implemented, but responsible data storage companies do that stuff all the time.

There are so many obvious benefits for Apple to build a system like this, I think we can assume it’s a matter of time before it shows up on a future iOS update.

I can’t wait!

Apples for sale