View Single Post
Quote:
Originally Posted by Brian View Post
I can't emphasize enough how much we'd like to get this working well for you. I wish you didn't have to take the time to contact the support ninjas to make that happen, but it really is the quickest and best way to get this taken care of. I really hope this helps.
First, let me say that I love Omnifocus. No other app compares in power, and using it has significantly improved my life. It is worth at least 50x what I paid for it. The availability of Omnifocus was a signifcant reason I switched to the Mac platform.

That said, I have followed the advice here, and it always does help temporarily, but the problem always returns. The problem is that the sync problems are not fundamentally a support issue, they are a software architecture issue. Telling users to contact support as if it is some problem with their configuration rather than a problem with the software itself is disingenuous.

As for the architecture itself, I'm not sure where the biggest problems come from, but some aspects are obvious from looking at what drops on the webdav server.

1. The data files are too large and too complicated relative to what they are actually holding. Just adding an item to the inbox requires creating one or two XML files on the server, which contain tons of extraneous information. Just the file that contains the item contains all sorts of information about my computer. Here's the file generated from me adding a single two word action to the inbox:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<omnifocus xmlns="http://www.omnigroup.com/namespace/OmniFocus/v1" app-id="com.omnigroup.OmniFocus" app-version="77.41.6.0.121031" os-name="NSMACHOperatingSystem" os-version="10.6.2" machine-model="MacBookPro4,1"><task id="apXSog3buY1"><inbox/><added>2009-12-17T07:37:31.077Z</added><name>Test Action</name><rank>2080374784</rank><order>parallel</order></task></omnifocus>

2. The app creates a new XML file every time something changes, and then because the XML files are so verbose, it ZIPs them up. Thus, for every new action, the phone has to make an HTTP connection, download a ZIP file, unzip it, parse the XML, and integrate the new action into its memory structure.

3. The main database is stored in an inefficient XML format, so in order to startup, the iPhone version has to parse a 1/4 MB XML file, even though I have only 443 actions. If this were stored in an efficient text file, the data would only take up a small fraction of the size, and would be much quicker to parse.

4. The latency of the network connection becomes a serious issue when retrieving dozens of files over WebDAV. If there were a base file and a single list of deltas from that base which was appended to, each client could simply append to that file when making changes, and only read the new portion when updating a sync. WebDAV is sophisticated enough to allow partial reads of a file. This would make the typical sync process take much less than one second.

I really hope you guys implement a new sync system that is designed for both reliability and speed. Speed is critical to making the iPhone version work well, because I'm not using it to do a weekly review -- I want to look at a list or check off an item, or add an item to the inbox most of the time, and then close the app. Unfortunately since there are no background apps, I have to sit and wait until the program is done doing its thing, which means looking at a list is a 1-2 minute process, when it should be a 5 second process.