As cool and useful as Apple’s iCloud has been, there’s room for improvement.
Over on The Mac Observer, an extensive John Martellaro interview with The Soulmen’s Max Seelemann delves into the pleasures and pains of Seelemann and co.’s efforts to write Ulysses III, a document-based shoebox app centered on Apple’s iCloud technology.
And while the product has shipped, Seelemann describes a process that turned out to be harder than it should have been. “It was clear from early on we had to write our own iCloud layer using the low-level NSFileCoordinator API,” he said. “But by doing so, we had to take care of everything the system would normally do for us: ensuring lossless saving, interacting with iCloud, adopting Versions, showing all available documents to the user, and so on. Additionally, our design required that we stored metadata for manual ordering, and had a cloud-safe way for moving, copying and deleting lots of files at once.”
Seelemann then went on to describe how iCloud and its low-level associated APIs were essentially designed to be used only how Apple intended them to be used:
“The most problematic part for us was understanding Apple’s NSFileCoordinator APIs, and the many issues we had with it. The thing is, it looks simple, the methods are certainly simple and the documentation is written in a simple way, but its use is everything but simple,” he said.
“In retrospective, we get the impression that the whole system seems to have been tested for Apple’s standard use only. That is, a user-managed single layer of folders, with occasional opening, saving and renaming of a few monolithic files. Pages, Keynote, traditional document-based apps. However, while the underlying APIs are designed and documented for broader use and more advanced situations, they soon start to fail if being used like that.”
As sophisticated as iCloud has become, Seelemann also described how certain iCloud features had to be essentially jury-rigged or worked around. In the case of notifications (a feature Apple has prided itself on—and marketed extensively—with its Mac OS X 10.7 and 10.8 operating system builds), Seelemann’s group had to build their own notification protocol for added and deleted files.
Seelemann also noted that in cases where a process had to dive into extensive layers of hierarchies, subsystems such as file coordination would begin to fail. And while he said that some of it came from the development team’s end (a factor he admits aided in the debugging process), he cites that there is presently no documentation as to how iCloud’s low-level APIs work underneath.
“Everything is kept with simple scenarios and accesses to single files,” he said. “This makes sense to some extent, because that’s what Apple’s default implementations are doing.”
In the end, the group was able to wrestle Ulysses III into being, the current release being stable and receiving good reviews. And, iCloud-based issues with the app can generally be resolved by either rebooting the computer or turning iCloud’s document syncing off and on again.
And as much of a struggle as the development process may have been, there’s always room to learn from shortcomings and failures alike. With Apple’s Worldwide Developers Conference kicking off in less than two weeks, Apple has a chance to mull over its documentation, explain just about every facet of iCloud’s underpinnings, and put the development community on a better footing for future products.
It’s a cloud-based world now, and this is the software that has to be written for it. Apple, Google and Microsoft have helped define it as such, and with that in mind, they and anyone else attempting such an endeavor can work to give the developers every tool they need to do their jobs that much better.