Hi everyone,
yet another experimental OpenSync release for developers and testers. Late as usual - but better late then never! The next stable major release is coming closer.
First, I would like to thank everyone how is working, testing and supporting on OpenSync!
New features and call for testing: - Unidirectional Synchronization: "read-only" sinks. msynctool example:
Enable/Disable writing (of objtype sink) for a member (default: read/write):
msynctool --disable-readonly <groupname> <memberid> [<objtype>] msynctool --enable-readonly <groupname> <memberid> [<objtype>]
To disable writing for all objtypes:
msynctool --enable-readonly group 1
To disable certain objtypes for all objtypes (e.g. "contact"):
msynctool --enable-readonly group 1 contact
- Merger and Converter can be enabled/disabled in group configuration
Enable/Disable the converter of a group (default: enabled). Disabling converters is recommend for Backups only:
msynctool --enable-converter <groupname> msynctool --disable-converter <groupname>
Enable/Disable the merger of a group (default: enabled):
msynctool --enable-merger <groupname> msynctool --disable-merger <groupname>
Fixed issues: - External Plugin processes (reimplementation of OSyncStartType EXTERNAL). kdepim-sync should now work again within KitchenSync? (mainloop conflicts) - Detection if conflict can be solved by temporary ignore of conflict - Duplicating conflicts works again correctly
Known issues: - There is likely an issue (again) with osync_mapping_engine_multiply() which can cause an assert() in osync_change_set_uid(). If you can reproduce that in a reliable let me know.
API changes: If you want to setup a unidirectional sync and and change a member objtype sink to "read-only":
osync_bool osync_objtype_sink_get_write(OSyncObjTypeSink *sink); void osync_objtype_sink_set_write(OSyncObjTypeSink *sink, osync_bool write);
For reference implementation see msynctool.
Dropped osync_member_add_objtype(). Use osync_member_add_objtype_sink() instead:
- void osync_member_add_objtype(OSyncMember *member, const char *objtype); + void osync_member_add_objtype_sink(OSyncMember *member, OSyncObjTypeSink *sink);
Next steps: - Change the build environment. We can't handle scons anymore. Anyone with object to cmake? - Our unit test framework is great and very important! We managed to fix every failing testcase expect three testcases:
* time_unix_converters - looks like one of the testcase can only run in a certain timezone ;) * engine_sync_stress - stress test timeouts (at least on my slow machine) we should do some performance profiling. Maybe we can tweak the osync_obj_engine_initialize() call or call it with osync_engine_initialize() so the mapping table don't have to be loaded on every osync_engine_synchronize() call. Another thing is the archive - the sqlite calls take a lot. There is even one call which makes use of a sub-select which have to get rid of. * client_run - testcase times out - looks like the testcase is broken - client process isn't able to disconnect correctly - looks like yet another HUP signal problem.
- Improve our unit tests with the help of code coverrage - Cleanup bug tickets - Testing, testing and testing - Add capabilities support for plugins - Finish vformat plugin and fix the XSD Schemas of XMLFormat-* - Review OpenSync? API - Testing, testing and testing - Make a major release 0.40
Released tarballs can be found at: http://www.opensync.org/download/releases/0.33/
