I'm a fan of Mark/Space's syncing products. The Missing Sync for Palm OS, for example, has made my wife's digital life much more pleasant now that she no longer has to deal with the not-always-reliable collaboration between Apple's iSync and Palm's HotSync conduit to get her Palm TX and her PowerBook G4 on the same page. So I was delighted when Adam asked me to review SyncTogether, the latest addition to Mark/Space's collection of syncing utilities.
Am I still delighted? Read on.
Like its predecessor, SyncTogether lets you sync the same kinds of information that Mac OS X's .Mac syncing service does, but it eliminates the need for you to purchase a $100-per-year .Mac subscription. For those of you who haven't made your way to the Sync view in Mac OS X 10.4 Tiger's .Mac System Preference pane, these kinds of information include such Apple offerings as iCal tasks and events, Address Book contacts and groups, Safari bookmarks, and various Mail settings. Items from other programs, such as Bare Bones Software's Yojimbo, can appear in the list, too.
What makes this all possible is Tiger's Sync Services, a set of functions that Mac applications can use to sync information between devices and between other Mac applications.
SyncTogether taps into the power of Sync Services to synchronize the same types of information as .Mac syncing between Macs, between different user accounts on the same Mac, or both. This capability to sync between different people's Macs and between user accounts enables SyncTogether to turn syncing into a form of data sharing - a significant difference from basic .Mac syncing. (You can read much more about Sync Services in my book, "Take Control of Syncing in Tiger" (shameless plug!), or by consulting a Mark/Space knowledge base article).
The one notable exception in SyncTogether's set of information-syncing capabilities is the Mac OS X keychain system: although you can sync keychains between Macs using .Mac, SyncTogether cannot. The SyncTogether documentation remains silent on exactly why keychains are excluded from the syncing party, but Mark/Space tells me that Apple does not provide third-party support for keychain syncing. This is likely a security measure, and a reasonable one, too - you don't want just any Tom, Dick, or Trojan messing with your keychains, do you?
The license that accompanies SyncTogether allows up to three Macs to sync their information. That's three Macs, not three user accounts: it's possible to sync information from as many user accounts as you care to create on the three Macs that you can license. SyncTogether can also sync information over a local area network (it's Bonjour-savvy), and across the Internet. You can add more Macs to your SyncTogether sync-farm in groups of three by purchasing additional licenses.
Set Up... and Do It Again -- SyncTogether requires you to run an installer to get it on your Mac, and, even before you do that, you really, really, really want to read the Read Me file, the first section of which, labeled in bright red letters, strongly urges you to back up your data. Since it's all too easy with any syncing software to select the wrong option and blow away data, follow that advice. The Read Me provides some hints for backing up your iCal calendars and your Address Book contacts, and, once installed, SyncTogether's built-in Help offers more hints for backing up other kinds of data, such as your Safari bookmarks. I dutifully followed the Read Me's advice and was glad that I did, as you'll see.
The installation procedure, while not time-consuming, is not trivial, and odds are that you'll have to go through the final part of it - the Setup Assistant - at least twice, since you have to configure SyncTogether on at least two Macs (or on two user accounts on a single Mac) to get any practical benefit.
For this review, I used my desktop iMac G5, my MacBook Core Duo, and my almost-but-not-quite-retired 500 MHz iBook G3. All three machines were running Mac OS X 10.4.9. SyncTogether requires version 10.4.7 or later, and claims to require at least a G4 processor, although it did install without complaint on the venerable iBook G3. On each machine, a SyncTogether folder was created in the Applications folder, containing the application, Read Me files, and an uninstaller.
The first time you launch the SyncTogether application, a Setup Assistant also launches to help you configure the program. You can run the Assistant again later by choosing Setup Assistant from SyncTogether's Help menu.
When setting up SyncTogether, you first must specify whether your Mac (called a "node" in SyncTogether parlance) will act as a "client" or a "server" and whether it will join an existing "Sync Group" or create a new group. These are new concepts for those who are familiar only with .Mac syncing or iSync, but they aren't hard to understand: a Sync Group is a set of individual nodes that sync with each other, and a server is the one node in the sync group that coordinates all the syncing with the client nodes. (In fact, iSync and .Mac implicitly organize syncing this way, too: for iSync, the Mac running iSync is the server and the devices connecting to that Mac are the clients; for .Mac, Apple's .Mac service is the server, and all the Macs that sync with it using the same .Mac account are the clients.)
The Assistant enables you to set up SyncTogether nodes that aren't on the same local network. For one of these "remote" nodes, you must specify an IP address and a port number for the node. All the nodes in a Sync Group must be accessible by either Bonjour or IP address; if a firewall is present, the firewall must be set up to allow traffic on the specified port number. By default, SyncTogether chooses an available port number at random for you, though the built-in Help does suggest that port 50001 is a reasonable choice if you want to pick one manually.
The Assistant then asks you to set a password that is used for encrypting the data among all nodes in the Sync Group.
Next you specify which types of information you want to sync. SyncTogether uses plugins to handle the kinds of information it syncs, and several of its plugins offer more fine-grained syncing control than .Mac syncing offers. For example, you can choose to sync specific iCal calendars or Address Book contact groups with SyncTogether, instead of the all-or-nothing iCal and Address Book syncing choices that .Mac offers. You can use this enhanced syncing capability to create calendars and contact lists that, through the magic of SyncTogether syncing, you can share among family members or co-workers. For instance, now my wife and I can share our holiday card address lists and family birthday calendars.
Once the Setup Assistant finishes its work you are ready for your node's first sync... that is, if your node belongs to an existing Sync Group. Otherwise, you have to set up at least one more node because, obviously, a node can't sync if it's the only member of the Sync Group.
And Your Bird Can Sync -- The SyncTogether application window resembles the windows of other Mark/Space products: a metallic window containing a customizable toolbar along the top, and a main pane below it that can display several different views. In the case of SyncTogether's window, the three views available in the main pane are Plugins, Nodes, and Shop.
In the Plugins view you can change both the types of data being synced and specific settings for some of the data types. In the Shop view, you can order other Mark/Space and third-party products (my copy is currently offering some twelve products).
The Node view is the one you should have showing when you run a sync. It shows the status of the other nodes in your Sync Group, and provides controls for enabling and scheduling syncs with each node.
Mark/Space recommends that a node's first sync be done manually, and that you have each node easily accessible during that sync so you can respond to the dialogs and alerts that Tiger's Sync Services generates during a first sync. With the update to Mac OS X 10.4.9, Sync Services no longer generates as many first-time-sync-related dialogs as it did in earlier versions of Tiger (nor does 10.4.9 allow you to delete a node's data on the first sync), but giving yourself easy access to the syncing nodes so that you can watch for, and respond to, dialogs popping up on one node or another is still good advice.
Easiest of all is monitoring a first sync between user accounts on the same Mac: just use Tiger's fast user-switching capability. Only slightly more difficult is monitoring each node on a local network, such as the small AirPort network I have at home: it's just a matter of walking from one room to another. Monitoring a first sync among remote nodes, or nodes on more geographically dispersed LANs, however, means that you may also need to install remote access software, such as a VNC client, on the nodes so that you can respond to the Sync Services dialogs.
After all the set-up work, running an actual sync is almost anticlimactic. With SyncTogether running on the nodes you want to sync, you just click the Sync button on the SyncTogether toolbar on any of the nodes, and (if the network gods are smiling) the nodes sync. As a sync takes place, prominent progress messages appear in a new, blue pane that opens in the main SyncTogether application window on each node. When the sync ends, the progress pane vanishes.
If you want a detailed view of what is going on during a sync, the toolbar's Sync History button brings up a log of syncing activity. You can also view this log, by the way, with Tiger's Console utility. It's in ~/Library/Logs/SyncTogether/, and, if you're hungry for syncing details, you can also use Console to check both the SyncTogether.log file in that directory and the main console.log, which also receives some Sync Services-related messages.
Clicking the SyncTogether toolbar's Info button produces a drawer that shows detailed information about the selected plugin or node (the button is disabled in Shop view). In the Node view you can use the Info drawer's controls to set the sync schedule, IP address, and port number for a selected node, and to reset that node's sync history.
Other tools on the SyncTogether toolbar include a Downloads button (used when you download an update or for purchases when you buy something in the Shop view), a Cancel sync button, and a Preferences button.
SyncTogether's Preferences window offers just a few settings and most users can probably ignore them, since the defaults are sensible. If you need to tweak detailed network or security settings, you can access an Advanced preferences sheet by holding down the Option key when choosing Preferences; most users won't ever need (or desire) to see this sheet.
I've already mentioned that SyncTogether lets you separately sync iCal events and iCal tasks. In addition, SyncTogether provides three sync modes for each plugin: Normal, Publish Only, and Subscribe Only. You could create, for example, a master event calendar by syncing a Publish Only event calendar on one node: this calendar would send new events to other nodes but would not receive any from them. You could use a Subscribe Only tasks calendar on a home machine so that you could see tasks from your synced work machine when at home, but keep your personal home tasks private.
One feature .Mac has that SyncTogether lacks is the advanced Reset Sync Data command. With .Mac you can reset the contents of your Mac's data items with those from .Mac - or vice versa - instead of merging them. SyncTogether offers only a Reset Sync History feature, and relies on Sync Services to offer you the choice of resetting the data the next time you sync - which it doesn't always do, in my experience. While I can understand the necessity of not allowing one SyncTogether node to reset the data on another SyncTogether node (for example, I don't think my wife would like me to replace all of her holiday contacts with mine without her say-so), I would like to be able to reset the data on my local client node if I think it needs a complete refresh drawn from the syncing group's shared wisdom.
Incidents and Accidents -- I did have some problems with SyncTogether. Although the first sync between my iMac and my MacBook went well, attempting to sync my old and unsupported iBook did not: syncs failed, processes stalled, and my synced data got rather confused on the other nodes. Fortunately, I did have backups of the data and was able to set things right, and although this was undoubtedly my fault, I would have been happier if SyncTogether had been smart enough to detect the unworthiness of my old iBook and simply refused to install or launch.
As I dealt with the iBook fiasco, I attempted to uninstall and reinstall SyncTogether and discovered that the uninstaller does not do a complete job. Several folders that SyncTogether creates in ~/Library are not removed by the uninstaller. This is both intentional and common practice, according to Mark/Space, so the user's data and preferences are in place in case the application is reinstalled, but on the downside, if there is corrupt data in those folders, a fresh install of SyncTogether will pick them right up. (Note, by the way, that you must deauthorize your computer before uninstalling since you need the software to issue the Deauthorize Computer command.)
Although SyncTogether's built-in Help provides detailed explanations on how to set up and run the first sync, it maintains almost complete silence about subsequent syncs. For example, I couldn't find any Help topic that mentioned that you must have the SyncTogether application constantly running on the server node for scheduled syncing to work - that information appears only, and then by implication, on the last screen of the Setup Assistant.
Another question on which Help is silent is whether or not SyncTogether is compatible with .Mac syncing. For example, I would like to sync my iMac using both .Mac (so I can access bookmarks and contents from any Web browser on any machine) and SyncTogether (to keep my MacBook current), but the Help doesn't give a clue as to whether syncing both ways would be clever or daft. (In fact, Tiger's Sync Services are designed to allow just such multi-way syncing; of course, if a sync messes up through one sync - say, an iSync sync with a flaky mobile phone's contact list - that mess will happily propagate through other syncs, such as a subsequent SyncTogether sync between Macs. So it goes.)
On the user-interface side, SyncTogether makes it difficult sometimes for you to figure out which node a command affects. For example, the Reset Sync History dialog first says that the feature "will not affect any other sync clients" but later says that the history "will automatically be reset on the corresponding Server or Client as well." In fact, SyncTogether uses "Servers" and "Clients" to refer to the nodes in a SyncTogether group; a "sync client," on the other hand, is Sync Services terminology for an application that makes use of Sync Services (such as iSync or SyncTogether).
SyncTogether also enhances confusion by employing a "user-name@machine-name" convention to label each node, a convention which, though familiar to programmers and network administrators, probably looks an awful lot like an email address to the vast majority of users. (.Mac, by comparison, uses a somewhat less confusing convention: for example, in my syncing setup, the node labeled "michael@nimloth" in SyncTogether appears as "Nimloth - Michael Cohen" in the Advanced view of the .Mac System Preference pane.) Maybe I'm picky, but when programming conventions and terminology needlessly bubble up into the user interface of a consumer software product, it puts me off.
Unsynchronized Emotions -- So, was I delighted with SyncTogether? Not completely. Some of my lack of complete delight, to be sure, is not altogether SyncTogether's fault: after all, the program can only be as good as Tiger's Sync Services allows it to be, and Sync Services still has a few rough edges of its own. Plus, some of the problems I experienced were a result of coloring outside the lines by running SyncTogether on an unsupported machine, although I wouldn't have encountered those problems if the installer had been slightly more strict in its pre-flight analysis.
Bottom line: I can and do recommend SyncTogether to any reasonably Mac-savvy person who doesn't want to pay for .Mac and who doesn't find the initial setup complexity daunting. I also recommend it to small groups of Mac users (families, work groups) who want to share some common, Sync Services-friendly information like calendars and contacts with a flexibility that .Mac currently doesn't provide. And, despite the flaws I found, I am confident that Mark/Space will do a good job of maintaining and improving SyncTogether over time.
It wasn't quite love at first sight for SyncTogether and me, but I can honestly say I did like it a lot. In fact, next week we're going out again for lunch, and then maybe we'll catch a movie: I hear "Yojimbo" is playing at a revival theater nearby.
SyncTogether costs $50 and is a 16 MB download; a 14-day demo is available.
[Michael E. Cohen has worked as a teacher, a programmer, a Web designer, a multimedia producer, and a certified usability analyst. He's the author or co-author of several books, including "The Xcode 2 Book," "AirPort and Mac Wireless Networks for Dummies," and of course, "Take Control of Syncing in Tiger."]