A Sharing API for iCloud

Apple's iCloud service has generated its share of criticism. Some (rightly) centers on lingering bugs, particularly involving Core Data. Other critics focus on missing features, notably the inability to share documents between users and apps. Many developers frustrated by iCloud's limitations have turned to third party services like Dropbox, or developed their own app-specific back ends. But these other services do more than allow users to communicate between users or apps on one device. They allow developers to make use of the power of the web to grow and promote their app. What iCloud needs most is the ability to share content on the web.

Over the past few months, a number of high-profile iOS apps have introduced web sharing. Loren Brichter's hit game Letterpress can share "replays" of games to the web. Marco Arment's The Magazine just launched a web version. Even Instagram, which made its way to a billion-dollar buyout by Facebook on the strength of its iOS app, has launched a web-based photo sharing. Clearly, even strongly iOS-focused developers feel the need to enable at least minimal web sharing. Notably, all of these apps remain iOS-centric. The developers aren't abandoning iOS or moving their focus to Android. Rather, web sharing is a great way to introduce apps to a wider audience. Posting a Letterpress replay on Twitter or Facebook is a more compelling advertisement for the game than simply saying "Hey, download this app!"

iCloud's lack of an external API inhibits this kind of sharing. Reliability issues aside, I think this is a key reason that Dropbox remains appealing to a lot of iOS developers. To fill the void, Apple should devise a non-iOS API for iCloud to allow developers to extend their services onto the web and draw users into the app.

At the outset, the API could even be read-only, or mostly read-only. Photo Streams are a great example of this concept in action. An iOS user can create a shared photo stream to send to other friends on iOS devices, or share a public URL that's viewable on the web. Nobody expects to be able to create full new photo streams on the web, but its great to allow Grandma to view and comment on pictures, even if she doesn't own an iPad. (Maybe she'll like the web experience so much that she'll consider buying an one, but that's a topic for another time.)

It would be exceedingly difficult for a third party iOS developer to create an experience like Photo Stream web sharing using iCloud. There's simply no way to access iCloud data from the web. Most likely, a developer interested in such a feature would bypass iCloud and develop their own API or use a service like Dropbox. There's nothing wrong with those as options, if Apple is serious about driving iCloud adoption, they need to address web sharing as a key requirement. Doing so would also make developers' and users' lives easier. Using Dropbox requires that users have or sign up for accounts. Building a new API requires developing and maintaining a whole server-side infrastructure. Both add new dependencies to an app, and create additional layers between users and a great product. Apple can and should make things simpler.

An external API could do for iCloud what iTunes for Windows did for the iPod and iTunes Store. By allowing iOS developers a simple way to share content from their iCloud-enabled apps on the web, it would help those apps (and iOS by extension) gain exposure to a much wider audience. Because iCloud is still tied back to iOS or Mac device sales, a sharing API simply helps extend the reach of Apple's platforms.

What is there to lose for Apple? Developers are already creating web-sharing features; they're just doing it by bypassing iCloud in favor of other services. The iCloud API would only be accessible to members of the iOS or Mac developer programs, whose yearly membership fee should offset costs involved in running the service. Killer apps using iCloud can only help sales of iOS devices. If people use iCloud more, Apple even make a few extra bucks selling extra cloud storage capacity.

Apple's first priority with iCloud needs to be fixing implementation issues with the current product. After that, a public-facing, sharing-oriented API should be high on the feature list.