<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SyncEvolution - The Missing Link &#187; Evolution</title>
	<atom:link href="http://www.estamos.de/blog/category/evolution/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.estamos.de/blog</link>
	<description>About SyncEvolution, writing software and more.</description>
	<lastBuildDate>Thu, 02 Feb 2012 10:12:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1-beta1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Running SyncEvolution as cron Job</title>
		<link>http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/</link>
		<comments>http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:40:15 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/?p=139</guid>
		<description><![CDATA[It used to be fairly easy to run SyncEvolution as a cron job. Starting with GNOME 2.24 (as included in Ubuntu 8.10 Intrepid) it became a bit more complicated. The automatic initialization of D-Bus (required for access to gconf and thus the list of available Evolution databases) now depends on an X session, which is [...]]]></description>
			<content:encoded><![CDATA[<p>It used to be fairly easy to run SyncEvolution as a cron job. Starting with GNOME 2.24 (as included in Ubuntu 8.10 Intrepid) it became a bit more complicated. The automatic initialization of D-Bus (required for access to gconf and thus the list of available Evolution databases) now depends on an X session, which is not available in cron.</p>
<p>The result is the following error:</p>
<blockquote><p>GConf Error: Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://www.gnome.org/projects/gconf/ for information. (Details -  1: Not running within active session)</p></blockquote>
<p>A solution for Python is discussed on <a href="http://stackoverflow.com/questions/257658/how-can-i-make-a-fake-active-session-for-gconf">Stack Overflow</a>. Here&#8217;s how the problem can be solved for SyncEvolution. In your crontab, use:<br />
<code><br />
54 9 * * * env `dbus-launch` sh -c 'trap "kill $DBUS_SESSION_BUS_PID" EXIT; syncevolution'<br />
</code></p>
<p>This starts a D-Bus session (dbus-launch), runs syncevolution, then kills the D-Bus daemon (via the process ID set by dbus-launch) once syncevolution completes. It does that every day at 9:54. If you change that, then don&#8217;t run it too often, because that can consume a lot of resources on the server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2009/05/08/running-syncevolution-as-cron-job/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Binary Packages for Evolution</title>
		<link>http://www.estamos.de/blog/2008/10/11/binary-packages-for-evolution/</link>
		<comments>http://www.estamos.de/blog/2008/10/11/binary-packages-for-evolution/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 18:49:17 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/?p=80</guid>
		<description><![CDATA[Providing precompiled SyncEvolution packages for Evolution has been a major pain in the&#8230; rear end. SyncEvolution depends on three different Evolution libraries. Since Evolution 2.6.1 (included in Ubuntu 6.06 LTS, which is still in use today), more often than not one of these libraries was changed in a new release. As a result of that [...]]]></description>
			<content:encoded><![CDATA[<p>Providing precompiled SyncEvolution packages for Evolution has been a major pain in the&#8230; rear end. SyncEvolution depends on three different Evolution libraries. Since Evolution 2.6.1 (included in Ubuntu 6.06 LTS, which is still in use today), <a href="http://www.estamos.de/projects/SyncML/Compatibility.html#Supported+Platforms">more often than not</a> one of these libraries was changed in a new release. As a result of that I had to package SyncEvolution 10 times for Evolution (three version on x86, two on amd64, both as .deb and as plain .tar.gz) to have binaries for a majority of the users.</p>
<h3>SyncEvolution in Distributions</h3>
<p>Some might argue that releasing the source would be enough and that users who want binaries should ask their distribution. I would be happy to see more distributions pick up SyncEvolution: Fedora already has it, Debian and Ubuntu don&#8217;t. I don&#8217;t know about others. There is an <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=404942" title="ITP: syncevolution -- SyncEvolution synchronizes Evolution's contact, calender and task items via SyncML.">intent to package</a> it for Debian, but the usage of AGPL in the Funambol library <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495721">raised some concerns</a>.</p>
<p>It seems that there will be a need for separate binaries for a while. Besides, when I release an update I want users to actually use it without having to wait for a distro update.</p>
<h3>Evolution 2.24 and 2.26</h3>
<p>For a while the situation seemed to get better, with three releases in a row with the same interface (2.12, 2.20, 2.22). But 2.24 changes the interface again (for a <a href="http://bugzilla.gnome.org/show_bug.cgi?id=465374" title="Bug 465374 – libdb linkage in libedataserver causes LGPL to be invalid">good reason</a>, but still&#8230;) and 2.26 is likely to do it again (<a href="http://www.mail-archive.com/evolution-hackers@gnome.org/msg02844.html" title="[Evolution-hackers] Removing libical fork, moving to new upstream?">reverting an API change</a> in order to use upstream libical).</p>
<h3>Avoiding the problem: one binary to sync them all</h3>
<p>The prospect of having to support yet another set of libs was enough motivation to rethink my approach. In 0.8.1 I added code which calls all required Evolution functions indirectly via dlopen/dlsym. That way the binary itself doesn&#8217;t have to be linked against specific versions of the Evolution libraries. Because the required functions behave the same in all Evolution releases (knock on wood for the future&#8230;), the same binary now works with all currently supported Evolution releases.</p>
<p>Not only do I have less work packaging Evolution, users now also no longer have to pick the right package. &#8220;<code>aptitude install syncevolution</code>&#8221; just works. Yeah!</p>
<p>In order to be compatible with future releases, the binary also checks library versions more recent than the ones that are known to work if it doesn&#8217;t find a known-good one. This is slightly risky because those future libraries might not be compatible after all, but I&#8217;ll keep an eye on that. If I&#8217;m lucky, then it&#8217;ll save me work, if not, then I would have to release an update anyway. Now on to releasing 0.8.1 itself&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/10/11/binary-packages-for-evolution/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SyncEvolution 0.8 Released</title>
		<link>http://www.estamos.de/blog/2008/09/01/syncevolution-08-released/</link>
		<comments>http://www.estamos.de/blog/2008/09/01/syncevolution-08-released/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 21:42:05 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/?p=76</guid>
		<description><![CDATA[Prereleases have been around for a while and were even recommended for new installations. There haven&#8217;t been any bug reports for the latest beta packages, so it was time to put the gears into action, get the compilers running and spin some nice packages for the final 0.8 release&#8230;
Available Packages
The usual number of packages are [...]]]></description>
			<content:encoded><![CDATA[<p>Prereleases have been around for a while and were even <a href="http://www.estamos.de/blog/2008/08/04/08-beta-update-recommended-for-calendars/" title="0.8 Beta: Update Recommended for Calendars">recommended for new installations</a>. There haven&#8217;t been any bug reports for the latest beta packages, so it was time to put the gears into action, get the compilers running and spin some nice packages for the final 0.8 release&#8230;</p>
<h3>Available Packages</h3>
<p>The usual number of packages are available again:</p>
<ul>
<li>for Evolution 2.6 (x86 and AMD64), 2.8 (only x86), 2.12 (x86 and AMD64, also works for any Evolution >= 2.10), all of these as .tar.gz and .deb</li>
<li>for Mac OS X (a fat binary for PPC and x86)</li>
<li>for Maemo (ITOS 2008, should work on Chinook and Diablo)</li>
<li>source code</li>
</ul>
<p>For installation instructions see <a href="http://www.estamos.de/projects/SyncML/Installation.html" title="Installing SyncEvolution">the www.estamos.de installation page</a>.</p>
<h3>iPhone</h3>
<p>I have not prepared packages for the iPhone. This platform is now covered by Funambol&#8217;s own client.</p>
<h3>Changes</h3>
<p>There have been no changes since beta 3. For those who switch from 0.7 to 0.8, here&#8217;s the full list of changes since that version:</p>
<p class="important">Updating user configuration: this version introduces a new, simplified configuration layout. Old configurations still work. They can be converted to the new format via a new &#8220;<code>--migrate</code>&#8221; command line option.<br/><br />
0.8 also uses a different change tracking for Mac OS X address book, Evolution calendars, task lists and memos.  After switching from a previous release to the current one or vice versa, do a &#8220;<code>syncevolution --sync refresh-from-server</code>&#8221; once to reset the change tracking. Not doing so can result in applying the same changes to the server multiple times and thus duplicates.</p>
<ul>
</li>
<li> New configuration file layout: following the freedesktop.org recommendation, new configurations are stored in <code>$XDG_CONFIG_HOME/syncevolution</code> or <code>$HOME/.config/syncevolution</code> if <code>XDG_CONFIG_HOME</code> is not set. The old layout under <code>$HOME/.sync4j/evolution</code> is still supported.</li>
<li>New command line options: new configurations can be created by syncevolution itself (<code>--configure</code>), including setting of all configuration properties (<code>--sync-property, --source-property</code>). The configuration can dumped to stdout (<code>--print-config</code>), with or without comments explaining each property (<code>--quiet</code>). See the README for details (relevant section <a href="http://www.estamos.de/projects/SyncML/SyncEvolution.html" title="www.estamos.de usage page">online</a>).</li>
<li>The &#8220;<code>evolutionsource</code>&#8221; source property no longer has to be configured. If left blank, the default client database will be synchronized.</li>
<li>Selecting which kind of data is to be synchronized under a specific source name is a lot easier now and the same on all supported platforms: the SyncEvolution backends can be selected via aliases (e.g. &#8220;contacts&#8221;) and the format is specified via an optional MIME type (e.g. &#8220;contacts:text/x-vcard&#8221;). In the unlikely situation that multiple backends are active which can synchronize the same kind of data, then the right one can be selected by the unique name of the backend (e.g. &#8220;Evolution Address Book&#8221;).</li>
<li>New configurations automatically get a random client ID string. Setting it manually is still possible, but no longer necessary. Disabling unavailable data sources is also done automatically.
<p>SyncEvolution checks that the backend is available and there is at least one database (the first one will be synchronized unless explicitly changed). If these checks fail and the sync source was explicitly requested by the user by listing it after the server name, then an error is printed and no configuration is written. If the user wants the default setup, then the source is silently disabled.
</li>
<li> All passwords can be read from stdin at runtime or an environment variable (see &#8220;<code>--sync-property password=?</code>&#8221; or README for details). Both avoids the less secure storing of plain text passwords in the configuration files (SF #1832458).</li>
<li>Detached recurrences: meeting series where some occurrences were modified are now supported. Previously only the main event was synchronized. All exceptions got lost when copying back from the server. Requires a SyncML server which supports this. ScheduleWorld was extended to do that.</li>
<li>Fixed segfaults caused by logging certain data. The reason was an API change in the client library&#8217;s logging calls which the older SyncEvolution code hadn&#8217;t been adapted to. Did not normally occur, but might have been the reason for SF #1830149 (unconfirmed).</li>
<li>Time zone support: the time zones of incoming events are mapped to native time zone definitions whenever possible. Currently this works if the TZID follows the Olson naming scheme with a location at the end. Matching the time zone has the advantage of being able to update the time zone definition without having to recreate the event. If matching fails and the VTIMEZONE definition differs from one already imported earlier, then SyncEvolution works arounds limitation in Evolution by renaming the time zone. Previously the new event used the old and most likely out-dated time zone definition.
<p class="important">Evolution itself does not do either of these steps itself yet, thus importing meeting invitations via Evolution still fails in some cases. The code implementing the time zone handling described above was written with inclusion into Evolution itself in mind; it got included in Evolution 2.22.3.</p>
</li>
<li>On Maemo/Nokia Internet Tablets, calendar synchronization now works because the new calendar change tracking no longer depends on some of the backend calls which used to fail (SF #1734977).</li>
<li>Added SSL configuration options: certificate checking can be relaxed or disabled completely (SF #1852647).</li>
<li>Added a new file backend: stores each SyncML item as a separate file in a directory.  The directory has to be specified via the database name, using <code>[file://]&lt;path&gt;</code> as format. The <code>file://</code> prefix is optional, but the directory is only created if it is used.
<p>Change tracking is done via the file systems modification time stamp: editing a file treats it as modified and then sends it to the server in the next sync. Removing and adding files also works.</p>
<p>The local unique identifier for each item is its name in the directory. New files are created using a running count which initialized based on the initial content of the directory to &#8220;highest existing number + 1&#8243; and incremented to avoid collisions.</p>
<p>Although this sync source itself does not care about the content of each item/file, the server needs to know what each item sent to it contains and what items the source is able to receive. Therefore the &#8220;type&#8221; property for this source must contain a data format specified, including a version for it. Here are some examples:</p>
<ul>
<li> <code>type=file:text/vcard:3.0</code> </li>
<li> <code>type=file:text/plain:1.0</code> </li>
</ul>
</li>
<li>Code restructuring: it is now possible to add new backends and thus write SyncML clients for other kinds of data without touching any line of code in SyncEvolution itself. All the required interfaces are documented inside SyncEvolution itself. A HTML documentation can be built via the new &#8220;make doc&#8221; target (requires Doxygen and dot).
<p class="important">The SyncEvolution framework itself never depended on GNOME or Evolution, only the Evolution data sources did. If you want support for other ways of storing your data, consider writing a new data source &#8211; it is really easy. See EvolutionSyncSource or TrackingSyncSource for details.</p>
</li>
<li>Messages are printed to the screen immediately. More readable log file format.</li>
<li>Maemo: the useless &#8220;<code>list: unable to access calendars: failure</code>&#8221; error message is avoided. It was triggered by not having memo support in Evolution Data Server. Cleaned up the code so that it properly distinguishes between &#8216;calendar&#8217;, &#8216;memo list&#8217; and &#8216;task list&#8217;.</li>
<li>added server template for MemoToo; note that the server has not been tested</li>
<li>added synchronization of Evolution memo summary
<p>Most devices only synchronize plain text and do not have a separate summary field. Such an extra summary field was added to Evolution after memo support was initially implemented in SyncEvolution, therefore SyncEvolution did not transmit that field.</p>
<p>Added transmitting the summary by inserting it as first line of the plain text blob *if* it is not already identical with the first line. When receiving a memo, the summary is set from the first line *without* removing the first line because the first line might have been used as a normal part of the memo.
</li>
<li>Various other minor changes, fixes and lots of code cleanups.</li>
<li>license cleanup: SyncEvolution is GPL v2 or later</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/09/01/syncevolution-08-released/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Syncing Exchange with SyncML Server</title>
		<link>http://www.estamos.de/blog/2008/08/16/syncing-exchange-with-syncml-server/</link>
		<comments>http://www.estamos.de/blog/2008/08/16/syncing-exchange-with-syncml-server/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 07:58:12 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/?p=63</guid>
		<description><![CDATA[In theory SyncEvolution on Linux (or BSD, or whatever you bother to compile Evolution and SyncEvolution for&#8230;) could be used to synchronize contacts, events, and tasks stored in a Microsoft Exchange server: the Evolution Exchange Connector provides the data via the same APIs that SyncEvolution normally uses to synchronize such data.
Contacts
In practice it failed for [...]]]></description>
			<content:encoded><![CDATA[<p>In theory SyncEvolution on Linux (or BSD, or whatever you bother to compile Evolution and SyncEvolution for&#8230;) could be used to synchronize contacts, events, and tasks stored in a Microsoft Exchange server: the Evolution Exchange Connector provides the data via the same APIs that SyncEvolution normally uses to synchronize such data.</p>
<h3>Contacts</h3>
<p>In practice it failed for contacts because of <a href="http://bugzilla.gnome.org/show_bug.cgi?id=546934" title="GNOME Bugzilla: contact change tracking is broken (required by SyncEvolution)">multiple bugs</a> in the Connector.</p>
<p>I fixed those and prepared a patch, but it will take a while before there will be an official Evolution release which contains the fix. 2.22.3 was just released and there are no plans to do further maintenance updates before 2.24. If you care about this problem, then perhaps report the problem to you Linux distribution maintainers and (kindly!) ask for an update via the distribution.</p>
<p>With the patch the SyncEvolution test suite runs almost without errors. The remaining problems are related to not quite storing the test contacts as Evolution normally does. For example, the different name components (first/second/middle name, title) are modified slightly. This most likely is a limitation of Exchange and doesn&#8217;t look like it&#8217;ll affect normal names. Sometimes extra line breaks are added at the end of strings.</p>
<h3>Events</h3>
<p>With calendars there were other problems. Updating existing events consistently failed with 0.8 beta 2. I turned out that the code introduced in the betas for detached recurrences tries to use the Evolution calendar API in a way which is not implemented (or supported) by the Exchange backend (<code>e_cal_modify_object(CALOBJ_MOD_THIS)</code> without a recurrence ID doesn&#8217;t work). It worked with the file backend, but I suspect that I have used the API in a way that it wasn&#8217;t meant to be used. I solved this problem by rewriting the code slightly. SyncEvolution 0.7 and (once it is released) 0.8 should both work.</p>
<p>In general the Evolution Exchange Connector was not particularly stable. I had to add a five second delay between simulated syncs or it would return inconsistent data for the previous run. There are <code>e-cal.c:319: Unexpected response</code> warnings: they are printed directly by the Evolution library, so SyncEvolution cannot suppress them. They don&#8217;t seem to indicate any real problem, so just ignore them.  The Connector also crashed frequently when accessing calendars for the first time. What worked best for me is to start Evolution, check my calendars and if I get a message that the backend crashed, try again. Your mileage may vary&#8230;</p>
<h3>Configuration</h3>
<p>Exchange databases can be selected just like normal Evolution databases: use their name for the <code>evolutionsource</code> property.</p>
<p class="important">In addition to that, the <code>evolutionpassword</code> property must also be set for each source to the Exchange password! The user name is not needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/08/16/syncing-exchange-with-syncml-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>0.8 Beta: Update Recommended for Calendars</title>
		<link>http://www.estamos.de/blog/2008/08/04/08-beta-update-recommended-for-calendars/</link>
		<comments>http://www.estamos.de/blog/2008/08/04/08-beta-update-recommended-for-calendars/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 19:42:44 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/?p=61</guid>
		<description><![CDATA[I have received two reports from users about problems with calendar synchronization with Evolution 2.22.x. In one case everything worked fine with Evolution 2.12, but segfaulted with 2.22.x, in the other Evolution&#8217;s e_cal_get_changes() failed due to an unspecified error.
0.8 beta 1 no longer depends on that call and therefore updating to it solved the problem, [...]]]></description>
			<content:encoded><![CDATA[<p>I have received <a href="http://www.scheduleworld.com/jforum/posts/list/1904.page#11406" title="ScheduleWorld Forum">two</a> <a href="http://sourceforge.net/tracker/index.php?func=detail&#038;aid=2016043&#038;group_id=146288&#038;atid=764733" title="SF Tracker">reports</a> from users about problems with calendar synchronization with Evolution 2.22.x. In one case everything worked fine with Evolution 2.12, but segfaulted with 2.22.x, in the other Evolution&#8217;s <code>e_cal_get_changes()</code> failed due to an unspecified error.</p>
<p>0.8 beta 1 no longer depends on that call and therefore updating to it solved the problem, at least in that case where the user reported back. The other problem also can no longer occur. If you have calendar problems, please use 0.8.</p>
<p>The beta has been out for a while now, with no reports other than the expected (and now solved) <a href="http://sourceforge.net/tracker/index.php?func=detail&#038;aid=1947050&#038;group_id=146288&#038;atid=764733" title="SF Bug #1947050">X-OSSO-CONTACT-STATE issue</a> on Maemo. I&#8217;m going to rework the www.estamos.de web pages soon so that they refer to 0.8 as the stable release. The final release will then follow this month.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/08/04/08-beta-update-recommended-for-calendars/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iCalendar 2.0 + Detached Recurrences</title>
		<link>http://www.estamos.de/blog/2008/06/30/icalendar-20-detached-recurrences/</link>
		<comments>http://www.estamos.de/blog/2008/06/30/icalendar-20-detached-recurrences/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 17:40:11 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2008/06/30/icalendar-20-detached-recurrences/</guid>
		<description><![CDATA[&#8220;What the heck are detached recurrences?&#8221; and &#8220;why should I care?&#8221; might be your first reaction when reading the title. If you work in a corporate environment and have to attend regular meetings, then chances are high that you have some of those beasts in your calendar. When a meeting is canceled for a specific [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;What the heck are detached recurrences?&#8221; and &#8220;why should I care?&#8221; might be your first reaction when reading the title. If you work in a corporate environment and have to attend regular meetings, then chances are high that you have some of those beasts in your calendar. When a meeting is canceled for a specific day, that exception can be stored as part of the original event description. But when the start/end time, description (meeting agenda!), list of attendees, etc. for a particular meeting instance is changed, then this additional information is stored in a detached recurrence which overrides the regular instance of the event.</p>
<p>This additional information can be essential for not missing a meeting, so anyone synchronizing his calendar or writing software which is used for that purpose should care. Neither SyncEvolution nor the SyncML servers it is commonly used with supported detached recurrence &#8211; until now. This has always been a thorn in my side, so it is with great pleasure that I can announce that 0.8 in combination with ScheduleWorld will finally synchronize detached recurrences. Both client and server required changes; I had to nudge Mark a bit until before he started working on it, but now that it is in place we are glad that we did it. In the remainder of this post I&#8217;ll give you a bit more background information.</p>
<h3>iCalendar 2.0 + SyncML</h3>
<p>The way how iCalendar 2.0 represents a recurring event is via a <code>VEVENT</code>&#8217;s <code>RRULE</code> property. This describes how the event repeats. A program calculating all occurrences evaluates that rule and then removes those instances which match the exceptions specified via the <code>EXRULE</code> or <code>EXDATE</code> properties.</p>
<p>A detached recurrence (sometimes also called &#8220;child event&#8221;) is stored as another <code>VEVENT</code> with the same <code>UID</code> as the parent event and a additional <code>RECURRENCE-ID</code>. This ID specifies which of the regular occurrences is overridden by the child event. Because the child is a normal <code>VEVENT</code>, all of the event properties can be specified independently of the parent.</p>
<p>In SyncML there are two ways of sending information about a recurring event and its exceptions: all <code>VEVENT</code>s with the same <code>UID</code> in the same item, or one <code>VEVENT</code> per item. After asking around among SyncML server developers it turned out that ScheduleWorld and Synthesis favored the &#8220;one <code>VEVENT</code> per item&#8221; approach because it is closer to the way how events are synchronized so far. It therefore has a chance to work even with servers which do not know the special semantic, as long as they preserve the relevant properties. This approach is what SyncEvolution and ScheduleWorld implement now.</p>
<h3>Ordering of related <code>VEVENT</code>s</h3>
<p>The ordering of these related items is important: ScheduleWorld must know the parent event before it can store the children. SyncEvolution takes care of sending items in the right order. Likewise, Evolution gets confused if a parent is added after its children: the parent event is added and stored in the calendar file with the original <code>UID</code>, but it cannot be retrieved under that <code>UID</code> until the data server is restarted. ScheduleWorld gets the order right, but because SyncEvolution is meant to also work with dumb servers (for example, a file sync source which knows nothing about the content of items), it works around this limitation by temporarily removing the children, adding the parent, then updating the parent with its children.</p>
<h3>Updating/removing parent and children</h3>
<p>ScheduleWorld cannot store children without a parent, so deleting the parent also removes all children. Evolution itself does the same, so normally everything works as expected. Now suppose that a dumb server tells SyncEvolution to remove only the parent. One solution would be to delete also the children, but then client and server would be out of sync. I decided to trick Evolution once more: because the API call to remove the parent automatically removes the children, they are saved by SyncEvolution before making that call and re-added afterwards. This leads to a slightly inconsistent state of the calendar, but the Evolution GUI copes and displays the children &#8211; poor orphans, you are not forgotten!</p>
<p>Whether modifications of a parent or child lead to an update of all related events is up to the client and server implementation. At worst it will lead to some extra traffic when items are resend although their content hasn&#8217;t changed. SyncEvolution can update both parent and children if asked to by the SyncML server.</p>
<h3>Other SyncML servers</h3>
<p>I&#8217;m not aware of any other SyncML server supporting detached recurrences, although there are mobile phones (like some Nokia models) which support them via a <code>X-RECURRENCE-ID</code> extension to vCalendar 1.0. Together with insufficient support for time zones, this looks like a rather significant gap for SyncML-based calendar synchronization compared to proprietary solutions. Hopefully SyncML server vendors will wake up and do something about it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/06/30/icalendar-20-detached-recurrences/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Time Zone Handling in Evolution</title>
		<link>http://www.estamos.de/blog/2008/06/22/time-zone-handling-in-evolution/</link>
		<comments>http://www.estamos.de/blog/2008/06/22/time-zone-handling-in-evolution/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 15:46:26 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2008/06/22/time-zone-handling-in-evolution/</guid>
		<description><![CDATA[Earlier this year, users of Evolution again missed meetings because the meeting time was not displayed correctly. This blog post explains what the problem is and how it can be avoided in the future. It&#8217;s basically a summary of the corresponding GNOME Bugzilla entry #528902. I&#8217;m blogging about it now because I just committed fixes [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this year, users of Evolution again <a href="http://www.mail-archive.com/evolution-hackers@gnome.org/msg02454.html" title="Paul Smith on 'cleaning up the timezone handling mess'">missed meetings</a> because the meeting time was not displayed correctly. This blog post explains what the problem is and how it can be avoided in the future. It&#8217;s basically a summary of the corresponding GNOME Bugzilla <a href="http://bugzilla.gnome.org/show_bug.cgi?id=528902" title="time zone handling insufficient">entry #528902</a>. I&#8217;m blogging about it now because I just committed fixes for this problem to the 2.22.x branch and trunk of Evolution &#8211; just in time for 2.22.3, the next stable release.</p>
<h3>The Problem</h3>
<p>After the US changed the dates when they switch to and from summer saving time in 2007, programs and OS installations had to be updated to accomodate for this change. Since 2.12, Evolution uses the time zone information that is installed in the system so that Linux distributors only have to update one central package (usually called &#8220;tzdata&#8221;) when such changes happen. The US change wasn&#8217;t the only example; it just happened to be the one which affected most users.</p>
<p>However, this change in Evolution had no effect for meeting invitations. Each meeting invitation comes with its own definition of the corresponding time zone, and this is what Evolution uses &#8211; or rather, tried to use. Importing a new meeting invitation into a calendar which already contains an old time zone definition ignores the new time zone definition. The new meeting is then displayed using the old definition. Everyone who has used Evolution for a while is likely to be affected by this, because time zone definitions in the file calendar backend are never deleted.</p>
<p>The reason for this problem is that Evolution is designed so that for each time zone identifier, only one definition can be stored per calendar. If you have imported the 2006 definition of <code>GMT -0600 (Standard) / GMT -0500 (Daylight)</code>, then the updated 2007 definition of it will be ignored.</p>
<p>People (including a younger incarnation of myself&#8230; live and learn&#8230;) have argued that Microsoft should have embedded a revision string or year into their IDs to make them unique, but that is not required by the pertaining standards. Besides, Evolution 2.12 also no longer creates unique IDs. Recipients of meeting invitations simple have to handle conflicting time zone definitions, there&#8217;s no way around that.</p>
<p>Another problem with using the custom time zone definition that came with an event is that if that time zone changes later on, Evolution will continue to use the out-dated definition unless a new meeting invitation is sent. This also applies to old events that were created with Evolution &lt;2.12: the current Evolution uses different IDs and therefore fails to use the more up-to-date system time zone information for those meetings.</p>
<p>Using the system time zones also <em>potentially</em> has the advantage of using more complete information about a time zone: the custom definitions included in meeting invitations are usually limited to just the transition rules for one year. If an event recurs in different years with different rules, then this is not sufficient. Unfortunately, Evolution only uses the rules for the two upcoming transitions even when the system time zone definition contains more rules. The effect is that a historic event in the US in 2006 is displayed using the updated rules for 2007, which leads to the wrong result for those weeks where the rules differ. Events very far in the future may also be affected.</p>
<h3>Fixing the Problem</h3>
<p>Redesigning the Evolution architecture was a scary thought because it would have been a very intrusive change which affects all calendar backends. Not suitable for a minor update in the stable release branch!</p>
<p>The approach taken instead for importing events consists of two steps:</p>
<ol>
<li>When importing an event, try to match the time zone to one of the system time zones. If that succeeds, then the meeting will automatically use the current set of rules and is displayed correctly even if those rules change. This mapping currently works for old Evolution events (regardless whether they are imported anew or already exist in a calendar) and meeting invitations sent by programs using the Olson database naming scheme with the location at the end (e.g., <code>/softwarestudio.org/Olson_20011030_5/Europe/Berlin</code>).</li>
<li>The mapping does not yet work for Microsoft meeting invitations, to name just one example. Time zone identifiers are not standardized, so there needs to be a fallback: if mapping fails, the time zone definition is compared against an older definition with the same ID. If the definitions conflict, then the newer definition is renamed and stored under a new ID. This is visible in the Evolution GUI as a decimal number at the end of the the time zone name, like this: <code>GMT -0600 (Standard) / GMT -0500 (Daylight) <strong>2</strong></code>.</li>
</ol>
<p>In addition to importing events as described above, the time zone definition of existing events in a calendar is also updated on the fly to the current definition when displaying or exporting the event. Of course, this only works <iph>if the time zone can be mapped</iph>. Otherwise, the original, possibly out-dated time zone definition is used. This transformation is not immediately obvious in an exported event because the ID remains the same and only the time zone definition is replaced by the current one.</p>
<h3>Fixing Calendars</h3>
<p>Obviously, you need an updated Evolution which contains the patches. 2.22.3 and 2.24 will have them. But updating Evolution alone is not enough: meetings with custom time zone definitions which were imported earlier will continue to use the old definitions. You have to reimport all meeting invitations once more to update the time zone definition.</p>
<h3>Remaining Work (Volunteers Wanted!)</h3>
<p>Only the file and Exchange calendar backends have been adapted at this time. The same kind of problems will continue to occur with backends like the <a href="http://bugzilla.gnome.org/show_bug.cgi?id=540683" title="GOME Bugzilla #540683">GroupWise</a> one, unless someone who knows that backend steps up and fixes it. The change is simple; use the <a href="http://svn.gnome.org/viewvc/evolution-data-server/branches/gnome-2-22/calendar/backends/file/e-cal-backend-file.c?view=diff&amp;r1=8791&amp;r2=9024&amp;diff_format=h" title="using e_cal_check_timezones() in file backend">file backend diff</a> as example.</p>
<p>The handling of system time zone information <a href="http://bugzilla.gnome.org/show_bug.cgi?id=540676" title="GNOME Bugzilla #540676">should be extended</a> so that it uses the complete database and thus displays past and future events correctly. The Evolution developers plan to add that in some major future update (i.e., not 2.22.3).</p>
<p><a href="http://bugzilla.gnome.org/show_bug.cgi?id=540680" title="GNOME Bugzilla #540680">Mapping of Microsoft time zone IDs</a> would be useful, even though it is not strictly required thanks to the fallback. Microsoft uses two different ID formats: one includes a location and thus could be mapped if someone put together a mapping table. The other is composed of the two GMT offsets, as in the example above. Because different locations with different rules can end up with the same ID, the ID alone would not be enough to map back to the location. Instead of investing effort into analyzing the rules and inferring the original location from that, it is probably easier to simply rely on the fallback for conflict resolution.</p>
<h3>SyncEvolution and other external programs</h3>
<p>SyncEvolution takes care of importing time zone definitions correctly since 0.8 alpha 1, even when combined with an older Evolution release. This has to be done by each program which imports events using a combination of <code>e_cal_add_timezone()</code> and <code>e_cal_create_object()</code>. Evolution itself has no chance to do the time zone mapping/renaming because it never has access to both the time zone definition and the corresponding event.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/06/22/time-zone-handling-in-evolution/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SyncEvolution Doesn&#8217;t Work? Tell me!</title>
		<link>http://www.estamos.de/blog/2008/05/08/syncevolution-doesnt-work-tell-me/</link>
		<comments>http://www.estamos.de/blog/2008/05/08/syncevolution-doesnt-work-tell-me/#comments</comments>
		<pubDate>Thu, 08 May 2008 20:43:05 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2008/05/08/syncevolution-doesnt-work-tell-me/</guid>
		<description><![CDATA[A fellow German has written about his (mostly failed) attempts to synchronize contacts and calendars using SyncEvolution and the Funambol server. He expresses the hope that 0.8 will fix his problems. I&#8217;m afraid 0.8 will be a disappointment then.
First, calendar synchronization will always lose information as long as any link in the chain from one [...]]]></description>
			<content:encoded><![CDATA[<p>A fellow German <a href="http://asware.net/serendipity/archives/937-Linux,-SyncML,-PIM,-Groupwares,-iPhone-ein-Kessel-Frust.html#trackbacks" title="Linux, SyncML, PIM, Groupwares, iPhone - ein Kessel Frust">has written</a> about his (mostly failed) attempts to synchronize contacts and calendars using SyncEvolution and the Funambol server. He expresses the hope that 0.8 will fix his problems. I&#8217;m afraid 0.8 will be a disappointment then.</p>
<p>First, calendar synchronization will always lose information as long as any link in the chain from one Evolution client to the other is limited to vCalendar 1.0, because relevant features that Evolution depends on were added to 2.0 which the predecessor cannot express. This does not only affect Evolution, but also the Thunderbird client.</p>
<p>Second, nothing in the SyncEvolution support for contacts has changed since 0.7. The update therefore won&#8217;t magically fix the problem encountered in 0.7. I run nightly end-to-end tests between different Evolution versions using my.funambol.com, sync.scheduleworld.com, and www.synthesis.ch. All of these tests work just fine. There are no bug reports about it either.</p>
<p>Finally, the segfault mentioned in the blog was already fixed in the current stable release (0.7). All I can do is fix a problem and provide new binaries. I cannot retroactively fix the problem in installed older binaries &#8211; that would be the holy grail of system maintenance. The <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1830149&amp;group_id=146288&amp;atid=764733" title="segfault during synchronization">issue about the segfault</a> is still open because some users had segfaults which I could not properly explain. They cannot reproduce them either anymore and thus the issue has to remain open until someone else can provide the information required to proceed.</p>
<p class="important">That doesn&#8217;t mean that there is no problem, but it <em>does</em> mean that I am not aware of any that I can fix. If you have a problem, create a <a href="https://sourceforge.net/tracker/?group_id=146288&amp;atid=764733" title="SyncEvolution bug tracker">bug report</a> or send me an email and will do my best to locate and fix the problem.</p>
<p>There is an ongoing discussion in the Open Source world about the responsibilities of users and developers. It started when Linux developers asked a bug reporter to execute a complex analysis to narrow down on the source of the problem. A good, complete bug report will speed up solving the problem. In the case of SyncEvolution that means describing the platform it runs on (distribution, Evolution version, &#8230;), how SyncEvolution was installed (binary or compiled from source), the server that is used, what the expected and what the real behavior is. If it segfaults, including a stack back trace (run under gdb, &#8220;thread apply all bt&#8221;) or a memory check with valgrind (just put valgrind in front of the command line) would help. If the log (normally written in /tmp/) does not contain confidential information or that information can be stripped, then providing it is a big help, too. I promise to keep all logs sent to me by email absolutely confidential.</p>
<p>I&#8217;m aware that not everyone is able to analyze a problem on his own. Just report the problem and I&#8217;ll try o reproduce it myself before asking further questions.</p>
<p>Another contentious issue is whether it is the responsibility of the users to make the developer&#8217;s life as easy as possible. If you use the SourceForge bug tracker, you will make my life easier and reduce the risk that your problem falls through the cracks. Just make sure that you assign the issue to me (happens automatically when selecting a category), otherwise I don&#8217;t get notified about the issue. However, I also accept bug reports by email.</p>
<p>Not reporting a problem is of course also an option which is even less work for a user, but then don&#8217;t expect that the next version will be any better than the old one&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/05/08/syncevolution-doesnt-work-tell-me/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SyncEvolution 0.8 alpha 1</title>
		<link>http://www.estamos.de/blog/2008/04/20/syncevolution-08-alpha-1/</link>
		<comments>http://www.estamos.de/blog/2008/04/20/syncevolution-08-alpha-1/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 12:21:13 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2008/04/20/syncevolution-08-alpha-1/</guid>
		<description><![CDATA[I have prepared a first snapshot of what is going to become release 0.8. In contrast to previous pre-releases this one is still a bit rough and I am skipping some manual testing in order to get it out before leaving for a two-week business trip. But some people have asked for features that are [...]]]></description>
			<content:encoded><![CDATA[<p>I have prepared a first snapshot of what is going to become release 0.8. In contrast to previous pre-releases this one is still a bit rough and I am skipping some manual testing in order to get it out before leaving for a two-week business trip. But some people have asked for features that are only in the development tree, so I don&#8217;t want to keep them waiting any longer. If 0.7 works for you, then please don&#8217;t upgrade yet unless you want to help testing the new release. Please report problems in the <a title="SF SyncEvolution bug tracker" href="http://sourceforge.net/tracker/?group_id=146288&amp;atid=764733">bug tracker</a> and add a comment here so that it others have an easier time keeping track of the state of 0.8.</p>
<h3>Changes in 0.8</h3>
<ul>
<li><a title="Redesign of SyncEvolution Config Handling" href="http://www.estamos.de/blog/2007/12/29/redesign-of-syncevolution-config-handling/">New configuration file layout</a>: following the freedesktop.org recommendation, new configurations are stored in $XDG_CONFIG_HOME/syncevolution or $HOME/.config/syncevolution if XDG_CONFIG_HOME is not set. The old layout under $HOME/.sync4j/evolution is still supported.</li>
<li>New command line options: new configurations can be created by syncevolution itself (<code>--configure</code>), including setting of all configuration properties (<code>--sync-property</code>, <code>--source-property</code>). The configuration can dumped to stdout (<code>--print-config</code>), with or without comments explaining each property (<code>--quiet</code>). See the README for details.</li>
<li>The <code>evolutionsource</code> source property no longer has to be configured. If left blank, the default client database will be synchronized.</li>
<li>Selecting which kind of data is to be synchronized under a specific source name is a lot easier now and the same on all supported platforms: the SyncEvolution backends can be selected via aliases (e.g. &#8220;contacts&#8221;) and the format is specified via an optional MIME type (e.g. &#8220;contacts:text/x-vcard&#8221;). In the unlikely situation that multiple backends are active which can synchronize the same kind of data, then the right one can be selected by the unique name of the backend (e.g. &#8220;Evolution Address Book&#8221;).</li>
<li>New configurations automatically get a random client ID string. Setting it manually is still possible, but no longer necessary.</li>
<li>All passwords can be read from stdin at runtime or an environment variable (see <code>--sync-property password=?</code> or README for details). Both avoids the less secure storing of plain text passwords in the configuration files (SF #1832458).</li>
<li>Detached recurrences: meeting series where some occurrences were modified are now supported. Previously only the main event was synchronized. All exceptions got lost when copying back from the server.</li>
<li>Time zone support: the time zones of incoming events are mapped to native time zone definitions whenever possible. Currently this works if the TZID follows the Olson naming scheme with a location at the end. Matching the time zone has the advantage of being able to update the time zone definition without having to recreate the event. If matching fails and the VTIMEZONE definition differs from one already imported earlier, then SyncEvolution works arounds limitation in Evolution by renaming the time zone. Previously the new event used the old and most likely out-dated time zone definition.</li>
<li>On Maemo/Nokia Internet Tablets, calendar synchronization now works because the new calendar change tracking no longer depends on some of the backend calls which used to fail (SF #1734977).</li>
<li>Added SSL configuration options: certificate checking can be relaxed or disabled completely (SF #1852647).</li>
<li>Adding support for new local data sources is easier now. The SyncEvolution frame work itself never depended on GNOME or Evolution, only the Evolution data sources did. If you want support for other ways of storing your data, consider writing a new data source &#8211; it is really simple. See EvolutionSyncSource or TrackingSyncSource for details.</li>
<li>Messages are printed to the screen immediately. More readable log file format.</li>
<li>Various other minor changes and fixes.</li>
</ul>
<h3>Switching between alpha and stable release</h3>
<p>This version introduces a new, simplified configuration layout. Old configurations still work. They can be converted to the new format via a new <code>--migrate</code> command line option.</p>
<p class="important">This version also uses a different change tracking for calendars, task lists and memos. After switching from a previous release to the current one or vice versa, do a <code>syncevolution --sync --refresh-from-server</code> once to reset the change tracking. Not doing so can result in applying the same changes to the server multiple times and thus duplicates.</p>
<h3>Installation</h3>
<p>Installation is done almost as described <a title="Installing SyncEvolution" href="http://www.estamos.de/projects/SyncML/Installation.html">for the the stable release</a>. But because I don&#8217;t want users of the stable version to pick up the alpha version accidentally, you need to use different repositories:</p>
<ul>
<li>on Debian/Ubunutu: <code>deb http://www.estamos.de/download/apt unstable main</code></li>
<li>Maemo: <a href="http://www.estamos.de/download/syncevolution-unstable.install">.install file for alpha release </a> <strong>You must have <a href="http://www.pimlico-project.org/dates.html">Pimlico Dates</a> installed!</strong> Thanks to <a href="http://www.burtonini.com/blog/2008/02/05/">Ross</a>, it is available for ITOS 2008 from the <a href="http://maemo.o-hand.com/">OpenedHand repository</a>. This limitation will be removed again in the final release.</li>
</ul>
<h3>Setup</h3>
<p>This is the biggest difference compared to 0.7, and hopefully a big step forward: on all platforms a single command is enough to create a fully operational configuration: <code>syncevolution --configure --sync-property username=&lt;your SyncML account name&gt; --sync-property password=&lt;SyncML account password&gt; &lt;server name&gt;</code>. A unique device ID is chosen automatically. &#8220;addressbook&#8221;, &#8220;calendar&#8221;, &#8220;memo&#8221;, &#8220;todo&#8221; sources are enabled if possible and use the default local database. No more editing of config files&#8230;</p>
<p><code>syncevolution --template ?</code> prints a list of built-in server templates. The example configurations still included in the distribution are no longer needed and will be removed.</p>
<p>To review the configuration, use <code>syncevolution --print-config &lt;server name&gt;</code>. There are several other configuration options which might be of interest, for example proxy and the new SSL settings. Those can be changed using the same syntax as for creating the initial configuration.</p>
<h3>Known Problems</h3>
<p>When testing detached recurrences with ScheduleWorld it turned out that ScheduleWorld accepted the events, but didn&#8217;t forward them to other clients. This is still under investigation.</p>
<p>Regarding the improved time zone handling: Evolution itself does not do either of these steps itself yet, thus importing meeting invitations via Evolution still fails in some cases. The code implementing the time zone handling described above was written with inclusion into Evolution itself in mind; a discussion with the Evolution developers about that <a title="Bug 528902 – time zone handling insufficient" href="http://bugzilla.gnome.org/show_bug.cgi?id=528902">is in progress.</a></p>
<p><strong>[Updated 2008-06-11]</strong> The setup procedure on Maemo was supposed to not configure sources for which no data is found. This doesn&#8217;t seem to work as intended, leading to error reports for &#8220;memo&#8221; and &#8220;tasks&#8221;. Until this is fixed, please disable the extraneous sources with <code>syncevolution --configure --source-property sync=none &lt;server&gt; memo todo</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/04/20/syncevolution-08-alpha-1/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SyncEvolution 0.7 Released &#8211; Ho Ho Ho!</title>
		<link>http://www.estamos.de/blog/2007/12/21/syncevolution-07-released-ho-ho-ho/</link>
		<comments>http://www.estamos.de/blog/2007/12/21/syncevolution-07-released-ho-ho-ho/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 20:50:46 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/12/21/syncevolution-07-released-ho-ho-ho/</guid>
		<description><![CDATA[Here&#8217;s a slightly early Christmas present: I have released SyncEvolution 0.7. For those who have already followed the prereleases there haven&#8217;t been much changes since -pre2:

I noticed problems with the background thread which watched the Evolution Data Server and therefore disabled it. This means that SyncEvolution will hang again when EDS dies unexpectedly.
I fixed an [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a slightly early Christmas present: I have released <a href="http://sourceforge.net/project/shownotes.php?group_id=146288&amp;release_id=548864" title="SyncEvolution 0.7 release notes">SyncEvolution 0.7</a>. For those who have already followed the prereleases there haven&#8217;t been much changes since -pre2:</p>
<ul>
<li>I noticed problems with the background thread which watched the Evolution Data Server and therefore disabled it. This means that SyncEvolution will hang again when EDS dies unexpectedly.</li>
<li>I fixed an <a href="http://forge.objectweb.org/tracker/?func=detail&amp;atid=100096&amp;aid=307863&amp;group_id=96">incompatibility of the Funambol C++ client library with the Synthesis server</a>; as it turned out later, this had also been fixed by Funambol on the head revision without updating the release branch. Synchronizing notes with that server now works fine.</li>
</ul>
<p>As I <a href="http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/trackback" title="SyncEvolution for iPhone: the making of">mentioned before</a>, as part of the work for the iPhone SyncEvolution was first ported to Mac OS X. The 0.7 release on SourceForge now also has a precompiled package for that platform. It should run on PPC and x86, but was only tested on x86. This is considered a proof-of-concept: the packaging is very primitive and unless there is demand I won&#8217;t compile future versions for Mac OS X.</p>
<p>Compared to 0.6 there are <a href="http://www.estamos.de/blog/2007/11/10/the-power-of-the-syncevolution-command-line/trackback" title="the power of the SyncEvolution command line">several</a> <a href="http://sourceforge.net/project/shownotes.php?group_id=146288&amp;release_id=548864" title="SyncEvolution 0.7 release notes">reasons</a> to update, so don&#8217;t hesitate, get your update in time to unwrap, ahem, unpack it under the Christmas tree&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/12/21/syncevolution-07-released-ho-ho-ho/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

