Do not sync our apps’ prefs file across Macs

Many users, myself included, own more than one Mac. For people like us, the concept of syncing an apps’ settings across those Macs, so they’re always the same and always up to date, is enticing. But unless the app has been specifically written to support such syncing (i.e. TextExpander, or the snippets/presets portion of our own Name Mangler), this is generally a Very Bad Idea.

In the last couple weeks, I’ve received emails from a few users, complaining of lost settings in a couple of our apps. After some back-and-forth, the common thread among these users was the use of an open source tool called Mackup.

Mackup claims that it will:

  • Back up your application settings in a safe directory (e.g. Dropbox)
  • Sync your application settings among all your workstations
  • Restore your configuration on any fresh install in one command line

If you browse the Mackup page, you’ll find a number of our apps—Moom, Name Mangler, and Witch—listed in the Supported section. This may make you think that we’ve been consulted, and that those apps have our blessing to be used with Mackup. This is not the case at all.

Supported apps are just apps that Mackup itself supports in its configuration; there’s not necessarily any involvement with—or approval from—the app’s original developer. That’s certainly the case with us, as we were never contacted about including our apps on Mackup’s supported list. At present, we do not support preference files synced across multiple Macs for our apps. (We have asked to have our apps removed from Mackup, but so far, there’s been no response from the Mackup developer.)

We do not recommend the use of Mackup, or any other such tool that syncs our apps’ prefs files across multiple Macs. You may lose all your settings, or introduce some sort of command conflict that could cause problems using our apps. Please revert to locally-stored non-synced prefs.

The way preferences files work in OS X now, syncing any apps’ prefs via a sync service is probably not a good idea anyway, unless the app is specifically designed for such sharing. Why not?

In modern versions of OS X, a process called cfprefsd manages preferences. When you launch an app, cfprefsd caches the prefs file values into RAM, and from then on, it’s in charge of how and when prefs changes get written back to disk. There are times when, even after changing a prefs file on disk (say via a Terminal command) that those changes aren’t reflected in the app, even after relaunching it. That’s because cfprefsd overwrote your changes when it wrote out its cached values.

Even if you weren’t to lose your preferences file due to Mackup, it will lead to conflicts that have no easy resolution. Consider Moom being used on two Macs, with a shared preferences file. Moom is an always-running kind of app, so it’s likely to be running on both Macs at the same time. On one Mac, a user adds a custom control; on the other Mac, a short time later, the user creates a different control, but accidentally uses the same keyboard shortcut as they did on the first Mac. What happens when the prefs file is synced between both Macs?

Excluding certain parts of Name Mangler, none of our apps are written assuming that they will have to manage a shared settings file. We have no idea what will happen if something like the above Moom scenario were to occur. But whatever the outcome is, it’s not something we have anticipated, because prefs file are expected to be local, and to only be modified by one instance of the app.

Future versions of some of our apps may support some version of pref syncing. But until they do, please keep our apps’ prefs files local to each Mac. (You can get a head start on configuring a new Mac by copying your apps’ prefs files from another Mac. But copy them, don’t sync them.)

Comments are closed.