On October 12th, 2011, iCloud launched to millions of iOS users impatiently waiting to start getting their devices to sync with Apple's new platform, which CEO Tim Cook went on to call the company's next big insight for the next decade. Six months and 85 million customers later, iCloud has proven to be a substantial improvement to sync a user's email, contacts, address book, and other data accessed by Apple apps. With third-party developers, however, adoption of iCloud sync and storage features has turned out to be a bit tricker, and possibly less intuitive than Apple's own implementation due to the early nature of the platform.
"It is a non-trivial undertaking, when you are dealing with files, folders, and conflicts", said Smile founder Philip Goward, whose PDF reading and annotation tool, PDFPen, implemented iCloud sync both on the Mac and iOS. "Users really value iCloud storage and find it very useful to share data across devices, as we've seen in comments on the App Store and reviews", Goward explained. "It's a significant advantage to the user that PDFpen offers this seamless editing experience across both Mac and iPad". PDFPen for iPad, which came out in January, was one of the first PDF readers for the iPad to take advantage of iCloud to sync a user's documents back to the Mac. By using a single "My Documents" folder that lives in iCloud, Smile figured out a way to share documents stored in iCloud with the Mac version of the software, which is sold both on the Mac App Store and on Smile's website. Per Apple's limitations and APIs, in fact, developers of apps not available on the Mac App Store cannot use iCloud-related technologies.
Two months ago, we took a look at the state of iCloud-enabled apps, and discovered that, albeit growing, developers' support for the new platform had taken a while to spread across applications for iOS and OS X. On the iPhone and iPad, there are now some examples of apps that take advantage of storage and sync to offer users a seamless experience to keep documents and data always available across devices. Apps like Instacast and Downcast, for instance, allow podcast listeners to keep their list of podcast sources synced through iCloud, even going as far as syncing a user's position within an episode. Byword, a text editor for iOS and OS X, comes with syncing capabilities that leverage both Dropbox and iCloud to keep text documents available on mobile devices and desktop computers; iA Writer, a word processor, also implemented iCloud storage for text documents, although the app doesn't sport a dedicated interface for browsing, deleting, and searching iCloud documents on a Mac (clarification: iA Writer does let you open iCloud documents on a Mac, but it doesn't feature a separate window with file management features like Byword does).
Alongside these few notable examples, the App Store now offers a decent selection of iPhone, iPad, and Mac apps sporting iCloud integration -- Apple even created a sub-group in the Mac App Store's "Better Together" section to showcase desktop apps capable of communicating with their iOS counterparts through iCloud. Every week, new iOS or OS X apps come out with a different take on iCloud support for user data, documents, and storage.
Users appreciate the increased usability and convenience brought by iCloud-enabled apps that don't require manual file transfers and sync sessions. Smile's Goward said PDFPen's users "find it very useful to share data across devices", and Seth McFarland, the developer of Downcast, echoed the sentiment that "feedback from users regarding iCloud support has been overwhelmingly positive". When it works correctly, iCloud support in third-party iOS and Mac apps has enabled developers to build natural, more connected experiences that leverage the inner strengths of the cloud to let users forego the process of copying files, or set an app's preferences every time it runs on a new device. The possibility of keeping data stored in iCloud has especially become a plus for game developers, who have been increasingly adopting iCloud as a platform to sync game saves data between devices. Big Bucket Software's Matt Comi, the developer of popular iOS and Mac game The Incident, said that when users saw what iCloud sync could do for The Incident, they "immediately knew all games should be like this". As Bjango's Marc Edwards succinctly put it "everyone loves seamless sync with no options".
Developers and Documentation
While iCloud may seem "invisible" and "automatic" to the end user, there's a lot going on behind the scenes, and in the case of iOS and OS X app development, the scenes see third-party developers trying to identify the best practices and techniques to work around Apple's provided iCloud tools to build apps that are, to use Apple's parlance, "better together".
It's not always as easy as it sounds, though. Steve Streza, the lead platform developer at Read It Later and also independent developer on his own, told MacStories he tried to "write an iCloud-backed app, but found it way too difficult to use". When Steve Jobs took the stage at WWDC 2011 to introduce iCloud and the company's renewed focus on an online platform that spanned several devices to keep everything always in sync, he also remarked how third-party developers could take advantage of iCloud through a series of APIs that Apple released soon after. But even with the first beta of iOS 5 becoming available in June 2011 and the public version of the operating system seeing the public light of day four months later, developers struggled to get their existing apps updated to fully implement iCloud support. As Streza noted, even when iCloud launched six months ago, "it really felt like a beta that Apple would be iterating on quickly". Last summer, when Apple was beta-testing iOS 5 and OS X Lion with registered developers, a shared belief amongst app makers was that implementing iCloud integration would take a while. Six months after the public rollout in October 2011 and 10 months after the company's announcement (and beta release) at WWDC, the situation still isn't much different for many developers.
"The initial documentation was lacking in many aspects but it has been improved. Apple could provide more code samples for both Mac and iOS to help developers do the right thing and understand where performance and reliability issues may arise", Metaclassy's Rúben Cabaço, developer of text editor Byword for iOS and OS X, told MacStories. Read It Later's Streza shares similar thoughts on the subject of developer documentation (a set of help and technical documents Apple makes available on its Developer Center): "The written docs are broad, talking from a high level about how to use iCloud, but don't dive heavily into the technical details. The best pieces of documentation are the sample project and a WWDC session video. Better documentation as to specific uses and handling problems would be welcome."
The last time we checked on the issue of scarcity of in-depth iCloud documentation from Apple, it appeared the problem lied in the fact that Apple wasn't providing enough developer documentation to outline the best practices (both in terms of programming and user experience design) for specific use cases. In talking about the iCloud implementation in his game The Incident, Big Bucket's Matt Comi provided a series of examples for what very "specific" use cases might be like: for instance, with iCloud enabled, a user may reset the game's progress while it's being played on another device. The game could be played on two devices at once with the same iCloud account, or the level selection screen could be displayed on one device while the player unlocks the next level on another device. It's not just about how iCloud should handle these situations technically when data is shared by multiple devices at once; it's about how developers should optimize their interfaces and workflows to not frustrate users and cause accidental data losses.
"More documentation never hurts", said Tapbots' Paul Haddad; alongside example code and iCloud docs, all the developers MacStories contacted expressed their wish for debugging tools and better conflict resolution becoming available in iCloud. In its latest version for iPhone and iPad, Tapbots' Twitter client Tweetbot comes with iCloud integration to allow users to sync timeline position and DM read status across devices. While implementing the iCloud API has been "relatively simple" in Tweetbot's particular case (Tapbots were able to use work they had already done with Tweet Marker sync) Haddad believes "good debugging tools" to see what happens inside iCloud containers (containers are basically folders in the cloud, shared between a user's apps) could be "even more useful than documentation". Similarly, Streza acknowledges that a debugging tool could help developers test iCloud in their apps to "examine their own containers and monitor how their data is being saved to the cloud".
Because, ultimately, iCloud is just "a folder full of files", as Comi notes, when something goes wrong with an iCloud-enabled app, a developer should be able to look into that "black box" to see what's going on. More often that not, the best advice developers can give to their customers to fix iCloud sync is to simply reboot a device.
The Right Files
There's more than just unfathomable files inside a folder in the cloud, though. Sometimes those files are picked up correctly by an app -- perhaps even too many of them.
With iCloud, Apple implemented a conflict resolution technology that, invisibly and automatically, always picks the "best" version of a file in case a conflict between multiple copies occurs. As with all technologies that don't give users the power to decide, issues may arise when the "truth that's in the cloud" isn't actually true, and the wrong files have been chosen. To date, iCloud hasn't offered a native, visible conflict resolution interface third-party developers can adopt in their apps. This has either forced developers to "always decide" for the user -- which may lead to data loss or corruption -- or work around the limitations of Apple's API with solutions that, however, can't account for all the possible combinations of a document: open on multiple devices, being reset while a copy is open elsewhere, etc..
To prevent apps and users from accidentally losing files due to the automatic nature of iCloud, developers have asked for better, visible conflict resolution, as well as a "versions browser" to manage a document's revisions on iOS. Dropbox, the most popular alternative to iCloud for file storage, allows developers to implement revision access through the API, and, after all, it is Apple itself that brought easily accessible Versions to the Mac with Lion. So why not on iOS as well? As Apple seems to be increasing the presence of iCloud on the desktop with a new file saving UI on Mountain Lion, better iCloud file management could probably come to future versions of iOS later this year.
Odi et Amo
Of all the mobile platforms out there, iOS users have been the most receptive over the years, a trend that is best exemplified by adoption rate stats of new OSes and upgrades developers often share publicly. With the launch of iOS 5, users rightfully kept an eye out for apps that were being updated to take advantage of iCloud integration, albeit the numerous stories of lost files and corrupted databases left many wondering whether started synchronizing content with iCloud right away would be a good idea.
"There's two different APIs for iCloud, a more complex one meant for storing of documents and a simpler one that's more suitable to storing settings", Paul Haddad explained, adding that Tweetbot uses the "simpler" version of the API, "so there's not much that could be changed there". Indeed, Tweetbot for iPhone and iPad has been one of the fastest and most reliable iCloud-enabled applications we tested. It gets more complex when apps start using the other iCloud API, and when multiple documents, large files, and settings are all involved in storage and synchronization at once. The general consensus among developers is that, while users "love" iCloud when it works, iCloud integration has also quickly become the #1 source of support requests over the past months. When iCloud doesn't work, users are frustrated, annoyed, and there's little developers can do without proper debugging tools and detailed error messages.
"People either loved it, or wanted to know why it wasn't working", said Matt Comi, adding that they "got a lot of great feedback" for The Incident. Cabaço says that iCloud support in Byword turned into a "love and pain" relationship when it comes to support requests; users love the "the magic of seamless syncing between devices without any configuration", but complaints about syncing issues (with documents taking too long to sync or not syncing at all) often require disabling/enabling iCloud or restarting devices. Although "generally positive", even Tweetbot's implementation of iCloud has "bugs in the iCloud API, and for some people things just don't work".
iOS and Mac users aren't, obviously, the only ones frustrated by iCloud's instability when the service decides to stop working; developers, too, wish Apple gave them better tools to help their customers figure out why iCloud sometimes won't sync.
When speculating about the future of iCloud, there's just too many things Apple could do to improve the platform and offer new ways to keep content and users' data seamlessly in sync across devices and platforms. We have already offered some suggestions for features and additions Apple should consider in iOS 6. When it comes to the iCloud APIs, though, developers aren't asking for futuristic improvements -- a number of basic additions would come in handy for building iCloud-ready apps and supporting the customers who buy them. Aside from more documentation and code examples, debugging tools, and better conflict resolution, simple error messages and sync status indicators would provide a simple, yet effective way of determining what an iCloud app is doing, and why it's failing to sync. This could be implemented with "notifications when documents are being synced to iCloud", as Cabaço suggested, or "APIs providing status information about synchronization" as pointed out by McFarland. "The only change I'd like to see is a way to know if the app has previously synced with iCloud or not", said Haddad, adding that, however, "this is only an issue for a first time launch of the app".
As for other ideas Apple could consider adding to the iCloud API in the future, Byword's Cabaço thinks supporting delta changes would allow them "to avoid having to process the whole iCloud container each time a document is added, deleted or moved" (Dropbox recently announced the addition of a "delta" call for its SDK); similarly, providing a Dropbox-style folder, "where stuff you added was automatically saved to the cloud and loaded into every app that uses that container", Streza said, "would really lower the barrier to entry for writing iCloud-backed apps".
In my iCloud overview from October 2011, I wrote "iCloud changes the way we interact with our devices", as the service's immediate strength is "its integration with the apps we use every day". For better or worse, the past six months have showed that iCloud -- as a platform for Apple to build the future of iOS and a syncing technology developers can use in their apps -- paves the way for a more intuitive, connected ecosystem of apps that "just work" with a user's content always available, and always up-to-date.
At least in theory. The past six months have also shown that, without proper developer tools and a clear explanation of how things work in backend, things don't "just work" -- in fact, quite the opposite: some developers have given up entirely on building iCloud apps for now, others are wishing for new APIs that would make the platform suitable to their needs, while the ones who did implement iCloud in their apps are torn better the positive feedback of "it just works" users, and the frustration of those struggling to keep their data in sync on a daily basis.
Still, there's no question that what Apple has been doing with iCloud is nurturing a profound change in the way we think of our devices and apps as one big, connected ecosystem. With iCloud, Apple has democratized cloud sync and brought it to the masses of users and developers who were forced to switch between technologies that aren't nearly as integrated as iCloud is on a system level. The third-party apps that are solely based on iCloud still aren't that many -- and admittedly Apple could do a better job at promoting those that have been experimenting with iCloud -- but there's no doubt iCloud is promising in the long-term benefits it aims to achieve.
iCloud is the platform for the next decade, and only Apple can make sure it is being built on a strong foundation. It needs improvements, but the kind of scale and integration that's in iCloud's DNA is an expression of Apple's unique focus on providing a user experience based on simplicity and familiarity. Or, as Marc Edwards said, "I doubt we would have built a similar service for our own apps if Apple didn't provide it themselves".