The Omni Group is an employee-owned company where people bring their dogs to work.
In other words: when you think about managing large projects, think about culture first. It almost doesn’t matter what the details are — how we’re organized, what we use for source control management, and so on — because a great culture makes for a happy team that will figure out how to work together. And Omni has done a great job with that.
Omni’s culture deserves an article of its own, but I’m not going to get into culture much. Instead, this is an engineering-centric tour of the details of how we manage our apps.
They have several internal tools that are native macOS apps: OmniAutoBuild, OmniBugZapper, and OmniCrashSorter.
I like this bit about using AppleScript for automated testing, I do the same thing with Repla:
OmniFocus has unit tests that cover the model classes; other apps have more or less similar test coverage. The problem we face is the same problem other OS X and iOS developers face, which is that so much of each app is UI, and doing automated UI testing is difficult. Our solution for our Mac apps is AppleScript-based tests. (That’s one of the best reasons for making sure an app supports AppleScript, and writing tests is a good way to make sure that the support makes sense and works.)
They still use subversion (Update 10/31/19: Brent informed me via email that they switched to
git this year):
We use Subversion. All the apps and the website are in one giant repository. I wouldn’t be surprised if everybody’s working copy is just a partial version, rather than the entire thing.
What stands out to me is that there isn’t much here that sounds like it’s needed to change in the last decade or so. They’ve been avoiding trends and fads, just steadily making some of the best software in the industry, year after year.