This article originally appeared in TidBITS on 2013-07-11 at 8:58 a.m.
The permanent URL for this article is: http://tidbits.com/article/13911
Include images: Off

Dropbox’s Datastore API Takes Aim at iCloud

by Josh Centers

At its first DBX developer conference [1] on 9 July 2013, Dropbox announced a new platform, called the Datastore API [2], which offers exciting data-syncing possibilities for future iOS apps.

If you use an iPhone or iPad, chances are that you depend on one or more apps that sync via Dropbox’s file-based Sync API [3]. The Datastore API [4] takes syncing support a step further, enabling developers to build simple databases into their apps and have the data in those databases — contacts, to-do items, and settings, for example — synced with other Dropbox-connected apps.

The Datastore API automatically merges data when changes in a Datastore-enabled app are made on different devices, eliminating worry about conflicts. Plus, Datastore-enabled apps can work offline, saving changes locally, and then sync up once a connection becomes available.

With the addition of the Datastore API to the existing Sync API, Dropbox is offering a noteworthy alternative to Apple’s iCloud. While storing both key-value pairs suitable for simple configuration data and discrete documents has worked well in iCloud, the more complex Core Data syncing has suffered from significant problems [5]. (Core Data [6] is Apple’s preferred way to work with data in both iOS and OS X, and it’s heavily used by Apple developers.)

For those who have struggled with iCloud data syncing issues, Dropbox’s Datastore API might hold out new hope. To gauge reactions, we reached out to two developers who have publicly criticized iCloud in the past: Greg Pierce of Agile Tortoise [7] and Rich Siegel of Bare Bones Software [8].

“I think it’s a bit premature to make any long term judgments about it, but Dropbox has a great reputation in this space and has become ubiquitous enough that requiring a Dropbox account for sync is not terribly intrusive for many users,” said Pierce, whose Drafts note-taking app for iOS has garnered many fans. But he tempered his optimism by pointing out Datastore API’s limitations, like a lack of support for Apple’s Core Data, as well as tight limits on database sizes and queries.

Siegel, whose “digital junk drawer” app Yojimbo relies on Core Data, echoed Pierce’s concerns about the lack of support for Apple’s database framework, and pointed out that the Datastore API is not yet available for OS X — only for iOS, Android, and JavaScript (Web apps).

The lack of desktop support severely limits the Datastore API’s potential. Steve M., a Dropbox employee who posts on the company’s official forums, has indicated [9] that a desktop library will be added, but initially only for the Python scripting language. This is sure to disappoint Mac developers, as almost all Mac apps are developed in the Objective-C language. Mark Munz of Unmarked Software [10] commented on Twitter [11] that requiring Python for access to the Datastore API on the desktop is a bit like a Mac-native Cocoa app requiring AppleScript to access an API — it can be done, but is a hack and hard to maintain.

Rich Siegel also noted, “Anyone who’s been working on iCloud thus far has either made it work, is in a holding pattern waiting for developments, or has gone on to develop and implement an alternative strategy. Although the Datastore API shows promise, in none of those cases do I expect a developer to drop what they’re doing and try to adopt it if they already have a plan in process.”

In short, cautious optimism. Although Dropbox has a good reputation, the fact that Apple has struggled with Core Data syncing via iCloud shows that making something like the Datastore API work reliably isn’t an easy task, and until developers have had a chance to dig into it, they won’t know how well it actually works.

Plus, without support for both Core Data and OS X, the Datastore API won’t be able to replace many uses of iCloud syncing anytime soon. Even if it gained those capabilities, many Apple developers have put a lot of time and money into making iCloud work. And those developers who have rejected iCloud, like The Omni Group [12] and Vemedio [13], have invested heavily in creating their own syncing solutions, and will be unlikely to abandon them for Dropbox. But for developers just starting sync-related projects, or those without the resources to develop independent solutions, Dropbox’s Datastore API may open a new world of possibilities.

Also announced at the DBX conference were a couple of useful interface elements that will start appearing in Dropbox-savvy iOS apps soon: the Chooser [14] and the Saver [15]. The Chooser is a file picker for Dropbox, much like iCloud’s document browser, that developers will be able to drop into any app to make it easy for users to open documents stored in Dropbox. On the other end of the equation, the Saver enables users to save a document to Dropbox with a single click. It’s available for Web apps now, with versions for iOS and Android coming soon.

[1]: https://www.dropbox.com/dbx
[2]: https://blog.dropbox.com/2013/07/dbx/
[3]: https://www.dropbox.com/developers/blog/26/introducing-the-dropbox-sync-api-for-mobile-developers
[4]: https://www.dropbox.com/developers/blog/43/the-datastore-api-a-new-way-to-store-and-sync-app-data
[5]: http://rms2.tumblr.com/post/46505165521/the-gathering-storm-our-travails-with-icloud-sync
[6]: http://en.wikipedia.org/wiki/Core_Data
[7]: http://agiletortoise.com/
[8]: http://www.barebones.com/
[9]: https://forums.dropbox.com/topic.php?id=102823#post-556061
[10]: http://www.unmarked.com/
[11]: https://twitter.com/mmunz/status/355373117742387200
[12]: https://manage.sync.omnigroup.com/
[13]: http://vemedio.com/blog/posts/more-about-our-cloud-sync
[14]: https://www.dropbox.com/developers/blog/42/the-chooser-now-for-ios-and-android
[15]: https://www.dropbox.com/developers/blog/41/meet-the-dropbox-saver