OmniFocus Data Storage
OmniFocus uses compressed XML transaction files to store its data, with a SQL cache for efficient access. (Each time you update the application, we rebuild the SQL cache to ensure that it’s consistent with the latest schema.)
This clever design lets OmniFocus store its data in a text-based format while also providing good performance and mitigating the rigidity of SQL storage for an evolving application. I’m currently trying out OmniFocus as a replacement for OmniOutliner Pro for managing my software projects. Despite the fact that I’m not into GTD, OmniFocus seems to be a good fit. It automates much of the work that I did manually in OmniOutliner, moving items around to view them in different ways. It supports multiple windows and hoisting, and the filtering options are much better suited to my purposes than OmniOutliner’s. Most importantly, OmniFocus doesn’t do too much. It’s nothing like OmniPlan, which goes way behind my needs. It’s more like a version of OmniOutliner that’s optimized for tasks.
Update (2013-08-13): In an old blog post, Tim Wood describes this in more detail.