diff options
author | Patrick Ohly <patrick.ohly@intel.com> | 2012-12-07 17:09:40 +0100 |
---|---|---|
committer | Patrick Ohly <patrick.ohly@intel.com> | 2012-12-07 20:09:08 +0100 |
commit | f1e7d922653649f3a3641ea0f8c7258b65b4ab12 (patch) | |
tree | 978f11b0105505842564acba3c43b6eb6c589c00 /NEWS | |
parent | 677f2efd185718730b506af0dd283f58623f0f81 (diff) |
NEWS, PIM API + README: updated for 1.3.99.2
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 208 |
1 files changed, 208 insertions, 0 deletions
@@ -1,3 +1,211 @@ +SyncEvolution 1.3.99.2, xxxxxxxxxx +================================== + +Another development snapshot. Includes all fixes that went into 1.3.2 +and several improvements to the PIM Manager. Documentation was updated +and extended considerably. The pim-manager-api.txt now describes the +abstract API while src/dbus/server/pim/README explains how +SyncEvolution implements it. + + +Details: + +* PIM Manager searches for a caller ID ('phone' search) in EDS + directly while folks still starts up. No unification is done of + these results. Intermediate results are replaced by the final ones + from folks once those are ready. + +* PIM Manager: allow configuration of session directories (part of FDO #55921) + + Useful for moving the session directories to a temporary file system. + They are essentially just useful for debugging when used as part of + PIM Manager. + + - "logdir" - a directory in which directories are created with + debug information about sync session + - "maxsessions" - number of sessions that are allowed to exist + after a sync (>= 0): 0 is special and means unlimited, + 1 for just the latest, etc.; + old sessions are pruned heuristically (for example, + keep sessions where something changed instead of + some where nothing changed), so there is no hard + guarantee that the last n sessions are present. + +* PIM Manager: write less data to disk (part of FDO #55921) + + Avoid writing config file changes to disk by enabling a new + "ephemeral" mode for syncing via the PIM Manager. In this mode, + config file changes are not flushed resp. discarded directly. + This prevents writing to .ini files in ~/.config. + + The "synthesis" binfile client files are still written, but they get + redirected into the session directory, which can (and should) be set + to a temp file system and get deleted again quickly. + + Data dumps are turned off now in the configs created by the PIM + Manager. + +* syncevo-dbus-server: use syslog instead of standard output by default + +* syncevo-dbus-server: command line options for controlling + output and startup + + -d, --duration=seconds/'unlimited' Shut down automatically + when idle for this duration (default 300 seconds) + -v, --verbosity=level Choose amount of output, 0 = no output, + 1 = errors, 2 = info, 3 = debug; default is 1. + -o, --stdout Enable printing to stdout (result of operations) + and stderr (errors/info/debug). + -s, --no-syslog Disable printing to syslog. + -p, --start-pim Activate the PIM Manager (= unified address book) + immediately. + +* PIM Manager: store set of active address books persistently (FDO #56334) + + Together with storing the sort order persistently, this allows + restarting the daemon and have it create the same unified address book + again. + +* PIM Manager: remove colon from valid peer UID character set (FDO #56436) + + Using the UID as part of file names gets more problematic when + allowing colons. Remove that character from the API and enforce + the format in the source code. + +* PIM Manager API: introduce contact ID and use it for reading + + This makes it easier for a client to fully polulate its view with + contact data. Previously it could happen that due to concurrent + changes in the server, a client was returned data for the same + contact multiple times. A client had to detect that and re-issue + read requests. + +* PIM Manager API: optional ViewAgent.Quiescent() (FDO #56428) + + The callback is guaranteed to be invoked once when a search has + finished sending its initial results, and not sooner. This makes it + possible to check whether the current data contains some contact or + not. + +* PIM Manager: limit number of search results (FDO #56142) + + A 'limit' search term with a number as parameter (formatted as string) + can be added to a 'phone' or 'any-contains' search term to truncate the + search results after a certain number of contacts. Example: + Search([['any-contains', 'Joe'], ['limit', '10']]) + => return the first 10 Joes. + + As with any other search, the resulting view will be updated if + contact data changes. + + The limit must not be changed in a RefineSearch(). A 'limit' term may + (but doesn't have to) be given. If it is given, its value must match + the value set when creating the search. This limitation simplifies the + implementation and its testing. The limitation could be removed if + there is sufficient demand. + +* PIM Manager: fix refining a search + + Due to not mapping the local index in the view to the parent's index, + refining only worked in views where parent and child had the same + index for the contacts in the search view. + +* PIM Manager: fix starting when done via search + + When the unified address book (= FullView) was not running yet at the + time when a client wanted to search it, the unified address book was + not started and thus the search never returned results. + +* PIM Manager: fix writing contact, support photo and notes + + folks and EDS do not support writing properties in parallel + (https://bugzilla.gnome.org/show_bug.cgi?id=652659). Must serialize + setting of modified properties. + +* PIM Manager: fix incorrect contact removal signals in filtered view + + The filtered view did not check whether a parent's removed contact was + really part of the view before sending a removal signal for it. + +* D-Bus: missing out parameters in D-Bus introspection XML (FDO #57292) + + The problem was in the C++ D-Bus binding. If the method that gets bound + to D-Bus returns a value, that value was ignored in the signature: + int foo() => no out parameter + + It works when the method was declared as having a retval: + void foo (int &result) => integer out parameter + + This problem existed for both the libdbus and the GIO D-Bus + bindings. In SyncEvolution it affected methods like GetVersions(). + +* PIM Manager performance: pre-compute normalized telephone numbers + + Looking up by phone number spends most of its cycles in normalizing of + the phone numbers in the unified address book. Instead of doing that + work over and over again during the search, do it once while loading. + + Looking up a phone number only once does not gain from this change, it + even gets slower (more memory intensive, less cache locality). Only + searching multiple times becomes faster. + + Ultimately it would be best to store the normalized strings together + with the telephone number inside EDS when the contact gets + created. Work on that is in progress. + +* PIM Manager: improve performance of FullView sorting + + This fixes the hotspot during populating the FullView content: moving + contacts around required copying IndividualData and thus copying + complex C++ structs and strings. Storing pointers and moving those + avoids that, with no lack of convenience thanks to boost::ptr_vector. + + Reordering also becomes faster, because the intermediate copy only + needs to be of the pointers instead of the full content. + +* PIM Manager example: add benchmarking + + The new "checkpoints" split up the whole script run into pieces which + are timed separately, with duration printed to stdout. In addition, + tools like "perf" can be started for the duration of one phase. + +* SyncML: workarounds for broken peers + + Some peers have problems with meta data (CtCap, old Nokia phones) and + the sync mode extensions required for advertising the restart + capability (Oracle Beehive). + + Because the problem occurs when SyncEvolution contacts the peers + before it gets the device information from the peer, dynamic rules + based on the peer identifiers cannot be used. Instead the local config + must already disable these extra features in advance. + + The "SyncMLVersion" property gets extended for this. Instead of just + "SyncMLVersion = 1.0" (as before) it now becomes possible to say + "SyncMLVersion = 1.0, noctcap, norestart". + + "noctcap" disables sending CtCap. "norestart" disables the sync mode + extensions and thus doing multiple sync cycles in the same session + (used between SyncEvolution instances in some cases to get client and + server into sync in one session). + + Both keywords are case-insensitive. There's no error checking for + typos, so beware! + + The "SyncMLVersion" property was chosen because it was already in use + for configuring SyncML compatibility aspects and adding a new property + would have been harder. + +* EDS: fix creating databases + + --create-database was broken in combination with the final code in EDS + 3.6 because it passed NULL for the UID to e_source_new_with_uid(), + which is considered an error by the implementation of that + method. Must use e_source_new() if we don't have a UID. + +* fixed some memory leaks, extended tests to cover new features and bugs + + SyncEvolution 1.3.99.1, 25.10.2012 ================================== |