1 SyncEvolution 1.3.99.6, xxxxxxxxxx
2 ==================================
4 This update focuses on SyncEvolution in IVI again. It adds support for
5 GENIVI Diagnostic Log and Trace (DLT) and enhances searching in the
8 Binaries on syncevolution.org now work with EDS < 3.6 *and* >= 3.6.
12 * libsynthesis: avoid redundant (and sometimes slow) getaddrbyname() (FDO #70771)
14 The network lookup of the hostname can be slow (10 second delay when
15 not connected) and shouldn't be necessary anyway, so disable it.
17 * PIM Manager: case-insensitive and transliterated search (FDO #56524)
19 * PIM: accent-insensitive and transliterated search (FDO #56524)
21 Accent-insensitive search ignores accents, using the same code as in
22 EDS. Transliterated search ignores foreign scripts by transliterating
23 search term and contact properties to Latin first. That one is using
24 ICU directly in the same way as EDS, but doesn't use the EDS
25 ETransliterator class to avoid extra string copying.
27 This commit changes the default behavior such that searching is by
28 default most permissive (case- and accent-insensitive, does
29 transliteration). Flags exist to restore more restrictive matching.
31 * PIM: relax phone number matching
33 Previously, the current default country was used to turn phone numbers
34 without an explicit country code into full E164 numbers, which then
35 had to match the search term when doing a caller ID lookup.
37 This was inconsistent with EDS, where a weaker
38 EQUALS_NATIONAL_PHONE_NUMBER was done. The difference is that a
39 comparison between a number with country code matches one without if
40 the national number of the same, regardless of the current default
41 country. This is better because it reduces the influence of the hard
42 to guess default country on matching.
44 Another advantage of this change is the lower memory consumption and
45 faster comparison, because strings are now stored in 4 + 8 byte
46 numbers instead of strings of varying length.
48 * PIM: fix incorrect write into pim-manager.ini (FDO #70772)
50 Removing a peer accidentally wrote the updated list of active
51 address books into the "sort" property of pim-manager.ini, which
52 then prevented starting the PIM Manager.
54 * PIM: ignore broken sort order in config (FDO #70772)
56 Failure to set the sort order from pim-manager.ini should not
57 prevent the startup of the PIM Manager because the client cannot
58 really diagnose and fix the problem. It is better to try again with
59 the default sort order.
61 * PIM: adapt to locale changes at runtime (FDO #66618)
63 Listen to signals from localed D-Bus system service and update all
64 internal state which depends on the current locale. This state includes:
65 - pre-computed data in all loaded contacts
66 - filtering (for example, case sensitivity is locale dependent)
69 This feature can be controlled by setting the SYNCEVOLUTION_LOCALED
71 - "session" - use a localed instance on the D-Bus session bus instead
72 of the system instance. This was originally meant for
73 testing, but might also be useful for per-user setting changes.
74 - "none" - disables the feature
76 * D-Bus server: support DLT (FDO #66769)
78 Diagnostic Log and Trace (DLT) manages a sequence of log messages,
79 with remote controllable level of detail. SyncEvolution optionally
80 (can be chosen at compile time and again at runtime) uses DLT
81 instead of its own syncevolution-log.html files. See README-DLT.rst
84 To use the feature, configure SyncEvolution with
85 "--enable-dbus-server=--dlt --no-syslog"
87 * EDS: enhanced compatibility mode
89 SyncEvolution compiled for EDS < 3.6 can now also load EDS backends
90 compiled for EDS >= 3.6. The packaging for syncevolution.org uses
91 that to bundle EDS backends compiled on different distros in the
94 * EDS: SYNCEVOLUTION_EBOOK_QUERY env variable
96 Setting the SYNCEVOLUTION_EBOOK_QUERY env variable to a valid EBook
97 query string limits the results to contacts matching that
98 query. Useful only in combination with --print-items or
99 --export. Only implemented for EDS >= 3.6.
101 * EDS: fix compile problem with boost and EDS > 3.36
103 This fixes the following problem, seen with Boost 1.53.0 on altlinux
104 when compiling for EDS >= 3.6:
106 /usr/include/boost/smart_ptr/shared_ptr.hpp: In instantiation of 'typename boost::detail::sp_array_access<T>::type boost::shared_ptr<T>::operator[](std::ptrdiff_t) const [with T = char*; typename boost::detail::sp_array_access<T>::type = void; std::ptrdiff_t = long int]':
107 src/backends/evolution/EvolutionSyncSource.cpp:163:38: required from here
108 /usr/include/boost/smart_ptr/shared_ptr.hpp:663:22: error: return-statement with a value, in function returning 'void' [-fpermissive]
109 make[2]: *** [src/backends/evolution/src_backends_evolution_syncecal_la-EvolutionSyncSource.lo]
112 SyncEvolution 1.3.99.5, 01.10.2013
113 ==================================
115 SyncEvolution now supports Google CalDAV/CardDAV with OAuth2
116 authentication. These are the open protocol that Google currently
117 supports and thus the recommended way of syncing with Google,
118 replacing ActiveSync and SyncML (both no longer available to all
121 Support for Google CardDAV is new. Because of a vCard encoding issue
122 on the server side, spaces in long notes may get removed. Like
123 Evolution, SyncEvolution does not yet support some of the advanced
124 features of the server, in particular custom labels for phone numbers,
125 emails and addresses. Likewise, some client properties are not
126 supported by the server: CALURI, CATEGORIES, FBURL, GEO and ROLE are
127 not supported. Of ORG, only the first two components are supported.
128 Currently, properties not supported by one side get lost in a full
131 SyncEvolution depends on external components for OAuth2. It can be
132 compiled to use gSSO [1] or GNOME Online Accounts. GNOME Online
133 Accounts >= 3.10 works out of the box for CalDAV and CardDAV, 3.8 only
134 for CardDAV (but the GNOME Online Accounts binary can be patched to
135 also support CalDAV, see [2]), anything older than 3.8 does not
136 work. Support for Ubuntu Online Accounts should not be hard to add,
137 but is not available yet [3].
139 [1] https://01.org/gsso and
140 http://cgit.freedesktop.org/SyncEvolution/syncevolution/plain/src/backends/signon/README
141 [2] http://cgit.freedesktop.org/SyncEvolution/syncevolution/plain/src/backends/goa/README
142 [3] http://thread.gmane.org/gmane.comp.mobile.syncevolution/4353/focus=4490
147 * GTK UI: fixed two crashes - running a sync with no service selected
148 and a 64 bit pointer problem recently discovered by Tino Keitel when
149 compiling the Debian package with -fPIE.
151 * password handling: fix usage of GNOME Keyring and KWallet (FDO #66110)
153 When clients like the GTK sync-ui stored a password, it was always
154 stored as plain text in the config.ini file by the
155 syncevo-dbus-server. The necessary code for redirecting the password
156 storage in a keyring (GNOME or KWallet) simply wasn't called in that
159 The command line tool, even when using the D-Bus server to run the
160 operation, had the necessary code active and thus was not affected.
161 Now all SyncEvolution components use the same default: use safe
162 password storage if either GNOME Keyring or KWallet were enabled
163 during compilation, don't use it if not.
165 Fixing this revealed other problems, like not being able to store
166 certain passwords that lacked the necessary lookup criteria (like
167 syncURL and/or username). To address this, the lookup criteria where
168 extended and a new check was added to avoid accidentally removing
169 other passwords. As a result, it may be possible that SyncEvolution
170 no longer finds passwords that were stored with older versions of
171 SyncEvolution. In such a case the passwords must be set again.
173 * GNOME: clean up keyring access and require libgnome-keyring >= 2.20
175 The updated error messages now always include information about the
176 password and libgnome-keyring error texts.
178 A workaround is used for the "Error communicating with
179 gnome-keyring-daemon" problem that started to appear fairly
180 frequently in the automated testing once the keyring was actually
181 used. The problem shows up with some additional debug messages:
183 Gkr: received an invalid, unencryptable, or non-utf8 secret
184 Gkr: call to daemon returned an invalid response: (null).(null)()
186 It seems that sometimes setting up a session with GNOME keyring
187 fails such that all further communication leads to decoding problem.
189 There is an internal method to reset the session, but it cannot be
190 called directly. As a workaround, fake the death of the GNOME
191 keyring daemon and thus trigger a reconnect when retrying the GNOME
192 keyring access. This is done by sending a D-Bus message, which will
193 also affect other clients of GNOME keyring, but hopefully without
194 user-visible effects.
196 * config: enhanced password handling
198 It is possible to configure a plain username/password combination
199 once in SyncEvolution and then use references to it in other
200 configurations, instead of having to set (and update) the
201 credentials in different places. This is useful in particular with
202 WebDAV, where credentials had to be repeated several times (target
203 config, in each database when used as part of SyncML) or when using
204 a service which requires several configs (Google via SyncML and
207 To use this, create a sync config for a normal peer or a dedicated
208 config just for the credentials, with "username/password/syncURL"
209 set. The "syncURL" must be set to something identifying the peer if
210 GNOME Keyring is used for the password storage.
212 Then set "username", "databaseUser" and "proxyUser" properties to
213 "id:<name of config with credentials>" and all read and write access
214 to those properties will be redirected by SyncEvolution into that
215 other configuration. This even works in the GTK UI.
217 For user names which contain colons, the new "user:<user name>" format
218 must be used. Strings without colons are assumed to be normal user
219 names, so most old configurations should continue to work.
221 * signon: new backend using libgsignond-glib + libaccounts-glib
223 The code works with gSSO (https://01.org/gsso). With some tweaks to
224 the configure check and some ifdefs it probably could be made to work
225 with Ubuntu Online Accounts.
227 The code depends on an account accessible via libaccounts-glib which
228 has a provider and and (optionally) services enabled for that
229 provider. It is not necessary that the account already has a signon
230 identity ID, the backend will create that for the provider (and thus
231 shared between all services) if necessary.
233 Therefore it is possible to use the ag-tool to create and enable the
234 account and services. Provider and service templates are in the next
237 * WebDAV: support OAuth2
239 If given an authentication configuration which can handle OAuth2,
240 then OAuth2 is used instead of plain username/password
243 * WebDAV: support Google CardDAV, break Yahoo
245 Google CardDAV has one peculiarity: it renames new contacts during PUT without
246 returning the new path to the client. See also
247 http://lists.calconnect.org/pipermail/caldeveloper-l/2013-July/000524.html
249 SyncEvolution already had a workaround for that (PROPGET on old path, extract
250 new path from response) which happened to work. This workaround was originally
251 added for Yahoo, which sometimes merges contacts into existing ones. In
252 contrast to Yahoo, Google really seems to create new items.
254 Without some server specific hacks, the client cannot tell what happened.
255 Because Google is currently supported and Yahoo is not, let's change the
256 hard-coded behavior to "renamed items are new".
258 * WebDAV: started testing with owndrive.com = OwnCloud
260 * GOA: get OAuth2 tokens out of GNOME Online Accounts
262 "username = goa:..." selects an account in GOA and retrieves the
263 OAuth2 token from that.
265 The implementation uses the GOA D-Bus API directly, because our C++
266 D-Bus bindings are easier to use and this avoids an additional library
269 * PIM: fix UID usage in sync.py example
271 Using the underscore in the UID has been wrong all along, it only
272 happened to work because UID sanity checking was missing. After adding
273 it, the example broke.
275 Now simply remove the colon. It makes the UID less readable, but it
276 doesn't have to be, and ensures that file names and database names
277 contain the UID as-is.
279 * PIM: if busy, don't shut down
281 While there are sessions pending or active, the server should not shut down.
282 It did that while executing a long-running PIM Manager SyncPeer() operations,
283 by default after 10 minutes.
285 This was not a problem elsewhere because other operations are associated with
286 a client, whose presence also prevents shutdowns. Perhaps PIM Manager should
287 also track the caller and treat it like a client.
289 * PBAP: do not end Bluez5 transfer prematurely
291 A transfer was marked as finished prematurely when encountering the
292 "active" Status value, which can happen for longer transfers.
294 * PBAP: add support for obexd 0.48
296 obexd 0.48 is almost the same as obexd 0.47, except that it dropped
297 the SetFilter and SetFormat methods in favor of passing a Bluex 5-style
298 filter parameter to PullAll.
300 SyncEvolution now supports 4, in words, four different obexd
306 Upgrading from releases <= 1.3.99.4:
308 If the value of "username/databaseUser/proxyUser" contains a colon,
309 the "user:" prefix must be added to the value, to continue treating it
310 like a plain user name and not some reference to an unknown identity
311 provider (like "id:", "goa:", "signon:", etc.).
313 The lookup of passwords in GNOME Keyring was updated slightly in
314 1.3.99.5. It may be necessary to set passwords anew if the old one is
317 Upgrading from release 1.2.x:
319 The sync format of existing configurations for Mobical (aka Everdroid)
320 must be updated manually, because the server has encoding problems when
321 using vCard 3.0 (now the default for Evolution contacts):
322 syncevolution --configure \
323 syncFormat=text/x-vcard \
326 The Funambol template explicitly enables usage of the
327 "refresh-from-server" sync mode to avoid getting throttled with 417
328 'retry later' errors. The same must be added to existing configs
330 syncevolution --configure \
331 enableRefreshSync=TRUE \
334 Upgrading from releases before 1.2:
336 Old configurations can still be read. But writing, as it happens
337 during a sync, must migrate the configuration first. Releases >= 1.2
338 automatically migrates configurations. The old configurations
339 will still be available (see "syncevolution --print-configs") but must
340 be renamed manually to use them again under their original names with
341 older SyncEvolution releases.
344 SyncEvolution 1.3.99.4, 12.07.2013
345 ==================================
347 The focus of this development snapshot is enhanced performance of
348 syncing. With EDS, contacts get added, updated or loaded with batch
349 operations, which led to 4x runtime improvements when importing PBAP
350 address book for the first time. Removing unnecessary work from any
351 following PBAP sync led to more than a 6x improvement.
353 These improvements also benefit non-PBAP syncing and could in theory
354 work with any SyncML peer. In practice, batching of items is currently
355 limited to SyncEvolution as peer.
357 The PBAP backend itself was rewritten such that data gets transferred
358 from a phone in parallel to processing the already transferred
359 data. The effect is that on a sufficiently fast system, a sync takes
360 about the same time as downloading all contacts. To get the text-only
361 part of the contacts even faster, PBAP syncing can be done such that
362 it first syncs the text-only parts (without removing existing photos),
363 then in a second round adds or modifies photos. The PIM Manager uses
364 this incremental mode by default, in the command line it can be chose
365 with the SYNCEVOLUTION_PBAP_SYNC env variable.
367 The HTTP server became better at handling message resends when the
368 server is slow with processing a message. The server is able to keep a
369 sync session alive while loading the initial data set by sending
370 acknowledgement replies before the client times out.
372 Guido Günther provided some patches addressing problems when compiling
373 SyncEvolution for Maemo.
378 * sync: less verbose output, shorter runtime
380 For each incoming change, one INFO line with "received x[/out of y]"
381 was printed, immediately followed by another line with total counts
382 "added x, updated y, removed z". For each outgoing change, a "sent
383 x[/out of y]" was printed.
385 In addition, these changes were forwarded to the D-Bus server where a
386 "percent complete" was calculated and broadcasted to clients. All of
387 that caused a very high overhead for every single change, even if the
388 actual logging was off. The syncevo-dbus-server was constantly
389 consuming CPU time during a sync when it should have been mostly idle.
391 To avoid this overhead, the updated received/sent numbers that come
392 from the Synthesis engine are now cached and only processed when done
393 with a SyncML message or some other event happens (whatever happens
396 To keep the implementation simple, the "added x, updated y, removed z"
397 information is ignored completely and no longer appears in the output.
399 * HTTP server: handle message resends
401 If a client gave up waiting for the server's response and resent its message
402 while the server was still processing the message, syncing failed with
403 "protocol error: already processing a message" raised by the
404 syncevo-dbus-server because it wasn't prepared to handle that situation.
406 The right place to handle this is inside the syncevo-http-server, because it
407 depends on the protocol (HTTP in this case) whether resending is valid or
408 not. It handles that now by tracking the message that is currently in
409 processing and matching it against each new message. If it matches, the new
410 request replaces the obsolete one without sending the message again to
411 syncevo-dbus-server. When syncevo-dbus-server replies to the old message, the
412 reply is used to finish the newer request.
414 * PBAP: incremental sync (FDO #59551)
416 Depending on the SYNCEVOLUTION_PBAP_SYNC env variable, syncing reads
417 all properties as configured ("all"), excludes photos ("text") or
418 first text, then all ("incremental").
420 When excluding photos, only known properties get requested. This
421 avoids issues with phones which reject the request when enabling
422 properties via the bit flags. This also helps with
423 "databaseFormat=^PHOTO".
425 * PIM: use incremental sync for PBAP by default (FDO #59551)
427 When doing a PBAP sync, PIM manager asks the D-Bus sync helper to set
428 its SYNCEVOLUTION_PBAP_SYNC to "incremental". If the env variable
429 is already set, it does not get overwritten, which allows overriding
432 * PIM: set debug level in peer configs via env variable
434 Typically the peer configs get created from scratch, in particular
435 when testing with testpim.py. In that case the log level cannot be set
436 in advance and doing it via the D-Bus API is also not supported.
437 Therefore, for debugging, use SYNCEVOLUTION_LOGLEVEL=<level> to create
438 peers with a specific log level.
440 * PIM: include pim-manager-api.txt in source distro (FDO #62516)
442 The text file must be listed explicitly to be included by "make dist".
444 * PIM: "full name" -> "fullname" fix in documentation (FDO #62515)
446 Make the documentation match the code. A single word without
447 space makes more sense, so let's go with what the code already
450 * PIM: enhanced searching (search part of FDO #64177)
452 Search terms now also include 'is/contains/begins-with/ends-with'
453 and they can be combined with 'and' and 'or', also recursively.
455 * PIM: Pinyin sorting for zh languages (part of FDO #64173)
457 Full interleaving of Pinyin transliterations of Chinese names with
458 Western names can be done by doing an explicit Pinyin transliteration
459 as part of computing the sort keys.
461 This is done using ICU's Transliteration("Han-Latin"), which we have
462 to call directly because boost::locale does not expose that API.
464 We hard-code this behavior for all "zh" languages (as identified by
465 boost::locale), because by default, ICU would sort Pinyin separately
466 from Western names when using the "pinyin" collation.
468 * PIM: new return value for SyncPeer(), new SyncProgress signal (FDO #63417)
470 The SyncPeer() result is derived from the sync statistics. To have
471 them available, the "sync done" signal must include the SyncReport.
473 Start and end of a sync could already be detected; "modified" signals
474 while a sync runs depends on a new signal inside the SyncContext when
475 switching from one cycle to the next and at the end of the last one.
477 * PIM: allow removal of data together with database removal (part of FDO #64835)
479 There is a difference in EDS between removing the database definition
480 from the ESourceRegistry (which makes the data unaccessible via EDS)
481 and removing the actual database. EDS itself only removes the definition
482 and leaves the data around to be garbage-collected eventually. This is
483 not what we want for the PIM Manager API; the API makes a stronger
484 guarantee that data is really gone.
486 Fixed by introducing a new mode flag for the deleteDatabase() method
487 and deleting the directory of the source directly in the EDS backend,
488 if requested by the caller.
490 The syncevolution command line tool will use the default mode and thus
491 keep the data around, while the PIM Manager forces the removal of
494 * EDS: create new databases by cloning the builtin ones (FDO #64176)
496 Instead of hard-coding a specific "Backend Summary Setup" in
497 SyncEvolution, copy the config of the system database. That way
498 special flags (like the desired "Backend Summary Setup" for local
499 address books) can be set on a system-wide basis and without having to
500 modify or configure SyncEvolution.
502 Because EDS has no APIs to clone an ESource or turn a .source file
503 into a new ESource, SyncEvolution has to resort to manipulating and
504 creating the keyfile directly.
506 * EDS contacts: update PHOTO+GEO during slow sync, avoid rewriting PHOTO file
508 If PHOTO and/or GEO were the only modified properties during a slow
509 sync, the updated item was not written into local storage because
510 they were marked as compare="never" = "not relevant".
512 For PHOTO this was intentional in the sample config, with the
513 rationale that local storages often don't store the data exactly as
514 requested. When that happens, comparing the data would lead to
515 unnecessary writes. But EDS and probably all other local SyncEvolution
516 storages (KDE, file) store the photo exactly as requested, so not
517 considering changes had the undesirable effect of not always writing
520 For GEO, ignoring it was accidental.
522 * EDS contacts: avoid unnecessary DB writes during slow sync
524 Traditionally, contacts were modified shortly before writing into EDS
525 to match with Evolution expectations (must have N, only one CELL TEL,
526 VOICE flag must be set). During a slow sync, the engine compare the
527 modified contacts with the unmodified, incoming one. This led to
528 mismatches and/or merge operations which end up not changing anything
529 in the DB because the only difference would be removed again before
532 * EDS contacts: read-ahead cache
534 Performance is improved by requesting multiple contacts at once and
535 overlapping reading with processing. On a fast system (SSD, CPU fast
536 enough to not be the limiting factor), testpim.py's testSync takes 8
537 seconds for a "match" sync where 1000 contacts get loaded and compared
538 against the same set of contacts. Read-ahead with only 1 contact per
539 query speeds that up to 6.7s due to overlapping IO and
540 processing. Read-ahead with the default 50 contacts per query takes
541 5.5s. It does not get much faster with larger queries.
543 * command line: execute --export and --print-items while the source is still reading
545 Instead of reading all item IDs, then iterating over them, process
546 each new ID as soon as it is available. With sources that support
547 incremental reading (only the PBAP source at the moment) that provides
548 output sooner and is a bit more memory efficient.
550 * WebDAV: avoid segfault during collection lookup
552 Avoid referencing pathProps->second when the set of paths that
553 PROPFINDs returns is empty. Apparently this can happen in combination
556 * engine: prevent timeouts in HTTP server mode
558 HTTP SyncML clients give up after a certain timeout (SyncEvolution
559 after RetryDuration = 5 minutes by default, Nokia e51 after 15
560 minutes) when the server fails to respond.
562 This can happen with SyncEvolution as server when it uses a slow
563 storage with many items, for example via WebDAV. In the case of slow
564 session startup, multithreading is now used to run the storage
565 initializing in parallel to sending regular "keep-alive" SyncML
566 replies to the client.
568 By default, these replies are sent every 2 minutes. This can be
569 configured with another extensions of the SyncMLVersion property:
570 SyncMLVersion = REQUESTMAXTIME=5m
572 Other modes do not use multithreading by default, but it can be
573 enabled by setting REQUESTMAXTIME explicitly. It can be disabled
574 by setting the time to zero.
576 The new feature depends on a libsynthesis with multithreading enabled
577 and glib >= 2.32.0, which is necessary to make SyncEvolution itself
578 thread-safe. With an older glib, multithreading is disabled, but can
579 be enabled as a stop-gap measure by setting REQUESTMAXTIME explicitly.
581 * Various testing and stability enhancements. SyncEvolution had to
582 be made thread-safe for the HTTP timeout prevention.
585 SyncEvolution 1.3.99.3, 06.03.2013
586 ==================================
588 Another development snapshot, with a particular focus on enhancing
589 (and in some cases, fixing) searching in the PIM Manager. The PIM
590 Manager in this snapshot depends on folks 0.9.x and thus gee
591 0.8. Support for Bluez 5 was added. The PIM Manager API was extended
592 by addding CreatePeer and ReplaceSearch. The previous methods,
593 SetPeer and RefineSearch, are still supported.
595 Some issues in CalDAV, WebDAV and SyncML were fixed.
597 Graham R. Cobb contributed several patches for enhancing ActiveSync
598 support and making it work with Exchange 2010.
602 * PIM Manager: add ReplaceSearch, always allow it
604 The new ReplaceSearch is more flexible than RefineSearch. It can
605 handle both tightening the search and relaxing it. The downside of it
606 is the more expensive implementation (must check all contacts again,
607 then find minimal set of change signals to update view).
609 Previously, a search which had no filter set at all at the begining
610 could not be refined. This limitation of the implementation gets
611 removed by always using a FilteredView, even if the initial filter is
614 * PIM Manager: introduce CreateConfig()
616 That SetPeer() allows modifying and creating a config leads to race
617 conditions when multiple clients want to create a config. The new
618 CreateConfig() avoids that by atomically checking that a config does
619 not exist yet and creating it.
621 SetPeer() is still available for backwards compatibility. It continues
622 to be used for modifying an existing config in TestContacts.testSync
623 to check the effect of the logging settings.
625 * PIM Manager: fix double entries in filtered search with limit
627 Stressing the FilteredView by using it in tests originally written
628 for the FullView showed that the filling up a view may have
629 used data while it was inconsistent internally, leading to
630 contacts being present multiple times.
632 * PIM Manager and sync: support location = GEO property (FDO #60373)
634 Exposed as "location" -> (lat, long) in the D-Bus bindings.
635 Reading, writing and updating are supported.
637 * PIM Manager: support groups = CATEGORIES (FDO #60380)
639 Allow reading and writing of groups (folks terminology), aka
642 * PIM Manager: intelligent phone search in EDS (part of FDO #59571)
644 If phone number search is enabled in EDS, then the direct search in
645 EDS now uses the more accurate
646 E_BOOK_QUERY_EQUALS_NATIONAL_PHONE_NUMBER comparison, with the E164
647 formatted caller ID as value to compare against. This gives
648 semantically correct results. The previous solution (now the
649 fallback) had to use substring searches, which did not match if the
650 contact's phone number was not formatted according to E164 and
651 which may have matched the wrong contacts if the trailing numbers
654 * PIM Manager : use pre-computed normalized phone numbers from EDS (part of FDO #59571)
656 When available, the pre-computed E164 number from EDS will be used
657 instead of doing one libphonebook parser run for each telephone
658 number while reading. Benchmarking showed that this parsing was the
659 number one hotspot, so this is a considerable improvement.
661 * PIM Manager: fix error messages
663 Ensure and check that no unnecessary ERROR messages are printed.
664 libfolks was used slightly incorrectly, leading to several
665 harmless error messages (glib asserts). libphonenumber printed
666 its error messages to stdout.
668 * PIM Manager: fix memory leaks during writing of contacts
670 Constructing the GValues created additional references instead
671 of taking over ownership as intended.
673 * D-Bus server: fix read-after-free bug when using syslog
675 openlog() expects the string to remain valid. Must ensure that in
676 LoggerSyslog by making a copy. Found with valgrind.
678 * PIM Manager: make implementation of some of the D-Bus methods thread-safe
680 The goal is to make it easier to extend syncevo-dbus-server
681 with other IPC mechanisms, which then can call the native C++
684 That code was not prepared to handle calls in threads other than the
685 main one. Now this is checked when entering the methods and work is
686 shifted to the main thread if necessary. In the meantime the calling
687 thread waits for completion.
689 * PIM Manager: check responsiveness (part of FDO #60851)
691 Enhanced the testActive test so that it can detect when the D-Bus
692 server stops responding for too long. One major reason for that was
693 event processing in folks, which got improved as part of
694 https://bugzilla.gnome.org/show_bug.cgi?id=694385
696 * PIM Manager: adapt to gee 0.8
698 Changed the code to compile with gee 0.8, as used by folks 0.9.x.
699 Older versions of folks are no longer supported.
701 * PBAP: support Bluez 5
703 The new Bluez 5 API is the third supported API for doing PBAP
704 transfers. It gets checked first, then the PBAB backend falls back to
705 new-style obexd (file based, similar to Bluez 5, but not quite the
706 same) and finally old-style obexd (data transfer via D-Bus).
708 In contrast to previous APIs, Bluez 5 does not report the reason for a
709 failed PBAP transfer. SyncEvolution then throws a generic "transfer
710 failed" error with "reason unknown" as message.
712 * command line: recover from slow sync with new sync modes
714 The error message for an unexpected slow sync still mentioned
715 the old and obsolete "refresh-from-client/server" sync modes.
716 Better mention "refresh-from-local/remote".
718 * CalDAV: more workarounds for Google CalDAV + unique IDs
720 Google became even more strict about checking REV. Tests which
721 reused a UID after deleting the original item started to fail sometime
722 since middle of December 2012.
724 * CalDAV: work around Google server regression (undeclared namespace prefix in XML)
726 Google CalDAV for a while (December 2012 till January 2013) sent
727 invalid XML back when asked to include CardDAV properties in a
728 PROPFIND. This got rejected in the XML parser, which prevents
729 syncing calendar data:
731 Neon error code 1: XML parse error at line 55: undeclared namespace prefix
733 In the meantime Google fixed the issue in response to a bug report
734 via email. But the workaround, only asking for the properties which
735 are really needed, still makes sense and thus is kept.
737 * WebDAV: don't send Basic Auth via http proactively (FDO #57248)
739 Sending basic authentication headers via http is insecure. Only do
740 it proactively when the connection is encrypted and thus protects
741 the information or when the server explicitly asks for it.
743 * Nokia: always add TYPE=INTERNET to EMAIL (FDO #61784)
745 Without the explicit TYPE=INTERNET, email addresses sent to a Nokia
746 e51 were not shown by the phone and even got lost eventually (when
749 This commit ensures that the type is set for all emails sent to any
750 Nokia phone, because there may be other phones which need it and
751 phones which don't, shouldn't mind. This was spot-checked with a N97
752 mini, which works fine with and without the INTERNET type.
754 This behavior can be disabled again for specific Nokia phones by
755 adding a remote rule which sets the addInternetEmail session variable
758 Non-Nokia phones can enable the feature in a similar way, by setting
759 the variable to TRUE.
761 * SyncML: config option for broken peers
763 Some peers have problems with meta data (CtCap, old Nokia phones)
764 and the sync mode extensions required for advertising the restart
765 capability (Oracle Beehive). The default in SyncEvolution is to
766 advertise the capability, so manual configuration is necessary when
767 working with a peer that fails in that mode.
769 Because the problem occurs when SyncEvolution contacts the peers
770 before it gets the device information from the peer, dynamic rules
771 based on the peer identifiers cannot be used. Instead the local config
772 must already disable these extra features in advance.
774 The "SyncMLVersion" property gets extended for this. Instead of just
775 "SyncMLVersion = 1.0" (as before) it now becomes possible to say
776 "SyncMLVersion = 1.0, noctcap, norestart".
778 "noctcap" disables sending CtCap. "norestart" disables the sync mode
779 extensions and thus doing multiple sync cycles in the same session
780 (used between SyncEvolution instances in some cases to get client and
781 server into sync in one session).
783 Both keywords are case-insensitive. There's no error checking for
786 The "SyncMLVersion" property was chosen because it was already in use
787 for configuring SyncML compatibility aspects and adding a new property
788 would have been harder.
790 * ActiveSync: added support for specifying folder names
792 Previously, the database field was interpreted as a Collection ID. This adds
793 logic to allow the database to be interpreted as a folder path. The logic is:
795 1) If the database is an empty string, pass it through (this is the most
796 common case as it is interpreted as "use the default folder for the
798 2) If the database matches a Collection ID, use the ID (this is the same as
799 the previous behaviour).
800 3) If the database matches a folder path name, with an optional leading "/",
801 use the Collection ID for the matching folder.
802 4) Otherwise, force a FolderSync to get the latest folder changes from the
803 server and repeat steps 2 and 3
804 5) If still no match, throw an error.
806 * ActiveSync: support for listing databases
808 Now --print-databases scans folders on the ActiveSync server and
809 shows suitable folders for the ActiveSync backends instead of the
810 previous, hard-coded help text.
812 Invoking --print-databases can be used as a workaround for
813 "SyncFolder error: Invalid synchronization key" errors. A better
814 solution would be to do that automatically, but there was no time
815 to implement that. See FDO #61869 and "[SyncEvolution] Activesync server losing state"
816 http://thread.gmane.org/gmane.comp.mobile.syncevolution/4295
818 * command line: show backend error when listing databases fails
820 The command line swallowed errors thrown by the backend while listing
821 databases. Instead it just showed "<backend name>: backend failed". The goal
822 was to not distract users who accidentally access a non-functional backend.
823 But the result is that operations like --configure or --print-databases could
824 fail without giving the user any hint about the root cause of the issue.
826 Now the error explanation in all its gory details is included.
828 For example, not having activesyncd running leads to:
829 INFO] eas_contact: backend failed: fetching folder list:
830 GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
831 org.meego.activesyncd was not provided by any .service files
833 And running activesyncd without the necessary gconf keys shows up as:
834 [INFO] eas_contact: backend failed: fetching folder list:
835 GDBus.Error:org.meego.activesyncd.Error.AccountNotFound: Failed to find
836 account [syncevolution@lists.intel.com]
838 * Minor memory leak fix when using GDBus GIO: GDBusMethodInfo
840 Also depends on a glib fix, see https://bugzilla.gnome.org/show_bug.cgi?id=695376
844 Avoid -lrt in make dependencies. Add missing pcre libs to
845 syncevo-dbus-server. sqlite backend needs "#include <stdio.h>"
846 (patch from Mario Kicherer).
849 SyncEvolution 1.3.99.2, 13.12.2012
850 ==================================
852 Another development snapshot. Includes all fixes that went into 1.3.2
853 and several improvements to the PIM Manager. Documentation was updated
854 and extended considerably. The pim-manager-api.txt now describes the
855 abstract API while src/dbus/server/pim/README explains how
856 SyncEvolution implements it.
861 * PIM Manager searches for a caller ID ('phone' search) in EDS
862 directly while folks still starts up. No unification is done of
863 these results. Intermediate results are replaced by the final ones
864 from folks once those are ready.
866 * PIM Manager: allow configuration of session directories (part of FDO #55921)
868 Useful for moving the session directories to a temporary file system.
869 They are essentially just useful for debugging when used as part of
872 - "logdir" - a directory in which directories are created with
873 debug information about sync session
874 - "maxsessions" - number of sessions that are allowed to exist
875 after a sync (>= 0): 0 is special and means unlimited,
876 1 for just the latest, etc.;
877 old sessions are pruned heuristically (for example,
878 keep sessions where something changed instead of
879 some where nothing changed), so there is no hard
880 guarantee that the last n sessions are present.
882 * PIM Manager: write less data to disk (part of FDO #55921)
884 Avoid writing config file changes to disk by enabling a new
885 "ephemeral" mode for syncing via the PIM Manager. In this mode,
886 config file changes are not flushed resp. discarded directly.
887 This prevents writing to .ini files in ~/.config.
889 The "synthesis" binfile client files are still written, but they get
890 redirected into the session directory, which can (and should) be set
891 to a temp file system and get deleted again quickly.
893 Data dumps are turned off now in the configs created by the PIM
896 * syncevo-dbus-server: use syslog instead of standard output by default
898 * syncevo-dbus-server: command line options for controlling
901 -d, --duration=seconds/'unlimited' Shut down automatically
902 when idle for this duration (default 300 seconds)
903 -v, --verbosity=level Choose amount of output, 0 = no output,
904 1 = errors, 2 = info, 3 = debug; default is 1.
905 -o, --stdout Enable printing to stdout (result of operations)
906 and stderr (errors/info/debug).
907 -s, --no-syslog Disable printing to syslog.
908 -p, --start-pim Activate the PIM Manager (= unified address book)
911 * PIM Manager: store set of active address books persistently (FDO #56334)
913 Together with storing the sort order persistently, this allows
914 restarting the daemon and have it create the same unified address book
917 * PIM Manager: remove colon from valid peer UID character set (FDO #56436)
919 Using the UID as part of file names gets more problematic when
920 allowing colons. Remove that character from the API and enforce
921 the format in the source code.
923 * PIM Manager API: introduce contact ID and use it for reading
925 This makes it easier for a client to fully polulate its view with
926 contact data. Previously it could happen that due to concurrent
927 changes in the server, a client was returned data for the same
928 contact multiple times. A client had to detect that and re-issue
931 * PIM Manager API: optional ViewAgent.Quiescent() (FDO #56428)
933 The callback is guaranteed to be invoked once when a search has
934 finished sending its initial results, and not sooner. This makes it
935 possible to check whether the current data contains some contact or
938 * PIM Manager: limit number of search results (FDO #56142)
940 A 'limit' search term with a number as parameter (formatted as string)
941 can be added to a 'phone' or 'any-contains' search term to truncate the
942 search results after a certain number of contacts. Example:
943 Search([['any-contains', 'Joe'], ['limit', '10']])
944 => return the first 10 Joes.
946 As with any other search, the resulting view will be updated if
947 contact data changes.
949 The limit must not be changed in a RefineSearch(). A 'limit' term may
950 (but doesn't have to) be given. If it is given, its value must match
951 the value set when creating the search. This limitation simplifies the
952 implementation and its testing. The limitation could be removed if
953 there is sufficient demand.
955 * PIM Manager: fix refining a search
957 Due to not mapping the local index in the view to the parent's index,
958 refining only worked in views where parent and child had the same
959 index for the contacts in the search view.
961 * PIM Manager: fix starting when done via search
963 When the unified address book (= FullView) was not running yet at the
964 time when a client wanted to search it, the unified address book was
965 not started and thus the search never returned results.
967 * PIM Manager: fix writing contact, support photo and notes
969 folks and EDS do not support writing properties in parallel
970 (https://bugzilla.gnome.org/show_bug.cgi?id=652659). Must serialize
971 setting of modified properties.
973 * PIM Manager: fix incorrect contact removal signals in filtered view
975 The filtered view did not check whether a parent's removed contact was
976 really part of the view before sending a removal signal for it.
978 * D-Bus: missing out parameters in D-Bus introspection XML (FDO #57292)
980 The problem was in the C++ D-Bus binding. If the method that gets bound
981 to D-Bus returns a value, that value was ignored in the signature:
982 int foo() => no out parameter
984 It works when the method was declared as having a retval:
985 void foo (int &result) => integer out parameter
987 This problem existed for both the libdbus and the GIO D-Bus
988 bindings. In SyncEvolution it affected methods like GetVersions().
990 * PIM Manager performance: pre-compute normalized telephone numbers
992 Looking up by phone number spends most of its cycles in normalizing of
993 the phone numbers in the unified address book. Instead of doing that
994 work over and over again during the search, do it once while loading.
996 Looking up a phone number only once does not gain from this change, it
997 even gets slower (more memory intensive, less cache locality). Only
998 searching multiple times becomes faster.
1000 Ultimately it would be best to store the normalized strings together
1001 with the telephone number inside EDS when the contact gets
1002 created. Work on that is in progress.
1004 * PIM Manager: improve performance of FullView sorting
1006 This fixes the hotspot during populating the FullView content: moving
1007 contacts around required copying IndividualData and thus copying
1008 complex C++ structs and strings. Storing pointers and moving those
1009 avoids that, with no lack of convenience thanks to boost::ptr_vector.
1011 Reordering also becomes faster, because the intermediate copy only
1012 needs to be of the pointers instead of the full content.
1014 * PIM Manager example: add benchmarking
1016 The new "checkpoints" split up the whole script run into pieces which
1017 are timed separately, with duration printed to stdout. In addition,
1018 tools like "perf" can be started for the duration of one phase.
1020 * SyncML: workarounds for broken peers
1022 Some peers have problems with meta data (CtCap, old Nokia phones) and
1023 the sync mode extensions required for advertising the restart
1024 capability (Oracle Beehive).
1026 Because the problem occurs when SyncEvolution contacts the peers
1027 before it gets the device information from the peer, dynamic rules
1028 based on the peer identifiers cannot be used. Instead the local config
1029 must already disable these extra features in advance.
1031 The "SyncMLVersion" property gets extended for this. Instead of just
1032 "SyncMLVersion = 1.0" (as before) it now becomes possible to say
1033 "SyncMLVersion = 1.0, noctcap, norestart".
1035 "noctcap" disables sending CtCap. "norestart" disables the sync mode
1036 extensions and thus doing multiple sync cycles in the same session
1037 (used between SyncEvolution instances in some cases to get client and
1038 server into sync in one session).
1040 Both keywords are case-insensitive. There's no error checking for
1043 The "SyncMLVersion" property was chosen because it was already in use
1044 for configuring SyncML compatibility aspects and adding a new property
1045 would have been harder.
1047 * EDS: fix creating databases
1049 --create-database was broken in combination with the final code in EDS
1050 3.6 because it passed NULL for the UID to e_source_new_with_uid(),
1051 which is considered an error by the implementation of that
1052 method. Must use e_source_new() if we don't have a UID.
1054 * fixed some memory leaks, extended tests to cover new features and bugs
1057 SyncEvolution 1.3.99.1, 25.10.2012
1058 ==================================
1060 Development snapshot. The PIM Manager API implementation is fully
1061 implemented, see src/dbus/server/pim/README for an introduction. The
1062 PBAP backend together with a new one-way caching sync mode provides an
1063 efficient way of keeping a local database in sync via Bluetooth with a
1064 phone which does not implement SyncML.
1068 * workarounds for warnings from g++ 4.5
1070 * engine: : local cache sync mode
1072 This patch introduces support for true one-way syncing ("caching"):
1073 the local datastore is meant to be an exact copy of the data on the
1074 remote side. The assumption is that no modifications are ever made
1075 locally outside of syncing. This is different from one-way sync modes,
1076 which allows local changes and only temporarily disables sending them
1079 Another goal of the new mode is to avoid data writes as much as
1082 This new mode only works on the server side of a sync, where the
1083 engine has enough control over the data flow. Setting "sync" to:
1084 - "local-cache-incremental" will do an incremental sync (if possible)
1085 or a slow sync (otherwise). This is usually the right mode to use,
1086 and thus has "local-cache" as alias.
1087 - "local-cache-slow" will always do a slow sync. Useful for
1088 debugging or after (accidentally) making changes on the local side.
1089 An incremental sync will ignore such changes because they are not
1090 meant to happen, aren't checked for to improve performance and
1091 thus will leave client and server out-of-sync!
1093 Both modes are recorded in the sync report of the local side. The
1094 target side is the client and records the normal "two-way" or "slow"
1097 With the current SyncEvolution contact field list, first, middle and
1098 last name are used to find matches for contacts. For events, tasks
1099 and memos, time, summary and description are used.
1101 * HTTP proxy: useProxy=0 overrides http_* env variables
1103 Previously, if http_proxy was set, a proxy was used even if
1104 explicitly disabled. This prevented disabling the use of a proxy
1105 which only made sense in some cases, like accessing something
1106 that runs locally. Explicitly telling SyncEvolution to ignore
1107 http_proxy is necessary because it doesn't support no_proxy.
1109 * WebDAV: auto-discovery fix
1111 With Google Contact + CardDAV the auto-discovery failed after
1112 finding the default address book, without reporting that result.
1114 * command line: implement --create/remove-database
1116 Creating a database is only possible with a chosen name. The UID is
1117 chosen automatically by the storage. Only implemented in the EDS
1120 * file backend: sub-second mod time stamps
1122 Change tracking in the file backend used to be based on the
1123 modification time in seconds. When running many syncs quickly (as in
1124 testing), that can lead to changes not being detected when they happen
1125 within a second. Now the file backend also includes the sub-second part of the
1126 modification time stamp, if available.
1128 This change is relevant when upgrading SyncEvolution: most of the
1129 items will be considered "updated" once during the first sync after
1130 the upgrade (or a downgrade) because the revision strings get
1131 calculated differently.
1133 * D-Bus server: avoid progress outside of 0-100% range
1135 For example in the new TestLocalCache.testItemDelete100, the
1136 percentage value in the ProgressChanged signal become larger
1137 than 100 and then revert to 100 at the end of the sync.
1139 Seems the underlying calculation is faulty or simply inaccurate.
1140 This is not fixed. Instead the result is just clipped to the valid
1143 * code cleanup + improvements in testing
1146 SyncEvolution 1.3.1 -> 1.3.2, 05.11.2012
1147 ========================================
1149 Minor (or major, if you depend on auto syncing) bug fix
1152 * auto sync: only synced once (FDO #56667)
1154 A successful sync was incorrectly treated like a sync with a permanent
1155 failure, which prevents further automatic syncing.
1157 * auto sync: notifications were not translated
1159 The code which enabled localization of messages created by the
1160 D-Bus server was incomplete. Localization was only enabled
1161 accidentally through KDE if the KDE platform modules was enabled
1162 during compilation and installed.
1164 * HTTP Proxy: useProxy=0 overrides http_* env variables
1166 Previously, if http_proxy was set, a proxy was used even if
1167 explicitly disabled. This prevented disabling the use of a proxy
1168 which only made sense in some cases, like accessing something
1169 that runs locally. Explicitly telling SyncEvolution to ignore
1170 http_proxy is necessary because it doesn't support no_proxy.
1172 * minor changes in testing and autotools files (missing Boost search path
1173 in gdbus* libs might have caused compile problems)
1176 SyncEvolution 1.3 -> 1.3.1, 05.10.2012
1177 ======================================
1179 Minor bug fix release. Details:
1181 * command line: fix output of --import for directories
1183 The running count at the start of the line (#0, #1, ...) was
1184 not incremented when reading individual files from a directory.
1186 * Funambol: work around PHOTO TYPE=image/jpeg, part II
1188 The final version of the fix hadn't made it into the source code.
1190 * vCalendar 1.0 + tasks: DUE date could be shifted by a day (FDO #55238)
1192 Because of incomplete support for time conversion, the due date
1193 could get mixed up when phone and PC were set to something other
1194 than UTC. Reported and fixed by Peter Jan.
1196 * syncevolution.org: syncevolution-evolution had incorrect dependencies
1198 Installation on older Linux distros was not possible because the ebook/ecal
1199 package dependencies were named incorrectly, for example libebook-1.2-10
1200 instead of libebook1.2-10. Only more recent packages have the extra
1201 dash, for example libebook-1.2-12. Reported by Mariusz Sokolowski.
1203 * GTK-3 UI: fixed compile problem
1205 The GTK-3 UI depends on a class from gio-unix-2.0 and failed to
1206 compile on Fedora Core 16 because the configure checks for that lib
1207 (and thus the compiler flags) were missing. Reported by Peter
1210 * Curl: allow using it in the D-Bus server
1212 In the past, using curl as HTTP transport in the syncevo-dbus-server
1213 was prevented, leading to "unsupported transport type is specified in
1214 the configuration". The reason was that using curl would block the
1215 server and make it unresponsive on D-Bus.
1217 This reason has gone away, because now the HTTP traffic happens in a
1218 separate process. Thus now it is allowed to use curl in the
1219 syncevo-dbus-server.
1221 * fix for false negative in syncevo-dbus-server testing
1224 SyncEvolution 1.2.2 -> 1.3, 10.09.2012
1225 ======================================
1227 After almost three months of public beta testing the next major
1228 version of SyncEvolution is ready for release. The pre-releases did
1229 have the desired effect of flushing out bugs not found by nightly
1230 testing alone. Thanks everyone for packaging, downloading and testing
1233 New features are KDE/Akonadi and ActiveSync support, not only in the
1234 source code but also in syncevolution.org binaries. ActiveSync is the
1235 recommended way of synchronizing contacts with Google:
1236 https://syncevolution.org/wiki/google-contacts-activesync
1238 The D-Bus server and local sync were rewritten considerably, to make
1239 the code cleaner and more robust. The CalDAV backend now also supports
1240 tasks and memos. CalDAV and CardDAV can be used in combination with a
1241 SyncML peer ("bridging SyncML and WebDAV"), thus allowing a device
1242 which only supports SyncML to talk to a WebDAV service without any
1243 intermediate storage.
1245 1.3 contains bug fixes that were not backported to 1.2.x, so upgrading
1246 is recommended. For example, SyncEvolution 1.3 is required for
1247 Evolution 3.4, otherwise photos are not exported properly. Support for
1248 Evolution >= 3.6 is in the source code, but not in syncevolution.org
1249 binaries. Further workarounds for recent changes in Google CalDAV and
1250 Funambol One Media were added.
1255 * ActiveSync: updated to work with latest activesyncd and Google, package binaries
1257 Syncing Google contacts was added to the nightly testing. Syncing
1258 contacts and events with Exchange 2012 was already working. Setup
1259 instructions and known issues are described here:
1260 https://syncevolution.org/wiki/google-contacts-activesync
1262 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
1264 When deleting an item on phone and locally, the next sync failed with
1265 ERROR messages about "object not found". This has several reasons:
1266 - libsynthesis super data store attempts to read items
1267 which may or may not exist (triggers ERROR message)
1268 - it checks for 404 but Evolution backends only return a generic
1269 database error (causes sync to fail)
1271 * phone sync: get phone vendor and model from Device ID profile (BMC #736)
1273 In the past we have relied on the user-modifiable device name to be
1274 the fingerprint for matching a phone to a template which is unreliable.
1276 This release changes this in the cases where the phone supports the
1277 Device ID profile (DIP). If support for DIP is detected, then we
1278 extract the vendor and product ids and attempt to associate them
1279 with a product and vendor name by using a newly added lookup table.
1281 This lookup table has to be maintained manually and depends on
1282 contributions by users to cover more devices. See
1283 http://blixtra.org/blog/2011/09/22/syncevolution-needs-you-or-at-least-your-bluetooth-phones/
1285 * vCalendar 1.0: fixed recurring all-day event support
1287 vCalendar 1.0 cannot represent all-day events. The workarounds for
1288 mapping iCalendar 2.0 all-day events into vCalendar 1.0 was
1289 incomplete, leading to effects like shifting EXDATEs and end
1292 * Funambol: ignore UID
1294 Funambol's OneMedia sends UID, but not RECURRENCE-ID. That becomes a
1295 problem when multiple events of the same event series are added to a
1296 backend which follows the iCalendar 2.0 standard (CalDAV, EDS, KDE),
1297 because these events all look like the master event, and there can be
1300 SyncEvolution now strips the UID from all events coming from any
1301 Funambol server (regardless of the version). If a future Funambol
1302 server release adds support for both UID and RECURRENCE-ID, then
1303 SyncEvolution will have to be updated to take advantage of the
1304 improved server. Because the RECURRENCE-ID is also getting
1305 stripped (despite not being set at the moment), SyncEvolution should
1306 continue to work as it does now even if the server changes.
1308 It would have been nice to limit this workaround to affected Funambol
1309 server versions, but an inquiry on the Funambol mailing list didn't
1310 get a reply, therefore SyncEvolution is playing it safe and assumes
1311 that all future Funambol releases will have the same problem.
1313 * Funambol: work around PHOTO TYPE=image/jpeg
1315 A combination of Funambol Android and Funambol server recently led to
1316 the Funambol server sending PHOTO data with TYPE=image/jpeg. This is
1317 invalid and caused EDS to reject the photo (Vladimir Elisseev,
1318 "[SyncEvolution] issues with syncing photos").
1320 Work around the problem by only keeping the part of the type after the
1321 last slash, if there is any. For image/jpeg and similar types that
1322 leads to the desired value and does not affect valid values, because
1323 those do not contain a slash
1324 (http://www.iana.org/assignments/media-types/image/index.html).
1326 * Funambol: avoid slow syncs in refresh from server
1328 libsynthesis has traditionally implemented "refresh-from-server" as
1329 "delete local data" plus "slow" sync. This is more compatible, because
1330 some servers (like Google) do not support "refresh-from-server".
1332 But it has the downside that the server cannot know that the client
1333 won't send any data, and Funambol's OneMedia now only allows one slow
1334 sync before blocking the next one for a certain period of time. This is
1335 done to prevent excessive resource usage by badly behaving clients.
1337 To accomodate both kinds of servers, the new "enableRefreshSync"
1338 sync property can be set set to explicitly allow the usage of
1339 the "refresh-from-server" sync mode. It's off by default. The Funambol
1340 template has it turned on, existing configs must be updated manually
1341 (see upgrading comments below).
1343 * Mobical (aka Everdroid): stopped testing memo syncing
1345 Memos used to work, but now only trigger an unspecific 400 error
1348 * GTK-UI: accept service config with a username again (BMC#23106)
1350 Suppressing configs with empty username had undesired side effects:
1351 modifying configs for direct syncing with a device incorrectly
1352 triggered the same error message, without any means of entering
1353 a username. The faulty check was removed without replacement.
1355 * GTK-UI: added GTK 3 version of UI
1357 When GTK 3 is found during compilation, a GTK 3 version of the
1358 UI is built. The source code of both is different to avoid
1359 excessive use of ifdefs. At the moment, both versions offer
1360 the same features. In the long run, the GTK 3 version will
1361 replace the GTK 2 version.
1363 * command line: added refresh/one-way-from-local/remote (BMC #23537)
1365 The -from-client/server sync modes are confusing because the direction
1366 of the data exchange depends on which side acts as SyncML server or
1369 This release introduces new modes which use -from-local/remote
1370 instead. The statistics and messages also use these variants
1371 now. The old modes are still understood, but are declared as "not
1372 recommended" in the documentation.
1374 * command line: config and source names are optional (BMC #23783)
1376 The need to add "foo" and "bar" pseudo config and source names to the
1377 command line even when all parameters for the operation where
1378 explicitly specified on the command line was confusing.
1380 Now it is possible to invoke item operations without the config and
1381 source name. Names which refer to non-existent configs are still
1382 accepted, as in previous releases. Typos are handled better by
1383 producing a detailed error report which includes (as applicable):
1384 - config doesn't exist
1385 - source doesn't exist or not selected
1386 - backend property not set
1388 Because luids used to be positional arguments after <config> and
1389 <source>, a new --luids keyword is necessary to indicate that the
1390 ensuing parameters are luids and not <config> and <source>.
1392 * command line: introduced --print-databases, supported for CalDAV/CardDAV
1394 Listing databases is now a dedicated operation, instead of being done
1395 whenever syncevolution was invoked without parameters.
1398 - can be combined with property assignments for backends
1399 which do not work without that additional information, for example
1401 syncevolution --print-databases \
1402 backend=[caldav|carddav] \
1406 - can be done for configured sources
1408 * command line: use both stdout and stderr
1410 Traditionally, the "syncevolution" command line tool mixed its
1411 INFO/ERROR/DEBUG messages into the normal stdout. This has the major
1412 drawback that error messages get lost during operations like
1413 syncevolution --export - @default addressbook | grep "John Doe"
1415 Now anything which is not the expected result of the operation is
1416 always sent to stderr. Obviously this includes ERROR messages. INFO
1417 and DEBUG are harder to decide. Because they usually convey meta
1418 information about the running operation, they are also sent to
1419 stderr. The output of running a sync goes to both stdout (summary)
1420 and stderr (progress).
1422 * command line: allow setting empty properties
1424 Due to the way how properties were handled internally, it wasn't
1425 possible to explicitly set a property to its default value. Instead
1426 the property was unset. For example, explicitly setting database= was
1429 This is necessary for client-test and ActiveSync, because client-test
1430 needs to know that the testing is expected to run with the default
1431 databases (something which normally is avoided by overwriting empty
1432 database properties).
1434 Now the "is set" state is tracked explicitly in the config storage and
1435 command line property APIs. Unsetting a property via the command line
1436 could be implemented with an explicit command line option, but is not
1437 supported at the moment.
1439 * command line: fixed --export <file name>
1441 When exporting items into a file, the delimiter between items
1444 * command line + local sync: fixed erroneous "Comparison impossible" output.
1446 "Comparison impossible" was incorrectly printed after a successful
1447 comparison on the target side of local sync.
1449 * local sync: fix timeout with local sync with libdbus
1451 When using libdbus instead of GIO D-Bus (as done by syncevolution.org
1452 binaries and SyncEvolution on Maemo), local sync may have aborted
1453 after 25 seconds when syncing many items with a D-Bus timeout error:
1455 [ERROR] sending message to child failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible ca
1457 Reported by Toke Høiland-Jørgensen for Harmattan. Somehow not encountered
1460 * synccompare: shorter data dump of PHOTO
1462 A full comparison of the base64 PHOTO data can be very long.
1463 Now some key characteristics of the PHOTO data (number of
1464 characters in base64 encoding, number of bytes in decoded
1465 data, md5sum of decoded data) are printed instead.
1467 That way, unintended changes of the data (different encoding,
1468 different content) should still be found while testing and
1469 added/removed photos are nicely visible in synccompare diffs.
1471 * synccompare: fixed output for byte-identical duplicates
1473 If database dumps contained byte-identical duplicates, they
1474 were treated as a single item on the left side of a comparison.
1475 This caused erroneous "added" entries on the right side.
1477 * secure password storage: usage of GNOME Keyring vs. KDE KWallet configurable
1479 Automatically detecting KDE users is not possible at the
1480 moment. Instead KDE users have to manually set the new "keyring"
1481 global config property to "KDE" (case insensitive) if the
1482 SyncEvolution installation supports both, because GNOME Keyring is the
1483 default to avoid surprises for traditional users. If only KWallet
1484 support is enabled, then this is not necessary.
1486 "GNOME" and "true/false/1/0/yes/no" can also be set. This has the
1487 advantage that keyring usage can be enabled permanently for the
1488 command line in --daemon=no mode; normally keyrings are not used in
1489 that mode because accessing them can bring up UI dialogs.
1491 It also becomes possible to disable keyring usage in syncevo-dbus-server,
1492 something which couldn't be done before.
1494 The --keyring command line option is still supported, as an alias for
1495 "[--sync-property] keyring=<value>". The default value for --keyring
1496 is true, to match the traditional behavior. In contrast to other sync
1497 properties, setting "keyring" does not require an explicit --run
1498 parameter. Again this is done to mirror traditional usage.
1500 * config: improved 'maxlogdirs' documentation
1502 The old explanation made it sound like nothing would get deleted by
1503 default ("If set, ..."). That's not correct, by default only 10
1505 Also explain the behavior of deleting intermediate sessions first.
1507 * Evolution: always create databases (PTCOM-113)
1509 Always try to create address book or calendar database, because even
1510 if there is a source there's no guarantee that the actual database
1511 was created already; the original logic for only setting this when
1512 explicitly requesting a new database therefore failed in some cases.
1514 This problem affected users who had never created anything locally
1515 and wanted to use SyncEvolution to migrate their data. Now that
1516 works without having to create dummy entries first.
1518 * Evolution contacts: changed default sync format to vCard 3.0
1520 vCard 3.0 is the better default because it has saner encoding
1521 rules and defines more properties, thus avoiding the need for
1522 non-standard extensions. However, Mobical has problems with
1523 the new default. See upgrade instructions below.
1525 * Evolution: added support for EDS 3.5.x
1527 When compiled against EDS 3.5.x or later, SyncEvolution now uses
1528 the backend code originally written for the EClient API introduced
1529 in EDS 3.2. That code was changed so that it works with the new
1530 include file rules and ESourceRegistry in EDS 3.5.x. Support
1531 for using the EClient API with EDS 3.4 was removed because maintaining
1532 three different flavors of the EDS backend code would be too much
1533 work and not gain much (just the possibility to test the EDSClient
1536 At the moment, this is a compile time choice made automatically
1537 by configure. syncevolution.org binaries are compiled against
1538 an older EDS and thus do not work with EDS 3.5.x or later.
1540 EDS 3.5.x handles authentication itself, using a standard system
1541 prompt if necessary. SyncEvolution can no longer provide the password,
1542 and thus the "databaseUser/Password" options have no effect when using
1545 * D-Bus server: fixed HTTP presence for recent libdbus
1547 Testing with libdbus 1.6.0 on Debian Testing failed because the lib
1548 changed some behavior: instead of looking up the owner of a certain
1549 bus name immediately, it now does that when invoking a
1550 method. Therefore the check for "have connection" in SyncEvolution
1551 was too simplistic and missed the fact that both were not usable,
1552 causing the server to assume that HTTP was down while in reality it
1553 should have assumed it to be up. This prevented auto-syncing and
1554 manually clicking "Sync" in the GTK UI.
1556 * D-Bus server: made notification verbosity configurable with "notifyLevel"
1558 The new "notifyLevel" per-peer configuration option allows users to
1559 control how many desktop notifications the D-Bus server produces while
1560 executing an automatic sync:
1562 0 - suppress all notifications
1563 1 - show only errors
1564 2 - show information about changes and errors (in practice currently the same as level 3)
1565 3 - show all notifications, including starting a sync (default)
1567 * WebDAV: fixed data corruption issue when uploading item with long UID
1569 In some cases data with a very long UID wasn't handled correctly,
1570 causing the out-going data to be malformed and probably causing a
1571 rejection by the server. The root cause is incorrect string handling.
1572 In releases before 1.2.99.1, only the --import operation of contacts
1573 into CardDAV were affected. In 1.2.99.1, the same code also got used
1574 for calendar items and then could also affect syncing.
1576 * CalDAV: updated Google workarounds
1578 Google started sending empty items (VCALENDAR with no VEVENT inside)
1579 which cannot be removed. SyncEvolution 1.3 ignores such items.
1581 The workaround for a 404 from Google Calendar for a GET (sending a
1582 REPORT request matching the item's UID) was broken: first, processing
1583 the result ended up calling the unset responseEnd boost function
1584 pointer, which caused the request to fail. Second, getting multiple
1585 items wasn't handled (data from all items concatenated together was
1588 That can happen in the somewhat unlike case that some items have a UID
1589 which is a complete superset of the requested UID - not realistic in
1590 real life, but happens during testing.
1592 * Google Calendar: updated URL redirect handling
1594 Google Calendar sometimes returns redirect requests to human-readable
1595 web sites (an "unavailable" page, a login form). This is of course
1596 bogus when the client is an automated CalDAV client.
1598 The "unavailable.html" case was already handled. Made it a bit more
1599 flexible to also catch possible variations of it (additional
1600 parameters, https instead of http).
1602 Added the https://accounts.google.com/ServiceLogin case. Not sure
1603 whether retrying will help in that case, but there's not much else
1604 that SyncEvolution can do.
1606 * WebDAV: bridge with SyncML
1608 Now a peer accessed via SyncML can read/write data stored in a
1609 CalDAV/CardDAV server directly. This can be used to connect a device
1610 which only supports SyncML to a CalDAV/CardDAV server, or sync data
1611 between a SyncML server and a CalDAV/CardDAV server. See "CalDAV and
1612 CardDAV" in the README for details.
1614 * WebDAV: improved --configure
1616 Added INFO output about checking sources. This helps with WebDAV when
1617 the server cannot be contacted (dead, misconfigured) because otherwise
1618 there would be no indication at all why the --configure operation
1621 Here is some example output, including aborting:
1622 $ syncevolution --configure --template webdav \
1623 syncURL=http://192.168.1.100:9000/ \
1624 username=foo password=bar retryDuration=2s \
1625 target-config@webdav-temp
1626 [INFO] creating configuration target-config@webdav-temp
1627 [INFO] addressbook: looking for databases...
1628 [INFO] addressbook: no database to synchronize
1629 [INFO] calendar: looking for databases...
1630 [INFO] calendar: no database to synchronize
1631 [INFO] memo: looking for databases...
1632 [INFO] memo: no database to synchronize
1633 [INFO] todo: looking for databases...
1634 [INFO] todo: no database to synchronize
1636 It timed out fairly quickly here because of the retryDuration=2s. That
1637 also gets placed in the resulting config, which is probably not desired.
1639 Aborting the operation is now supported:
1641 $ syncevolution --configure \
1643 syncURL=http://192.168.1.100:9000/ \
1644 username=foo password=bar \
1645 target-config@webdav-temp
1646 [INFO] creating configuration target-config@webdav-temp
1647 [INFO] addressbook: looking for databases...
1648 ^C[INFO] Asking to suspend...
1649 [INFO] Press CTRL-C again quickly (within 2s) to stop immediately (can cause problems in the future!)
1650 ^C[INFO] Aborting immediately ...
1651 [ERROR] error code from SyncEvolution aborted on behalf of user (local, status 20017): aborting as requested by user
1653 It would be good to make the CTRL-C handling code aware that it can
1654 abort immediately instead of doing the intermediate "asking to suspend"
1655 step, which only makes sense for sync sessions.
1657 * WebDAV: support tasks and memos (BMC #24893)
1659 The new backend property values "CalDAVTodo" and "CalDAVJournal"
1660 select tasks resp. memos stored in a CalDAV collection. "CalDAV"
1661 continues to select events.
1663 Events, tasks and journals can be mixed in the same resource (=
1664 URL). However, this is less efficient than storing them separately.
1666 A good CalDAV server allows filtering items by type, and SyncEvolution
1667 uses that. However, it was found that Radicale 0.7 ignores this
1668 filtering, which could have led to data loss (SyncEvolution asks for
1669 all VTODOs in preparation for a "delete all items" operation in a
1670 "CalDAVTodo" source, gets also VJOURNALs, then deletes them).
1672 Therefore SyncEvolution plays it safe and downloads the VTODO and
1673 VJOURNAL data to double-check that it is working on the right items.
1674 This causes additional traffic for well-behaving servers; currently
1675 it cannot be turned off.
1677 Tasks are exchanged as vCalendar 1.0 or iCalendar 2.0 VJOURNAL.
1678 Memos are exchanged as VTODO or plain text. The logic for storing
1679 incoming plain text is slightly different compared to the way how
1680 the EDS memo backend did it: instead of copying the first line
1681 from the text into the summary, it is now moved. In other words,
1682 the first line gets stripped. The change is primarily technically
1683 motivated; both approaches have pros and cons.
1685 * WebDAV: improved Radicale support
1687 Radicale > 0.7 will return status 200 for delete requests;
1688 is now treated like 204 by SyncEvolution. 412 'Preconditiona Failed'
1689 when asking to delete an already removed item is treated like
1690 the more common 404 'not found'. Same with 410 'gone' instead
1691 of 404 when trying to read a non-existent item.
1693 * CalDAV/CardDAV sync: improved target side output
1695 Added a "target side of local sync ready" INFO message to introduce
1696 the output which has the target context in the [INFO] tag. The sync report
1697 from the target side now has the target context embedded in brackets
1698 after the "Changes applied during synchronization" header, to avoid
1701 Sometimes the backend has to resend requests because of temporary
1702 issues. If the problem turned out to be permanent, there was a long
1703 period of time, retryDuration=5 minutes to be precice, in which no
1704 visible progress happened.
1706 Now SyncEvolution's WebDAV backend will print a message like this
1707 before going to sleep until it is time to retry:
1709 [INFO @googlecalendar] operation temporarily (?) failed, going to retry in 5.0s before giving up in 18.4s: PROPFIND: Neon error code 1: 401 Unauthorized
1711 The uncertainty comes from several factors. In this example, the 401
1712 might indicate a permanent problem (wrong credentials), or it could be
1713 Google reporting a temporary authorization problem which is (probably)
1714 meant to slow down the client while it asks the user to re-enter the
1715 password. SyncEvolution only asks for passwords once, so it tries
1716 again with the same password if it was successful with it in the
1717 past. Otherwise it gives up immediately.
1719 Another dubious example are name server lookup errors. They can be
1720 permanent (wrong host name) or temporary (name server
1721 down). SyncEvolution errs on the side of retrying, to avoid
1722 interrupting an operation which still has a chance to continue.
1724 Output from the target side of a local sync was passed through stderr
1725 redirection as chunks of text to the frontends. This had several
1727 - forwarding only happened when the local sync parent was processing
1728 the output redirection, which (due to limitations of the implementation)
1729 only happens when it needs to print something itself
1730 - debug messages were not forwarded
1731 - message boundaries might have been lost
1733 In particular the new INFO messages are relevant while the sync runs
1734 and need to be shown immediately.
1736 * WebDAV: --status for WebDAV source aborted
1738 The command line --status operation did not complete when applied to a
1739 CalDAV/CardDAV source. Instead it aborted because the operation took a
1740 code path where the backend was not fully initialized.
1742 * file backend: more flexible sync support for memos
1744 The databaseFormat=text/calendar for memos did not support
1745 synchronizing as plain text. When using the new
1746 databaseFormat=text/calendar+plain, vCalendar/iCalendar/plain text
1747 are all valid sync formats; the storage is iCalendar 2.0
1748 VJOURNAL in all cases.
1750 * WebDAV: avoid potential crash during database detection
1752 When a server responds to a PROPFIND for a path with results for some
1753 other path, then SyncEvolution crashed during the search for the
1754 default calendar or address book because of a bug in the code which
1755 was meant to handle that kind of response. Apparently Yahoo Calendar
1756 did that. Now seen again in combination with Radicale 0.6.4.
1758 In general, the code was made more robust to cope with bugs in
1759 Radicale 0.6.4. Later Radicale versions fixed these issues and also
1760 worked with SyncEvolution 1.2.2 without client-side workarounds.
1762 * WebDAV: better path normalization
1764 "syncURL" and "database" properties had to end in a trailing slash,
1765 otherwise items were not found (404 errors). Now the necessary slash
1766 is added automatically.
1768 * Curl transport: support SSLServerCertificates=<path>
1770 When the setting refers to a directory, then CURLOPT_CAINFO doesn't
1771 work (must be a file). Check this and use CURLOPT_CAPATH instead.
1773 Caveat: there are some comments in the API documentation about "NSS
1774 enabled libcurl" which supports a directory in
1775 CURLOPT_CAINFO. Hopefully providing an explicit path in CURLOPT_CAPATH
1776 also works in that configuration.
1778 * code cleanup + rewrite: syncing done in separate process
1780 syncevo-dbus-server now runs syncing in a separate process. Local
1781 sync also uses a second helper process. This makes the D-Bus server
1782 more responsive via D-Bus (no more blocking operations) and
1783 minimizes the effect of bugs in code involved with syncing
1784 (backends, system libraries, etc.).
1786 In the long term this restructuring will also allow more advanced
1787 features, like monitoring local or remote storage for changes.
1789 * SyncEvolution <-> SyncEvolution sync: multiple cycles per session
1791 SyncML only allows one send/receive cycle per session. There are cases
1792 (for example, client side merges data that a dumber server failed to
1793 match correctly) where client and server are still out of sync at
1794 the end of a cycle. When SyncEvolution syncs with another SyncEvolution
1795 instance (locally or remotely), both sides detect that the peer
1796 can continue syncing in the same session and start over automatically
1797 when needed. Previously the user had to start another sync session manually.
1799 To the user this is shown as "number of cycles" in a sync session
1800 in the sync report. "Restart" is the process of entering a new cycle.
1802 The cycles are also visible in the command line output as multiple
1805 [INFO] eds_contact: starting first time sync from client (peer is server)
1806 [INFO] creating complete data backup of source eds_contact before sync (enabled with dumpData and needed for prin
1807 Local data changes to be applied during synchronization:
1811 [INFO] eds_contact: sent 1/1
1812 [INFO] eds_contact: started
1813 [INFO] eds_contact: first time sync done successfully
1814 [INFO] eds_contact: starting normal sync from client (peer is server) <===
1815 [INFO] eds_contact: started <===
1816 [INFO] eds_contact: normal sync done successfully <===
1817 [INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges)
1819 Synchronization successful.
1821 Changes applied during synchronization:
1822 +---------------|-----------------------|-----------------------|-CON-+
1823 | | LOCAL | REMOTE | FLI |
1824 | Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
1825 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1826 | eds_contact | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1827 | refresh-from-local, 2 cycles, 0 KB sent by client, 0 KB received |
1829 | item(s) in database backup: 1 before sync, 1 after it |
1830 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1831 | start Tue Feb 7 17:07:49 2012, duration 0:03min |
1832 | synchronization completed successfully |
1833 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
1835 * SyncEvolution <-> SyncEvolution sync: negotiate UID support via SyncCap (BMC #22783)
1837 The semantic of UID/RECURRENCE-ID in calendar data is now tracked
1838 per data store involved in a sync. If full iCalendar 2.0 semantic
1839 (= IDs are globally unique) is guaranteed, then pairs are found
1840 based on these IDs. Otherwise pairs must be found by looking at
1843 Previously a hack was used to detect this kind of support (any kind
1844 of SyncEvolution instance was assumed to support it, although some
1847 * engine: add DTSTAMP+LAST-MODIFIED before writing calendar items
1849 When writing calendar items into a backend storage as iCalendar 2.0 or
1850 vCalendar 1.0, they should have DTSTAMP and LAST-MODIFIED values. DTSTAMP
1851 is expected by some CalDAV servers (like Apple). LAST-MODIFIED is usually
1852 added by the storage, but not always.
1854 In the text/plain -> syncevolution -> text/calendar -> Radicale -> EDS
1855 -> syncevolution chain the LAST-MODIFIED was not added by Radicale, which caused
1856 problems for change tracking in an EDS-based SyncEvolution.
1858 Also necessary when importing from a phone using vCalendar without
1859 DTSTAMP directly into CalDAV.
1861 * autotools: ensure that link lines are complete
1863 As mentioned by Tino Keitel on the mailing list, some libs and
1864 executables were only implicitly linked against libraries that they
1865 called directly. This happened to work by chance because these libraries
1866 ended up in the running executable anyway, due to indirect loading.
1867 Now there is a "make installcheck" test for this kind of defect
1868 and the makefiles were updated to avoid it.
1870 One exception is libsmltk, which depends on the caller providing
1871 SySync logging support.
1873 * syncevolution.org packages: fixed D-Bus server autostart in .deb and .rpm packages
1875 syncevo-dbus-server wasn't started automatically as part of a user
1876 session because /etc/xdg/autostart/syncevo-dbus-server.desktop wasn't
1877 included in the packages. This broke auto syncing after a session
1878 restart (required manually starting SyncEvolution).
1880 * syncevolution.org packages: support KDE
1882 The traditional "syncevolution-evolution" package was
1883 replaced with "syncevolution-bundle". A meta "syncevolution-evolution"
1884 package depends on it, to support seamless updates for users who have
1885 "syncevolution-evolution" installed.
1887 Binary dependencies of the main .deb are ignored for backends
1888 because loading them is optional. The new "syncevolution-kde"
1889 package has the right dependencies for KDE/Akonadi, while
1890 "syncevolution-evolution" mostly just lists standard libs
1891 if the "EDS compatibility" mode is used, where libebook/libecal
1892 are loaded dynamically.
1894 Platform specific code (GNOME keyring, KDE wallet) was moved into
1895 loadable, optional modules, to allow installation of the SyncEvolution
1896 bundle without forcing the installation of unused system components.
1898 * D-Bus: use GIO D-Bus instead of libdbus if available
1900 When compiling from source, the more modern GIO D-Bus is used instead
1901 of libdbus if available and recent enough (>= 2.30). syncevolution.org
1902 binaries still use libdbus, to stay compatible with older Linux
1905 * several minor bug fixes
1907 syncevo-dbus-server now runs under valgrind in the nightly testing,
1908 plus several more test scenarios were added. This helped to find
1909 and fix various minor memory handling issues.
1911 * developers: backend API changes
1913 beginSync/endSync() (aka m_startDataRead/m_endDataWrite) may now be
1914 called multiple times per SyncSource instance life cycle. SyncSources
1915 derived from TrackingSyncSource should work without changes. Use the
1916 Client::Source::*::testChangesMultiCycles test to check whether your
1917 backend supports this correctly.
1919 Reading and deleting must throw a 404 status exception when an item
1920 is not found. The Client::Source::*::*404 tests cover this.
1922 The special semantic of the former RegisterSyncSource::InactiveSource
1923 (invalid pointer of value 1) caused bugs, like using it in
1924 --print-databases (=> segfault) or not being able to store the result
1925 of a createSource() directly in a smart pointer (=> potential leak in
1926 SyncSource::createSource()).
1928 Obviously a bad idea to start with. Replaced with a
1929 RegisterSyncSource::InactiveSource() method which creates a real,
1930 inactive SyncSource instance which can and must be deleted by the
1933 This is a SyncSource API change for backend developers. Instead of
1934 RegisterSyncSource::InactiveSource, return
1935 RegisterSyncSource::InactiveSource(). Comparisons against
1936 RegisterSyncSource::InactiveSource needs to be replaced with a call
1937 to the new SyncSource::isInactive().
1939 Long-running backend calls are encouraged to check for events on the
1940 main glib context (either in a loop or with
1941 g_main_context_iteration(NULL)) and abort when
1942 SuspendFlags::getSuspendFlags().getState() returns
1943 SuspendFlags::ABORT.
1945 Implementing the improved local sync output required extending the
1946 D-Bus API. The Server.LogOutput signal now has an additional
1947 "process name" parameter. Normally it is empty. For messages
1948 originating from the target side, it carries that extra target
1951 This D-Bus API change is backward compatible. Older clients can still
1952 subscribe to and decode the LogOutput messages, they'll simply ignore
1953 the extra parameter. Newer clients expecting that extra parameter
1954 won't work with an older D-Bus daemon: they'll fail to decode the
1959 libgdbussyncevo is now installed as a normal library in /usr/lib,
1960 even though SyncEvolution is the only user.
1962 pcrecpp is now a new hard dependency.
1965 Upgrading from release 1.2.x:
1967 The sync format of existing configurations for Mobical (aka Everdroid)
1968 must be updated manually, because the server has encoding problems when
1969 using vCard 3.0 (now the default for Evolution contacts):
1970 syncevolution --configure \
1971 syncFormat=text/x-vcard \
1974 The Funambol template explicitly enables usage of the
1975 "refresh-from-server" sync mode to avoid getting throttled with 417
1976 'retry later' errors. The same must be added to existing configs
1978 syncevolution --configure \
1979 enableRefreshSync=TRUE \
1982 Upgrading from releases before 1.2:
1984 Old configurations can still be read. But writing, as it happens
1985 during a sync, must migrate the configuration first. Releases >= 1.2
1986 automatically migrates configurations. The old configurations
1987 will still be available (see "syncevolution --print-configs") but must
1988 be renamed manually to use them again under their original names with
1989 older SyncEvolution releases.
1992 SyncEvolution 1.2.99.3 -> 1.3, 10.09.2012
1993 =========================================
1995 Final SyncEvolution 1.3 release. The pre-releases did have the desired
1996 effect of flushing out bugs not found by nightly testing alone. Thanks
1997 everyone for packaging, downloading and testing them! Time to get it
1998 out officially as the next stable release.
2000 * D-Bus server + GIO D-Bus: shutdown fix
2002 When compiled against GIO D-Bus (not the case in syncevolution.org
2003 binaries), the syncevo-dbus-server occasionally shut down before
2004 sending out all pending D-Bus messages. Showed up only in nightly
2007 * D-Bus server + GIO D-Bus: fix auto-activation (Debian bug #599247)
2009 When syncevo-dbus-server was started on demand by the D-Bus daemon,
2010 then it registered itself with the daemon before it was ready to
2011 serve requests. Only happened in combination with GIO D-Bus and
2012 thus was not a problem before 1.2.99.x.
2014 One user-visible effect was that the GTK UI did not select the default
2015 service when it was started for the first time, because it could not
2016 retrieve that information from syncevo-dbus-server.
2018 * local sync: fix timeout with local sync with libdbus
2020 When using libdbus instead of GIO D-Bus (as done by syncevolution.org
2021 binaries and SyncEvolution on Maemo), local sync may have aborted
2022 after 25 seconds when syncing many items with a D-Bus timeout error:
2024 [ERROR] sending message to child failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible ca
2026 Reported by Toke Høiland-Jørgensen for Harmattan. Somehow not encountered
2029 * KDE: check for D-Bus to avoid crash in KApplication (BMC #25596)
2031 Some unnamed version of KDE crashes in KApplication when invoked
2032 without a D-Bus session. The reporter ran into this when compiling
2033 from source, because the SyncEvolution binary is invoked as part of
2034 the build process, which ran outside of a D-Bus session.
2036 Avoid the crash by checking for a D-Bus session bus before instantiating
2037 KApplication. Instantiating KApplication was added for KWallet support.
2038 Without D-Bus, KWallet does not work either, therefore throw an explicit
2039 error when the lack of D-Bus is detected.
2041 * Funambol: work around PHOTO TYPE=image/jpeg
2043 A combination of Funambol Android and Funambol server recently led to
2044 the Funambol server sending PHOTO data with TYPE=image/jpeg. This is
2045 invalid and caused EDS to reject the photo (Vladimir Elisseev,
2046 "[SyncEvolution] issues with syncing photos").
2048 Work around the problem by only keeping the part of the type after the
2049 last slash, if there is any. For image/jpeg and similar types that
2050 leads to the desired value and does not affect valid values, because
2051 those do not contain a slash
2052 (http://www.iana.org/assignments/media-types/image/index.html).
2054 * syncevo-http-server: fixed printing of server debug output
2056 Python failed to call logSyncEvoOutput() after adding the additional
2057 'process' parameter to LogOutput because it extracts all four
2058 parameters and then cannot pass them to logSyncEvoOutput().
2060 Now logSyncEvoOutput() uses the new process information to instantiate
2061 a logger with the right prefix, using 'sync' as fallback for messages
2062 without that information (as before).
2064 * Some minor code and test cleanup.
2067 SyncEvolution 1.2.99.3 -> 1.2.99.4, 07.08.2012
2068 ==============================================
2070 Another release candidate for SyncEvolution 1.3. Lesson learned:
2071 declaring a snapshot as "final" is a good way of luring the hidden bugs
2072 into the light. Of course, then another snapshot is needed...
2076 * D-Bus server: fix support for autoSyncDelay > 0
2078 Auto syncing was not getting triggered when using an autoSyncDelay > 0;
2079 by default it is 5 minutes. Thanks to Vladimir Elisseev for reporting
2082 * command line: fixed --export <file name>
2084 When exporting items into a file, the delimiter between items
2087 * config: improved 'maxlogdirs' documentation
2089 The old explanation made it sound like nothing would get deleted by
2090 default ("If set, ..."). That's not correct, by default only 10
2092 Also explain the behavior of deleting intermediate sessions first.
2094 * developers: fixed D-Bus interface XML
2096 Reverted to Qt 4.x compatible annotations and changed "templateName"
2097 to "getTemplate" to make it more obvious what the parameter does.
2098 Only relevant for the out-of-tree Qt UI.
2100 Fixed accidental removal of the "template" parameter in
2101 Session.GetNamedConfig(). Was not used in practice, but has to be
2102 correct in case that someone wants to use it.
2105 SyncEvolution 1.2.99.2 -> 1.2.99.3, 24.07.2012
2106 ==============================================
2108 Final release candidate for SyncEvolution 1.3 - fingers crossed,
2111 ActiveSync is now available in binaries from syncevolution.org and
2112 becomes the recommended way of synchronizing contacts with Google. EDS
2113 3.5.x and later are supported when compiling from source;
2114 syncevolution.org binaries continue to support only EDS up to 3.4.
2119 * EDS: added support for EDS 3.5.x
2121 When compiled against EDS 3.5.x or later, SyncEvolution now uses
2122 the backend code originally written for the EClient API introduced
2123 in EDS 3.2. That code was changed so that it works with the new
2124 include file rules and ESourceRegistry in EDS 3.5.x. Support
2125 for using the EClient API with EDS 3.4 was removed because maintaining
2126 three different flavors of the EDS backend code would be too much
2127 work and not gain much (just the possibility to test the EDSClient
2130 At the moment, this is a compile time choice made automatically
2131 by configure. syncevolution.org binaries are compiled against
2132 an older EDS and thus do not work with EDS 3.5.x or later.
2134 EDS 3.5.x handles authentication itself, using a standard system
2135 prompt if necessary. SyncEvolution can no longer provide the password,
2136 and thus the "databaseUser/Password" options have no effect when using
2139 * ActiveSync: updated to work with latest activesyncd and Google, package binaries
2141 Syncing Google contacts was added to the nightly testing. Syncing
2142 contacts and events with Exchange 2012 was already working. Setup
2143 instructions and known issues are described here:
2144 https://syncevolution.org/wiki/google-contacts-activesync
2146 * local sync: don't drop data comparison output on target side
2148 synccompare on the target side of a local sync was invoked with its
2149 output being redirected via an unreliable socket to the local sync
2150 parent. When the output was large, some of it might have been lost.
2152 * local sync: fixed crash
2154 When processing stdout from syncevo-local-child in
2155 syncevo-dbus-helper, the LogRedirect class was invoked recursively and
2156 tried to print the same stdout data repeatedly until the
2157 syncevo-dbus-helper crashed due to the infinite recurssion.
2159 * local sync: fixed helper process shutdown in case of parent failure
2161 The helper process only detected that the parent failed when
2162 it tried to log something while the parent had already shut down
2163 the D-Bus connection. Even that did not work reliably and differed
2164 between D-Bus libdbus and GIO.
2166 Added several test cases and fixes for "process died prematurely"
2169 * Mobical (aka Everdroid): stopped testing memo syncing
2171 Memos used to work, but now only trigger an unspecific 400 error
2174 * autotools: ensure that link lines are complete
2176 As mentioned by Tino Keitel on the mailing list, some libs and
2177 executables were only implicitly linked against libraries that they
2178 called directly. This happened to work by chance because these libraries
2179 ended up in the running executable anyway, due to indirect loading.
2180 Now there is a "make installcheck" test for this kind of defect
2181 and the makefiles were updated to avoid it.
2183 One exception is libsmltk, which depends on the caller providing
2184 SySync logging support.
2186 * D-Bus server: fixed HTTP presence for recent libdbus
2188 Testing with libdbus 1.6.0 on Debian Testing failed because the lib
2189 changed some behavior: instead of looking up the owner of a certain
2190 bus name immediately, it now does that when invoking a
2191 method. Therefore the check for "have connection" in SyncEvolution
2192 was too simplistic and missed the fact that both were not usable,
2193 causing the server to assume that HTTP was down while in reality it
2194 should have assumed it to be up. This prevented auto-syncing and
2195 manually clicking "Sync" in the GTK UI.
2197 * syncevolution.org: declare dependencies on libical and EDS
2199 Let the bundle .deb depend on libical if the lib was enabled during
2200 compilation (for example, for CalDAV). This ensures that it gets
2201 installed on systems which otherwise don't have it.
2203 "syncevolution-evolution" is compatible (and depends on) EDS up to
2204 and including 3.4. The package now declares that dependency and
2205 conflicts with more recent EDS, because even if the older EDS libs
2206 are still installed they won't work when the rest of EDS was
2209 * CalDAV + syncevolution.org: fixed segfault without libical+libecal
2211 When libical and libecal were not installed, trying to use the CalDAV
2212 backend for VEVENTs segfaulted because it depends on libical and did
2213 not check properly for it. Only affected syncevolution.org binaries.
2216 SyncEvolution 1.2.99.1 -> 1.2.99.2, 04.07.2012
2217 ==============================================
2219 Next step towards SyncEvolution 1.3. It adds a workaround for
2220 Funambol's OneMedia and fixes an old bug which became more severe in
2221 1.2.99.1. Also has some usability improvements for
2222 CalDAV/CardDAV. Hopefully it will not take long to stabilize the code,
2223 so test it now while it is still hot :-)
2228 * Funambol: ignore UID
2230 Funambol's OneMedia sends UID, but not RECURRENCE-ID. That becomes a
2231 problem when multiple events of the same event series are added to a
2232 backend which follows the iCalendar 2.0 standard (CalDAV, EDS, KDE),
2233 because these events all look like the master event, and there can be
2236 SyncEvolution now strips the UID from all events coming from any
2237 Funambol server (regardless of the version). If a future Funambol
2238 server release adds support for both UID and RECURRENCE-ID, then
2239 SyncEvolution will have to be updated to take advantage of the
2240 improved server. Because the RECURRENCE-ID is also getting
2241 stripped (despite not being set at the moment), SyncEvolution should
2242 continue to work as it does now even if the server changes.
2244 It would have been nice to limit this workaround to affected Funambol
2245 server versions, but an inquiry on the Funambol mailing list didn't
2246 get a reply, therefore SyncEvolution is playing it safe and assumes
2247 that all future Funambol releases will have the same problem.
2249 * WebDAV: fixed data corruption issue when uploading item with long UID
2251 In some cases data with a very long UID wasn't handled correctly,
2252 causing the out-going data to be malformed and probably causing a
2253 rejection by the server. The root cause is incorrect string handling.
2254 In releases before 1.2.99.1, only the --import operation of contacts
2255 into CardDAV were affected. In 1.2.99.1, the same code also got used
2256 for calendar items and then could also affect syncing.
2258 * engine: add DTSTAMP+LAST-MODIFIED before writing calendar items
2260 When writing calendar items into a backend storage as iCalendar 2.0 or
2261 vCalendar 1.0, they should have DTSTAMP and LAST-MODIFIED values. DTSTAMP
2262 is expected by some CalDAV servers (like Apple). LAST-MODIFIED is usually
2263 added by the storage, but not always.
2265 In the text/plain -> syncevolution -> text/calendar -> Radicale -> EDS
2266 -> syncevolution chain the LAST-MODIFIED was not added by Radicale, which caused
2267 problems for change tracking in an EDS-based SyncEvolution.
2269 Also necessary when importing from a phone using vCalendar without
2270 DTSTAMP directly into CalDAV.
2272 * Google Calendar: updated URL redirect handling
2274 Google Calendar sometimes returns redirect requests to human-readable
2275 web sites (an "unavailable" page, a login form). This is of course
2276 bogus when the client is an automated CalDAV client.
2278 The "unavailable.html" case was already handled. Made it a bit more
2279 flexible to also catch possible variations of it (additional
2280 parameters, https instead of http).
2282 Added the https://accounts.google.com/ServiceLogin case. Not sure
2283 whether retrying will help in that case, but there's not much else
2284 that SyncEvolution can do.
2286 * CalDAV + VJOURNAL: handle UID conflicts
2288 When asked to insert a VJOURNAL which already existed (= same UID),
2289 CalDAV servers respond with a 412 "Precondition failed" error. This
2290 needs to be detected and translated into an "item needs to be merged"
2291 result so that the engine can load the existing item, merge the data,
2292 and then write back.
2294 * WebDAV: --status for WebDAV source aborted
2296 The command line --status operation did not complete when applied to a
2297 CalDAV/CardDAV source. Instead it aborted because the operation took a
2298 code path where the backend was not fully initialized.
2300 * CalDAV/CardDAV sync: improved target side output
2302 Added a "target side of local sync ready" INFO message to introduce
2303 the output which has the target context in the [INFO] tag. The sync report
2304 from the target side now has the target context embedded in brackets
2305 after the "Changes applied during synchronization" header, to avoid
2308 Sometimes the backend has to resend requests because of temporary
2309 issues. If the problem turned out to be permanent, there was a long
2310 period of time, retryDuration=5 minutes to be precice, in which no
2311 visible progress happened.
2313 Now SyncEvolution's WebDAV backend will print a message like this
2314 before going to sleep until it is time to retry:
2316 [INFO @googlecalendar] operation temporarily (?) failed, going to retry in 5.0s before giving up in 18.4s: PROPFIND: Neon error code 1: 401 Unauthorized
2318 The uncertainty comes from several factors. In this example, the 401
2319 might indicate a permanent problem (wrong credentials), or it could be
2320 Google reporting a temporary authorization problem which is (probably)
2321 meant to slow down the client while it asks the user to re-enter the
2322 password. SyncEvolution only asks for passwords once, so it tries
2323 again with the same password if it was successful with it in the
2324 past. Otherwise it gives up immediately.
2326 Another dubious example are name server lookup errors. They can be
2327 permanent (wrong host name) or temporary (name server
2328 down). SyncEvolution errs on the side of retrying, to avoid
2329 interrupting an operation which still has a chance to continue.
2331 Output from the target side of a local sync was passed through stderr
2332 redirection as chunks of text to the frontends. This had several
2334 - forwarding only happened when the local sync parent was processing
2335 the output redirection, which (due to limitations of the implementation)
2336 only happens when it needs to print something itself
2337 - debug messages were not forwarded
2338 - message boundaries might have been lost
2340 In particular the new INFO messages are relevant while the sync runs
2341 and need to be shown immediately.
2343 * command line: fixed password + property lookup during --print-databases
2345 --print-databases for an existing configuration did not look up
2346 passwords stored in a keyring, causing the operation to fail for
2347 backends like CalDAV/CardDAV where credentials are required.
2349 Overriding source properties in that case also only worked when using
2350 the unqualified property name ("databasePassword=foo") but not when
2351 using the source name as prefix ("calendar/databasePassword=foo").
2355 Implementing the improved local sync output required extending the
2356 D-Bus API. The Server.LogOutput signal now has an additional
2357 "process name" parameter. Normally it is empty. For messages
2358 originating from the target side, it carries that extra target
2361 This D-Bus API change is backward compatible. Older clients can still
2362 subscribe to and decode the LogOutput messages, they'll simply ignore
2363 the extra parameter. Newer clients expecting that extra parameter
2364 won't work with an older D-Bus daemon: they'll fail to decode the
2368 SyncEvolution 1.2.2 -> 1.2.99.1, 22.06.2012
2369 ===========================================
2371 First pre-release of SyncEvolution 1.3. Contains bug fixes that were
2372 not backported to 1.2.x, so upgrading is recommended. For example,
2373 SyncEvolution 1.3 is required for Evolution 3.4, otherwise photos are
2374 not exported properly. Further workarounds for recent changes in
2375 Google CalDAV were added.
2377 Major new features are KDE/Akonadi support in the syncevolution.org
2378 binaries and ActiveSync support (only in the source code). The D-Bus
2379 server and local sync were rewritten considerably, to make the code
2380 cleaner and more robust. The CalDAV backend now also supports tasks
2386 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
2388 When deleting an item on phone and locally, the next sync failed with
2389 ERROR messages about "object not found". This has several reasons:
2390 - libsynthesis super data store attempts to read items
2391 which may or may not exist (triggers ERROR message)
2392 - it checks for 404 but Evolution backends only return a generic
2393 database error (causes sync to fail)
2395 * phone sync: get phone vendor and model from Device ID profile (BMC #736)
2397 In the past we have relied on the user-modifiable device name to be
2398 the fingerprint for matching a phone to a template which is unreliable.
2400 This release changes this in the cases where the phone supports the
2401 Device ID profile (DIP). If support for DIP is detected, then we
2402 extract the vendor and product ids and attempt to associate them
2403 with a product and vendor name by using a newly added lookup table.
2405 This lookup table has to be maintained manually and depends on
2406 contributions by users to cover more devices. See
2407 http://blixtra.org/blog/2011/09/22/syncevolution-needs-you-or-at-least-your-bluetooth-phones/
2409 * vCalendar 1.0: fixed recurring all-day event support
2411 vCalendar 1.0 cannot represent all-day events. The workarounds for
2412 mapping iCalendar 2.0 all-day events into vCalendar 1.0 was
2413 incomplete, leading to effects like shifting EXDATEs and end
2416 * GTK-UI: accept service config with a username again (BMC#23106)
2418 Suppressing configs with empty username had undesired side effects:
2419 modifying configs for direct syncing with a device incorrectly
2420 triggered the same error message, without any means of entering
2421 a username. The faulty check was removed without replacement.
2423 * GTK-UI: added GTK 3 version of UI
2425 When GTK 3 is found during compilation, a GTK 3 version of the
2426 UI is built. The source code of both is different to avoid
2427 excessive use of ifdefs. At the moment, both versions offer
2428 the same features. In the long run, the GTK 3 version will
2429 replace the GTK 2 version.
2431 * command line: added refresh/one-way-from-local/remote (BMC #23537)
2433 The -from-client/server sync modes are confusing because the direction
2434 of the data exchange depends on which side acts as SyncML server or
2437 This release introduces new modes which use -from-local/remote
2438 instead. The statistics and messages also use these variants
2439 now. The old modes are still understood, but are declared as "not
2440 recommended" in the documentation.
2442 * command line: config and source names are optional (BMC #23783)
2444 The need to add "foo" and "bar" pseudo config and source names to the
2445 command line even when all parameters for the operation where
2446 explicitly specified on the command line was confusing.
2448 Now it is possible to invoke item operations without the config and
2449 source name. Names which refer to non-existent configs are still
2450 accepted, as in previous releases. Typos are handled better by
2451 producing a detailed error report which includes (as applicable):
2452 - config doesn't exist
2453 - source doesn't exist or not selected
2454 - backend property not set
2456 Because luids used to be positional arguments after <config> and
2457 <source>, a new --luids keyword is necessary to indicate that the
2458 ensuing parameters are luids and not <config> and <source>.
2460 * command line: introduced --print-databases, supported for CalDAV/CardDAV
2462 Listing databases is now a dedicated operation, instead of being done
2463 whenever syncevolution was invoked without parameters.
2466 - can be combined with property assignments for backends
2467 which do not work without that additional information, for example
2469 syncevolution --print-databases \
2470 backend=[caldav|carddav] \
2474 - can be done for configured sources
2476 * command line: use both stdout and stderr
2478 Traditionally, the "syncevolution" command line tool mixed its
2479 INFO/ERROR/DEBUG messages into the normal stdout. This has the major
2480 drawback that error messages get lost during operations like
2481 syncevolution --export - @default addressbook | grep "John Doe"
2483 Now anything which not the expected result of the operation is
2484 always sent to stderr. Obviously this includes ERROR messages. INFO
2485 and DEBUG are harder to decide. Because they usually convey meta
2486 information about the running operation, they are also sent to
2487 stderr. The output of running a sync goes to both stdout (summary)
2488 and stderr (progress).
2490 * command line: allow setting empty properties
2492 Due to the way how properties were handled internally, it wasn't
2493 possible to explicitly set a property to its default value. Instead
2494 the property was unset. For example, explicitly setting database= was
2497 This is necessary for client-test and ActiveSync, because client-test
2498 needs to know that the testing is expected to run with the default
2499 databases (something which normally is avoided by overwriting empty
2500 database properties).
2502 Now the "is set" state is tracked explicitly in the config storage and
2503 command line property APIs. Unsetting a property via the command line
2504 could be implemented with an explicit command line option, but is not
2505 supported at the moment.
2507 * command line + local sync: fixed erroneous "Comparison impossible" output.
2509 "Comparison impossible" was incorrectly printed after a successful
2510 comparison on the target side of local sync.
2512 * synccompare: shorter data dump of PHOTO
2514 A full comparison of the base64 PHOTO data can be very long.
2515 Now some key characteristics of the PHOTO data (number of
2516 characters in base64 encoding, number of bytes in decoded
2517 data, md5sum of decoded data) are printed instead.
2519 That way, unintended changes of the data (different encoding,
2520 different content) should still be found while testing and
2521 added/removed photos are nicely visible in synccompare diffs.
2523 * synccompare: fixed output for byte-identical duplicates
2525 If database dumps contained byte-identical duplicates, they
2526 were treated as a single item on the left side of a comparison.
2527 This caused erroneous "added" entries on the right side.
2529 * secure password storage: usage of GNOME Keyring vs. KDE KWallet configurable
2531 Automatically detecting KDE users is not possible at the
2532 moment. Instead KDE users have to manually set the new "keyring"
2533 global config property to "KDE" (case insensitive) if the
2534 SyncEvolution installation supports both, because GNOME Keyring is the
2535 default to avoid surprises for traditional users. If only KWallet
2536 support is enabled, then this is not necessary.
2538 "GNOME" and "true/false/1/0/yes/no" can also be set. This has the
2539 advantage that keyring usage can be enabled permanently for the
2540 command line in --daemon=no mode; normally keyrings are not used in
2541 that mode because accessing them can bring up UI dialogs.
2543 It also becomes possible to disable keyring usage in syncevo-dbus-server,
2544 something which couldn't be done before.
2546 The --keyring command line option is still supported, as an alias for
2547 "[--sync-property] keyring=<value>". The default value for --keyring
2548 is true, to match the traditional behavior. In contrast to other sync
2549 properties, setting "keyring" does not require an explicit --run
2550 parameter. Again this is done to mirror traditional usage.
2552 * Evolution: always create databases (PTCOM-113)
2554 Always try to create address book or calendar database, because even
2555 if there is a source there's no guarantee that the actual database
2556 was created already; the original logic for only setting this when
2557 explicitly requesting a new database therefore failed in some cases.
2559 This problem affected users who had never created anything locally
2560 and wanted to use SyncEvolution to migrate their data. Now that
2561 works without having to create dummy entries first.
2563 * Evolution contacts: changed default sync format to vCard 3.0
2565 vCard 3.0 is the better default because it has saner encoding
2566 rules and defines more properties, thus avoiding the need for
2567 non-standard extensions. However, Mobical has problems with
2568 the new default. See upgrade instructions below.
2570 * D-Bus server: made notification verbosity configurable with "notifyLevel"
2572 The new "notifyLevel" per-peer configuration option allows users to
2573 control how many desktop notifications the D-Bus server produces while
2574 executing an automatic sync:
2576 0 - suppress all notifications
2577 1 - show only errors
2578 2 - show information about changes and errors (in practice currently the same as level 3)
2579 3 - show all notifications, including starting a sync (default)
2581 * CalDAV: updated Google workarounds
2583 Google started sending empty items (VCALENDAR with no VEVENT inside)
2584 which cannot be removed. SyncEvolution 1.3 ignores such items.
2586 The workaround for a 404 from Google Calendar for a GET (sending a
2587 REPORT request matching the item's UID) was broken: first, processing
2588 the result ended up calling the unset responseEnd boost function
2589 pointer, which caused the request to fail. Second, getting multiple
2590 items wasn't handled (data from all items concatenated together was
2593 That can happen in the somewhat unlike case that some items have a UID
2594 which is a complete superset of the requested UID - not realistic in
2595 real life, but happens during testing.
2597 * WebDAV: bridge with SyncML
2599 Now a peer accessed via SyncML can read/write data stored in a
2600 CalDAV/CardDAV server directly. This can be used to connect a device
2601 which only supports SyncML to a CalDAV/CardDAV server, or sync data
2602 between a SyncML server and a CalDAV/CardDAV server. See "CalDAV and
2603 CardDAV" in the README for details.
2605 * WebDAV: improved --configure
2607 Added INFO output about checking sources. This helps with WebDAV when
2608 the server cannot be contacted (dead, misconfigured) because otherwise
2609 there would be no indication at all why the --configure operation
2612 Here is some example output, including aborting:
2613 $ syncevolution --configure --template webdav \
2614 syncURL=http://192.168.1.100:9000/ \
2615 username=foo password=bar retryDuration=2s \
2616 target-config@webdav-temp
2617 [INFO] creating configuration target-config@webdav-temp
2618 [INFO] addressbook: looking for databases...
2619 [INFO] addressbook: no database to synchronize
2620 [INFO] calendar: looking for databases...
2621 [INFO] calendar: no database to synchronize
2622 [INFO] memo: looking for databases...
2623 [INFO] memo: no database to synchronize
2624 [INFO] todo: looking for databases...
2625 [INFO] todo: no database to synchronize
2627 It timed out fairly quickly here because of the retryDuration=2s. That
2628 also gets placed in the resulting config, which is probably not desired.
2630 Aborting the operation is now supported:
2632 $ syncevolution --configure \
2634 syncURL=http://192.168.1.100:9000/ \
2635 username=foo password=bar \
2636 target-config@webdav-temp
2637 [INFO] creating configuration target-config@webdav-temp
2638 [INFO] addressbook: looking for databases...
2639 ^C[INFO] Asking to suspend...
2640 [INFO] Press CTRL-C again quickly (within 2s) to stop immediately (can cause problems in the future!)
2641 ^C[INFO] Aborting immediately ...
2642 [ERROR] error code from SyncEvolution aborted on behalf of user (local, status 20017): aborting as requested by user
2644 It would be good to make the CTRL-C handling code aware that it can
2645 abort immediately instead of doing the intermediate "asking to suspend"
2646 step, which only makes sense for sync sessions.
2648 * WebDAV: support tasks and memos (BMC #24893)
2650 The new backend property values "CalDAVTodo" and "CalDAVJournal"
2651 select tasks resp. memos stored in a CalDAV collection. "CalDAV"
2652 continues to select events.
2654 Events, tasks and journals can be mixed in the same resource (=
2655 URL). However, this is less efficient than storing them separately.
2657 A good CalDAV server allows filtering items by type, and SyncEvolution
2658 uses that. However, it was found that Radicale 0.7 ignores this
2659 filtering, which could have led to data loss (SyncEvolution asks for
2660 all VTODOs in preparation for a "delete all items" operation in a
2661 "CalDAVTodo" source, gets also VJOURNALs, then deletes them).
2663 Therefore SyncEvolution plays it safe and downloads the VTODO and
2664 VJOURNAL data to double-check that it is working on the right items.
2665 This causes additional traffic for well-behaving servers; currently
2666 it cannot be turned off.
2668 Tasks are exchanged as vCalendar 1.0 or iCalendar 2.0 VJOURNAL.
2669 Memos are exchanged as VTODO or plain text. The logic for storing
2670 incoming plain text is slightly different compared to the way how
2671 the EDS memo backend did it: instead of copying the first line
2672 from the text into the summary, it is now moved. In other words,
2673 the first line gets stripped. The change is primarily technically
2674 motivated; both approaches have pros and cons.
2676 * WebDAV: improved Radicale support
2678 Radicale > 0.7 will return status 200 for delete requests;
2679 is now treated like 204 by SyncEvolution. 412 'Preconditiona Failed'
2680 when asking to delete an already removed item is treated like
2681 the more common 404 'not found'. Same with 410 'gone' instead
2682 of 404 when trying to read a non-existent item.
2684 * file backend: more flexible sync support for memos
2686 The databaseFormat=text/calendar for memos did not support
2687 synchronizing as plain text. When using the new
2688 databaseFormat=text/calendar+plain, vCalendar/iCalendar/plain text
2689 are all valid sync formats; the storage is iCalendar 2.0
2690 VJOURNAL in all cases.
2692 * WebDAV: avoid potential crash during database detection
2694 When a server responds to a PROPFIND for a path with results for some
2695 other path, then SyncEvolution crashed during the search for the
2696 default calendar or address book because of a bug in the code which
2697 was meant to handle that kind of response. Apparently Yahoo Calendar
2698 did that. Now seen again in combination with Radicale 0.6.4.
2700 In general, the code was made more robust to cope with bugs in
2701 Radicale 0.6.4. Later Radicale versions fixed these issues and also
2702 worked with SyncEvolution 1.2.2 without client-side workarounds.
2704 * WebDAV: better path normalization
2706 "syncURL" and "database" properties had to end in a trailing slash,
2707 otherwise items were not found (404 errors). Now the necessary slash
2708 is added automatically.
2710 * Funambol: avoid slow syncs in refresh from server
2712 libsynthesis has traditionally implemented "refresh-from-server" as
2713 "delete local data" plus "slow" sync. This is more compatible, because
2714 some servers (like Google) do not support "refresh-from-server".
2716 But it has the downside that the server cannot know that the client
2717 won't send any data, and Funambol's OneMedia now only allows one slow
2718 sync before blocking the next one for a certain period of time. This is
2719 done to prevent excessive resource usage by badly behaving clients.
2721 To accomodate both kinds of servers, the new "enableRefreshSync"
2722 sync property can be set set to explicitly allow the usage of
2723 the "refresh-from-server" sync mode. It's off by default. The Funambol
2724 template has it turned on, existing configs must be updated manually
2725 (see upgrading comments below).
2727 * Curl transport: support SSLServerCertificates=<path>
2729 When the setting refers to a directory, then CURLOPT_CAINFO doesn't
2730 work (must be a file). Check this and use CURLOPT_CAPATH instead.
2732 Caveat: there are some comments in the API documentation about "NSS
2733 enabled libcurl" which supports a directory in
2734 CURLOPT_CAINFO. Hopefully providing an explicit path in CURLOPT_CAPATH
2735 also works in that configuration.
2737 * code cleanup + rewrite: syncing done in separate process
2739 syncevo-dbus-server now runs syncing in a separate process. Local
2740 sync also uses a second helper process. This makes the D-Bus server
2741 more responsive via D-Bus (no more blocking operations) and
2742 minimizes the effect of bugs in code involved with syncing
2743 (backends, system libraries, etc.).
2745 In the long term this restructuring will also allow more advanced
2746 features, like monitoring local or remote storage for changes.
2748 * SyncEvolution <-> SyncEvolution sync: multiple cycles per session
2750 SyncML only allows one send/receive cycle per session. There are cases
2751 (for example, client side merges data that a dumber server failed to
2752 match correctly) where client and server are still out of sync at
2753 the end of a cycle. When SyncEvolution syncs with another SyncEvolution
2754 instance (locally or remotely), both sides detect that the peer
2755 can continue syncing in the same session and start over automatically
2756 when needed. Previously the user had to start another sync session manually.
2758 To the user this is shown as "number of cycles" in a sync session
2759 in the sync report. "Restart" is the process of entering a new cycle.
2761 The cycles are also visible in the command line output as multiple
2764 [INFO] eds_contact: starting first time sync from client (peer is server)
2765 [INFO] creating complete data backup of source eds_contact before sync (enabled with dumpData and needed for prin
2766 Local data changes to be applied during synchronization:
2770 [INFO] eds_contact: sent 1/1
2771 [INFO] eds_contact: started
2772 [INFO] eds_contact: first time sync done successfully
2773 [INFO] eds_contact: starting normal sync from client (peer is server) <===
2774 [INFO] eds_contact: started <===
2775 [INFO] eds_contact: normal sync done successfully <===
2776 [INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges)
2778 Synchronization successful.
2780 Changes applied during synchronization:
2781 +---------------|-----------------------|-----------------------|-CON-+
2782 | | LOCAL | REMOTE | FLI |
2783 | Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
2784 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2785 | eds_contact | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
2786 | refresh-from-local, 2 cycles, 0 KB sent by client, 0 KB received |
2788 | item(s) in database backup: 1 before sync, 1 after it |
2789 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2790 | start Tue Feb 7 17:07:49 2012, duration 0:03min |
2791 | synchronization completed successfully |
2792 +---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
2794 * SyncEvolution <-> SyncEvolution sync: negotiate UID support via SyncCap (BMC #22783)
2796 The semantic of UID/RECURRENCE-ID in calendar data is now tracked
2797 per data store involved in a sync. If full iCalendar 2.0 semantic
2798 (= IDs are globally unique) is guaranteed, then pairs are found
2799 based on these IDs. Otherwise pairs must be found by looking at
2802 Previously a hack was used to detect this kind of support (any kind
2803 of SyncEvolution instance was assumed to support it, although some
2806 * syncevolution.org packages: fixed D-Bus server autostart in .deb and .rpm packages
2808 syncevo-dbus-server wasn't started automatically as part of a user
2809 session because /etc/xdg/autostart/syncevo-dbus-server.desktop wasn't
2810 included in the packages. This broke auto syncing after a session
2811 restart (required manually starting SyncEvolution).
2813 * syncevolution.org packages: support KDE
2815 The traditional "syncevolution-evolution" package was
2816 replaced with "syncevolution-bundle". A meta "syncevolution-evolution"
2817 package depends on it, to support seamless updates for users who have
2818 "syncevolution-evolution" installed.
2820 Binary dependencies of the main .deb are ignored for backends
2821 because loading them is optional. The new "syncevolution-kde"
2822 package has the right dependencies for KDE/Akonadi, while
2823 "syncevolution-evolution" mostly just lists standard libs
2824 if the "EDS compatibility" mode is used, where libebook/libecal
2825 are loaded dynamically.
2827 Platform specific code (GNOME keyring, KDE wallet) was moved into
2828 loadable, optional modules, to allow installation of the SyncEvolution
2829 bundle without forcing the installation of unused system components.
2831 * D-Bus: use GIO D-Bus instead of libdbus if available
2833 When compiling from source, the more modern GIO D-Bus is used instead
2834 of libdbus if available and recent enough (>= 2.30). syncevolution.org
2835 binaries still use libdbus, to stay compatible with older Linux
2838 * several minor bug fixes
2840 syncevo-dbus-server now runs under valgrind in the nightly testing,
2841 plus several more test scenarios were added. This helped to find
2842 and fix various minor memory handling issues.
2844 * developers: backend API changes
2846 beginSync/endSync() (aka m_startDataRead/m_endDataWrite) may now be
2847 called multiple times per SyncSource instance life cycle. SyncSources
2848 derived from TrackingSyncSource should work without changes. Use the
2849 Client::Source::*::testChangesMultiCycles test to check whether your
2850 backend supports this correctly.
2852 Reading and deleting must throw a 404 status exception when an item
2853 is not found. The Client::Source::*::*404 tests cover this.
2855 The special semantic of the former RegisterSyncSource::InactiveSource
2856 (invalid pointer of value 1) caused bugs, like using it in
2857 --print-databases (=> segfault) or not being able to store the result
2858 of a createSource() directly in a smart pointer (=> potential leak in
2859 SyncSource::createSource()).
2861 Obviously a bad idea to start with. Replaced with a
2862 RegisterSyncSource::InactiveSource() method which creates a real,
2863 inactive SyncSource instance which can and must be deleted by the
2866 This is a SyncSource API change for backend developers. Instead of
2867 RegisterSyncSource::InactiveSource, return
2868 RegisterSyncSource::InactiveSource(). Comparisons against
2869 RegisterSyncSource::InactiveSource needs to be replaced with a call
2870 to the new SyncSource::isInactive().
2872 Long-running backend calls are encouraged to check for events on the
2873 main glib context (either in a loop or with
2874 g_main_context_iteration(NULL)) and abort when
2875 SuspendFlags::getSuspendFlags().getState() returns
2876 SuspendFlags::ABORT.
2880 libgdbussyncevo is now installed as a normal library in /usr/lib,
2881 even though SyncEvolution is the only user.
2883 pcrecpp is now a new hard dependency.
2886 Upgrading from release 1.2.x:
2888 The sync format of existing configurations for Mobical (aka Everdroid)
2889 must be updated manually, because the server has encoding problems when
2890 using vCard 3.0 (now the default for Evolution contacts):
2891 syncevolution --configure \
2892 syncFormat=text/x-vcard \
2895 The Funambol template explicitly enables usage of the
2896 "refresh-from-server" sync mode to avoid getting throttled with 417
2897 'retry later' errors. The same must be added to existing configs
2899 syncevolution --configure \
2900 enableRefreshSync=TRUE \
2903 Upgrading from releases before 1.2:
2905 Old configurations can still be read. But writing, as it happens
2906 during a sync, must migrate the configuration first. Releases >= 1.2
2907 automatically migrates configurations. The old configurations
2908 will still be available (see "syncevolution --print-configs") but must
2909 be renamed manually to use them again under their original names with
2910 older SyncEvolution releases.
2913 SyncEvolution 1.2.1 -> 1.2.2, 13.01.2012
2914 ========================================
2916 Maintenance release with various bug fixes.
2918 * syncevo-dbus-server + ConnMan: fixed "online" detection (BMC #21541, BMC #24587)
2920 SyncEvolution did not recognize any cellular connectivity as
2921 suitable for syncing. The strict check for certain "connected
2922 technology" is unnecessary, anything which makes the computer
2923 "online" should be good enough. So now it just uses the ConnMan
2926 Additional benefit: will continue to work with ConnMan 1.0, which
2927 won't have the "ConnectedTechnologies" property anymore.
2929 The Bluetooth available check was also (incorrectly) using the
2930 ConnMan API. Now asssume that OBEX/Bluetooth is always available.
2932 * automatic backups: added INFO messages and fixed dumpData/printChanges (BMC #24619)
2934 Point out that backups are created (user might be unaware otherwise
2935 and wonder about the delay), explain why (so that users know how to
2938 Turning these backups off with dumpData=0 printChanges=0 had to be
2939 fixed, backups were always written previously.
2941 * EDS compatibility: bumped version check for EDS 3.2
2943 SyncEvolution is known to work with EDS 3.2. Therefore use the
2944 libebook/ecal/edataserver libs from 3.2 if available, without
2945 warnings in the --version output. Also happens with inconsistent
2946 distro setups where the old libs are available and would have been
2947 prefered by SyncEvolution 1.2.1 even though the old libs no longer
2950 * GTK-UI: do not accept service config without a username (BMC#23106)
2952 Instead of creating such a config, an error dialog is shown.
2954 * GTK-UI: updated translations
2956 * fixed various compile issues, primarily on Fedora Core 17
2957 (unistd.h/ssize_t, invoking syncevolution during compilation,
2958 missing src/dbus/qt/configure-sub.in)
2961 SyncEvolution 1.2 -> 1.2.1, 25.11.2011
2962 ======================================
2964 Maintenance release with various bug fixes.
2966 * GTK UI + config: fix "custom server" setup (BMC #13511)
2968 When the "default" config template (= ScheduleWorld) was downgraded to
2969 "not consumer ready" in SyncEvolution 1.1.0.99.1, setting up a custom
2970 SyncML service in the GTK UI stopped working because the UI wouldn't
2971 show the "not consumer ready" config.
2973 The problem described above is deterministic and fixed now.
2974 Initially the problem seemed to be random. So perhaps there is
2975 also another, related issue.
2977 * phone sync: delete<->delete conflict + phone calendar+todo sync (BMC #23744)
2979 When deleting an item on phone and locally, the next sync failed with
2980 ERROR messages about "object not found". Retrying the sync then worked.
2982 * Nokia: prevent accidental usage of "calendar" or "todo" sources
2984 Nokia phones use a combined "calendar+todo" source for syncing. The
2985 "calendar" and "todo" sources also exist because that is where local
2986 databases are configured.
2988 In such a setup, syncing always has to use "calendar+todo". For example,
2989 to refresh from the Linux desktop to the phone, use:
2990 --sync refresh-from-server <config> calendar+todo
2992 To work with items (restore, show local content), use the underlying sources,
2994 --print-items <config> calendar
2996 It was possible to accidentally sync with the "calendar". This commit
2997 prevents that by adding an invalid URI setting to the "calendar" and
2998 "todo" sources in the Nokia and Ovi templates. Existing configs are not
2999 touched, so beware when you already have configured your Nokia phone.
3001 * vCard: X- chat extensions were limited to one instance per kind
3003 For example, only one Jabber account could be synchronized. This
3004 was caused by an incomplete definition of the conversion to and from
3007 * syncevo-dbus-server + phone sync: catch SIGPIPE to avoid premature exit
3009 Frederik Elwert reported that running a local sync with a phone via
3010 Bluetooth caused the syncevo-dbus-server to shut down during a sync.
3011 Explicitly telling the process to ignore the SIGPIPE signal solved that
3014 * syncevo-http-server: support chained SSL certificates
3016 So far, the file pointed to by --certificate-file had to
3017 contain the server certificated (signed by a CA known to the client)
3018 and (optionally) a client certificate. Now the file may also contain
3019 additional intermediate certificates which will be sent to the client
3020 (chained certificates).
3022 * documentation: added glossary and command line conventions sections,
3023 improved listing of properties, embedd property definitions in man page,
3024 README and README.html
3026 * EDS compatibility: fixed inconsistency in libecal check
3028 The check for the _r variants in libical still used an older max
3029 version. This might have prevented using them (if not found) or
3030 could have led to a mixture of old and new libecal in the same
3031 process (probably crashed).
3033 * glib: avoid including glib/*.h headers directly
3035 Recent glib deprecates the direct inclusion of some of its headers,
3036 in favor of including glib.h. Doing that here whenever possible, so
3037 perhaps it now compiles on Fedora 17 (untested).
3040 SyncEvolution 1.1.1 -> 1.2, 13.10.2011
3041 ======================================
3043 The major new feature of the 1.2 release is support for non-SyncML
3044 protocols in general and CalDAV/CardDAV in particular. ActiveSync
3045 support is in development and will be in 1.3. These protocols are
3046 implemented as backends which are combined with other backends by
3047 SyncEvolution in a so called "local sync". The GTK sync-ui does not
3048 yet support configuring non-SyncML protocols. See the README.rst and
3049 man page for more information on how to use the new feature via the
3052 Properties not supported by SyncML servers can now be preserved
3053 locally in two-way synchronization (BMC #15030). This depends on
3054 information about what properties a SyncML server supports ("CtCap"),
3055 which is typically not provided by servers. SyncEvolution contains a
3056 copy of that information for Google Contacts (BMC #15029).
3058 Akonadi backend and KWallet support were merged. They are not included
3059 yet in syncevolution.org binaries. To use them compile from source.
3061 The configuration format was updated to solve a conceptual problem
3062 inherited with the legacy property names: the "type" property had
3063 multiple, sometimes conflicting roles. For example, setting the
3064 preferred data format for sync with one peer might have changed the
3065 backend selection for some other peer (BMC #1023). Now
3066 "backend/databaseFormat/syncFormat/forceSyncFormat" replace
3067 "type". "type" is still accepted by the command line as alias.
3069 Upgrading from releases before 1.2:
3071 Old configurations can still be read. But writing, as it happens
3072 during a sync, must migrate the configuration first. Release 1.2
3073 automatically migrates configurations. The old configurations
3074 will still be available (see "syncevolution --print-configs") but must
3075 be renamed manually to use them again under their original names with
3076 older SyncEvolution releases.
3081 * Using the --sync-property and --source-property command line options is
3082 optional, just specifying the property assignment is enough.
3084 * syncevo-http-server was enhanced considerably. See http://syncevolution.org/wiki/http-server-howto
3086 * support NetworkManager API >= 0.9 (BMC #19470)
3088 * syncevolution.org binaries: now compatible with Debian Testing/libnotify.so.4 (BMC #22668)
3090 libnotify is not linked directly into syncevo-dbus-server in the
3091 syncevolution.org binaries. Instead libnotify.so.1 till .so.4
3092 (current Debian Testing) are opened opened dynamically and the
3093 necessary functions are looked up via dlsym(). Not finding the
3094 libraries or the functions silently disables this notification
3097 * Sync mode is recorded when running in SyncML server mode (BMC #2786).
3099 * syncevo-dbus-server automatically stops when some of its libraries
3100 are updated and restarts if auto-syncing is on (BMC #14955).
3102 * Added code for Buteo, mKCal and QtContacts in MeeGo.
3104 Buteo and mKCal were removed again from MeeGo, so the code
3105 is obsolete. The QtContacts backend may be still be useful
3106 to access items via that API, but for syncing on MeeGo
3107 the normal EDS backend is used since MeeGo reverted back
3108 to EDS as PIM storage.
3110 * "databasePassword" source property: lookup failure in keyring (BMC #22937)
3112 The databasePassword also wasn't looked up at all when doing item operations
3113 via the command line.
3115 When configuring sources for an HTTP server, the config name typically
3116 is just the context (@foo). When using the config in the HTTP server,
3117 the config name is the peer inside that context (client@foo). Because
3118 the GNOME keyring lookup keys for the "databasePassword" (more
3119 specifically, the object name) contained the full config name which
3120 was different in both cases, looking up the saved password failed.
3122 The solution is to normalize the config name (to accomodate for
3123 different ways of spelling it) and use only the context, with @ as
3124 before. This will break existing setups where the object name in the
3125 keyring (incorrectly) includes the full config name. In that case just
3126 configure the source again to set the password anew.
3128 * Evolution Calendar: fixed detached recurrence support (BMC #22940)
3130 When manipulating a meeting series with more than one detached
3131 recurrence certain sequences of operations could incorrectly fail
3132 with "UID already exists".
3134 * iCalendar 2.0: must set VALUE in EXDATE (part of BMC #22940)
3136 EXDATE has a VALUE parameter, which wasn't defined in the XML
3137 profile. Didn't seem to matter at all in practice, but wasn't
3140 * GTK sync-ui: wrap sync service descriptions (BMC #7199)
3142 Descriptions of different sync services are not fully visible unless
3143 word-wrapping gets enabled.
3145 * CalDAV/CardDAV + local storage: avoid empty properties
3147 The main motivation for this change is that a recent Apple Calendar
3148 server rejects vCards with empty BDAY property. Another reason is that
3149 keeping the data as small as possible is desirable by itself.
3151 Sending an empty property serves as a hint for the peer that the
3152 property is supported. This is not necessary when storing an item in a
3153 backend. Therefore this commit disables empty properties for all
3154 backends which do not themselves set the m_backendRule Synthesis info
3157 * Google Contacts: ensure that first/middle/name are set when storing in EDS (BMC #20864)
3159 Evolution and the MeeGo UX assume that first/middle/last name are set.
3160 That is not the case when a contact is created in the Google Contacts
3161 web interface. Such contacts are sent by Google without the N
3164 SyncEvolution now tries to recreate the name components from the FN
3165 string, by splitting at word boundaries and assuming "<first>
3166 <middle> <last>" or "<last>, <first>" format. Obviously this
3167 heuristic fails for some locales.
3169 * Evolution Calendar: fixed error handling for broken TZIDs
3171 * Sony Ericsson: use ISO-8859-1 for all devices (BMC #14414)
3173 Passing invalid UTF-8 strings into libecal caused glib to
3174 abort syncevo-dbus-server.
3176 * auto sync: show all failed syncs except for temporary network errors (BMC #21888)
3178 Notifications were meant to be shown for all errors except temporary
3179 ones. This has never been implemented correctly since the feature was
3180 introduced: instead of hiding known temporary errors, all errors except
3181 500 (fatal error) were suppressed.
3183 * vCard: inline local photo data (BMC #19661)
3185 Some platforms (Maemo, MeeGo) store photos in separate files. Now SyncEvolution
3186 efficiently includes that photo data in the generated vCard right before sending
3187 it to a peer; previously it sent a useless local file:// URI. The Maemo port
3188 has a less efficient workaround for that which now should be obsolete.
3190 * syncevo-dbus-server: online status wrong without Network Manager or ConnMan (BMC #21543)
3192 When neither Network Manager nor ConnMan are running, network presence was "not
3193 online". This prevented running automatic syncs.
3198 * modified backend API
3199 - ClientTestConfig modernized
3200 - InsertItemResult::m_merged turned from boolean to enum
3202 * testing and compilation changes; for example, the minimum version of
3203 libsynthesis is now checked at configure time instead of failing at
3204 runtime due to missing features in the Synthesis engine
3207 SyncEvolution 1.1.99.7 -> 1.2, 13.10.2011
3208 =========================================
3210 Some more bug fixes and testing improvements.
3212 * fixed potential invalid memory access in add<->add conflict handling
3213 * fixed memory leak in workaround for EDS bug
3214 * CalDAV/CardDAV: handle ETags without quotation marks (eGroupware)
3215 * updated README: warning about sync direction moved to --sync option
3218 SyncEvolution 1.1.99.6 -> 1.1.99.7, 15.09.2011
3219 ==============================================
3221 Mostly bug fixes again. Some are a bit more intrusive, thus another
3224 * syncevolution.org binaries: now compatible with Debian Testing/libnotify.so.4 (BMC #22668)
3226 libnotify is not linked directly into syncevo-dbus-server in the
3227 syncevolution.org binaries. Instead libnotify.so.1 till .so.4
3228 (current Debian Testing) are opened opened dynamically and the
3229 necessary functions are looked up via dlsym(). Not finding the
3230 libraries or the functions silently disables this notification
3233 * calendar sync: better handling for add<->add conflicts (partly fixes BMC #22783)
3235 When both sides of a sync have added the same event, the sync must
3236 determine which one is more recent instead of blindly overwriting
3237 always the same side. Such conflicts are typically rare except for
3238 enterprise scenarios where meeting invitiations are processed
3239 automatically by a groupware (Exchange, Google Calendar/Mail, ...)
3240 and then the attendee status is updated on one side.
3242 SyncEvolution now does the necessary age comparison and preserves the more
3243 recent data for most properties. In some properties the data from both
3244 sides is preserved by concatenating the text (description, location, ...).
3245 It remains to be seen whether that is really desirable. Also, sync statistics
3246 are slightly off: the incoming item is counted as "added" even though it
3247 gets turned into an update.
3249 * item operations: authentication problem for WebDAV when using keyring (BMC #21311)
3251 The password still wasn't looked up in the keyring when using
3252 --import/export/delete-items.
3254 * "databasePassword" source property: lookup failure in keyring (BMC #22937)
3256 The databasePassword also wasn't looked up at all when doing item operations
3257 via the command line.
3259 When configuring sources for an HTTP server, the config name typically
3260 is just the context (@foo). When using the config in the HTTP server,
3261 the config name is the peer inside that context (client@foo). Because
3262 the GNOME keyring lookup keys for the "databasePassword" (more
3263 specifically, the object name) contained the full config name which
3264 was different in both cases, looking up the saved password failed.
3266 The solution is to normalize the config name (to accomodate for
3267 different ways of spelling it) and use only the context, with @ as
3268 before. This will break existing setups where the object name in the
3269 keyring (incorrectly) includes the full config name. In that case just
3270 configure the source again to set the password anew.
3272 * Evolution Calendar: fixed detached recurrence support (BMC #22940)
3274 When manipulating a meeting series with more than one detached
3275 recurrence certain sequences of operations could incorrectly fail
3276 with "UID already exists".
3278 * iCalendar 2.0: must set VALUE in EXDATE (part of BMC #22940)
3280 EXDATE has a VALUE parameter, which wasn't defined in the XML
3281 profile. Didn't seem to matter at all in practice, but wasn't
3284 * GTK sync-ui: wrap sync service descriptions (BMC #7199)
3286 Descriptions of different sync services are not fully visible unless
3287 word-wrapping gets enabled.
3289 * source configs: don't check "backend" unless it is needed
3291 When using a config which has sources with a backend type set which is
3292 not currently available, an error was thrown even if those sources
3293 weren't even part of the current operation (for example, syncing
3294 another source which is currently supported).
3296 * config migration: avoid name conflicts and auto syncing of old configs (BMC #22691)
3298 When (auto-)migrating a config, it was possible that a name for the
3299 peer, say foo.old, was chosen for the renamed config although there
3300 was already such a config, for example foo.old in ~/.sync4j. Besides
3301 being confusing for users, this also led to a bug in the code where it
3302 copied from the older config with the foo.old name.
3304 The main problem fixed is the disabling of auto syncing
3305 in the old config. Otherwise it was still used by syncevo-dbus-server
3306 for syncing, which triggered another auto-migration, ad infinitum...
3308 * auto syncing: must check whether enabled when looking at unknown URLs (part of BMC #22691)
3310 "syncURL = insert your URL here" with "autoSync = 0" did lead to auto
3311 sync attempts although it wasn't enabled. A check for "auto syncing
3312 enabled" was missing for the "unknown transport" case.
3314 * CalDAV/CardDAV + local storage: avoid empty properties
3316 The main motivation for this change is that a recent Apple Calendar
3317 server rejects vCards with empty BDAY property. Another reason is that
3318 keeping the data as small as possible is desirable by itself.
3320 Sending an empty property serves as a hint for the peer that the
3321 property is supported. This is not necessary when storing an item in a
3322 backend. Therefore this commit disables empty properties for all
3323 backends which do not themselves set the m_backendRule Synthesis info
3326 * Apple CardDAV: apply PHOTO import/export scripts by default
3328 A recent Apple Calendar server (correctly) rejects the invalid
3329 PHOTO;TYPE=unknown: property in a vCard. This internal representation
3330 must be cleared before serializing the field list.
3332 * for developers: modified backend API
3333 - ClientTestConfig modernized
3334 - InsertItemResult::m_merged turned from boolean to enum
3336 * testing and compilation changes; for example, the minimum version of
3337 libsynthesis is now checked at configure time instead of failing at
3338 runtime due to missing features in the Synthesis engine
3341 SyncEvolution 1.1.99.5 -> 1.1.99.6, 17.08.2011
3342 ==============================================
3344 Mostly bug fixes, some improvements in testing and packaging. This
3345 release was tested successfully with DAViCal 0.9.9.4.
3347 * CalDAV: fixed incorrect change tracking causing "event not found" (BMC #22329)
3349 * CalDAV: handle delete<->delete conflict during local sync (BMC #22327)
3351 If the same event was deleted both locally and in the CalDAV server, syncing
3352 failed with "event not found".
3354 * Google Contacts: ensure that first/middle/name are set when storing in EDS (BMC #20864)
3356 Evolution and the MeeGo UX assume that first/middle/last name are set.
3357 That is not the case when a contact is created in the Google Contacts
3358 web interface. Such contacts are sent by Google without the N
3361 SyncEvolution now tries to recreate the name components from the FN
3362 string, by splitting at word boundaries and assuming "<first>
3363 <middle> <last>" or "<last>, <first>" format. Obviously this
3364 heuristic fails for some locales.
3366 * CalDAV: continue despite Google Calendar access problems (see BMC #19484)
3368 An attempt to work around "403 You don't have access to change that
3369 event" errors, perhaps caused by
3370 http://code.google.com/p/google-caldav-issues/issues/detail?id=38
3371 The problem is now recorded instead of aborting the sync. The sync
3372 then ends in a 22001 = "partial failure" error and the operation
3373 will be retried in the next sync.
3375 * CalDAV: transform UTC RECURRENCE-ID for Evolution (BMC #22594)
3377 Evolution showed a meeting twice on the day of a modified recurrence,
3378 if the meeting series was originally created and modified in Exchange,
3379 then imported into Google Calendar.
3381 * CalDAV syncevolution.org binaries now works when libneon.so.27
3382 or libneon-gnutls.so.27 (Debian) are installed. Previously
3383 libneon.so.27 was required, which is no longer available in
3386 * syncevo-dbus-server/gdbus: fixed segfault when asked for properties
3387 when none are available (BMC #22152)
3389 * Evolution Calendar: fixed error handling for broken TZIDs
3391 * Sony Ericsson: use ISO-8859-1 for all devices (BMC #14414)
3393 Passing invalid UTF-8 strings into libecal caused glib to
3394 abort syncevo-dbus-server.
3396 * item operations: authentication problem for WebDAV when using keyring (BMC #21311)
3398 The password wasn't looked up in the keyring when using --print-items/import/export/...
3400 * WebDAV: fixed item operations without configuration (BMC #22164)
3402 Previously failed with "[ERROR] : virtual read-only configuration node, cannot write
3403 property webDAVCredentialsOkay = 1".
3405 * auto sync: show all failed syncs except for temporary network errors (BMC #21888)
3407 Notifications were meant to be shown for all errors except temporary
3408 ones. This has never been implemented correctly since the feature was
3409 introduced: instead of hiding known temporary errors, all errors except
3410 500 (fatal error) were suppressed.
3412 * vCard: inline local photo data (BMC #19661)
3414 Some platforms (Maemo, MeeGo) store photos in separate files. Now SyncEvolution
3415 efficiently includes that photo data in the generated vCard right before sending
3416 it to a peer; previously it sent a useless local file:// URI. The Maemo port
3417 has a less efficient workaround for that which now should be obsolete.
3419 * syncevo-dbus-server: online status wrong without Network Manager or ConnMan (BMC #21543)
3421 When neither Network Manager nor ConnMan are running, network presence was "not
3422 online". This prevented running automatic syncs.
3424 * fixed compile issues with Debian Testing/gcc 4.6.1
3427 Known issues, might still be resolved for the final 1.2:
3428 --------------------------------------------------------
3430 * syncevolution.org binaries: libnotify1 -> libnotify4 incompatibility (BMC #22668)
3432 Newer distros no longer have the libnotify.so.1 that syncevolution.org
3433 binaries depend on. As a workaround it is possible to install the libnotify1
3434 package from older distro releases.
3436 * CalDAV: add<->add conflicts (BMC #22669)
3438 Suppose the same meeting invitation for event UID=FOO is processed in
3439 both Evolution and Google Calendar. This always happens when the meeting
3440 invitation emails is sent to Google Mail, then later viewed in Evolution.
3441 On the Evolution side, the invitation is accepted. In Google Calendar this is
3444 When syncing in that state the sync engine does not recognize that
3445 both sides have added the same meeting and the "meeting accepted"
3446 information eventually gets lost.
3448 As a workaround, always synchronize the calendar before processing
3449 meeting invitation emails.
3452 SyncEvolution 1.1.99.1 -> 1.1.99.5, 13.07.2011
3453 ==============================================
3455 Release 1.1.99.5 is the first release candidate for 1.2. It has gone
3456 through a long stabilization period and thus is suitable for normal users.
3458 The major new feature of the 1.2 release is support for non-SyncML
3459 protocols in general and CalDAV/CardDAV in particular. ActiveSync
3460 support is in development. These protocols are implemented as backends
3461 which are combined with other backends by SyncEvolution in a so called
3462 "local sync". The GTK sync-ui does not yet support configuring
3463 non-SyncML protocols. See the README.rst and man page for more
3464 information on how to use the new feature via the command line.
3466 Properties not supported by SyncML servers can now be preserved
3467 locally in two-way synchronization (BMC #15030). This depends on
3468 information about what properties a SyncML server supports ("CtCap"),
3469 which is typically not provided by servers. SyncEvolution contains a
3470 copy of that information for Google Contacts (BMC #15029).
3472 Akonadi backend and KWallet support were merged. They are not included
3473 yet in syncevolution.org binaries. To use them compile from source.
3475 The configuration format was updated to solve a conceptual problem
3476 inherited with the legacy property names: the "type" property had
3477 multiple, sometimes conflicting roles. For example, setting the
3478 preferred data format for sync with one peer might have changed the
3479 backend selection for some other peer (BMC #1023). Now
3480 "backend/databaseFormat/syncFormat/forceSyncFormat" replace
3481 "type". "type" is still accepted by the command line as alias.
3483 Old configurations can still be read. But writing, as it happens
3484 during a sync, must migrate the configuration first. In contrast to
3485 earlier, more experimental releases in the 1.2 series, 1.1.99.5 and
3486 later automatically migrate configurations. The old configurations
3487 will still be available (see "syncevolution --print-configs") but must
3488 be renamed manually to use them again under their original names with
3489 older SyncEvolution releases.
3492 * syncevo-http-server was enhanced considerably. See http://syncevolution.org/wiki/http-server-howto
3493 * support NetworkManager API >= 0.9 (BMC #19470)
3494 * Sync mode is recorded when running in SyncML server mode (BMC #2786).
3495 * syncevo-dbus-server automatically stops when some of its libraries
3496 are updated and restarts if auto-syncing is on (BMC #14955).
3497 * Using the --sync-property and --source-property command line options is
3498 optional, just specifying the property assignment is enough.
3499 * Added support for Buteo, mKCal and QtContacts in MeeGo.
3500 Buteo and mKCal were removed again from MeeGo, so the code
3501 is obsolete. The QtContacts backend may be still be useful
3502 to access items via that API, but for syncing on MeeGo
3503 the normal EDS backend is used since MeeGo reverted back
3504 to EDS as PIM storage.
3505 * code cleanup and various minor fixes/improvements, see ChangeLog
3508 SyncEvolution 1.1 -> 1.1.1, 26.12.2010
3509 ======================================
3511 Maintenance release, in particular improving syncing with phones.
3512 There was a bug that could cause all kinds of weird behavior after
3513 a failed sync with a phone, so updating is highly recommended.
3515 * Synthesis engine: fixed a corruption issue in internal meta data which
3516 caused duplicates and other problems in a pretty indeterminstic way;
3517 apparently caused by failed syncs (BMC #11044).
3519 * Synthesis engine: recurrence rules with end date now sent correctly to phones (BMC #11241).
3521 The RRULE property was not encoded correctly previously during the
3522 iCalendar 2.0 -> vCalendar 1.0 conversion. Events with recurrence count
3523 were okay. Probably also affected SyncML servers without iCalendar 2.0
3526 The fix was confirmed to work with Nokia phones. It also helps with Sony Ericsson
3527 phones, but at least the t700 still has a problem: depending on the phone's
3528 time zone, it repeats the event for one day too long (BMC #10092).
3530 * Synthesis engine: fixed broken time zone information when sending to phone;
3531 previously that broke sending calendar updates to Nokia phones (BMC #9600).
3533 iCalendar 2.0 time zone definitions imported from libical were not
3534 encoded correctly in vCalendar 1.0 items as sent to phones. Nokia
3535 phones accepted such data when part of a new event, but rejected
3538 * Synthesis engine: shorter TZIDs, might help N900 calendar (BMC #6680).
3540 The shorter TZIDs will be included in iCalendar 2.0 data exported
3541 by libsyntesis and thus SyncEvolution. This change is motivated primarily
3542 by the observation that the N900 calendar storage can handle TZID=<location>,
3543 but not TZID=/softwarestudio.org/Tzfile/<location>.
3545 * ScheduleWorld: disable configuration template because service has shut down.
3547 The template is only hidden from the GTK sync-ui, but remains in SyncEvolution
3548 for the time being because it is referenced in several places.
3550 * Evolution CalDAV: added workaround for "must sync twice" (BMC #10265)
3552 The Evolution CalDAV backend seems to update its data when closing the
3553 database, not when opening it. As a result, syncevolution had to be run
3554 twice to see all data changes. The workaround is to open the database
3555 twice at the start of the sync. This is done for all calendar databases,
3556 regardless of which backend they use, in case that some other (yet unknown)
3557 backend needs the same workaround.
3559 * GTK sync-ui: workaround for "Sync Now" button not reacting to online
3560 status changed (BMC #9949).
3562 * Changed slow sync handling. Some users have complained about getting
3563 duplicated contacts (BMC #10081). The exact reason is not known (no
3564 useful logs provided yet), but it might be due to using "duplicate"
3565 as resolution strategy during slow syncs.
3567 This caused slightly different contacts to be duplicated instead of
3568 merging the two copies, reasoning that "no data loss" is better than
3569 "duplicates". This release switches to a mode where the engine
3570 tries harder to avoid duplicates by merging data if modification
3571 time stamps are available for contacts (usually they are). When fields
3572 differ, the more recent data is kept.
3574 * convert absolute alarm back to relative (BMC #11233)
3576 Experiments show that at least Nokia phones (and thus perhaps also
3577 Mobical.com) interpret a fixed alarm as "repeat alarm with the same
3578 relative offset as on first occurrence". The same transformation to
3579 relative alarm times is applied whenever the transformation to
3580 absolute alarm is enabled for a peer.
3582 * Sony Ericsson: enable conversion to absolute alarm times (BMC #10092)
3584 Like Nokia and Mobical.net, Sony Ericsson phones also seem to be unable
3585 to deal with relative alarm times - verified with t700.
3587 * Sony Ericsson C510: workaround for SyncML violation
3589 The phone does not sent identifiers for the target database;
3590 using the source identifier as fallback allows a sync to
3593 * Fixed a regression affecting users who had created a config
3594 with SyncEvolution < 1.0. Using the config worked once, then
3595 failed with "No configuration for ... found". Users must
3596 manually remove the empty "peers" directory inside their
3597 affected configuration, the fix only makes configs without that
3598 directory usable again (BMC #9381).
3600 * Removed obsolete workaround for older mKCal calendar storage.
3601 * Fixed error message in QtContacts backend.
3602 * Same SYNCEVOLUTION_DEBUG code as in master branch.
3603 * Some updates to synccompare, including a workaround for a Perl
3604 bug seen on Debian Testing with Perl 5.10.1-16 (Perl panic).
3605 * Fix compilation of syncevo-dbus-server with libnotify 0.7.0 (BMC #10453).
3606 * Fixed compilation on Debian GNU/Hurd (no MAX_PATH, Mac OS X confusion).
3609 SyncEvolution 1.0.1 -> 1.1, 26.10.2010
3610 ======================================
3612 An incremental update, resolving issues where the fixes would have
3613 been too intrusive for a 1.0.x release. In particular compatibility
3614 with Nokia phones was improved. Some new features were also included
3615 (command line options for manipulating items, backends for MeeGo PIM
3620 * bug fix in sync-ui: wrong direction of one-way data transfers with devices (BMC #7091)
3621 * bug fix in syncevo-dbus-server: incorrect Presence status after config change (BMC #8453)
3622 Shows up in sync-ui as "'Sync Now' button active after creating a config while offline".
3623 * sync-ui (GTK version): app is now listed as "SyncEvolution (GTK)" under "Office"
3624 * Nokia phones: avoid data loss in two-way sync due to X-EVOLUTION-UI-SLOT (BMC #2566)
3625 * Nokia phones: alarm times in UTC, sending PHOTO (BMC #1657, #5860)
3626 * included all phone templates submitted to syncevolution.org Wiki (BMC #5727)
3627 * syncevo-phone-config: set consumerReady in output, more useful for Wiki (BMC #3803)
3628 * workaround for D-Bus timeouts in EDS libecal/libebook (BMC #4026)
3629 * added generic command line options for importing, exporting, updating, listing
3630 and deleting items in the different backends (http://syncevolution.org/blogs/pohly/2010/manipulate-evolution-kcalextendedmkcal-qtcontacts-pim-items-uniform-command-line)
3631 * added backends for mKCal and QtContacts (MeeGo PIM storage),
3632 meant to be used for manipulating this data on the command line
3633 * enhanced D-Bus interface (BMC #3558, #3559, #3560, #3562, #3563, #7761, #7766)
3634 * the command line tool now warns when running against a different D-Bus daemon (BMC #3563)
3635 * creating and configuring sources in a context (without peer-specific
3636 properties) is now supported
3637 * improved documentation: README.rst, man page, and --help output
3638 * fixed some compile issues (BMC #6367), improved nightly testing
3641 SyncEvolution 1.0 -> 1.0.1, 16.07.2010
3642 ======================================
3644 A bug fix release. The main reason for releasing it is that
3645 SyncEvolution 1.0 no longer worked on recent distros (Fedora Core 13,
3646 Debian testing) because of a name clash between the Bluez D-Bus
3647 utility code and recent glib.
3651 * compile fix for FC 13 (and possibly others): use private copy of gdbus (BMC #3556)
3653 * sync-ui: prevent overwriting device configs by accident (BMC #3566,1194)
3654 Setting up a phone used the template name as config name and overwrote
3655 an existing configuration of another phone that was created using that
3656 same template. Now the code uses the Bluetooth device name as set on the
3657 device and checks for (less likely) collisions. It also sanitizes the
3658 name to avoid complicated config names (only relevant when also using
3661 * syncevo-dbus-server: accept 'application/vnd.syncml+xml; charset=UTF-8' for starting an HTTP session (BMC #3554)
3662 The redundant charset specification was set by the Funambol
3663 Thunderbird client. Because of a literal comparison against
3664 'application/vnd.syncml+xml' the messages were rejected.
3666 * config fix: operations on non-peer configs failed (BMC #3157)
3667 When running operations on a non-peer configuration (like --restore @default
3668 addressbook), the operation fails with
3669 [ERROR] <source name>: type 'select backend' not supported
3671 * ZYB.com: service goes away end of June 2010, template removed (BMC #3310)
3672 * some build (BMC #2586, BMC #3557) and language updates
3675 SyncEvolution 0.9.2 -> 1.0, 11.06.2010
3676 ======================================
3678 Major new features compared to previous stable release:
3679 * synchronize directly with a phone over Bluetooth/OBEX
3680 * accept Bluetooth/OBEX connections in cooperation with obexd >= 0.19
3681 * run SyncEvolution as a rudimentary HTTP SyncML server
3683 The GTK sync-UI can be used to select a paired phone and create a
3684 configuration for it based on the bundled configuration templates.
3685 Configuration templates are included for Nokia phones; for other
3686 phones see the http://syncevolution.org/development/sync-phone HOWTO
3687 and check out the Wiki there. Some users have already reported success
3688 for Sony Ericsson phones and added setup instructions. New templates
3689 from the Wiki can be dropped into ~/.config/syncevolution-templates
3690 under an arbitrary file name.
3692 Unexpected slow syncs can be detected when running as client (MB
3693 #2416) and unless turned off (see "preventSlowSync"), SyncEvolution
3694 aborts the session so that the situation can be analyzed. A refresh
3695 from client or server might be more suitable. The command line tool
3696 provides instructions at the end of its output. The GTK sync-UI
3697 points towards its recovery dialog.
3699 Automatic synchronization is supported by the syncevo-dbus-server (MB
3700 #6378). When that is installed, it will be started as part of a user
3701 session and keep running to trigger syncs in the
3702 background. Notifications are emitted when syncs start, end or fail
3705 Automatic synchronization can be enabled separately for each peer
3706 ("autoSync=0/1", off by default), will be done at regular intervals
3707 ("autoSyncInterval=30" minutes) when online long enough
3708 ("autoSyncDelay=5" minutes). That last option ensures that a) an
3709 automatic sync does not attempt to use a network connection unless it
3710 was already active and b) hopefully is also around long enough to
3713 The Synthesis XML configuration was split up into different parts
3714 which are assembled from /usr/share/syncevolution/xml. Files in
3715 ~/.config/syncevolution-xml override and extend the default files,
3716 which my be useful when adding support for a new phone.
3719 * ZYB.com now works thanks to a workaround for anchor handling (MB #2424);
3720 only contacts tested because everything else is considered legacy by ZYB.com
3721 * Horde: avoid confusing the server with a deviceId that starts like the
3722 ones used in old Funambol clients, helps with calendar sync (MB #9347)
3723 * Mobical.net (and other, similar services): fix vCalendar 1.0 alarm
3724 properties before importing them (MB #10458)
3725 * desknow.com works when switching to SyncMLVersion = 1.1
3726 * Funambol, Memotoo (and probably others): preserve meeting series when
3727 receiving update for detached recurrence (BMC #1916)
3730 * addressbook backend: avoid picking CouchDB, second try (MB #7877)
3731 * calendar backend: minor fix for change tracking when deleting
3732 a single instance of a recurring event
3733 * workaround for Evolution 2.30: "timezone cannot be retrieved because it
3734 doesn't exist" is triggered incorrectly when importing non-standard
3735 timezone definitions because libecal changed an error code (MB #9820)
3737 Performance and reliability improvements (MB #7708):
3738 * synccompare much faster
3739 * database dumps consume less disk space
3740 * more intelligent about expiring obsolete session directories
3742 * database accesses are reduced in several backends
3743 * shorter logs (MB #8092)
3744 * message resending helps under unreliable network connectivity ("RetryInterval")
3745 * full support for suspend&resume in SyncEvolution client to SyncEvolution or
3746 Synthesis server syncs
3747 * better handling of certain third-party time zone definitions (BMC #1332)
3749 Improved GTK sync-UI:
3750 * revised config screen: all in one list where entries can be expanded,
3751 integrated setup of sync with other devices
3752 * recovery support: restore from backup, unexpected slow sync handling
3753 * spinner while network is in use (MB #2229)
3754 * interactive password requests (MB #6376)
3755 * uses new D-Bus API
3758 * fixed printing of rejected items (MB #7755)
3759 * consistent logging of added/updated/deleted items with short
3761 * improved error reporting (textual descriptions instead of plain
3762 error codes MB #2069, partial success MB #7755, record and show
3763 first ERROR encountered MB #7708)
3764 * can create new sources (MB #8424)
3765 * runs operations inside daemon and thus avoids conflicts with
3766 operations done by other clients; for testing purposes (like
3767 running a client which talks to a local server in the daemon) it is
3768 still possible to ignore the daemon (--daemon=no, MB #5043)
3769 * revised README, now also available as man page (BMC #690)
3771 Redesigned and reimplemented D-Bus API, used by sync-UI and command line:
3772 * central syncevo-dbus-server controls configurations and sync sessions:
3773 http://syncevolution.org/development/direct-synchronization-aka-syncml-server
3774 * accepts incoming SyncML connection requests and messages received by
3775 independent transport stubs (obexd, HTTP server, ...)
3776 * can be used by multiple user interfaces at once
3777 * fully documented, see src/dbus/interfaces and http://api.syncevolution.org
3778 * no longer depends on dbus-glib with hand-written glue code for C++,
3779 instead uses gdbus plus automatic C++ binding generated via C++ templates
3781 Revised configuration layout (MB #8048, design document at
3782 http://syncevolution.org/development/configuration-handling):
3783 * several peer-independent sync and source properties are shared
3784 between multiple peers
3785 * they can be accessed without selecting a specific peer, by using an
3786 empty config name or with the new "@<specific context>" syntax
3787 * user interface of command line unchanged
3788 * old configurations can be read and written, without causing
3789 unwanted slow syncs when moving between stable and unstable
3790 SyncEvolution versions
3791 * old configurations can be migrated with the "--migrate" command
3792 line switch; however, then older SyncEvolution can no longer
3793 access them and migrating more than one old configuration causes
3794 the second or later configuration to loose its "deviceId" property
3795 (which is shared now), causing a slow sync once
3796 * config names may contain characters that are not allowed in the
3797 file names used for the underlying files; will be replaced with
3798 underscores automatically (MB #8350)
3801 Upgrading from 0.9.x:
3803 * Upgrading and downgrading should work seamlessly when using existing
3806 * The new configuration layout is only used when creating new
3807 configurations or explicitly invoking "syncevolution --migrate" (see
3808 above). Such configs cannot be used by older SyncEvolution releases.
3810 * The new "RetryInterval" property causes messages to be resent
3811 after 2 minutes (increased from 1 minute in previous 1.0 betas).
3812 At least the Funambol server is known to not handle this correctly
3813 in all cases (http://funzilla.funambol.com/show_bug.cgi?id=7910).
3814 So in the Funambol config template the interval is set to zero,
3815 disabling the feature. Disabling the feature must be done manually
3816 in existing Funambol configurations.
3819 SyncEvolution 1.0 beta 3 -> 1.0 final, 11.06.2010
3820 =================================================
3822 Bug fixes and new features:
3824 * Configuration templates are stored in a single file (BMC #1208).
3825 New templates (like something downloaded from http://syncevolution.org/wiki)
3826 can be dropped into $HOME/.config/syncevolution-templates using an arbitrary
3828 * Progress and per-source status are now also reported and recorded when
3829 running in server mode (BMC #1359). There are still several limitations
3830 (sync mode not reported, no information about sent/received/processed items
3831 while the sync runs, see BMC #2786).
3832 * Better handling of certain third-party time zone definitions (BMC #1332).
3833 Better logging to track down such problems.
3834 * D-Bus server + command line: return error code when failed (BMC #2193)
3835 * syncevo-phone-config: simplified command line options, several bug fixes
3836 (syntax error, incorrect handling of calendar+todo, BMC #1197)
3837 * Revised README, now also available as man page (BMC #690). Conversion of D-Bus API
3838 documentation into .html page (BMC #1745).
3839 * Funambol, Memotoo (and probably others): preserve meeting series when
3840 receiving update for detached recurrence (BMC #1916)
3841 * Fix for potential out-of-bounds memory access (BMC #1007).
3842 * HTTP server: fix for potential crash when second session was requested while an
3843 older one was still running, initial sync was done without libical time zone
3844 information and thus may have mismatched times (BMC #2435)
3845 * Nokia E55: convert alarm times (BMC #1657). This is done via a new remote rule
3846 in /usr/share/syncevolution/xml/remoterules/server/46_E55.xml
3847 If another phone needs the same treatment, then copy that file to
3848 ~/.config/syncevolution-xml/remoterules/server and edit the <model> element.
3849 * GTK GUI: styling fix (BMC #1372), updated toolbar for MeeGo 1.0 (BMC #1970),
3850 avoid duplicating configs when selecting a config created by syncevo-phone-config
3851 or the command line (BMC #1266), scroll bars for emergency window (BMC #1296),
3852 avoid compile problem on Fedora Core 13 due to name collision with system sync()
3853 call, updated translations.
3856 SyncEvolution 1.0 beta 2 -> beta 3, 20.04.2010
3857 ==============================================
3859 One more step towards the long awaited 1.0. 0.1 was released over four
3860 years ago and the 1.0 cycle started some time last summer. Beta 3 is
3861 considered feature complete at this point.
3863 Automatic synchronization is supported by the syncevo-dbus-server (MB
3864 #6378). When that is installed, it will be started as part of a user
3865 session and keep running to trigger syncs in the
3866 background. Notifications are emitted when syncs start, end or fail
3869 Automatic synchronization can be enabled separately for each peer
3870 ("autoSync=0/1", off by default), will be done at regular intervals
3871 ("autoSyncInterval=30" minutes) when online long enough
3872 ("autoSyncDelay=5" minutes). That last option ensures that a) an
3873 automatic sync does not attempt to use a network connection unless it
3874 was already active and b) hopefully is also around long enough to
3877 Detecting online status depends on ConnMan. Without it, SyncEvolution
3878 assumes that the network is available. For Bluetooth it is enough to
3881 When SyncEvolution is compiled with a backend sync daemon
3882 ("syncevo-dbus-server"), then conceptually that daemon controls the
3883 configuration and coordinates manually and automatically started sync
3884 sessions. Previously, the command line tool bypassed the daemon by
3885 running operations itself. Now it can hand over the command line
3886 parameters to the daemon to be executed there ("--daemon=yes", the
3887 default if the daemon is available; MB #5043). Command line parameters
3888 and output of "syncevolution" are the same as before. Note that the
3889 daemon only runs one operation at a time, which delays the command
3890 line client when the daemon is busy. For testing purposes (like
3891 running a client which talks to a local server in the daemon) it is
3892 still possible to ignore the daemon (--daemon=no).
3894 Thanks to fixes and improvements in both Synthesis engine and
3895 SyncEvolution, suspend and resume are fully supported in client and
3896 server (MB #2425). Previously it failed in some cases, as mercilessly
3897 exposed by our automated testing. Now all of these tests pass. The
3898 HTTP server now also handles message resends by clients correctly.
3900 Direct synchronization with older phones (like Sony Ericsson K750i)
3901 can be started now by switching to an older version of the SyncML
3902 standard ("SyncMLVersion" property, MB #9312). No further
3903 interoperability testing with such phones has been done at this
3904 time. When acting as client, that same property allows talking to
3905 older SyncML servers, like desknow.com.
3907 A minor workaround and the right configuration make it possible to
3908 synchronize with Nokia N85 and probably also other S60
3909 devices. Added a template for "Nokia S60". Also made the template
3910 for "Nokia N900" accessible in the GTK GUI.
3912 Because determining which configuration works for a phone involves
3913 a lot of trial-and-error, the new "syncevo-phone-config" script
3914 automates that process.
3918 * Mobical.net (and other, similar services): fix vCalendar 1.0 alarm
3919 specifications before importing them (MB #10458)
3920 * Nokia N900: added a config template for it and disabled the redundant
3921 RespURI when using Bluetooth. Preliminary testing shows that this solves
3922 some of the issues seen before (MB #10224).
3923 * workaround for Evolution 2.30: "timezone cannot be retrieved because it
3924 doesn't exist" is triggered incorrectly when importing non-standard
3925 timezone definitions because libecal change an error code (MB #9820)
3926 * "syncevo-http-server" HTTP server script is included in normal install
3927 * syncevolution.org binaries: finally solved the libbluetooth3
3928 incompatibility (MB #9289). Binaries of beta 2 crashed on more
3929 recent distros because of that.
3930 * SyncML client and Bluetooth: a mobile device running SyncEvolution
3931 creates a configuration automatically (MB #6175). The peer contacting
3932 us has to use the standard SyncEvolution URIs (addressbook, calendar,
3934 * command line: when dealing with the shared non-peer part of a config,
3935 it checks for properties which are unsuitable only prints
3937 * GTK GUI: improved setup of devices, automatic sync switch,
3938 some fixes for crashes and other tweaks
3939 * Nokia 7210c: send time as UTC instead of relying on time zone
3940 information (MB #9907).
3941 * command line: setting up a configuration for a "SyncEvolution"
3942 server on a client was not possible because the "SyncEvolutionClient"
3943 configuration was picked instead (MB #10004). The latter has to
3944 be used when configuring a SyncEvolution server to talk to a
3945 SyncEvolution client.
3946 * restore: no longer updates the time of the backup (MB #9963)
3947 * various minor improvements and fixes, see ChangeLog
3950 * The new "RetryInterval" property causes messages to be resent
3951 after 2 minutes (increased from 1 minute in previous 1.0 betas).
3952 At least the Funambol server is known to not handle this correctly
3953 in all cases (http://funzilla.funambol.com/show_bug.cgi?id=7910).
3954 So in the Funambol config template the interval is set to zero,
3955 disabling the feature. Enabling or disabling the feature must
3956 be done manually in existing configurations.
3958 SyncEvolution 1.0 beta 1 -> beta 2, 23.02.2010
3959 ==============================================
3961 Several new features and some bug fixing. Despite some open issues
3962 (see below), this release is ready for getting packaged in staging
3963 areas of distros as replacement for 0.9.2.
3965 As before, documentation for 1.0 is only available in the
3966 "Development" section of syncevolution.org, including HOWTOs for
3967 setting up the HTTP SyncML server and phones manually.
3969 Setting up a phone became a bit easier with beta 2, because
3970 SyncEvolution is now integrated with the GNOME Bluetooth panel: once a
3971 device with SyncML client support is paired, a button offers to bring
3972 up the sync-UI and configure or synchronize with that device. We do a
3973 fuzzy match against the Bluetooth device name to find a suitable
3974 template (not manufacturer/model, because that is not readily
3975 available). Still not many (read: hardly any) templates available,
3978 The binaries on syncevolution.org are compiled with Bluetooth support.
3979 libbluetooth2 or libbluetooth3 should be installed, but are not
3980 essential. If there is no suitable version of it, the Bluetooth
3981 channel has to be selected manually as part of the syncURL.
3983 Unexpected slow syncs are prevented by default, in contrast to beta 1
3984 where this feature was available but turned off. When an unexpected
3985 slow sync is detected in a client, users have to follow the
3986 instructions provided by the command line or sync-ui and choose how to
3987 proceed (explicitly request slow sync, refresh from server or client,
3988 restore from backup). SyncEvolution as server currently cannot prevent
3989 slow syncs, even when initiating the sync with a phone.
3991 In preparation for syncing automatically, logdir and database handling
3992 was improved considerably. Backups use less disk space because
3993 identical files share the same file content via hard links. This also
3994 speeds up the synccompare Perl script. Database dumps and the
3995 corresponding comparison are delayed until the session really runs,
3996 which avoids doing needless work a) when the server a client tries to
3997 contact is unreachable or down and b) by only including sources that
3998 are really in use during a sync on the server side.
4000 The Synthesis XML configuration was split up into different parts
4001 which are assembled from /usr/share/syncevolution/xml. Files in
4002 ~/.config/syncevolution-xml override and extend the default files,
4003 which my be useful when adding support for a new phone.
4006 Summary of changes since 1.0 beta 1:
4008 * sync-ui: recovery dialog (MB #8050), device setup, config usable with
4009 long strings (MB #9278), fixed displaying of source phases during sync
4011 * sync-ui + syncevo-dbus-server: integration with Bluez to detect paired
4012 devices (MB #9216, MB #7089), select template based on device name (MB #7838),
4013 detect network and Bluetooth connectivity (only with ConnMan, MB #7700),
4014 passwords stored in GNOME keyring by syncevo-dbus-server are shown with
4015 dots in sync-ui (MB #9169)
4016 * Evolution addressbook backend: avoid picking CouchDB, second try (MB #7877)
4017 * Evolution calendar backend: minor fix for change tracking when deleting
4018 a single instance of a recurring event
4019 * build fixes: Bluetooth compatibility (MB #9289), use libical _r variant
4020 of calls because 0.43 has issues in the normal version, conflict with
4021 system libsynthesis and libsmltk (MB #9811)
4022 * Horde: avoid confusing the server with a deviceId that starts like the
4023 ones used in old Funambol clients, helps with calendar sync (MB #9347)
4024 * better reporting when SyncEvolution dies during a sync (only happend once
4025 when it wasn't installed properly, but still... MB #9844)
4026 * performance improvements: synccompare much faster/database dumps consume
4027 less disk space/more intelligent about expiring obsolete session directories
4028 and backups/database accesses are reduced in several backends (MB #7708),
4029 shorter logs (MB #8092)
4030 * slow sync detection: now also works in the case where the client detects
4031 an anchor mismatch and enabled by default (MB #2416)
4032 * OBEX transport: some error handling changes and removal of polling, now
4033 also possible via sync-ui + syncevo-dbus-server (MB #9436)
4034 * API changes: SyncSource introduces an "isEmpty" operation which is
4035 needed for the slow sync detection
4036 * SyncML: split up configuration (MB #7712), increased default message size
4037 because the old one might have been too small for large DevInf structures
4038 * several fixes for virtual data sources ("calendar+todo"): now works
4039 on client side, fixed naming on server (MB #9664), fixed error message
4040 for slow sync detection, supported in combination with sync-UI (MB #9535)
4041 * fixes for shared configuration layout: finding sessions of peers in
4042 non-default context, adding sources affected peers in the same context
4043 (MB #9329), wrong context during --configure when using shortcut for peers
4044 in non-default context (MB #9338)
4047 Known gaps for 1.0 final and beyond:
4049 Redesigned and reimplemented D-Bus API, required by sync-UI:
4050 - 'syncevolution' command line tool bypasses D-Bus server and runs
4051 sync sessions itself (MB #5043)
4052 - availability of peers not detected when using NetworkManager
4053 (connected for HTTP, paired for Bluetooth; MB #7700)
4055 SyncML server in general:
4056 - suspend/resume support is untested (MB #2425)
4057 - the progress events and statistics reported for a SyncML client
4058 are not generated when running as SyncML server, will require
4059 a fair amount of refactoring in the Synthesis engine (MB #7709)
4062 - a configuration must be created for each peer manually, including
4063 a remoteDeviceId value that contains the peer's SyncML device ID
4066 OBEX SyncML server ("sync with phones"):
4067 - does not support phones which require a SAN 1.0 message (MB #9312)
4068 - determining a working configuration for an unknown phone requires
4069 a bit of experimenting, which should be automated (MB #9862)
4072 - parsing of SAN message is rudimentary and depends on an existing local
4073 configuration, needs to be refined depending on which SyncML server software
4074 it is meant to work with (MB #6175)
4076 Automatic sync (MB #6378):
4077 - no support for the various server push notification mechanisms
4078 - no intelligent detection of local changes
4079 - no regular background sync, development is in progress
4081 Upgrading from 1.0 beta 1: moving back and forth should work seamlessly
4082 Upgrading from 0.9.x: see under beta 1
4085 SyncEvolution 0.9.2 -> 1.0 beta 1, 26.01.2010
4086 ==============================================
4088 Compared to the current stable release, 0.9.2, this beta release can also:
4089 * synchronize directly with a phone over Bluetooth/OBEX
4090 * accept Bluetooth/OBEX connections in cooperation with obexd 0.19
4091 * run SyncEvolution as a rudimentary HTTP SyncML server
4093 These feature were already available in a source-only 1.0 alpha
4094 release. For the beta, we fixed some issues (nothing major)
4095 and in addition to the source, also make binaries available. As
4096 before, we hope to get feedback on where we are going with 1.0 and its
4097 SyncML server and direct synchronization features. If you want to get
4098 involved, now is a good time because a) there is something which works
4099 and b) there is still time to influence the final 1.0, scheduled for
4102 Documentation of the new features can be found in the "Development"
4103 section (http://syncevolution.org/development) for HOWTOs or ask on
4104 the mailing list (http://syncevolution.org/support).
4106 Here is a more complete list of features compared to the stable
4107 release. The full (and up-to-date) list can be retrieved from the
4108 Moblin Bugzilla (MB) issue tracking system with this query:
4109 http://bugzilla.moblin.org/showdependencytree.cgi?id=7892&hide_resolved=0
4110 For changes compared to the 1.0 alpha please consult the
4113 Implemented features are marked with a plus +, open ones with a minus -.
4116 + now works thanks to a workaround for anchor handling (MB #2424)
4117 - only contacts tested because everything is considered legacy
4120 Slow sync handling (MB #2416)
4121 + Unexpected slow syncs can be detected when running as client and
4122 if configured (see "preventSlowSync"), abort the session so that
4123 the situation can be analyzed. A refresh from client or server
4124 might be more suitable. Because this required manual intervention
4125 by the user, the feature is off by default.
4126 - Catching slow syncs does not work yet when running as server and
4127 in one corner case in a client.
4130 + settings for HTTP servers are now done inside the list of
4131 all configs and server templates instead of poping up a
4133 + uses the new D-Bus API
4134 + no longer uses private gconf key to select default peer,
4135 replaced by "defaultPeer" in SyncEvolution config
4136 + added recovery features like handling of unexpected slow syncs (MB #2416)
4137 - restoring from backup only supported by command line (MB #8050)
4138 - spinner to indicate network activity missing (MB #2229)
4139 - interactive password request not implemented yet (MB #6376)
4142 + fixed printing of rejected items (MB #7755)
4143 + improved error reporting (textual descriptions instead of plain
4144 error codes MB #2069, partial success MB #7755, record and show
4145 first ERROR encountered MB #7708)
4146 + can create new sources (MB #8424)
4148 Redesigned and reimplemented D-Bus API, required by sync-UI:
4149 + central syncevo-dbus-server controls configurations and sync sessions:
4150 http://syncevolution.org/development/direct-synchronization-aka-syncml-server
4151 + accepts incoming SyncML connection requests and messages received by
4152 independent transport stubs (obexd, HTTP server, ...)
4153 + can be used by multiple user interfaces at once
4154 + fully documented, see src/dbus/interfaces
4155 + no longer depends on dbus-glib with hand-written glue code for C++,
4156 instead uses gdbus plus automatic C++ binding generated via C++ templates
4157 - 'syncevolution' command line tool bypasses D-Bus server and runs
4158 sync sessions itself (MB #5043)
4159 - availability of peers not detected (connected for HTTP, paired for
4160 Bluetooth; MB #7700)
4161 - Bluetooth peers can only be configured via command line (MB #9216)
4163 Revised configuration layout (MB #8048, design document at
4164 http://syncevolution.org/development/configuration-handling):
4165 + several peer-independent sync and source properties are shared
4166 between multiple peers
4167 + they can be accessed without selecting a specific peer, by using an
4168 empty config name or with the new "@<specific context>" syntax
4169 + user interface in command line and D-Bus API unchanged
4170 + old configurations can be read and written, without causing
4171 unwanted slow syncs when moving between stable and unstable
4172 SyncEvolution versions
4173 + old configurations can be migrated with the "--migrate" command
4174 line switch; however, then older SyncEvolution can no longer
4175 access them and migrating more than one old configuration causes
4176 the second or later configuration to loose its "deviceId" property
4177 (which is shared now), causing a slow sync once
4178 + config names may contain characters that are not allowed in the
4179 file names used for the underlying files; will be replaced with
4180 underscores automatically (MB #8350)
4181 - users of the sync-ui will not know about the --migrate option,
4182 so if they have only one configuration, it should be migrated
4185 SyncML server in general:
4186 + incoming connections are accepted by syncevo-dbus-server via
4187 the D-Bus Connection API; because this is a "personal SyncML
4188 server", all local data is meant to belong to a single user,
4189 and only one sync session can be active at any point in time
4190 + different users on the same machine can run their own server,
4191 as long as they ensure that listening for incoming connections
4192 does not conflict with each other (different port in HTTP)
4193 + the session of an HTTP client which stops sending messages expires
4194 after "RetryDuration" seconds instead of blocking the server
4196 - suspend/resume support is untested (MB #2425)
4197 - automatic backup of server databases is inefficient (done
4198 even when client is not allowed to do a sync; always backs up
4199 all data, including sources which are not active; MB #7708)
4200 - the progress events and statistics reported for a SyncML client
4201 are not generated when running as SyncML server, will require
4202 a fair amount of refactoring in the Synthesis engine (MB #7709)
4203 - the Synthesis server example config contains workarounds for
4204 specific phones, but SyncEvolution does not currently use those;
4205 adding new workarounds should be made very simple (MB #7712)
4208 + test/syncevo-http-server.py provides an experimental HTTP server
4209 based on Python and Twisted
4210 - a configuration must be created for each peer manually, including
4211 a remoteDeviceId value that contains the peer's SyncML device ID
4214 OBEX SyncML server ("sync with phones"):
4215 + peers are contacted via a builtin transport that uses libopenobex (MB #5188)
4216 + Server Alerted Notification (SAN) message triggers syncs; server ID
4217 and URI are configurable (MB #7871)
4218 - a configuration must be created for each peer manually, including
4219 a syncURL that contains the peer's MAC address (MB #7838)
4220 - should be integrated into the system's Bluetooth pairing (MB #7089)
4223 + obexd 0.19 contains a plugin which passes SyncML messages to syncevo-dbus-server
4224 - parsing of SAN message is rudimentary and depends on an existing local
4225 configuration, needs to be refined depending on which SyncML server software
4226 it is meant to work with (MB #6175)
4228 Automatic sync (MB #6378):
4229 - no support for the various server push notification mechanisms
4230 - no intelligent detection of local changes
4231 - no regular background sync
4232 - depends on safe handling of concurrent editing, which is blocked
4233 by merging of a new Evolution Data Server API (MB #3479)
4235 Upgrading from 0.9.x:
4237 * Upgrading and downgrading should work seamlessly when using existing
4238 configurations. But this being an alpha, better ensure that you have
4239 backups of both your data and your configurations in
4240 ~/.config/syncevolution.
4242 * The new configuration layout is only used when creating new
4243 configurations or explicitly invoking "syncevolution --migrate" (see
4244 above). Such configs cannot be used by older SyncEvolution releases.
4247 SyncEvolution 0.9.1 -> 0.9.2, 23.01.2010
4248 ========================================
4249 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4251 New Maemo 5/Nokia N900 calendar backend and packages, brought to you
4252 by Ove Kaaven. These packages are available via the Maemo extras-devel
4253 repository. Bug reports can be submitted both in http://bugs.maemo.org
4254 and http://bugzilla.moblin.org. The latter is the tracker that is
4255 monitored by the SyncEvolution team, which will also incorporate
4256 patches. In general, Ove is the main maintainer of the new backend.
4258 New XMLRPC backend, contributed by Franz Knipp/M-otion. It accesses
4259 data inside a web service via a SOUP API and thus allows synchronizing
4260 it via SyncML. See src/backends/xmlrpc/README for more information.
4262 Added templates for Oracle Beehive and Goosync. Both are not currently
4263 part of the regular testing.
4265 In addition to that, 0.9.2 is an incremental update, with several
4266 updated translations and addressing all of the issues reported by
4269 - vCard dialects: added "X-GENDER/X-SIP" (used by Maemo) and X-SKYPE
4270 (used by Maemo and recent Evolution, MB #8948)
4272 - Evolution Address Book: avoid picking CouchDB by default (MB #7877, evolution-couchdb #479110)
4274 CouchDB address books are appended at the end of the local database
4275 list, otherwise preserving the order of address books. The initial
4276 release of evolution-couchdb in Ubuntu 9.10 is unusable because it
4277 does not support the REV property.
4279 Reordering the entries ensures that the CouchDB address book is not
4280 used as the default database by SyncEvolution, as it happened in
4281 Ubuntu 9.10. Users can still pick it intentionally via
4284 - installation: templates now in $(datadir)/syncevolution/templates (MB #7808)
4285 This are files used internally, meant to be extended by distributors.
4286 Storing them in /etc is no longer supported, but also unlikely to be
4287 needed. Added warnings that these files cannot simply be copied into
4288 .config because they are not complete configurations.
4290 - installation: "make install" populates $(docdir) (MB #7168)
4291 Previously README, COPYING, NEWS, and server READMEs were copied
4292 into syncevolution.org .tar.gz/.deb/.rpm archives as part of
4293 custom make rules and thus missing in other installations.
4295 - building: --with-boost had no effect (MB#7856), detect incorrect
4296 use of --with-synthesis-src, workaround for lack of --with-docdir
4297 in older autoconf, do not unnecessarily depend on CPPUnit header
4298 files and GNOME/EDS libs (MB#8338), workaround for libtool bug
4299 ("cannot install `syncecal.la' to a directory not ending in ..."),
4301 - clarified documentation of properties for file backend (MB#8146)
4303 - stderr redirection: detect "error" messages and show them (MB#7655)
4304 The "GConf Error: Failed to contact configuration server..." error
4305 message was suppressed by the code which catches noise from libraries
4306 invoked by SyncEvolution. Now it is printed as ERROR, making it
4307 easier to detect why running SyncEvolution inside cron needs
4309 http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/
4311 - importing contacts from SyncML server without full name (MB#5664):
4312 Evolution expects the name to be set and shows an empty string if
4313 it is missing. Now the name is re-added by appending first, middle and
4316 - Evolution calendar: work around 'cannot encode item' problem (MB #7879)
4317 Happens when the calendar file contains broken events which reference
4318 a timezone that is not defined. Now the event is treated like one in
4321 - "http_proxy" env variable is supported regardless which HTTP transport
4324 - avoid crashes when libecal sets neither error nor pointer (MB#8005)
4325 and when aborting a running sync in the syncevo-dbus-server (MB#8385)
4327 - "--status" output: fixed missing total item counts (MB #9097)
4330 Upgrading from 0.9.1:
4332 * nothing to do, upgrading and downgrading should work seamlessly
4335 SyncEvolution 0.9 -> 0.9.1, 26.10.2009
4336 ======================================
4337 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4339 Mobical and Memotoo are now officially supported.
4341 Memotoo uses vCard 2.1 with several Evolution specific extensions. It
4342 uses iCalendar 2.0, however, without actually supporting the advanced
4343 features of it. Times are converted to UTC and meeting information are
4346 Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the
4347 result that many properties used in Evolution are not supported by the
4348 server. In particular calendar support is very limited (known issues
4349 when events are in time zones different from the one selected locally
4350 and on the server, no support for meetings). For details see
4353 *** Beware *** that the Mobical SyncML password is *not* the same as
4354 the one for their web site. Log into mobical.net, then go to "my accounts
4355 >> configure new device >> manual settings" to find the SyncML
4358 It is now possible to compile database backends outside of
4359 SyncEvolution, install them and have SyncEvolution use them
4360 automatically like any other backend. The backend API has been
4361 enhanced considerably. For example, backend developers have
4362 access to a modular set of utility classes that can be mixed
4363 into a specific implementation. Backends can access the internal
4364 Synthesis representation directly and therefore no longer need
4365 their own vCard/vCalendar/iCalendar parser.
4367 The sqlite demo backend can be enabled and compiled again with
4368 --enable-sqlite. It demonstrates how to map directly from the
4369 Synthesis field list to some internal format (an SQLite database
4370 schema in this case).
4374 * Resend messages to cope with intermittent loss of network
4375 connectivity (Moblin Bugzilla #3427). See the new "ResendDuration"
4376 and "ResendDelay" configuration properties for details.
4378 * SyncEvolution command line uses the GNOME keyring when
4379 the new --keyring option is given.
4381 * The logging of added and updated items was enhanced. Events,
4382 tasks and memos are logged with a short description instead of
4383 just the local ID. The description for contacts was improved.
4385 * Receiving photos from Mobical failed because Mobical
4386 does not quite follow the vCard 2.1 (Moblin Bugzilla #6668).
4387 Sending photos worked, but added a few bytes of garbage
4388 at the end of each photo (typically ignored when showing).
4389 Parser was made more tolerant by Synthesis and encoder bug
4392 * Task priorities used by Mobical and Evolution did not match:
4393 vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664).
4394 SyncEvolution now translates between the two ranges, with
4395 some information getting lost when talking to a peer which
4396 only supports the smaller range.
4398 * Importing work and home phone numbers from Google into desktop
4399 Evolution works better, because SyncEvolution now adds the "VOICE"
4400 flag expected by Evolution (MB#6501).
4402 * SSL certificate checking with Google is enabled by default
4403 and enabled in Moblin, because libsoup in that distro has
4404 the necessary fix. Without that fix, all connection attempts
4405 fail. The binaries on syncevolution.org are compiled with
4406 --disable-ssl-certificate-check, so users who want the
4407 additional security must enable it.
4409 * .rpms on syncevolution.org no longer specify a dependency
4410 on certain Perl features. This depencency was a problem on
4411 Mandriva. Unwanted hard dependencies on libecal in syncevolution.org
4412 binaries are avoided for real this time (MB#6552).
4414 * Some sync-UI enhancements (describe sync services, avoid crash
4415 with very long input in some of the text boxes (MB#5219), set
4416 application icon, improved some strings).
4418 * sync-UI: now disables sources which are not supported when
4419 setting up a configuration, like memos on Moblin (MB #6672).
4420 Previously the source was enabled, which prevented using
4421 using the configuration as-is on the command line.
4423 * The sync UI allowed to enable calendar and task synchronization
4424 with Google although Google does not support that (MB#5871).
4425 In new installations this is prevented by clearing the URI
4426 for those data categories.
4428 * Trying to remove a non-existent configuration via the command
4429 line now raises an error, to catch typos (MB #6673).
4431 * Improved checks which logs in the logdir belong to the current
4434 * Improved sanity checking of integer configuration parameters
4437 * Spelling fix: "aboring" => "aborting"
4442 * Mobical and Memotoo do not have a description in the GUI yet.
4444 * ZYB.com is not supported because of a known anchor handling
4445 problem in the server (MB#2424).
4450 * nothing to do, upgrading and downgrading should work seamlessly
4453 SyncEvolution 0.9.1 beta 2 -> 0.9.1, 26.10.2009
4454 ===============================================
4455 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4459 * spelling fixes in NEWS file (--source-type => --source-property)
4461 * improved autotools compilation of libsynthesis
4464 SyncEvolution 0.9.1 beta 1 -> 0.9.1 beta 2, 19.10.2009
4465 ======================================================
4466 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4470 * Receiving photos from Mobical failed because Mobical
4471 does not quite follow the vCard 2.1 (Moblin Bugzilla #6668).
4472 Sending photos worked, but added a few bytes of garbage
4473 at the end of each photo (typically ignored when showing).
4474 Parser was made more tolerant by Synthesis and encoder bug
4477 * Task priorities used by Mobical and Evolution did not match:
4478 vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664).
4479 SyncEvolution now translates between the two ranges, with
4480 some information getting lost when talking to a peer which
4481 only supports the smaller range.
4483 * The workaround for detecting an endless stream of Alert 222
4484 messages (caused by misbehavior of certain servers when
4485 a specific message has to be resent) aborted certain
4486 valid (albeit somewhat pathologic) sync sessions. Improved
4487 the heuristic so that it still catches the real loop without
4488 aborting in that other case.
4490 * sync-ui: now disables sources which are not supported when
4491 setting up a configuration, like memos on Moblin (MB #6672).
4492 Previously the source was enabled, which prevented using
4493 using the configuration as-is on the command line.
4495 * .rpms on syncevolution.org no longer specify a dependency
4496 on certain Perl features. This depencency was a problem on
4497 Mandriva. Unwanted hard dependencies on libecal in syncevolution.org
4498 binaries are avoided for real this time (MB#6552).
4500 * Trying to remove a non-existent configuration via the command
4501 line now raises an error, to catch typos (MB #6673).
4503 * Message resend options: added sanity checks to catch negative
4504 values, clarified that duration is given in seconds, 0s resend
4505 interval disables resending (MB #6500).
4507 * Spelling fix: "aboring" => "aborting"
4510 SyncEvolution 0.9 -> 0.9.1 beta 1, 06.10.2009
4511 =============================================
4512 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4514 Mobical and Memotoo are now officially supported.
4516 Memotoo uses vCard 2.1 with several Evolution specific extensions. It
4517 uses iCalendar 2.0, however, without actually supporting the advanced
4518 features of it. Times are converted to UTC and meeting information are
4521 Mobical uses vCard 2.1 and vCalendar 1.0 as data formats, with the
4522 result that many properties used in Evolution are not supported by the
4523 server. In particular calendar support is very limited (known issues
4524 when events are in time zones different from the one selected locally
4525 and on the server, no support for meetings). For details see
4528 *** Beware *** that the Mobical SyncML password is *not* the same as
4529 the one for their web site. Log into mobical.net, then go to "my accounts
4530 >> configure new device >> manual settings" to find the SyncML
4533 It is now possible to compile database backends outside of
4534 SyncEvolution, install them and have SyncEvolution use them
4535 automatically like any other backend. The backend API has been
4536 enhanced considerably. For example, backend developers have
4537 access to a modular set of utility classes that can be mixed
4538 into a specific implementation. Backends can access the internal
4539 Synthesis representation directly and therefore no longer need
4540 their own vCard/vCalendar/iCalendar parser.
4542 The sqlite demo backend can be enabled and compiled again with
4543 --enable-sqlite. It demonstrates how to map directly from the
4544 Synthesis field list to some internal format (an SQLite database
4545 schema in this case).
4549 * Resend messages to cope with intermittent loss of network
4550 connectivity (Moblin Bugzilla #3427). See the new "ResendDuration"
4551 and "ResendDelay" configuration properties for details.
4553 * The logging of added and updated items was enhanced. Events,
4554 tasks and memos are logged with a short description instead of
4555 just the local ID. The description for contacts was improved.
4557 * The sync UI allowed to enable calendar and task synchronization
4558 with Google although Google does not support that (MB#5871).
4559 In new installations this is prevented by clearing the URI
4560 for those data categories.
4562 * Importing work and home phone numbers from Google into desktop
4563 Evolution works better, because SyncEvolution now adds the "VOICE"
4564 flag expected by Evolution (MB#6501).
4566 * SyncEvolution command line uses the GNOME keyring when
4567 the new --keyring option is given.
4569 * SSL certificate checking with Google is enabled by default
4570 and enabled in Moblin, because libsoup in that distro has
4571 the necessary fix. Without that fix, all connection attempts
4572 fail. The binaries on syncevolution.org are compiled with
4573 --disable-ssl-certificate-check, so users who want the
4574 additional security must enable it.
4576 * syncevolution.org binaries should be compatible with a wider
4577 range of Evolution releases again (MB#6552).
4579 * Some sync UI enhancements (describe sync services, avoid crash
4580 with very long input in some of the text boxes (MB#5219), set
4581 application icon, improved some strings).
4583 * Improved checks which logs in the logdir belong to the current
4586 * Improved sanity checking of integer configuration parameters
4591 * Mobical and Memotoo do not have a description in the GUI yet.
4593 * ZYB.com is not supported because of a known anchor handling
4594 problem in the server (MB#2424).
4597 SyncEvolution 0.8.1 -> 0.9, 12.08.2009
4598 --------------------------------------
4599 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4601 This is a major new release, with first steps towards further improvements.
4602 From this release on, the Synthesis SyncML engine will be the
4603 underlying SyncML and data conversion engine.
4605 A native GTK GUI is now included. The "sync-ui" program depends on a
4606 backend D-Bus service ("synevo-dbus-server") and several auxiliary
4607 files. Therefore, it only runs without hacks after installation in
4608 /usr (possible with .deb, .rpm and binary .tar.gz archives, and
4609 with "sudo make install", after compiling from source). The
4610 normal command line tool still works without being installed.
4612 In this release, the data handling model was changed from "all items
4613 are sent verbatim to the SyncML server" to "parse and convert". The
4614 argument for the former approach was that the SyncML server should be
4615 the only entity in the system which does data conversion. The previous
4616 releases already had to deviate from this approach to accommodate for
4617 minor client/server incompatibilities and for vCard 2.1 support, so the
4618 new approach just takes it one step further.
4620 The main reason for going to full semantic conversion is vCalendar 1.0
4621 support. Support by servers for iCalendar 2.0, the only format
4622 supported by 0.8.1, is often still incomplete or even non-existent. By
4623 doing the conversion on the client side, SyncEvolution is now able to
4624 synchronize events and tasks with a wider variety of servers.
4626 It is still true that properties not supported by a server cannot
4627 be synchronized to other devices, so using a server with full
4628 iCalendar 2.0 support is recommended. But in contrast to 0.8.1,
4629 information that can be stored only locally is no longer lost when
4630 receiving an incomplete update from the SyncML server, thanks to
4631 intelligent merging, provided by the Synthesis engine. This depends on
4632 an accurate description of the server's capabilities, which might not
4633 be provided by all of them. This still needs to be tested in more detail.
4635 Interoperability with servers tested extensively in this release.
4636 The following servers are now supported:
4638 * ScheduleWorld. There is very complete support for Evolution data. The
4639 only known issues are around resuming from an interrupted sync.
4641 * Google contact sync.
4643 Google follows the vCard 2.1 specification, and thus does not support
4644 some of the vCard 3.0 additions, nor some of the common extensions. As
4645 a result, several properties are not synchronized (nickname, birthday,
4646 spouse/manager, URLs, ...). Only one top-level organization seems to
4647 be supported. For details, see README.google.
4649 Regarding Google's SyncML support, refresh-from-client and
4650 one-way-from-client sync modes are not supported. Deleting contacts
4651 moves them out of the main address without deleting them permanently. When
4652 adding such a contact again, the server discards the data sent by the
4653 client and recreates the contact with the data that it remembered.
4655 Because SSL certificate checking for Google works only with libsoup
4656 if the platform has a patched libsoup
4657 (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >=
4658 2.28, certificate checking remains turned off by default for
4659 Google. If your platform has a suitable libsoup (like Moblin 2.0),
4660 then enable checking with:
4662 syncevolution --configure \
4663 --sync-property SSLVerifyServer=true \
4664 --sync-property SSLVerifyHost=true \
4667 * Funambol, with calendar and task support. Funambol supports iCalendar 2.0
4668 in the current server, so this is enabled in the configuration template.
4669 Not all iCalendar 2.0 features are supported by the server,
4670 most notably support for meetings (drops attendees), meeting
4671 invitations (drops UID), detached recurrences
4672 (drops RECURRENCE-ID). See README.funambol for details.
4674 Interoperability with the Funambol server was improved by adding
4675 support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY,
4676 #2418). Lost ACTION property has a work around (#2422).
4678 To enable that support in an existing configuration so that it
4679 exchanges items in the more suitable iCalendar 2.0 format, use:
4681 syncevolution --configure --source-property sync=two-way \
4682 funambol calendar todo
4683 syncevolution --configure --source-property type='calendar:text/calendar!' \
4685 syncevolution --configure --source-property type='todo:text/calendar!' \
4688 Without the exclamation mark, format auto-negotiation would pick the
4689 less capable vCalendar 1.0 format because that is marked as preferred
4693 *** WARNING ***: After switching from a previous release to the
4694 current one, or vice versa, do a "syncevolution --sync
4695 refresh-from-server" or "--sync refresh-from-client" (depending on
4696 which side has the authoritative copy of the data) once, to get client
4697 and server into a consistent state. Not doing so can result in
4698 applying the same changes to the server multiple times, and thus
4701 Other changes in detail:
4703 * vCalendar 1.0 is now supported.
4705 * Both libcurl and libsoup can be selected at compile time as HTTP(S)
4706 transport mechanism.
4708 * SF #2101015: Expect: 100-continue header results in 417 Error with proxy.
4709 Should no longer occur with the HTTP transports in this release.
4711 * SF #1874805: Syncing with Funambol results in loosing all-day property.
4712 This now works thanks to the Synthesis data conversion rules.
4714 * SF #2586600: Synchronisation with mobical.net fails in 0.8.1.
4715 Works now, but there are some known issues (Bugzilla #3009)
4716 and therefore mobical.net is not officially supported yet.
4718 * SF #2542968: Separator for categories should not be escaped.
4719 Done correctly by the Synthesis vcard conversion.
4721 * bug fix: Evolution notes with only a summary and no description were
4722 not sent correctly to the server. Instead of sending the summary,
4723 an empty text was sent.
4725 * CTRL-C no longer kills SyncEvolution right away. Instead it
4726 asks the server to suspend the session. If that takes too
4727 long, then pressing CTRL-C twice quickly will abort the sync
4728 without waiting for the server (Warning, this may lead to a
4729 slow sync in the next session).
4731 * WBXML is enabled by default now, except for Funambol (#2415).
4732 Using WBXML reduces message sizes and increases parsing
4735 * New configuration templates can be added to
4736 /etc/default/applications/syncevolution. These templates may contain
4737 icons, which are used by the GUI (no icons shipped right now).
4739 * Information about previous synchronization sessions is now stored in a
4740 machine-readable format and can be accessed using the new
4741 --print-sessions options. The output of this information is more
4742 complete and more nicely formatted.
4744 * --status now shows not only data changes since the last sync, but also
4745 item changes (see README for the difference between the two).
4747 * The new --restore option allows restoring local data to the state as
4748 it was before or after a sync. For this to work, "logdir" must be set
4749 (done by default for new configurations). The format of database dumps
4750 was changed to implement this feature. Instead of in a flat file,
4751 items are now saved as individual files in a directory. To get the
4752 previous format back (for example, to import as one .vcf or .ics file
4753 manually) concatenate these files.
4755 * With –-remove, one can remove configurations. It leaves data files and
4756 the local databases untouched.
4761 * The GUI includes the number of locally deleted items during a
4762 refresh-from-server sync in the number of "received changes"
4763 (#5185), which is a bit misleading. This is a result of #3314,
4764 which introduced changes not "received" from the server.
4766 * When a network error occurs and the client
4767 never notices that the connection to the server was lost,
4768 it will hang forever, waiting for the server's reply (#3427).
4770 * The file backend now works only for data formats understood
4771 by SyncEvolution and the Synthesis engine. Items are parsed
4772 when exchanging them among the backend, engine, and server,
4773 in contrast to 0.8.1, where item content was not touched
4776 * The ZYB.com server sends conflicting sync anchors, so
4777 most syncs don't work as expected (#2424).
4780 SyncEvolution 0.9 beta 3 hotfix -> 0.9 final, 12.08.2009
4781 --------------------------------------------------------
4783 Because SSL certificate checking for Google only works with libsoup if
4784 the platform has a patched libsoup
4785 (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >= 2.28,
4786 certificate checking remains turned off by default for Google. If your
4787 platform has a suitable libsoup (like Moblin 2.0), then enable
4790 syncevolution --configure \
4791 --sync-property SSLVerifyServer=true \
4792 --sync-property SSLVerifyHost=true \
4796 * updated translations
4797 * refresh-from-server syncs now report how many items were
4798 deleted locally at the start of the sync (Bugzilla #3314).
4799 The GUI includes the number of locally deleted items during a
4800 refresh-from-server sync in the number of "received changes",
4801 which is a bit misleading (#5185).
4802 * fixed build issue on Fedora 11/g++ 4.4 (Bugzilla #5061)
4803 * some build and test improvements
4804 * proper fix for D-Bus error functions (#4919)
4805 * improve sync-ui startup time by avoiding an unnecessary
4806 copying of the sync config into itself (#5021)
4807 * adapted tooltip style (used for SyncML server links) to new
4808 Moblin theme, they weren't visible earlier (#5017)
4809 * notify zone selector in Moblin 2.0 about sync-ui startup (#4752)
4810 * sync-ui: minor layout change for fatal error situation
4813 SyncEvolution 0.9 beta 3 -> 0.9 beta 3 hotfix, 23.07.2009
4814 ---------------------------------------------------------
4816 Found additional Google limitation: the server drops photos if they
4817 exceed a certain size. The limit is somewhere between 40KB (okay) and
4820 The last-minute workaround for Google/libsoup/gnutls (using http)
4821 didn't work because apparently Google only supports SyncML over https
4822 (Bugzilla #4551). Now the default configuration template uses https
4823 with all certificate checking disabled. A patch for libsoup was
4824 submitted to upstream.
4826 Some error messages by the "syncevolution" command line tool were not
4827 printed (#4676). The root cause was the intentional interception of
4828 stderr to hide the noise printed by various system libraries
4829 (#1333). Unfortunately remarks about incorrect command line options
4830 were among swallowed messages. No good workaround available short of
4831 disabling the redirection with SYNCEVOLUTION_DEBUG=1, so let's release
4835 * updated translations
4838 SyncEvolution 0.9 beta 2 -> 0.9 beta 3, 21.07.2009
4839 --------------------------------------------------
4840 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4842 Enabled calendar and task synchronization for myFunambol.com.
4843 Not all iCalendar 2.0 features are supported by the server,
4844 most notably support for meetings (drops attendees), meeting
4845 invitations (drops UID), detached recurrences
4846 (drops RECURRENCE-ID). See README.funambol for details.
4848 Interoperability with the Funambol server was improved by adding
4849 support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY,
4850 Bugzilla #2418). Lost ACTION property is worked around (#2422).
4852 Synchronization with Google Contacts was enabled and tested.
4853 A configuration template for that server is now provided. Google
4854 follows the vCard 2.1 specification and thus does not support some
4855 of the vCard 3.0 additions, nor some of the common extensions. As
4856 a result, several properties are not synchronized (nickname, birthday,
4857 spouse/manager, URLs, ...). Only one top-level organization seems to
4858 be supported. For details, see README.google.
4860 Regarding Google's SyncML support, refresh-from-client and
4861 one-way-from-client sync modes are not supported. Deleting contacts
4862 moves them out of the main address without deleting them permanently. When
4863 adding such a contact again, the server discards the data sent by the
4864 client and recreates the contact with the data that it remembered.
4866 SSL certificate checking with libsoup (the default transport) is now
4867 supported (#2431). However, libsoup/gnutls are very strict about SSL
4868 certificate checking and reject version 1 certificates, like the one
4869 used by Verisign for Google (#4551). At the moment the only solution
4870 is to fall back to plain http in the Google configuration template.
4872 CTRL-C no longer kills SyncEvolution right away. Instead it
4873 asks the server to suspend the session. If that takes too
4874 long, then pressing CTRL-C twice quickly will abort the sync
4875 without waiting for the server (warning, this may lead to a
4876 slow sync in the next session).
4878 WBXML is enabled by default now, except for Funambol (#2415).
4879 Using WBXML reduces message sizes and increases parsing
4880 performance. It was not enabled initially in the 0.9 releases in order
4881 to test this new feature more thoroughly. Old configs don't have an
4882 explicit enableWBXML setting and therefore will automatically use the
4885 Various bug fixes and improvements:
4887 * only show servers in GUI which are tested and supported (Bugzilla #3336)
4888 * a single log file is written in .html format (#3474)
4889 * added several translations of the GUI
4890 * lots of testing improvements, build binary packages again
4894 When enabling calendar and todo synchronization with Funambol
4895 in an existing configuration, set the type so that iCalendar 2.0 is used:
4896 syncevolution --configure --source-property sync=two-way funambol calendar todo
4897 syncevolution --configure --source-property type='calendar:text/calendar!' funambol calendar
4898 syncevolution --configure --source-property type='todo:text/calendar!' funambol todo
4900 When creating a configuration anew, this is not necessary because the
4901 configuration template contains those types.
4904 SyncEvolution 0.9 beta 1 -> 0.9 beta 2, 12.06.2009
4905 --------------------------------------------------
4906 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4908 Major new feature: a GTK GUI! The "sync-ui" program depends on a
4909 backend D-Bus service ("synevo-dbus-server") and several auxiliary
4910 files. Therefore it only runs without hacks after "sudo make install",
4911 in contrast to the normal command line which can be invoked directly.
4913 New configuration templates can be added to
4914 /etc/default/applications/syncevolution. These templates may contain
4915 icons which are used by the GUI (no icons shipped right now).
4917 Information about previous synchronization sessions is now stored in a
4918 machine-readable format and can be accessed via the new
4919 --print-sessions options. The output of this information is more
4920 complete and nicer formatted.
4922 --status now not only shows data changes since the last sync, but also
4923 the item changes (see README for the difference between the two).
4925 The new --restore option allows restoring local data to the state as
4926 it was before or after a sync. For this to work, "logdir" must be set
4927 (done by default for new configurations). The format of database dumps
4928 was changed to implement this feature: instead of in a flat file,
4929 items are now saved as individual files in a directory. To get the
4930 previous format back (for example, to import as one .vcf or .ics file
4931 manually) concatenate these files.
4933 With --remove one can remove configurations. It leaves data files and
4934 the local databases untouched.
4936 Various bug fixes and improvements:
4938 * compiles and works again on Debian Etch if Boost 1.35 is installed
4939 from www.backports.org (without GUI, see Bugzilla #3358)
4941 * uses XDG_CACHE_HOME (= ~/.cache) for logs and database dumps to
4942 avoid interfering with .desktop search in XDG_DATA_HOME; the
4943 directory there is automatically moved when running syncevolution
4946 * re-enabled certain config options (clientAuthType, maxMsgSize, maxObjSize);
4947 normally it shouldn't be necessary to modify those (Bugzilla #3242, #2784)
4949 * fixed error handling of unexpected server reply in libsoup transport
4952 * message logging is enabled at logLevel 3 (XML translation) and 4 (also
4953 original XML or WBXML message)
4955 * GTK GUI fixes since initial Moblin 2.0 beta: only start it once if
4956 libunique is available (Bugzilla #3154), wrap text in change sync service"
4957 button (Bugzilla #2064), sort sources alphabetically in UI (Bugzilla #2070)
4960 SyncEvolution 0.8.1 -> 0.9 beta 1, 13.05.2009
4961 ---------------------------------------------
4962 Synthesis SyncML Engine version: see src/synthesis/ChangeLog
4964 A major new release and the first step towards further improvements:
4965 from this release onwards, the Synthesis SyncML engine is used as the
4966 underlying SyncML and data conversion engine. The focus of this first
4967 beta was to reach the same level of functionality and stability as in
4968 0.8.1. Therefore this beta does not yet bring much new features; this
4969 will be the focus of further beta releases until finally 0.9 will be a
4970 full replacement for 0.8.1.
4972 This release also switches from an "all items are sent verbatim to the
4973 SyncML server" to a "parse and convert" data handling model. The
4974 argument for the former approach was that the SyncML server should be
4975 the only entity in the system which does data conversion. The previous
4976 releases already had to deviate from this approach to accommodate for
4977 minor client/server incompatibilities and for vCard 2.1 support.
4979 The main reason for going to full semantic conversion is vCalendar 1.0
4980 support. Support by servers for iCalendar 2.0, the only format
4981 supported by 0.8.1, is often still incomplete or even non-existent. By
4982 doing the conversion on the client side, SyncEvolution is now able to
4983 synchronize events and tasks with a wider variety of servers.
4985 It is still true that properties not supported by a server cannot
4986 be synchronized to other devices, so using a server with full
4987 iCalendar 2.0 support is recommended. But in contrast to 0.8.1,
4988 information that can only be stored locally is no longer lost when
4989 receiving an incomplete update from the SyncML server thanks to
4990 intelligent merging provided by the Synthesis engine. This depends on
4991 an accurate description of the server's capabilities, which might not
4992 be provided by all of them - still needs to be tested in more detail.
4994 *** WARNING ***: after switching from a previous release to the
4995 current one or vice versa, do a "syncevolution --sync
4996 refresh-from-server" or "--sync refresh-from-client" (depending on
4997 which side has the authoritative copy of the data) once to get client
4998 and server into a consistent state. Not doing so can result in
4999 applying the same changes to the server multiple times and thus
5004 * vCalendar 1.0 is now supported. Because this hasn't been tested that
5005 much yet, events and tasks are still disabled in the Funambol default
5006 configuration (SF #2635973).
5008 * Both libcurl and libsoup can be selected at compile time as HTTP(S)
5009 transport mechanism.
5011 * SF #2101015: Expect: 100-continue header results in 417 Error with proxy
5012 Should no longer occur with the HTTP transports in this release.
5014 * SF #1874805: Syncing with Funambol results in loosing all-day property
5015 This now works thanks to the Synthesis data conversion rules.
5017 * SF #2586600: Synchronisation with mobical.net fails
5018 Should work now because of the different SyncML implementation (untested).
5020 * SF #2542968: separator for categories should not be escaped
5021 Done correctly by the Synthesis vcard conversion.
5023 * bug fix: Evolution notes with only a summary and no description were
5024 not sent correctly to the server: an empty text was sent instead of
5027 Known shortcomings in this release which will be fixed before the
5030 * Verbatim file backups of items on the SyncML server are currently
5031 not possible: the SyncEvolution "file" backend still exists, but
5032 all items are converted by the Synthesis engine and therefore must
5033 be in a format supported by the engine.
5035 * HTTPS can be used with libsoup, but certificate checking is always
5036 disabled. Need to find a portable way to determine where the
5037 certificate file is on various systems.
5039 * Log file handling is not yet unified: the traditional client.log
5040 contains only high-level SyncEvolution log entries. Low-level
5041 SyncML and engine log entries are in sysync_*.html files.
5043 * stdout and stderr messages from system libraries are visible on the
5044 console. 0.8.1 used to redirect those into the client.log to hide
5045 this noise; this will be added again. In the meantime, ignore
5046 messages like "Deadlock potential - avoiding evil bug!". This is
5047 liborbit telling us that it is (hopefully successfully) handling
5051 SyncEvolution 0.8.1 -> 0.8.1a, 15.12.2008
5052 -----------------------------------------
5053 C++ client library: 7.0 plus some patches, see github
5054 repository referenced in configure script.
5056 A minor bug fix release, updating only necessary on Mac OS X.
5058 * #2307976 "Trace/BPT trap - sync failure": occurs randomly in
5059 Mac OS X specific transport layer of the Funambol C++ client
5060 library. Avoided in 0.8.1a by using libcurl as transport,
5064 SyncEvolution 0.8 -> 0.8.1, 11.10.2008
5065 --------------------------------------
5066 C++ client library: 7.0 plus some patches, see github
5067 repository referenced in configure script.
5069 A minor bug fix release, updating not really necessary.
5070 The binary packages for Evolution are built now so that
5071 one package works for all compatible Evolution releases,
5072 including the new Evolution 2.24.
5074 * Evolution calendar: regression in 0.8: one-way sync of virtual
5075 birthday calendar (#2095433). "refresh-from-client" works again
5076 for the birthday calendar. Other modes are not supported.
5077 In contrast to previous releases SyncEvolution now does some
5078 sanity checks that the sync mode is right.
5079 * Mac OS X: removing old logdirs failed (#2087389). Fixed.
5080 * SyncML client library: "Expect: 100-continue" header
5081 resulted in 417 error with certain proxies (#2101015).
5082 Now this header is always disabled; it doesn't make
5083 much sense with SyncML anyway.
5084 * The development of the Funambol C++ client library is now
5085 tracked in a git repository on github.com. Modifications
5086 and tags for SyncEvolution are checked in there. The
5087 configure script checks out the right sources from there
5088 automatically; can be controlled via --with-funambol-src
5090 * Evolution desktop: the version of the used Evolution libraries
5091 is included in the "--version" output and log files.
5092 * Cleaned up README. Kudos to Martin Wetterstedt for pointing
5093 out mistakes in the README and the web site.
5096 SyncEvolution 0.7 -> 0.8, 29.08.2008
5097 ------------------------------------
5098 C++ client library: 7.0 plus compatibility patch for Synthesis
5100 Updating user configuration: this version introduces a new, simplified
5101 configuration layout. Old configurations still work. They can be
5102 converted to the new format via a new "--migrate" command line option.
5104 *** WARNING ***: this version uses a different change tracking for Mac
5105 OS X address book, Evolution calendars, task lists and memos. After
5106 switching from a previous release to the current one or vice versa, do
5107 a "syncevolution --sync refresh-from-server" once to reset the change
5108 tracking. Not doing so can result in applying the same changes to the
5109 server multiple times and thus duplicates.
5111 * New configuration file layout: following the freedesktop.org
5112 recommendation, new configurations are stored in
5113 $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if
5114 XDG_CONFIG_HOME is not set. The old layout under
5115 $HOME/.sync4j/evolution is still supported.
5117 * New command line options: new configurations can be created by
5118 syncevolution itself (--configure), including setting of all
5119 configuration properties (--sync-property, --source-property).
5120 The configuration can dumped to stdout (--print-config), with or
5121 without comments explaining each property (--quiet). See the
5124 * The "evolutionsource" source property no longer has to be configured.
5125 If left blank, the default client database will be synchronized.
5127 * Selecting which kind of data is to be synchronized under a specific
5128 source name is a lot easier now and the same on all supported
5129 platforms: the SyncEvolution backends can be selected via aliases
5130 (e.g. "contacts") and the format is specified via an optional
5131 MIME type (e.g. "contacts:text/x-vcard"). In the unlikely situation
5132 that multiple backends are active which can synchronize the same
5133 kind of data, then the right one can be selected by the unique
5134 name of the backend (e.g. "Evolution Address Book").
5136 * New configurations automatically get a random client ID string.
5137 Setting it manually is still possible, but no longer necessary.
5138 Disabling unavailable data sources is also done automatically.
5140 SyncEvolution checks that the backend is available and there is
5141 at least one database (the first one will be synchronized unless
5142 explicitly changed). If these checks fail and the sync source was
5143 explicitly requested by the user by listing it after the server
5144 name, then an error is printed and no configuration is written.
5145 If the user wants the default setup, then the source is silently
5148 * All passwords can be read from stdin at runtime or an environment
5149 variable (see "--sync-property password=?" or README for details).
5150 Both avoids the less secure storing of plain text passwords in the
5151 configuration files (SF #1832458).
5153 * Detached recurrences: meeting series where some occurrences were
5154 modified are now supported. Previously only the main event was
5155 synchronized. All exceptions got lost when copying back from the
5156 server. Requires a SyncML server which supports this. ScheduleWorld
5157 was extended to do that.
5159 * Fixed segfaults caused by logging certain data. The reason was an
5160 API change in the client library's logging calls which the older
5161 SyncEvolution code hadn't been adapted to. Did not normally occur,
5162 but might have been the reason for SF #1830149 (unconfirmed).
5164 * Time zone support: the time zones of incoming events are mapped
5165 to native time zone definitions whenever possible. Currently
5166 this works if the TZID follows the Olson naming scheme with a
5167 location at the end. Matching the time zone has the advantage of
5168 being able to update the time zone definition without having to
5169 recreate the event. If matching fails and the VTIMEZONE definition
5170 differs from one already imported earlier, then SyncEvolution works
5171 arounds limitation in Evolution by renaming the time zone.
5172 Previously the new event used the old and most likely out-dated
5173 time zone definition.
5175 ***WARNING***: Evolution itself does not do either of these steps
5176 itself yet, thus importing meeting invitations via Evolution still
5177 fails in some cases. The code implementing the time zone handling
5178 described above was written with inclusion into Evolution itself in
5179 mind; a discussion with the Evolution developers about that is in
5182 * On Maemo/Nokia Internet Tablets, calendar synchronization now
5183 works because the new calendar change tracking no longer depends
5184 on some of the backend calls which used to fail (SF #1734977).
5186 * Added SSL configuration options: certificate checking can be
5187 relaxed or disabled completely (SF #1852647).
5189 * Added a new file backend: stores each SyncML item as a separate file
5190 in a directory. The directory has to be specified via the database
5191 name, using [file://]<path> as format. The file:// prefix is
5192 optional, but the directory is only created if it is used.
5194 Change tracking is done via the file systems modification time
5195 stamp: editing a file treats it as modified and then sends it to the
5196 server in the next sync. Removing and adding files also works.
5198 The local unique identifier for each item is its name in the
5199 directory. New files are created using a running count which
5200 initialized based on the initial content of the directory to
5201 "highest existing number + 1" and incremented to avoid collisions.
5203 Although this sync source itself does not care about the content of
5204 each item/file, the server needs to know what each item sent to it
5205 contains and what items the source is able to receive. Therefore
5206 the "type" property for this source must contain a data format
5207 specified, including a version for it. Here are some examples:
5208 - type=file:text/vcard:3.0
5209 - type=file:text/plain:1.0
5211 * Code restructuring: it is now possible to add new backends and thus
5212 write SyncML clients for other kinds of data without touching any
5213 line of code in SyncEvolution itself. All the required interfaces
5214 are documented inside SyncEvolution itself. A HTML documentation can
5215 be built via the new "make doc" target (requires Doxygen and dot).
5217 The SyncEvolution framework itself never depended on GNOME or
5218 Evolution, only the Evolution data sources did. If you want
5219 support for other ways of storing your data, consider writing
5220 a new data source - it is really easy. See EvolutionSyncSource
5221 or TrackingSyncSource for details.
5223 * Messages are printed to the screen immediately. More readable
5226 * Maemo: the useless ''list: unable to access calendars:
5227 failure' error message is avoided. It was triggered by not having
5228 memo support in Evolution Data Server. Cleaned up the code so that
5229 it properly distinguishes between 'calendar', 'memo list' and
5232 * added server template for MemoToo; note that the server has not been
5235 * added synchronization of Evolution memo summary
5237 Most devices only synchronize plain text and do not have a
5238 separate summary field. Such an extra summary field was added to
5239 Evolution after memo support was initially implemented in
5240 SyncEvolution, therefore SyncEvolution did not transmit that
5243 Added transmitting the summary by inserting it as first line of
5244 the plain text blob *if* it is not already identical with the
5245 first line. When receiving a memo, the summary is set from the
5246 first line *without* removing the first line because the first
5247 line might have been used as a normal part of the memo.
5249 * Various other minor changes, fixes and lots of code cleanups.
5251 * license cleanup: SyncEvolution is GPL v2 or later
5254 SyncEvolution 0.8 beta 2 -> 0.8 final, 29.08.2008
5255 -------------------------------------------------
5256 C++ client library: 7.0 plus compatibility patch for Synthesis
5258 * license cleanup: SyncEvolution is GPL v2 or later
5261 SyncEvolution 0.8 beta 2 -> 0.8 beta 3, 17.08.2008
5262 --------------------------------------------------
5263 C++ client library: 7.0 plus compatibility patch for Synthesis
5265 * Another revision of updating events in Evolution calendars:
5266 the method introduced in 0.8 beta 1 for dealing with
5267 detached recurrences did not work with the Evolution Exchange
5268 Connector. Now both Exchange and local calendars pass the unit
5271 * minor code cleanup (testing, writing additional backends)
5274 SyncEvolution 0.8 beta 1 -> 0,8 beta 2, 03.08.2008
5275 --------------------------------------------------
5276 C++ client library: 7.0 plus compatibility patch for Synthesis
5278 * To prevent accidental sync runs when a configuration change
5279 was intented, a new --run switch must be used when configuration
5280 properties are given on the command line. When neither --run
5281 nor --configure are specified, SyncEvolution prints an
5282 error and refuses to do anything.
5284 * Improved documentation for command line, in particular the synopsis.
5286 * Added a new file backend: stores each SyncML item as a separate file
5287 in a directory. The directory has to be specified via the database
5288 name, using [file://]<path> as format. The file:// prefix is
5289 optional, but the directory is only created if it is used.
5291 Change tracking is done via the file systems modification time
5292 stamp: editing a file treats it as modified and then sends it to the
5293 server in the next sync. Removing and adding files also works.
5295 The local unique identifier for each item is its name in the
5296 directory. New files are created using a running count which
5297 initialized based on the initial content of the directory to
5298 "highest existing number + 1" and incremented to avoid collisions.
5300 Although this sync source itself does not care about the content of
5301 each item/file, the server needs to know what each item sent to it
5302 contains and what items the source is able to receive. Therefore
5303 the "type" property for this source must contain a data format
5304 specified, including a version for it. Here are some examples:
5305 - type=file:text/vcard:3.0
5306 - type=file:text/plain:1.0
5308 * Code restructuring: it is now possible to add new backends and thus
5309 write SyncML clients for other kinds of data without touching any
5310 line of code in SyncEvolution itself. All the required interfaces
5311 are documented inside SyncEvolution itself. A HTML documentation can
5312 be built via the new "make doc" target (requires Doxygen and dot).
5315 SyncEvolution 0.8 alpha 1 -> 0.8 beta 1, 12.07.2008
5316 ---------------------------------------------------
5317 C++ client library: the frozen 7.0 code, but before the release
5319 * Added support for detached recurrences (aka modified instances of
5320 a recurring event). Requires a SyncML server which supports this.
5321 ScheduleWorld was extended to do that.
5323 * Fixed segfaults caused by logging certain data. The reason was an
5324 API change in the client library's logging calls which the older
5325 SyncEvolution code hadn't been adapted to. Did not normally occur,
5326 but might have been the reason for SF #1830149 (unconfirmed).
5328 * when creating a config for the first time, only enable sync sources
5329 which can be synchronized (SF #1991286)
5331 The check for that was completely missing. Now SyncEvolution
5332 checks that the backend is available and there is at least one
5333 database (the first one will be synchronized unless explicitly
5334 changed). If these checks fail and the sync source was explicitly
5335 requested by the user by listing it after the server name, then
5336 an error is printed and no configuration is written. If the user
5337 wants the default setup, then the source is silently disabled.
5339 * Fixed incorrect properties in some of the new server templates
5340 (ScheduleWorld syncURL + calender URI, Funambol syncURL, ScheduleWorld
5343 * Device IDs must start with the "sc-pim-" prefix, otherwise myFUNAMBOL
5344 may treat different devices as the single phone that myFUNAMBOL
5345 supports, leading to unwanted slow syncs.
5347 * Maemo package is build again so that backends are loaded dynamically:
5348 installing Dates application is as it was with the 0.7 release
5349 (SF #1993109). The useless ''list: unable to access calendars:
5350 failure' error message is avoided. It was triggered by not having
5351 memo support in Evolution Data Server. Cleaned up the code so that
5352 it properly distinguishes between 'calendar', 'memo list' and
5355 * added server template for MemoToo; note that the server has not been
5358 * added synchronization of Evolution memo summary
5360 Most devices only synchronize plain text and do not have a
5361 separate summary field. Such an extra summary field was added to
5362 Evolution after memo support was initially implemented in
5363 SyncEvolution, therefore SyncEvolution did not transmit that
5366 Added transmitting the summary by inserting it as first line of
5367 the plain text blob *if* it is not already identical with the
5368 first line. When receiving a memo, the summary is set from the
5369 first line *without* removing the first line because the first
5370 line might have been used as a normal part of the memo.
5372 * removed --properties option: it wasn't implemented yet and won't be in 0.8
5374 * fixed regression in alpha 1: setting sync mode during status query
5375 or sync affected *all* sources, even the disabled ones. Now it only
5376 affects the enabled ones, as intended. To enable disabled sync sources,
5377 list them after the server name.
5379 *** WARNING ***: this version uses a different change tracking for
5380 for Mac OS X AddressBook. After switching from a previous release to the current
5381 one or vice versa, do a "syncevolution --sync refresh-from-server"
5382 once to reset the change tracking. Not doing so can result in applying
5383 the same changes to the server multiple times and thus duplicates.
5385 A similar change was necessary in 0.8 alpha 1 for Evolution calendar,
5386 tasks, and memos. When switching from a version >= 0.8 alpha 1 to an
5387 older version or vice versa also refresh the local databases.
5389 0.8 alpha 1 did not create correct configurations. When you want to continue
5390 using such a configuration, make sure that in addition to the obviously
5391 wrong syncURLs also the less obvious ScheduleWorld config mistakes are fixed:
5392 * calendar: uri=cal2
5393 * addressbook: type=addressbook:text/vcard
5394 * deviceId must start with "sc-pim-" if you synchronize with myFUNAMBOL,
5395 otherwise there may be unwanted slow syncs when multiple devices with
5396 a different deviceId connect. Note that changing the deviceId causes
5397 a slow sync, so you should get client and server in sync before changing
5398 the value, change it, then do a "--sync refresh-from-server".
5401 SyncEvolution 0.7 -> 0.8 alpha 1, 19.04.2008
5402 --------------------------------------------
5403 C++ client library: a snapshot of the development version
5405 Updating user configuration: this version introduces a new, simplified
5406 configuration layout. Old configurations still work. They can be
5407 converted to the new format via a new "--migrate" command line option.
5409 *** WARNING ***: this version uses a different change tracking for
5410 Evolution calendars, task lists and memos. After switching from a previous
5411 release to the current one or vice versa, do a "syncevolution --sync
5412 refresh-from-server" once to reset the change tracking. Not doing so
5413 can result in applying the same changes to the server multiple times
5414 and thus duplicates.
5416 * New configuration file layout: following the freedesktop.org
5417 recommendation, new configurations are stored in
5418 $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if
5419 XDG_CONFIG_HOME is not set. The old layout under
5420 $HOME/.sync4j/evolution is still supported.
5422 * New command line options: new configurations can be created by
5423 syncevolution itself (--configure), including setting of all
5424 configuration properties (--sync-property, --source-property).
5425 The configuration can dumped to stdout (--print-config), with or
5426 without comments explaining each property (--quiet). See the
5429 * The "evolutionsource" source property no longer has to be configured.
5430 If left blank, the default client database will be synchronized.
5432 * Selecting which kind of data is to be synchronized under a specific
5433 source name is a lot easier now and the same on all supported
5434 platforms: the SyncEvolution backends can be selected via aliases
5435 (e.g. "contacts") and the format is specified via an optional
5436 MIME type (e.g. "contacts:text/x-vcard"). In the unlikely situation
5437 that multiple backends are active which can synchronize the same
5438 kind of data, then the right one can be selected by the unique
5439 name of the backend (e.g. "Evolution Address Book").
5441 * New configurations automatically get a random client ID string.
5442 Setting it manually is still possible, but no longer necessary.
5444 * All passwords can be read from stdin at runtime or an environment
5445 variable (see "--sync-property password=?" or README for details).
5446 Both avoids the less secure storing of plain text passwords in the
5447 configuration files (SF #1832458).
5449 * Detached recurrences: meeting series where some occurrences were
5450 modified are now supported. Previously only the main event was
5451 synchronized. All exceptions got lost when copying back from the
5452 server. ***WARNING***: such events are accepted by ScheduleWorld,
5453 but not propagated to other clients. Under investigation.
5455 * Time zone support: the time zones of incoming events are mapped
5456 to native time zone definitions whenever possible. Currently
5457 this works if the TZID follows the Olson naming scheme with a
5458 location at the end. Matching the time zone has the advantage of
5459 being able to update the time zone definition without having to
5460 recreate the event. If matching fails and the VTIMEZONE definition
5461 differs from one already imported earlier, then SyncEvolution works
5462 arounds limitation in Evolution by renaming the time zone.
5463 Previously the new event used the old and most likely out-dated
5464 time zone definition.
5466 ***WARNING***: Evolution itself does not do either of these steps
5467 itself yet, thus importing meeting invitations via Evolution still
5468 fails in some cases. The code implementing the time zone handling
5469 described above was written with inclusion into Evolution itself in
5470 mind; a discussion with the Evolution developers about that is in
5473 * On Maemo/Nokia Internet Tablets, calendar synchronization now
5474 works because the new calendar change tracking no longer depends
5475 on some of the backend calls which used to fail (SF #1734977).
5477 * Added SSL configuration options: certificate checking can be
5478 relaxed or disabled completely (SF #1852647).
5480 * Adding support for new local data sources is easier now. The
5481 SyncEvolution frame work itself never depended on GNOME or
5482 Evolution, only the Evolution data sources did. If you want
5483 support for other ways of storing your data, consider writing
5484 a new data source - it is really easy. See EvolutionSyncSource
5485 or TrackingSyncSource for details.
5487 * Messages are printed to the screen immediately. More readable
5490 * Various other minor changes and fixes.
5493 SyncEvolution 0.6 -> 0.7, 17.12.2007
5494 ------------------------------------
5495 C++ client library: r_6_5_3_1
5497 Updating user configuration: no relevant changes in this release. For those
5498 who haven't done so already, enabling large object support is recommended
5499 (see syncml/config.txt sample configs).
5501 * added port for iPhone and Mac OS X Address Book
5503 * fixed Nokia packaging problem which prevented installation
5504 via the package manager unless it was in "red pill" mode
5507 * sync with eGroupware - lost or messed up telephones: SyncEvolution
5508 incorrectly added TYPE=OTHER to phone numbers sent with e.g.
5509 CELL instead of TYPE=CELL (SF #1796086). Another patch was
5510 required for eGroupware itself to correctly map phone numbers
5511 as sent by SyncEvolution, see Compatibility web page.
5513 * added .deb packages
5515 * adapted calendar event insert/update to Evolution 2.12: the UID needs to be
5516 restored, otherwise the Evolution backend crashes (GNOME issue #488881)
5518 * new feature: if the previous log directory is still available,
5519 then local changes made since last sync can be queried
5520 before starting a sync (new option --status) and will be
5521 printed directly before a sync. Setting the "logdir" option
5522 will automatically keep the most recent logs and database
5525 * added command line options:
5527 Temporarily synchronize the active sources in that mode. Useful
5528 for a 'refresh-from-server' or 'refresh-from-client' sync which
5529 clears all data at one end and copies all items from the other.
5532 The changes made to local data since the last synchronization are
5533 shown without starting a new one. This can be used to see in advance
5534 whether the local data needs to be synchronized with the server.
5537 Suppresses most of the normal output during a synchronization. The
5538 log file still contains all the information.
5541 Prints usage information.
5544 Prints the SyncEvolution version.
5546 * default configurations now reference the normal Evolution databases
5547 ("Personal") thus requiring less changes to use. The account information
5548 is now clearly marked as placeholder which needs to be entered.
5550 * bugfix: vCard 3.0 with mixed case were not converted properly to vCard 2.1
5551 by SyncEvolution (must convert to upper case because vCard 2.1 only allows
5552 that), leading to problems with mapping phone numbers in the Funambol server.
5553 Diagnosed and reported by Paul McDermott, thanks a lot!
5555 * support receiving plain text notes with \n and \r\n line breaks;
5556 always send with \r\n
5558 * added explicit error message when syncevolution is invoked
5559 with incorrect names in the list of sources to synchronize:
5560 previously it silently ignored unknown names
5562 * improved output: less verbose ("extracting" items is now
5563 logged at debug level and thus not normally shown) and more
5564 informative printing of changes (table summarizes number of
5565 changes on client and server, heading for comparison changed
5566 to make it clear that it shows changes on the client)
5568 * SyncCap is not generated unless syncModes are configured: added
5569 a comment to example config (SF #1764123)
5571 * improved error handling: catch errors during post-processing and
5575 SyncEvolution 0.7-pre2 -> 0.7, 17.12.2007
5576 -----------------------------------------
5577 C++ client library: r_6_5_3_1
5579 * bugfix: vCard 3.0 with mixed case were not converted properly to vCard 2.1
5580 by SyncEvolution (must convert to upper case because vCard 2.1 only allows
5581 that), leading to problems with mapping phone numbers in the Funambol server.
5582 Diagnosed and reported by Paul McDermott, thanks a lot!
5584 * support receiving plain text notes with \n and \r\n line breaks;
5585 always send with \r\n
5587 * added explicit error message when syncevolution is invoked
5588 with incorrect names in the list of sources to synchronize:
5589 previously it silently ignored unknown names
5591 * added stack dumping in case of premature abort;
5592 removed workaround for lost connection to Evolution Dataserver
5593 again because the workaround itself caused random segfaults inside
5597 SyncEvolution 0.7-pre1 -> 0.7-pre2, 08.11.2007
5598 ----------------------------------------------
5599 C++ client library: branch b_v65
5601 Updating user configuration: no relevant changes in this release. For those
5602 who haven't done so already, enabling large object support is recommended
5603 (see syncml/config.txt sample configs). It is required for myFUNAMBOL to
5604 synchronize very large address books and some users have reported segfaults
5605 unless this option was enabled.
5607 * iPhone bug fix: syncing contacts with photos was unreliable (export) and
5608 crashed (import) because the API had not been called correctly
5610 * iPhone + ScheduleWorld: when configured to use vcard3 (recommended!) then
5611 contacts are exchanged as vCard 3.0
5613 * iPhone + ScheduleWorld bugfix: importing vCard 3.0 did not correctly
5614 classify the phone numbers. A sync with the new "--sync refresh-from-server"
5615 option will fix this, assuming that the server has the correct data.
5617 * Evolution: detect a crashed backend and abort SyncEvolution instead of
5620 * adapted calendar event insert/update to Evolution 2.12: the UID needs to be
5621 restored, otherwise the Evolution backend crashes (GNOME issue #488881)
5623 * new feature: if the previous log directory is still available,
5624 then local changes made since last sync can be queried
5625 before starting a sync (new option --status) and will be
5626 printed directly before a sync. Setting the "logdir" option
5627 will automatically keep the most recent logs and database
5630 * added command line options:
5632 Temporarily synchronize the active sources in that mode. Useful
5633 for a 'refresh-from-server' or 'refresh-from-client' sync which
5634 clears all data at one end and copies all items from the other.
5637 The changes made to local data since the last synchronization are
5638 shown without starting a new one. This can be used to see in advance
5639 whether the local data needs to be synchronized with the server.
5642 Suppresses most of the normal output during a synchronization. The
5643 log file still contains all the information.
5646 Prints usage information.
5649 Prints the SyncEvolution version.
5651 * default configurations now reference the normal Evolution databases
5652 ("Personal") thus requiring less changes to use. The account information
5653 is now clearly marked as placeholder which needs to be entered.
5656 SyncEvolution 0.6 -> 0.7-pre1, 17.10.2007
5657 -----------------------------------------
5658 * C++ client library: tag "sdkcpp_6_0_9_1" (same as before)
5659 * added support for Mac OS X/iPhone address book
5660 * fixed Nokia packaging problem which prevented installation
5661 via the package manager unless it was in "red pill" mode
5662 * improved output: less verbose ("extracting" items is now
5663 logged at debug level and thus not normally shown) and more
5664 informative printing of changes (table summarizes number of
5665 changes on client and server, heading for comparison changed
5666 to make it clear that it shows changes on the client)
5667 * example configs were in share/share directory (SF #1767329)
5668 * Nokia 770/800: uninstallable package fixed by setting category
5670 * sync with eGroupware - lost or messed up telephones: SyncEvolution
5671 incorrectly added TYPE=OTHER to phone numbers sent with e.g.
5672 CELL instead of TYPE=CELL (SF #1796086). Another patch was
5673 required for eGroupware itself to correctly map phone numbers
5674 as sent by SyncEvolution, see Compatibility web page.
5675 * SyncCap is not generated unless syncModes are configured: added
5676 a comment to example config (SF #1764123)
5677 * improved error handling: catch errors during post-processing and
5681 SyncEvolution 0.5 -> 0.6, 13.07.2007
5682 ------------------------------------
5683 * C++ client library: tag "sdkcpp_6_0_9_1"
5684 * added support for synchronizing Evolution notes (aka memos) as
5685 plain text where the first line serves as summary; this is the
5686 format understood by ScheduleWorld
5687 * added support for synchronizing Evolution notes (aka memos) as
5688 iCal 2.0 journal; not currently supported by any server and
5690 * revamped example configs and documentation: only one set of
5691 config files for each server is provided, because this is more
5692 likely to be needed by users
5693 * example configs are now installed in share/doc/syncevolution,
5694 enabled message limit and large object support in them
5695 * added support for Nokia 770/800 (aka Maemo):
5696 built with loadable modules so that it works with whatever
5697 backends are installed, improved log handling to accomodate
5698 for limited space on filesystem (see below), some workarounds
5699 * added workaround for Nokia 770:
5700 contacts are not really deleted unless the EDS-Sync with
5701 instant messaging servers is activated; now SyncEvolution
5702 will delete contacts marked as deleted by the GUI before
5703 a sync if it finds any.
5704 WARNING: if you use EDS-Sync and SyncEvolution, then give
5705 EDS-Sync enough time after going online to finish its own
5706 synchronization of modified/deleted contacts before starting
5708 * improved log handling: writing log and database dumps can be
5709 disabled with "logdir=none", verbosity of log is controlled by
5710 "loglevel", better handling of errors during initial database
5712 * added workaround for Evolution bug #455274:
5713 the separator for multiple categories in events and tasks
5714 is not generated and interpreted according to iCalendar 2.0
5715 by Evolution; as a consequence of that items sent to the server
5716 had all categories merged into one and items imported into
5717 Evolution only used one of the catories
5718 http://bugzilla.gnome.org/show_bug.cgi?id=455274
5719 * fixed off-by-one counting of months in backup directory names
5720 * fixed error handling: a failed source was not forced into a slow
5721 sync as required; one failed source prevented saving configs of
5722 not-failed ones and thus forced those into an unnecessary slow
5724 * uses the Funambol C++ testing framework (which is based on the
5725 previous SyncEvolution testing); now creates its configs
5726 and (when using CLIENT_TEST_EVOLUTION_PREFIX=file://<path>)
5727 also the Evolution databases automatically
5728 * implemented synccompare as pure Perl script using Algorithm::Diff
5729 instead of external diff tool
5730 * synccompare did not figure out width of shell window as it should have
5731 * better error handling if creating the before/after database dumps
5733 * workaround for Funambol 3.0 trailing = parser bug
5737 Old config files from 0.5 or older continue to work, but it is recommended
5738 to set the following options to enable message size limits:
5744 SyncEvolution 0.6pre2 -> 0.6, 13.07.2007
5745 ----------------------------------------
5746 * improved README/HACKING documents
5747 * fixed the new example configs: use event/task for Funambol 6.0,
5749 * added workaround for Evolution bug #455274:
5750 the separator for multiple categories in events and tasks
5751 is not generated and interpreted according to iCalendar 2.0
5752 by Evolution; as a consequence of that items sent to the server
5753 had all categories merged into one and items imported into
5754 Evolution only used one of the catories
5755 http://bugzilla.gnome.org/show_bug.cgi?id=455274
5756 * added workaround for Nokia 770:
5757 contacts are not really deleted unless the EDS-Sync with
5758 instant messaging servers is activated; now SyncEvolution
5759 will delete contacts marked as deleted by the GUI before
5760 a sync if it finds any.
5761 WARNING: if you use EDS-Sync and SyncEvolution, then give
5762 EDS-Sync enough time after going online to finish its own
5763 synchronization of modified/deleted contacts before starting
5767 SyncEvolution 0.6pre1 -> 0.6pre2, 23.04.2006
5768 --------------------------------------------
5769 * C++ client library: tag "sdkcpp_6_0_7" + revision 1.7 of
5770 build/autotools/test/Makefile.am
5771 * added support for synchronizing Evolution notes (aka memos) as
5772 plain text where the first line serves as summary; this is the
5773 format understood by ScheduleWorld, not the iCal 2.0 format
5775 * improved log handling: writing log and database dumps can be
5776 disabled with "logdir=none", verbosity of log is controled by
5777 "loglevel", better handling of errors during initial database
5779 * fixed off-by-one counting of months in backup directory names
5780 * fixed error handling: a failed source was not forced into a slow
5781 sync as required; one failed source prevented saving configs of
5782 not-failed ones and thus forced those into an unnecessary slow
5784 * revamped example configs: only one set of config files for each
5785 server is provided, because this is more likely to be needed
5787 * uses the Funambol C++ testing framework (which is based on the
5788 previous SyncEvolution testing); now creates its configs
5789 and (when using CLIENT_TEST_EVOLUTION_PREFIX=file://<path>)
5790 also the Evolution databases automatically
5793 SyncEvolution 0.5 -> 0.6pre1, 26.03.2006
5794 ----------------------------------------
5795 * C++ client library: CVS snapshot from 26.03.2006
5796 * added support for synchronizing Evolution notes (aka memos) as
5798 * added --enable-static-cxa = linking C++ runtime statically:
5799 binaries produced for 0.6 will have less external
5800 dependencies than the 0.5 binaries
5801 * added hacks for Maemo/Nokia 770, including a build
5802 mode with dynamically loadable modules (--enable-shared, --enable-maemo,
5803 --with-patched-dbus)
5804 * implemented synccompare as pure Perl script using Algorithm::Diff
5805 instead of external diff tool
5806 * synccompare did not figure out width of shell window as it should have
5807 * better error handling if creating the before/after database dumps
5809 * example configs are now installed in share/doc/syncevolution,
5810 enabled message limit and large object support in them
5811 * workaround for Funambol 3.0 trailing = parser bug
5815 Old config files continue to work, but it is recommended
5816 to set the following options to enable message size limits:
5823 SyncEvolution 0.4 -> 0.5, 12.11.2006
5824 ------------------------------------
5825 * C++ client library revision "syncevolution-0-5":
5826 - added support for sending changes in smaller chunks
5827 ("Large Object Support"): disabled by default, see updated
5828 example configuration
5829 - time is printed with GMT offset so that a server admin in
5830 a different timezone can always figure out how a client log
5831 relates to events on the server
5832 - special item keys as they might be stored in some calendars after
5833 importing non-Evolution events are now properly supported
5834 * bug fix: in 0.4 it was necessary to manually configure the verDTD
5835 or the Funambol 3.0a server would choke on the invalid SyncML during
5836 the second synchronization with SyncEvolution; now this option is set
5838 * added support and testing of transmitting just the changes
5839 from client to server or vice versa; see "one-way-from-server/client"
5840 in example configuration
5841 * fixed/updated comments in the example configuration
5842 * improved automated testing and fixed the problem that CPPUnit was not
5843 found unless it was part of the system
5844 * Now works on Maemo/Nokia 770: minor changes were necessary so that
5845 the system address book can now be selected under the name "<<system>>.
5846 Copying 300 contacts into the Nokia 770 went fine, but any further
5847 attempt to synchronize suffered from timeouts inside the embedded
5848 Evolution Data Server.
5851 SyncEvolution 0.3 -> 0.4, 11.09.2006
5852 ------------------------------------
5853 * C++ client library revision "syncevolution-0-4":
5854 - added support for device information, required by some servers
5855 - fixed incompatibilities with non-Funambol servers
5856 - the user agent string can now be modified in the
5857 spds/syncml/config.txt, but it is recommended to not set
5858 it explicitly. Then SyncEvolution will automatically insert
5859 its current version.
5860 - #305795: for tasks the "text/x-todo" type from the configuration
5861 was sent to servers instead of the correct "text/calendar"
5862 provided by SyncEvolution itself
5863 - sync modes "refresh-client/server" can now be specified as
5864 "refresh-from-client/server" in the config
5865 * updated default syncml/config.txt:
5866 - firstTimeSyncMode has never been implemented in the library,
5867 removed its documentation,
5868 - added documentation for userAgent
5869 - use "refresh-from-client/server"
5870 * SF issue 1511951: support copying changes back from EGroupware
5871 server by not expecting the UID of calendar items to be unmodified
5872 * fixed a bug where after a refresh-from-client sync changes would
5873 be sent to the server again during a two-way sync although the
5874 server already had them
5875 * implemented authentication for Evolution databases
5876 * synccompare was removing too many parts of vCards with
5877 single-value ORG properties
5878 * improved error reporting when selected server is not configured
5879 * changed vCard parser to make it compatible with servers
5880 which send a verbatim semicolon as part of properties where
5881 the semicolon has no special meaning
5882 * If minor errors occur like not being able to insert an
5883 item at the client or server side, then it is reported in the
5884 log and output, but the next synchronization will be a normal
5885 synchronization, not a forced slow one as in previous versions.
5886 The old approach ensured that the problem was noticed and fixed,
5887 but required user assistance. With the new approach synchronization
5888 continues to work, although without fixing the root cause of
5890 * Workaround for bug in Evolution 2.0.6 (and perhaps other versions):
5891 for calendars and task lists not all deleted items were reported
5892 at once thus a single synchronization would only tell the server
5893 about a subset of the changes. Repeating the synchronization would
5894 eventually be told of all changes, so now this repetition is built
5895 into the code which queries for changes and a single synchronization
5896 is sufficient as it should be.
5899 SyncEvolution 0.4 pre2 -> 0.4, 11.09.2006
5900 -----------------------------------------
5901 * adapted to C++ client library from CVS head, tagged as syncevolution-0-4:
5902 devinfo.patch patch was merged with several changes to the API
5903 * SF issue 1511951: support copying changes back from EGroupware
5904 server by not expecting the UID of calendar items to be unmodified
5907 SyncEvolution 0.4 pre1 -> pre2, 21.08.2006
5908 ------------------------------------------
5909 * C++ client library revision "syncevolution-0-4-pre2":
5910 most patches were merged into CVS head, but .patches/devinfo.patch
5911 still needs to be applied manually when checking out from the
5912 Funambol CVS instead of using the bundled version
5913 * fixed a bug where after a refresh-from-client sync changes would
5914 be sent to the server again during a two-way sync although the
5915 server already had them
5916 * implemented authentication for Evolution databases
5917 * synccompare was removing too many parts of vCards with
5918 single-value ORG properties
5919 * improved error reporting when selected server is not configured
5920 * use 7-bit quoted-printable encoding with explicit UTF-8 charset for
5921 vCard 2.1 to avoid any potential confusion about the content; not
5922 really necessary because SyncML specifies 8-bit UTF-8 as the default
5923 * fix for 0.4 pre 1: sending CHARSET is not allowed (and not
5924 needed) for vCard 3.0, so it was removed again (did not harm
5926 * fix for 0.4 pre 1: sending vCard 2.1 to Synthesis server did
5927 not work because the new device info always mentioned 3.0 as
5928 the preferred format - now the preferred format matches the one
5929 that was configured and that thus will be used.
5932 SyncEvolution 0.3 -> 0.4 pre 1, 2006-08-06
5933 ------------------------------------------
5934 * C++ client library revision "funambol30ga" plus the patches
5935 stored in its ".patches" directory:
5936 - the user agent string can now be modified in the
5937 spds/syncml/config.txt, but it is recommended to not set
5938 it explicitly. Then SyncEvolution will automatically insert
5939 its current version.
5940 - now compatible with additional servers (fixed some SyncML
5941 protocol issues, added support for sending device
5943 - revised API of the client library
5944 - #305795: for tasks the "text/x-todo" type from the configuration
5945 was sent to servers instead of the correct "text/calendar"
5946 provided by SyncEvolution itself
5947 - sync modes "refresh-client/server" can now be specified as
5948 "refresh-from-client/server" in the config
5949 * updated default syncml/config.txt:
5950 - firstTimeSyncMode has never been implemented in the library,
5951 removed its documentation,
5952 - added documentation for userAgent
5953 - use "refresh-from-client/server"
5954 * changed vCard parser to make it compatible with servers
5955 which send a verbatim semicolon as part of properties where
5956 the semicolon has no special meaning
5957 * If minor errors occur like not being able to insert an
5958 item at the client or server side, then it is reported in the
5959 log and output, but the next synchronization will be a normal
5960 synchronization, not a forced slow one as in previous versions.
5961 The old approach ensured that the problem was noticed and fixed,
5962 but required user assistance. With the new approach synchronization
5963 continues to work, although without fixing the root cause of
5965 * Workaround for bug in Evolution 2.0.6 (and perhaps other versions):
5966 for calendars and task lists not all deleted items were reported
5967 at once thus a single synchronization would only tell the server
5968 about a subset of the changes. Repeating the synchronization would
5969 eventually be told of all changes, so now this repetition is built
5970 into the code which queries for changes and a single synchronization
5971 is sufficient as it should be.
5972 * Made it compile on Maemo 2.0, the Nokia 770 build environment, by
5973 adding "--disable-ecal". Not tested yet, though.
5976 SyncEvolution 0.3, 2006-06-27
5977 -----------------------------
5979 * added syncing of calendars and tasks as iCalendar 2.0
5980 * added syncing of contacts as vCard 3.0
5981 * tested extensively with sync.scheduleworld.com and
5982 added an example configuration for it
5983 * uses C++ client library revision "wmplugin_3_0_20"
5984 which contains several bug fixes, among them proper
5985 support for special characters and memory handling
5987 * much nicer listing of changes made during a sync,
5988 handled by the improved "synccompare" utility script
5989 (formerly known as "normalize_vcard")
5990 * improved automated testing
5993 SyncEvolution 0.2, 2006-03-19
5994 -----------------------------
5996 * added automatic backup mechanism and log storage,
5997 see "Automatic Backups and Logging".
5998 * output no longer is the original log data, but rather
5999 a human-readable report of errors and synchronization
6001 * "normalize_vcard" can now also compare two .vcf files
6003 * improved unit tests to catch more errors
6004 * hide certain differences in vcards coming back from
6005 the server: duplication of extended vcard properties,
6007 * fixed client library problems:
6008 see http://forge.objectweb.org/tracker/?group_id=96&atid=100096
6010 * added some more problems to the "Known Problems" section
6013 SyncEvolution 0.1, 2006-03-13
6014 -----------------------------