This MacStories article covers the progress that developers have made adopting iCloud over the last 6 months. Over the next 6 months, we should have an even better appreciation for what iCloud is and isn't good for.
For iOS backups and iTunes Match, iCloud is fantastic. For private, app-specific data that doesn't make any sense away from a single developer's native Mac and iOS apps, it's also excellent. There's no question that using Macs, iPhones, and iPads today is a significantly better experience thanks to iCloud.
But there are two fundamental limitations in iCloud that make it inappropriate for a bunch of syncing uses:
I don't expect Apple to change this. Again, for what iCloud was made for, these limitations are fine. It simply means that iCloud cannot replace web APIs that do solve these two problems.
Here's what I wrote not long after announcing the Tweet Marker API:
"The primary goal with Tweet Marker is to enable different Twitter apps to work together. iCloud is designed for storage and syncing only between apps from the same developer, so it's not appropriate as a replacement architecture for Tweet Marker."
Think back to the so-called Web 2.0, which gave us web services to access previously closed-off data. This eventually led to truly dominant syncing APIs like Dropbox, Simplenote, and Instapaper. At the same time, we all have more devices than ever before. Syncing exploded on iOS in text editors and note taking apps. Without a proper shared file system between apps, or even an event or scripting system, these iOS apps looked to web APIs as the only way to communicate.
That has turned out wonderfully. With web APIs as the only solution, we see more compatibility between apps and more web services popping up all the time. If you create a new web app, it's dead without an API. Every success of the modern web, from Flickr to Twitter, has an API that is available from any platform.
So then what about iCloud? If Web 2.0 made data more accessible, iCloud takes that same data and... keeps it closed. It's a step forward on user convenience and a step back on interoperability.
If you're a developer considering iCloud support, just make sure your data fits there. Ask yourself if your data is all about your app, or if it's bigger than your app. Developers who are willing to take a risk on building an open API instead of iCloud could see new opportunities: web-based views of their data, compatibility with other apps, and syncing on the Mac outside of the App Store.
A couple years ago, Shawn Blanc said about cloud syncing:
"And my next wish? A cloud-based service like Instapaper, but for to-do items. I want it to be available in apps like Tweetie, Reeder, and more, so when I click on 'Do Later' it sends the link or item of note into a running to-do list (that syncs with Things, of course)."
Imagine if Things or OmniFocus or another tasks app opened up a slice of their private syncing API to make the Instapaper of to-do inboxes. Now take other APIs for all of the useful apps we use. Not just to-do apps as Shawn mentions, but RSS, photos, blog drafts, sketches, and more.
What I wrote above about Tweet Marker is still very much true. Since then, Tweet Marker has become the standard for last-read syncing between Twitter apps, with support for 15 apps and many more in development. I want to see more syncing platforms like this. Let's think big and make apps work together.