Sunday September 16, 2012

ReadMore, iCloud, Syncing, And What's Taking So Long?

First off, a ReadMore bugfix update is coming soon. It fixes a couple of Readmill sharing bugs, and I rewrote the sharing engine to better support Readmill and future services. I’m also and getting ready to support launching and controlling the app with URL schemes. It’s not quite yet ready for this next bugfix release, but I’m building the pieces under the hood. If you have an idea for the kind of control you’d like of the app, let me know. I want to make it easy to integrate with Launch Center, or your own favorite URL triggering application.

Now we come to the confession. It’s been a long time since I’ve last updated ReadMore. Some of it is the result of a busy summer. For those just now getting to know the app (welcome!) this is one of many side projects I juggle for priority.

To make matters worse, I made a decision earlier this year to chase iCloud and try to get it to work. Syncing the data between devices is one of the top requested features and is the first step I need to take before making the app universal so it runs in full glory on the iPad. In theory, iCloud syncing sounds awesome, and for many applications it does just work as it says on the tin.

But it’s been nothing but pain for ReadMore and other applications that use Apple’s official Core Data storage mechanism. You’d think that going with Apple’s official frameworks would streamline the process of using their premiere cloud based syncing technology. That’s exactly what I thought when they first announced it last June. However, if I was to release a version that tried to use iCloud as it is today, it’s possible that you’d lose your data. Not good.

I won’t go too deep into the struggles I’m having. For the technically inclined, it has to do with record level syncing. Document level syncing, which is fully atomic, works just as it’s supposed to and an application that breaks up their data into chunks that are just stored as files will work just fine. ReadMore is a database application with everything in a single file, just as Apple prescribes Core Data to use. To sync it, you need to find out the changes between records.

Needless to say, there has been much digital ink spilt by prominent application developers describing the pain. I’ve even been looking into other syncing solutions, but they aren’t as immediately straightforward as iCloud. More under the hood tweaks are needed to get them to work and I’m not sure I want to waste more time chasing another method yet.

That’s the update so far. I’m tabling the syncing issue for now. I have some import/export ideas planned that may satisfy some of you who want to get data in and out. That may help me figure out the best way forward for syncing, too. Thanks for your patience!