To Sync or not to Sync

Posted on 22 January, 2011


This post describes the decision-making process about choosing a proper synchronisation system for our todo management tool Today Todo.

The Problem

Today Todo was released in october 2009. The idea for a small tool that captures the today’s todos was born on a sunday afternoon and after only a few hours Trung had the first prototype ready. Time has passed and Today (as we call it) has evolved. After 22 updates, beeing featured by Apple, a ton of feedback and the usual iOS carousel – we came to the conclusion that Today needs to sync its data into the cloud. This is especially important since the iPad version is nearly done and screams for an unified data source. Our requirements are simple. The sync should be flexible, simple and involve the least user intervention possible.
There are quite a few frameworks and systems to choose from. All have their pros and cons.
Since I wanted to see how competing apps did fare with cloud syncing, I evaluated the most important ones. Here is what I have found out so far.

Do it yourself

Among other sync options Appigo’s Todo outsourced their sync affairs to Moki Mobility. They have built a web app that runs on top of Google Engine. The business model involves a 14 day trial account. After that it costs 19$ per year. The web app is not exceptionally pretty but functional and sports a clean look.
The internal data structure of the iOS app is kept simple. Appigo uses a handcrafted SQLite db.
The sync process blocks the entire app although it is rather quick. However this was done with a limited data set and with a very fast internet connection. It could be a problem later on.
Overall syncing went smoothly and was very easy to set up.


From the business perspective the advantage is clear. Only those users who are really interested into cloud syncing will pay for its usage. Although the fee is low, given Appigo’s large user base I expect it to yield a respectable profit.
Another bonus is the simple setup process for the user.


The only notable disadwantage with this approach is the constant availability of the service. Since the user has to pay for it, the zero tolerance of many users will ceartainly make life hard for Appigo should the web app become unavailable at some point.

Another app that uses a similar approach is Wunderlist. This new contender made by 6wunderkinder uses its own service for syncing. Instead of a web app they have built a cross platform client based on the Titanium Framework. Upsides and downsides are the same here except that using the Titanium framework 6wunderkinder cut off their way into the Mac App Store.

MobileMe Calender

As with Appigo, Guided Ways’s 2do offers several syncing options. For cloud syncing they decided to use the MobileMe calender. This option is available via in-app purchase. Since the feature set of the calender does not suffice, Guided Ways had to make some compromises. Attachments are not synced and projects and checklists appear as flat lists.
Syncing is done either manually or when the app starts and quits. Conflicts are not handled very well and may lead to confusion. Again the data structure is kept clean and simple. 2do uses a handcrafted SQLite db.


The big advantage with this approach is offloading the availability issue to Apple/MobileMe. And since MobileMe is tightly integrated with Mac OS X the synced data can be accessed easily.


Guided Ways had to force their data into the MobileMe Calendar structure. The compromises they made may not seem that bad but I suspect that the implementation was far from easy.
Another downside arises from the fact that MobileMe is a payed service. I guess this alone will drive many users away.

TouchTodo from Chen’s Photography & Software uses the Google Calender for synching. The same issues apply here.

Google Docs

Awesome Note from BRID went for two options. They support Evernote’s service and Google Docs. Syncing is done manually and turned out to provide the weakest experience from all test candidates. At one point I managed to unintentionally loose all my notes because it was not clear that restoring data from Google is only functional if it was previously backedup. However, Awesome Note has its own backup system that works via wifi. I still don’t know how to backup the data to Google (I thought that this was one of the benefits of syncing…)


As with the other tools, offloading the aviability issue to another provider is a big bonus.


Although Google has a large user base, putting the data into Google Docs does not really fit the purpose of a todo manager. This problem originates from the fact that Awesome Note tries to be both – a todo manager and a notes utility. Google Docs works great with notes but not so great with todos.
Another problem is that Google and Evernote limits the size of uploads. However, this does not weigh-in that much since these are extreme situations that are rarely met.

File based sync

Omnifocus from the respectable Omni Group went for a file based sync approach. They support syncing to MobileMe or any custom WebDAV folder. They do provide a Mac client that can be set to sync to these services too. Syncing happens automatically and proved to be stable and smooth. Omnifocus uses compressed xml chunks to transfer data to MobileMe. This time MobileMe is used as a mere online disk for storage.


The file based sync provides the most flexible approach for advanced users. They can use their own WebDAV folders and have the certainty that they own their data.
Another plus is the small amount of data that needs to be moved around. This results in a fast sync process.


Syncing is considered a hard problem, especially when it is done on such a basic level. The whole sync logic needs to reside inside the app and was ceartainly not easy to implement.
As with 2do MobileMe is a paid service and may not appeal to everyone.

CoreData on Dropbox

TL Quantum Inc. implemented with Todo Queue syncing via Dropbox. Dropbox is a popular online storage service. For unknown reasons syncing in Today Queue involves moving the CoreData db around on every sync! This is crazy by any means. It is not only dangerous because it may easily lead to corruption but quite wasteful since TL Quantum Inc. has chosen to keep a copy of the db for every sync.


I have chosen this app because they use Dropbox and this is the service we are most inclined towards right now. All the advantages apply with the added bonus that Dropbox is free (2gb storage). This is more than enough for syncing.


I don’t see a notable downside here (if you don’t put the db directly on Dropbox…). After a short glance at Dropbox’s API, their philosophy “keep it simple” seems to carry on here.

Conclusion and opinions needed

There really are many approaches to choose from. Right now Dropbox seams to offer the most advantages. It is free, popular and has a nice API. Their usage limits are fairly high too.
I would be very interested in your opinions. Is there something we didn’t take into account? Any gotchas?
Mat Smith was very kind to provide his view on this topic here (thanks Mat). He votes for a personal web app that can be run on the own server. Sadly this would exclude too many users and it is not feasible. His second best choice would be Google Tasks (where Google doesn’t provide an API at all…).

But one thing is certain. Regardless of the choice we make, there will be someone who will complain…

That’s it for this week. I have not decided yet on the next post, but one thing is for sure. It will be more on the teaching side than this one :)

9 Responses to “To Sync or not to Sync”

  1. Dzamir
    Jan 22, 2011

    Toodledo is free and haves a robust API

  2. Bon
    Jan 22, 2011

    I’d love to see you go with DropBox. I use their service daily, and this would fit nicely with that. Could their be a way to edit our ToDo’s from our Mac’s as well in the future? Maybe Mac app released in the Mac AppStore?

    Keep up the great work guys!

  3. Brynjar
    Jan 23, 2011

    I also support the dropbox idea. 1password can use dropbox to sync, and I sync the iphone, iPad and OSX version of dropbox together without issues.

  4. nader
    Jan 24, 2011

    for me a mixture would work : dropbox because i’d love to centralize, and mobileme because *maybe* that would mean that i could finally synch events between Today and iCal and any ical-dependent app like minco (*maybe* was the keyword!!)

  5. dave
    Jan 29, 2011

    Speaking of syncing, where are you at with iCal synchronization?

  6. Julien
    Feb 03, 2011

    Another vote for toodledo here.
    Or any other similar system actually. I see anyway such systems superior to a simple dropbox backup or any similar system, since it would allow the app users to add/check todos on other systems than on today todo. Toodledo for example can also be used with so many interfaces I’m sure everyone will have another one they would like to use :)

  7. [...] iPad app is almost done and we are making good progress with synching. As a little follow-up to the last post here’s what we have chosen. After spending some time with other apps to see how they [...]

  8. [...] To Sync or not to Sync [...]

  9. stuartb
    Mar 17, 2011

    Syncing PLEASE! as soon as possible.
    Option 1 – Dropbox preferred but ONLY if the syncing is automatic in the background AND the data on dropbox can be edited. Too many apps just use dropbox as a ‘backup location’.

    Option 2 – Better than dropbox would be if the little wifi webserver in the app could run on our pc desktop and AUTOMATICALLY sync in the background via dropbox. That way we could enter and edit data at pc at work and have that data automatically appear on the iphone.

    There are MANY task and todo apps but as far as I can see NONE of them offer a desktop companion app.

    Option 3 – A free online sync place example
    I used to use Notespark for this and it worked well (


  1. [...] iPad app is almost done and we are making good progress with synching. As a little follow-up to the last post here’s what we have chosen. After spending some time with other apps to see how they [...]

  2. [...] To Sync or not to Sync [...]