On Wed, 2014-04-02 at 11:36 +0000, Emiliano Heyns wrote:
> OK, still working through these two messages, but first, the concepts:
> 
> *Context*: a service that can host one or more *Sources*.

"service" isn't defined.

> *Source*: a folder hosted in a *Context* of a certain type (calendar or 
> contacts).

Again, "folder" is ambiguous.

> *Config*: can be a *Source Config* or a *Sync Config*.

Right.

> *Source Config*: a *Source* hosted in a *Context* with added properties 
> (key-value pairs)

Yes.

> *Sync Config*: a pair of one local and one or more remote *Source 
> Configs* hosted on the *same* *Context* tied together, with added 
> properties (key-value pairs)

Close, but not quite. There is no distinction between local and remote
source configs. There are just source configs in the context of the sync
config.

FWIW, here's the terminology section from the README. It's meant to
introduce concepts from scratch, i.e. nothing should depend on anything
not defined yet.

peer
  A peer is the entity that data is synchronized with. This can be
  another device (like a phone), a server (like Google) or
  even the host itself (useful for synchronizing two different
  databases).

host
  The device or computer that SyncEvolution runs on.

database
  Each peer has one or more databases that get synchronized (Google Calendar,
  Google Contacts). Conceptually a database is a set of items where each
  item is independent of the others.

data source
  A name for something that provides access to data. Primarily used for
  the configuration which combines backend and database settings, sometimes
  also instead of these two terms.

local/remote
  Synchronization always happens between a pair of databases and thus
  has two sides. One database or side of a sync is remote (the one
  of the peer) or local (SyncEvolution). For the sake of consistency (and
  lack of better terms), these terms are used even if the peer is another
  instance of SyncEvolution and/or all data resides on the same storage.

sync config
  A sync configuration defines how to access a peer: the protocol
  which is to be used, how to find the peer, credentials, etc. Peers
  might support more than one protocol, in which case multiple
  sync configs have to be created.

  Sync configs can be used to initiate a sync (like contacting a
  SyncML server) or to handle an incoming sync request (when acting
  as SyncML server which is contacted by the peer).

source config
  Each data source corresponds to a local database. A source config
  defines how to access that database, like a sync config does for
  peers. This information about a local database is independent
  of the peers that the database might be synchronized with.

  Sync configs use these shared source configs and add additional,
  per-peer settings to each of them that define how that local
  database maps to a remote database in the peer. By default a source
  config is inactive inside a sync config and thus ignored. It must be
  activated by setting the unshared `sync` property to something other
  than `none` (aka `disabled`).

  In SyncEvolution's predefined configuration templates, the following
  names for sources are used. Different names can be chosen for sources
  that are defined manually.

  * addressbook: a list of contacts
  * calendar: calendar *events*
  * memo: plain text notes
  * todo: task list
  * calendar+todo: a virtual source combining one local "calendar" and
    one "todo" source (required for synchronizing with some phones)

backend
  Access to databases is provided by SyncEvolution backends. It does
  not matter where that data is stored. Some backends provide access
  to data outside of the host itself (`CalDAV and CardDAV`_, ActiveSync).

configuration property
  Sync and source configs contain configuration properties. Each
  property is a name/value pair. Sync properties are used in sync configs,
  source properties in source configs. The names were chosen so that
  they are unique, i.e., no sync property has the same name as a source
  property.

  A property can be *unshared* (has separate values for each peer, therefore
  sometimes also called *per-peer*; for example the `uri` property which
  defines the remote database), *shared* (same value for all peers; for
  example the `database` property for selecting the local database) or
  *global* (exactly one value).

context
  Sync and source configs are defined inside a configuration context.
  Typically each context represents a certain set of sources. The values
  of shared properties are only shared inside their context. That way
  it is possible to define a second `work` context with a `work calendar`
  source using one database and use the implicit `default` context for
  a private `calendar` source with a different database.

context config
  The shared and global properties of a certain context.

configuration template
  Templates define the settings for specific peers. Some templates
  are packaged together with SyncEvolution, others may be added by
  packagers or users. Settings from templates are copied once into
  the sync config when creating it. There is no permanent link back
  to the template, so updating a template has no effect on configs
  created from it earlier.

  A template only contains unshared properties. Therefore it is
  possible to first set shared properties (for example, choosing
  which databases to synchronize in the default context), then
  add sync configs for different peers to that context without
  reseting the existing settings.

local sync
  Traditionally, a sync config specifies SyncML as the synchronization
  protocol. The peer must support SyncML for this to work. When the
  peer acts as SyncML server, conflict resolution happens on the
  peer, outside of the control of SyncEvolution.

  In a so called `local sync`_, SyncEvolution connects two of its own
  backends and runs all of the synchronization logic itself on the host.

target config
  In addition to the normal sync config, a local sync also uses a target
  config. This target config is a special kind of sync config. It defines
  sync properties that are necessary to access databases on the other
  side of the local sync. Sync configs can have arbitrary names while
  a target config must be named `target-config`.

-- 
Best Regards, Patrick Ohly

The content of this message is my personal opinion only and although
I am an employee of Intel, the statements I make here in no way
represent Intel's position on the issue, nor am I authorized to speak
on behalf of Intel on this matter.



_______________________________________________
SyncEvolution mailing list
[email protected]
https://lists.syncevolution.org/mailman/listinfo/syncevolution

Reply via email to