Hello all,

Coincidentally right now I am looking into what could be the long-term future 
of my efforts that went into libsynthesis, now that I am no longer with 
Synthesis, but again independent and "free" :-)

I very much welcome efforts to join forces to make sync better, as I must admit 
that despite all efforts in the last 10 years, interoperable PIM sync is still 
only a dream for most users. The only solutions that work for non-geeks that 
are not backed up by a corporate IT support are the (more or less) proprietary 
end-to-end solutions, all but interoperable.

At the same time I am convinced that standardized sync (far beyond PIM) is a 
concept that is of paramount importance for cloud computing. Selling our souls 
(ahem, data) to single points of (technical, commercial, political) failure 
such as Google, Facebook or even Dropbox can't be a long term solution. I see 
these as the Compuserves and Datex-P's of today, important to get things 
started. But if cloud computing is to be more than a hype, it will need a open, 
reliable, generic, pragmatic sync mechanism eventually, like inter-computer 
data exchange needed TCP/IP to take off.

So while I'm completely a SyncML guy as far as my actual work (libsynthesis) is 
concerned, the thing that brought me to SyncML in 2000 was the hope for truly 
interoperable sync, and not vice versa. Today, libsynthesis is certainly useful 
for doing SyncML, which will remain a part of picture for some years, if only 
to support legacy devices. But I'm totally open to ideas that go beyond SyncML, 
and probably refactoring libsynthesis to make parts of it more genererally 
usable (vXXX formatting in particular) for other protocols.

What I'm not sure at the moment at the concept level is if unifying the 
currently available (IMHO all more or less "legacy") sync protocols directly 
into a single engine is really the way to go. This thought feels a bit like 
creating the super-legacy engine. Maybe we need a structure where a really next 
gen sync mechanism builds the core, and the OpenSyncs, libsynthesises and 
Syncevolutions are degraded to plugins on an outer ring into that architecture 
to provide legacy sync.

I mean, even we had perfect integration of SyncML, CalDAV, ActiveSync etc. 
today, I feel it would still not cover everyday sync needs I have today, let 
alone in the future. With the explosion of endpoints (devices) on one side and 
data sources (services, databases) on the other I doubt that point-to-point 
sync has a bright future. I have the impression what we need could be more 
similar to git than to SyncML.

This is of course vague thinking and far from anything realizable in short 
term. But when talking about combining efforts, I think we need also to talk 
about the big context for all this.

Down from that meta level, two comments to messages in this thread:

On Jan 4, 2011, at 17:23 , Georg C. F. Greve wrote:

>> SyncML has had interoperability issues due to its loose definition.
>> Vendors also got stuck supporting the same old data formats and devices,
>> instead of adapting to more modern needs like iCalendar 2.0.
> 
> Both points are true. I would also say that SyncML has the conceptual flaw of 
> assuming dumber devices than todays devices actually are.

The devices might be faster and have more memory, but unfortunately some 
backends are still as dumb as ever regarding *the* (IMHO) single most important 
feature for smooth sync, especially when multi-point sync comes into the 
picture, which is a creator-assigned, 100% persistent UID.

SyncML tried to work around this, and most of the complexity and also of 
reliability issues in SyncML comes from the fact that identity has to be 
*derived* by comparing payload. And in consequence, this shifted resposibility 
for success or failure onto the loosely specified vXXX-formats, which were not 
designed for nor reliable enough for that (with the exception maybe of 
iCalendar 2.0 which most implementations don't have).

There's also a conceptual contradiction in this, because SyncML on one hand 
requires identity to be derived from the payload and on the other hand demands 
very much flexibility in handling of that payload (very dumb endpoints with 
very few fields vs. sophisticated endpoints with many details).
IMHO it's an either-or: Either identity is derived from payload (SHA checksums 
like in git or dropbox) which implies that all peers need to store the entire 
paylod 1:1, or identity is a (G)UID assigned by the creator of a record and 
guaranteed to remain unchanged over its entire lifetime - then peers might be 
allowed to only store abstractions or subsets of the actual data.

SyncML tried to do both at the same time - the price paid is the ever fragile 
slow sync with its potential for great duplicate mess.


On Jan 4, 2011, at 11:36 , Daniel Gollub wrote:

> I'm still open to adapt OpenSync and it's plugin to make more use of common 
> code - e.g. vcard handling of libsynthesis, maybe even seperating 
> libsynthesis 
> in sometihng like libvxx to provide a common code base for vformats not only 
> for syncing application. I would be also happy if one day someone prepares 
> patches which replace OSyncEngine with something based on libsynthesis.
> 
> libsynthesis is definitely more mature code regarding vformat handling and 
> the 
> engine with regards of syncml. Not quite sure with regards generic 
> synchronization.

You're absolutely right - libsynthesis is not designed for generic sync.
Currently I also think that extracting the vformat (and rfc2822 btw.) handling 
and the script engine into more generically usable libraries would be 
worthwhile.

Lukas





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

Reply via email to