Sync'Em Key Concepts
The following, excerpted from the Business Contexts of our software requirements (Use Cases), provides an overview of the basic Sync'Em concepts.

Sync'Em is a product that keeps various information sources in synchronization.
When a User wants to use Sync'Em to keep various sources of information in sync, the User must specify which information sources are to be synchronized with which other information sources, the place where each such information resides, any credentials required to access each source of information, the schedule for synchronizing the sources of information and, if applicable, which subset of each such information is to be included in the synchronization.
In Sync'Em, each source of information is called a Sync Source and has a User-assigned name called a Sync Source Name -- e.g., one Sync Source might be an "iCal Social Calendar" which might be sync'd with a different "Google Social Calendar" Sync Source or a Sync Source might be some "Address Book Business Contacts" which might be sync'd with another Sync Source containing some "Exchange Business Contacts".
Sync'Em enables a User to define collections of "like" sources of information that are to be kept in sync -- e.g., calendar events in both iCal and Exchange or contact information in both Apple Address Book and Exchange. Sync'Em refers to a collection of such "like" sources of information that are to be kept in sync as a Sync Setup. A Sync Setup also has a User-assigned name -- e.g., a "Social Events" or a "Business Contacts" Sync Setup.
A given Sync Setup can have a many Sync Sources as required and as many Sync Setups as are required can be defined.
In addition to the Sync Source name, a Sync Source includes the following setup components:
- Sync Source Sync Direction: specifies whether syncing occurs only "To" or only "From" the sync source or whether it occurs in both directions
- Sync Source Kind: specifies the kind of information to be sync'd -- e.g., Exchange Events or Apple Address Book Contacts
- Sync Source Update Interval: specifies the time interval, in minutes, upon which the information sources are to be synchronized (applies only to sources where synchronization is not "push" driven from the source by notifications sent when the source is changed)
- Sync Source Access: specifies where and how to access the information and, when required, the credentials required for such access. A given Sync Source Access will often be used by multiple Sync Sources -- e.g., an Exchange WS Access may be used to access Exchange Events and Exchange Contacts kinds of sources.
- Sync Source Locale: specifies the exact "place" where a given kind of information is located -- e.g., the "Home" versus the "Work" calendar in iCal or a "Business Contacts" folder versus a "Personal Contacts" folder within Exchange.
- Sync Source Schedule: an optional component that defines when a Sync Source can be synchronized. A given Sync Source Schedule will often apply to multiple Sync Sources -- e.g., a "business hours" schedule might be used for syncing multiple kinds of business-related information whereas the default "always" schedule might be used for syncing non-business kinds of information.
- Sync Source Filter: an optional component that specifies how information is to be filtered (i.e., into a subset of the information) when being sync'd -- e.g., events might be filtered to sync only those with a creation date within the past year or contact items may be filtered to sync only those that have a non-empty street address.
Sync'Em's extensive capabilities require a number of multi-level and interrelated concepts that must be understood and specified to configure a Sync Setup for proper operation. This makes it particularly challenging to deliver a compact, flexible and complete user interface that's also understandable. The strategy is to have a Setup Assistant to aid novice Users with basic setups and an advanced setup mode for experienced Users.