<?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; iPhone</title>
	<atom:link href="http://www.estamos.de/blog/category/iphone/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>SyncEvolution for the iPhone: What&#8217;s Next?</title>
		<link>http://www.estamos.de/blog/2008/03/07/syncevolution-for-the-iphone-whats-next/</link>
		<comments>http://www.estamos.de/blog/2008/03/07/syncevolution-for-the-iphone-whats-next/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 17:36:32 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2008/03/07/syncevolution-for-the-iphone-whats-next/</guid>
		<description><![CDATA[Apple has finally announced the SDK for the iPhone. In contrast to what I had hoped earlier, it does not seem to contain any documentation about accessing the calendar data. The AddressBook framework is documented, but I had already figured out how that API works.
Therefore it is still as hard as before to add calendar [...]]]></description>
			<content:encoded><![CDATA[<p>Apple has finally announced the SDK for the iPhone. In contrast to <a href="http://www.estamos.de/blog/2007/11/01/syncevolution-07-and-beyond-calendar-support-for-the-iphone/" title="SyncEvolution 0.7 and beyond - Calendar Support for the iPhone?!">what I had hoped earlier</a>, it does not seem to contain any documentation about accessing the calendar data. The AddressBook framework is documented, but <a href="http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/" title="iPhone Address Book Synchronization with SyncEvolution: The Making Of">I had already figured out how that API works</a>.</p>
<p>Therefore it is still as hard as before to add calendar synchronization. In the meantime Funambol has started to integrate the SyncEvolution code into their GUI for the iPhone and will continue to work on it there. I&#8217;m happy with that &#8211; less work for me that way <img src='http://www.estamos.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  So I&#8217;ll stop working on the iPhone port of SyncEvolution and leave it to Funambol to cover that platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2008/03/07/syncevolution-for-the-iphone-whats-next/feed/</wfw:commentRss>
		<slash:comments>6</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>
		<item>
		<title>SyncEvolution on iPhone with 1.1.2 &#8211; does it work?</title>
		<link>http://www.estamos.de/blog/2007/12/05/syncevolution-on-iphone-with-112-does-it-work/</link>
		<comments>http://www.estamos.de/blog/2007/12/05/syncevolution-on-iphone-with-112-does-it-work/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 21:36:55 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/12/05/syncevolution-on-iphone-with-112-does-it-work/</guid>
		<description><![CDATA[I have to disappoint those hoping to get an answer to this question here &#8211; I don&#8217;t know it myself at this time. My own iPhone still runs 1.0.2 and Funambol has tested on 1.1.1, so those two firmware versions are known to be compatible. For 1.1.2 I have less good news: one user has [...]]]></description>
			<content:encoded><![CDATA[<p>I have to disappoint those hoping to get an answer to this question here &#8211; I don&#8217;t know it myself at this time. My own iPhone still runs 1.0.2 and Funambol has tested on 1.1.1, so those two firmware versions are known to be compatible. For 1.1.2 I have less good news: one user has just upgraded and SyncEvolution started to segfault after the upgrade. So my question to anyone out there with 1.1.2: does SyncEvolution work or not? Please respond <a href="mailto:patrick.ohly@gmx.de">by email</a> or leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/12/05/syncevolution-on-iphone-with-112-does-it-work/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Address Book Synchronization Mentioned on iPhone Hacks</title>
		<link>http://www.estamos.de/blog/2007/11/19/address-book-synchronization-mentioned-on-iphone-hacks-blog/</link>
		<comments>http://www.estamos.de/blog/2007/11/19/address-book-synchronization-mentioned-on-iphone-hacks-blog/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 08:27:47 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/11/19/address-book-synchronization-mentioned-on-iphone-hacks-blog/</guid>
		<description><![CDATA[The only iPhone related blog that I read regularly, &#8220;iPhone Hacks&#8220;, has written about the Funambol iPhone plug-in. Unfortunately they completely missed the fact that the real work of synchronizing contacts is done by SyncEvolution. The article seems to be a rewrite of the Funambol iPhone solutions page. Further information would have been available in [...]]]></description>
			<content:encoded><![CDATA[<p>The only iPhone related blog that I read regularly, &#8220;<a href="http://www.iphonehacks.com" title="iPhone Hacks blog">iPhone Hacks</a>&#8220;, has written about the Funambol iPhone plug-in. Unfortunately they completely missed the fact that the real work of synchronizing contacts <a href="http://www.estamos.de/blog/2007/11/01/syncevolution-funambol-iphone-plugin-how-they-are-related/" title="SyncEvolution + Funambol iPhone plugin: how they are related">is done by SyncEvolution</a>. The article seems to be a rewrite of <a href="http://www.funambol.com/solutions/iphone.php" title="Funambol iPhone Support">the Funambol iPhone solutions page</a>. Further information would have been available <a href="http://www.funambol.com/news/pressrelease_2007.11.8.php" title="Funambol Releases First Open Source Native App For iPhone Contact Synchronization">in Funambol&#8217;s press release</a> and of course this blog.</p>
<p>Because SyncEvolution is a standards-compliant SyncML client, synchronization is not limited to myFUNAMBOL: it also works with other SyncML servers (I regularly test with Synthesis and ScheduleWorld; user&#8217;s have had success with eGroupware and more). The GUI only allows to configure the server&#8217;s URL and account data. For everything else it uses the configuration files for the &#8220;funambol&#8221; server. So to change the URI, edit the <code>/var/root/.sync4j/evolution/funambol/spds/sources/addressbook/config.txt</code> file.</p>
<p>The blog also concludes that  <em>&#8220;As both methods do the same thing I guess the iPhone web app would be the more preferred option&#8221;.</em> I personally find it much more useful to have my contacts on the device itself because incoming calls are matched against the stored numbers and then displayed with the name of the person calling me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/11/19/address-book-synchronization-mentioned-on-iphone-hacks-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Power of the SyncEvolution Command Line</title>
		<link>http://www.estamos.de/blog/2007/11/10/the-power-of-the-syncevolution-command-line/</link>
		<comments>http://www.estamos.de/blog/2007/11/10/the-power-of-the-syncevolution-command-line/#comments</comments>
		<pubDate>Sat, 10 Nov 2007 17:21:14 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/11/10/the-power-of-the-syncevolution-command-line/</guid>
		<description><![CDATA[With the Funambol iPhone plugin providing a nice GUI for SyncEvolution on the iPhone one might wonder what the advantages are of using the command line version on the iPhone. None of the other platforms have a GUI &#8211; why hasn&#8217;t anyone added one yet? This post will explore some of the things that can [...]]]></description>
			<content:encoded><![CDATA[<p>With the Funambol iPhone plugin providing a nice GUI for SyncEvolution on the iPhone one might wonder what the advantages are of using the command line version on the iPhone. None of the other platforms have a GUI &#8211; why hasn&#8217;t anyone added one yet? This post will explore some of the things that can be done on the command line that would be hard to replicate in a GUI.<span id="more-14"></span></p>
<p>Traditionally SyncEvolution did not have many command line options: you could select the server to synchronize against in case you have configured more than one (which is entirely possible). Then you could select a subset of data sources to synchronize. Both is not such a big difference compared to a GUI. The advantages are in the output that you get. The iPhone plugin keeps things simple and just presents success or failure. But SyncEvolution offers much more than that.</p>
<h3>Comparison of Database Changes</h3>
<p>For me Evolution is the main storage location for my precious contact data. Whenever I sync, I absolutely want to be sure that no unintentional changes are applied to that data. Therefore starting with the very first release SyncEvolution would do a before and after dump of the data and print a comparison of those two dumps. Whenever some unwanted change is made, falling back to the previous state is as easy as reimporting the &#8220;before&#8221; data dump.</p>
<p>Several people have pointed out that changes applied to the server are equally important and that the output of SyncEvolution about &#8220;changes during synchronization&#8221; was confusing because it didn&#8217;t include the changes on the server. I&#8217;m a reasonable person (okay, usually), so I listened to those remarks and added a new feature to SyncEvolution 0.7 pre2: it also does another comparison between the data dumps after the previous sync and before the current one, i.e. this comparison lists the changes applied locally. They will be sent to the server in the next sync. This feature depends on having the previous data dump still around, either in /tmp or (and that is the recommended solution because /tmp is likely to be wiped out during a reboot) in the <code>logdir</code> configured in the syncml/config.txt.</p>
<p class="important">Note that <code>logdir</code> must be set manually, it is not set in the example configs</p>
<p>.</p>
<p>Here is an example:</p>
<blockquote>
<pre>syncevolution scheduleworld
Local changes to be applied to server during synchronization:
*** vcard30 ***
no changes
*** ical20 ***
no changes
*** itodo20 ***
no changes
*** text ***
                     after last sync | current data
             removed since last sync &lt;
                                     &gt; added since last sync
-------------------------------------------------------------------------------
BEGIN:VCALENDAR                          BEGIN:VCALENDAR
VERSION:2.0                              VERSION:2.0
BEGIN:VJOURNAL                           BEGIN:VJOURNAL
                                     &gt;   SUMMARY:New memo.
                                     &gt;   CATEGORIES:TEST
                                     &gt;   CLASS:PRIVATE
                                     &gt;   DESCRIPTION:New memo.\nThis needs t
                                     &gt;    o be sent to the server.\n
                                     &gt;   END:VJOURNAL
                                     &gt; END:VCALENDAR
-------------------------------------------------------------------------------
                                     &gt; BEGIN:VCALENDAR
                                     &gt; VERSION:2.0
                                     &gt;   BEGIN:VJOURNAL
SUMMARY:Summary Modified                 SUMMARY:Summary Modified
DESCRIPTION:Summary Modified\nBody       DESCRIPTION:Summary Modified\nBody
text                                     text
END:VJOURNAL                             END:VJOURNAL
END:VCALENDAR                            END:VCALENDAR</pre>
</blockquote>
<p>A completely new memo is listed here as part of the local changes.</p>
<blockquote>
<pre>-------------------------------------------------------------------------------
15:05:49 GMT +0100 [INFO] - Synchronization URL: http://sync.scheduleworld.com/funambol/ds
15:05:49 GMT +0100 [INFO] - Preparing synchronization of vcard30...
15:05:49 GMT +0100 [INFO] - Preparing synchronization of ical20...
15:05:49 GMT +0100 [INFO] - Preparing synchronization of itodo20...
15:05:49 GMT +0100 [INFO] - Preparing synchronization of text...
15:05:50 GMT +0100 [INFO] - vcard30: sync mode is 'two-way'
15:05:51 GMT +0100 [INFO] - ical20: sync mode is 'two-way'
15:05:52 GMT +0100 [INFO] - itodo20: sync mode is 'two-way'
15:05:52 GMT +0100 [INFO] - text: sync mode is 'two-way'
15:05:52 GMT +0100 [INFO] - text: 20071110T140450Z-5351-727-1-65@gollum: extracting from EV
15:05:54 GMT +0100 [INFO] - vcard30: John Doe, pas-id-4733548A0000000C, EV Doe, John: update
Synchronization successful.</pre>
</blockquote>
<p>The following table summarizes all changes transmitted during a synchronization. Sometimes changes might<br />
be transmitted which did not modify data (e.g. when making a change and later reverting it, an update would<br />
still be sent).</p>
<blockquote>
<pre>
Changes applied during synchronization:
+-------------------|-------ON CLIENT-------|-------ON SERVER-------|
|                   |   successful / total  |   successful / total  |
|            Source |  NEW  |  MOD  |  DEL  |  NEW  |  MOD  |  DEL  |
+-------------------+-------+-------+-------+-------+-------+-------+
|           vcard30 |  0/0  |  1/1  |  0/0  |  0/0  |  0/0  |  0/0  |
|            ical20 |  0/0  |  0/0  |  0/0  |  0/0  |  0/0  |  0/0  |
|           itodo20 |  0/0  |  0/0  |  0/0  |  0/0  |  0/0  |  0/0  |
|              text |  0/0  |  0/0  |  0/0  |  1/1  |  0/0  |  0/0  |
+-------------------+-------+-------+-------+-------+-------+-------+</pre>
</blockquote>
<p>The following changes are again based on a comparison of the actual local data:</p>
<blockquote>
<pre>
Changes applied to client during synchronization:
*** vcard30 ***
                           before sync | after sync
                   removed during sync &lt;
                                       &gt; added during sync
-------------------------------------------------------------------------------
BEGIN:VCARD                              BEGIN:VCARD
N:Doe;John                               N:Doe;John
ADR;TYPE=HOME:Test Box #1;;Test Drive    ADR;TYPE=HOME:Test Box #1;;Test Drive
1;Test Village;Lower Test County;123     1;Test Village;Lower Test County;123
45;Testovia                              45;Testovia
ADR;TYPE=HOME:Test Box #3;;Test Drive    ADR;TYPE=HOME:Test Box #3;;Test Drive
3;Test Megacity;Test County;12347;Ne     3;Test Megacity;Test County;12347;Ne
w Testonia                               w Testonia
ADR;TYPE=WORK:Test Box #2;;Test Drive    ADR;TYPE=WORK:Test Box #2;;Test Drive
2;Test Town;Upper Test County;12346;     2;Test Town;Upper Test County;12346;
Old Testovia                             Old Testovia
BDAY:2006-01-08                          BDAY:2006-01-08
CATEGORIES:TEST                          CATEGORIES:TEST
EMAIL:john.doe@home.priv                 EMAIL:john.doe@home.priv
EMAIL:john.doe@other.world               EMAIL:john.doe@other.world
EMAIL:john.doe@work.com                  EMAIL:john.doe@work.com
NICKNAME:user1                           NICKNAME:user1
NOTE:This is a test case which uses a    NOTE:This is a test case which uses a
lmost all Evolution fields.              lmost all Evolution fields.
ORG:Test Inc.;Testing                    ORG:Test Inc.;Testing
ROLE:professional test case              ROLE:professional test case
TEL;TYPE=CAR:car 7                       TEL;TYPE=CAR:car 7
TEL;TYPE=CELL:mobile 3                   TEL;TYPE=CELL:mobile 3
TEL;TYPE=FAX;TYPE=HOME:homefax 5         TEL;TYPE=FAX;TYPE=HOME:homefax 5
TEL;TYPE=FAX;TYPE=WORK:businessfax 4     TEL;TYPE=FAX;TYPE=WORK:businessfax 4
TEL;TYPE=HOME:home 2                     TEL;TYPE=HOME:home 2
TEL;TYPE=PAGER:pager 6                   TEL;TYPE=PAGER:pager 6
TEL;TYPE=PREF:primary 8                  TEL;TYPE=PREF:primary 8
TEL;TYPE=WORK:business 1                 TEL;TYPE=WORK:business 1
TITLE:Manager                          | TITLE:Senior Manager</pre>
</blockquote>
<p>Only one line was changed: John Doe has been promoted&#8230;</p>
<blockquote>
<pre>
URL:http://john.doe.com                 URL:http://john.doe.com
VERSION:3.0                              VERSION:3.0
END:VCARD                                END:VCARD
-------------------------------------------------------------------------------
*** ical20 ***
no changes
*** itodo20 ***
no changes
*** text ***
no changes</pre>
</blockquote>
<h3>New Command Line Options in 0.7 pre2</h3>
<p>The check for local changes makes sense even without a sync, for example to figure out whether there are any local changes which would get lost during a &#8220;refresh-from-server&#8221; sync. Doing such a &#8220;refresh-from-server&#8221; once before continuing with normal &#8220;two-way&#8221; synchronization is another example for something which is now possible with new the command line options:</p>
<blockquote>
<pre>
syncevolution
syncevolution [&lt;options&gt;] &lt;server&gt; [&lt;source&gt; ...]
syncevolution --help|-h
syncevolution --version

Options:
  --sync|-s &lt;mode&gt;
    Temporarily synchronize the active sources in that mode. Useful
    for a 'refresh-from-server' or 'refresh-from-client' sync which
    clears all data at one end and copies all items from the other.

  --status|-t
    The changes made to local data since the last synchronization are
    shown without starting a new one. This can be used to see in advance
    whether the local data needs to be synchronized with the server.

  --quiet|-q
    Suppresses most of the normal output during a synchronization. The
    log file still contains all the information.

  --help|-h
    Prints usage information.

  --version
    Prints the SyncEvolution version.</pre>
</blockquote>
<h3>Running Regularly</h3>
<p>Like any other command line application, SyncEvolution can be run regularly for example by making it part of a cron job.</p>
<p class="important">When you do that, please choose a long delay between each sync!</p>
<p> It is easy to generate a high load on a SyncML server even without actually exchanging data.</p>
<h3>Not available (yet)</h3>
<p>Due to limitations in the logging of the SyncML library, the <code>INFO</code> messages which are printed at the end of a sync cannot be printed to the screen at the same time as they are written into the log file. That would be more natural as it provides some feedback while the sync is still running. Even more important would be an estimate how much of the sync is already completed. The SyncML library provides some support for that, it just isn&#8217;t used in SyncEvolution yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/11/10/the-power-of-the-syncevolution-command-line/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SyncEvolution: A Bad Weekend &#8211; for Bugs!</title>
		<link>http://www.estamos.de/blog/2007/11/05/syncevolution-a-bad-weekend-for-bugs/</link>
		<comments>http://www.estamos.de/blog/2007/11/05/syncevolution-a-bad-weekend-for-bugs/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 22:08:07 +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/11/05/syncevolution-a-bad-weekend-for-bugs/</guid>
		<description><![CDATA[This weekend saw the most gruesome death of several bugs which have affected SyncEvolution users with Evolution 2.12 and the iPhone. I don&#8217;t know whether any of these bugs were screaming &#8220;Today is a good day to die!&#8221; before gobbling their last byte, but some really put up a fight. Let me summarize what I [...]]]></description>
			<content:encoded><![CDATA[<p>This weekend saw the most gruesome death of several bugs which have affected SyncEvolution users with Evolution 2.12 and the iPhone. I don&#8217;t know whether any of these bugs were screaming &#8220;Today is a good day to die!&#8221; before gobbling their last byte, but some really put up a fight. Let me summarize what I fixed this weekend. Some changes are more like improvements, but in both cases it means that SyncEvolution 0.7 is a step closer. I&#8217;ll release a pre2 update soon; stay tuned and watch this blog.<span id="more-10"></span></p>
<h4>Starting with Evolution 2.12 SyncEvolution <a href="http://bugzilla.gnome.org/show_bug.cgi?id=488881">crashed the Evolution Data Server</a> when synchronizing calendars.</h4>
<p>Once I managed to <a href="http://www.mail-archive.com/evolution-hackers@gnome.org/msg02096.html" title="patch for Paul Smith's Evolution Makefile">compile Evolution 2.12 on my Debian Etch desktop</a> and also solved <a href="http://www.mail-archive.com/evolution-hackers@gnome.org/msg02111.html" title="glib2 and all dependent libs need to be recompiled on Debian Etch">some linking problems</a>, it turned out to be reproducible with the SyncEvolution test suite. Lesson one: test against Evolution development builds regularly.</p>
<p>After Matthew Barnes pointed me in the right direction, stepping through the code in the debugger showed that a change in <code>e_cal_create_object()</code> caused the problem: it failed because the event (identified by its UID) already existed. In contrast to previous versions, Evolution 2.12 removes the offending UID, so when SyncEvolution called <code>e_cal_update_object()</code> that call then failed even worse by crashing the back end due to an unchecked NULL UID pointer. Reconstructing the UID was an easy solution for this, once the reason was found. Lesson two (not really a new one, but always good to remember): don&#8217;t depend on unspecified behavior, it can change. If only it was more obvious which behavior is intentional and which isn&#8217;t ;-/</p>
<h4><a href="http://www.mail-archive.com/evolution-hackers@gnome.org/msg01978.html" title="mail thread on Evo-Dev">SyncEvolution hangs when the Evolution Data Server dies</a>.</h4>
<p>When the Evolution Data Server died, SyncEvolution remained stuck in the blocking EDS API calls because they do not return. The Evolution API documents a <code>"backend-died"</code> signal. Trying to catch that signal in SyncEvolution did not work at first; more investigations showed that the signal is only delivered to &#8220;normal&#8221; GNOME/glib applications which run an event loop. As a command line tool SyncEvolution did not have that and therefore the signal was never delivered. Now a background thread drives the event loop and SyncEvolution detects the problem. Because the API calls still don&#8217;t return with an error, all it can do is print an error and abort, but that&#8217;s still better than just keeping the user waiting&#8230; forever.</p>
<h4>SyncEvolution segfault after updating to Ubuntu</h4>
<p>Two users reported this. Stack back traces reported by the users pointed to an invalid <code>free()</code> in libcurl, but it never became clear what caused the memory corruption. There is no real solution, only a workaround. A configuration change seemed to help: if you follow an old Ubuntu forum post for compiling SyncEvolution from source (like one of the users did), then the configuration created as described in that forum does not enable a message size limit and the splitting of large objects. This was added in 0.5 and made the default in 0.6. Because upgrading to a more recent Evolution does <strong>not</strong> update the user&#8217;s .sync4j configuration files, these changes must be applied manually &#8211; the NEWS file will describe such changes. In this case the <code>spds/syncml/config.txt</code> should contain the following entries:</p>
<blockquote><p> # The maximum size of each message can be set (maxMsgSize) and the<br />
# server can be told to never sent items larger than a certain<br />
# threshold (maxObjSize). Presumably the server has to truncate or<br />
# skip larger items. Finally the client and server may be given the<br />
# permission to transmit large items in multiple messages (loSupport =<br />
# large object support).<br />
maxMsgSize = 8192<br />
maxObjSize = 500000<br />
loSupport = 1</p></blockquote>
<p>Note that SyncEvolution 0.7 pre1 is available as <a href="http://www.estamos.de/projects/SyncML/Compatibility.html" title="compatibility page">.deb in an apt repository</a> that works for Debian and Ubuntu. You&#8217;ll only need to compile from source if you want it for 64 bit or some other platform.</p>
<h4>Synchronization of photos with iPhone</h4>
<p>Sending photos had been tested, but apparently not importing them &#8211; as one user reported, it just crashed. To cut a long story short, the API for photo import/export is different on the iPhone than on Mac OS X: the iPhone stores photos in different resolutions so that thumbnails load quicker. The API was extended to support this functionality and takes additional parameter that SyncEvolution did not pass. Now SyncEvolution calls the functions correctly, but it does not yet produce thumbnails when importing photos. If you can, scale down photos before adding them to contacts &#8211; it helps to keep the load on SyncML servers small and complete syncs faster. Note that despite the possibility to &#8220;move and scale&#8221;  a photo on the iPhone before setting it, the photo will be stored in its original size! SyncEvolution will send the original size because otherwise the original photo might get lost when reimporting the contact. I try to avoid data loss under all circumstances, but am less sure about this case. If you think that the iPhone client should reduce the amount of network communication by only sending smaller photos, then please let me know.</p>
<h4>ScheduleWorld and iPhone: vCard 3.0 import did not map phone numbers correctly</h4>
<p>The preferred format of ScheduleWorld is vCard 3.0. Clients should use the <code>card3</code> URI to get contacts in that format and also send them. The example configs of SyncEvolution 0.7 pre1 had <code>card3</code> but contacts where always sent as vCard 2.1 because myFUNAMBOL is more happy with that format. Even worse, there was a bug in SyncEvolution&#8217;s vCard 3.0 parser which did not correctly detect the type of incoming phone numbers, therefore mapping most of them to &#8220;other&#8221;. The next release fixes that and also sends contacts as vCard 3.0 when configured for <code>card3</code> (a hack, but there is no better way to detect the intended format at the moment). After the next update it is recommended to do a &#8220;refresh-from-server&#8221; sync to fix the broken types. Currently this has to be done by setting &#8220;<code>sync = refresh-from-server</code>&#8221; in the source&#8217;s config.txt, sync, reload the file and set &#8220;<code>two-way</code>&#8221; again. I&#8217;ll try to add a command line option to pre2 which will temporarily override the synchronization mode &#8211; I&#8217;m just not sure yet whether I should delay the update because of that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/11/05/syncevolution-a-bad-weekend-for-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SyncEvolution 0.7 and beyond &#8211; Calendar Support for the iPhone?!</title>
		<link>http://www.estamos.de/blog/2007/11/01/syncevolution-07-and-beyond-calendar-support-for-the-iphone/</link>
		<comments>http://www.estamos.de/blog/2007/11/01/syncevolution-07-and-beyond-calendar-support-for-the-iphone/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 21:13:25 +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/11/01/syncevolution-07-and-beyond-calendar-support-for-the-iphone/</guid>
		<description><![CDATA[I have dodged this question for a while: will I continue to work on SyncEvolution for the iPhone and add the currently missing support for calendars, notes and tasks? My own priority was to have contacts synced between Evolution and the iPhone. But others seem to depend a lot more on their calendar and immediately [...]]]></description>
			<content:encoded><![CDATA[<p>I have dodged this question for a while: will I continue to work on SyncEvolution for the iPhone and add the currently missing support for calendars, notes and tasks? My own priority was to have contacts synced between Evolution and the iPhone. But others seem to depend a lot more on their calendar and immediately asked for that. The short answer is no, synchronizing more than contacts is not coming soon. For the long answer keep reading.<span id="more-9"></span></p>
<p>My current goal is to have a stable SyncEvolution 0.7 release out before even considering taking on more work. I believe users deserve stable, tested releases instead of constantly changing &#8220;beta&#8221; software. 0.7 is not done yet: there has been one report of a crash on the iPhone. On the Evolution side users switching to 2.12 <a href="http://bugzilla.gnome.org/show_bug.cgi?id=488881" title="Evolution-data-server crashes when running syncevolution">have reported problems</a>. There are also some features and workarounds that I wanted to add <a href="http://www.estamos.de/projects/SyncML/Roadmap.html" title="SyncEvolution Roadmap">during this release cycle</a>.</p>
<p>Beyond that I haven&#8217;t decided yet. The biggest problem with calendars, memos and tasks on the iPhone is that there is no documentation how the API to access them works. For contacts at least something could be learned from the Mac OS X documentation although the iPhone was <a href="http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/" title="iPhone Address Book Synchronization with SyncEvolution: The Making Of">sufficiently different</a> to make the port very tedious. One could try to bypass the API and access the data in the sqlite databases, but most likely this will confuse the iPhone GUI like it did for contacts. Perhaps the upcoming Apple SDK or the Leopard iCal API will provide more information.</p>
<p>Another chunk of work is the encoding and decoding of the  data in formats understood by SyncML servers. For calendars and tasks the vCalendar 1.0 or iCalendar 2.0 (if time zone definitions are needed) could be used. Markup for memos could be a problem. It might have to be stripped, lest it confuses other devices.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/11/01/syncevolution-07-and-beyond-calendar-support-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SyncEvolution + Funambol iPhone plugin: how they are related</title>
		<link>http://www.estamos.de/blog/2007/11/01/syncevolution-funambol-iphone-plugin-how-they-are-related/</link>
		<comments>http://www.estamos.de/blog/2007/11/01/syncevolution-funambol-iphone-plugin-how-they-are-related/#comments</comments>
		<pubDate>Thu, 01 Nov 2007 20:39:23 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/11/01/syncevolution-funambol-iphone-plugin-how-they-are-related/</guid>
		<description><![CDATA[Some bloggers have started to pick up the announcement of the Funambol iPhone plugin, but only spoke of Funambol&#8217;s involvement &#8211; and that although Fabrizio made it very clear that the plugin would not have been possible without SyncEvolution. I got a free iPhone from Funambol, but that would never have been enough to pay [...]]]></description>
			<content:encoded><![CDATA[<p>Some <a href="http://www.thomas.teufl.eu/blog/2007/10/26/syncml-fuers-iphone">bloggers</a> <a href="http://blogs.zdnet.com/open-source/?p=1613" title="ZDNet">have</a> started to pick up the announcement of the Funambol iPhone plugin, but only spoke of Funambol&#8217;s involvement &#8211; and that although Fabrizio made it very clear that the plugin would not have been possible without SyncEvolution. I got a free iPhone from Funambol, but that would never have been enough to pay for the time I spent on this project. Folks, be so kind and report the complete story! The distinction is not just important for my already inflated ego <img src='http://www.estamos.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> <span id="more-8"></span></p>
<p>Users also need to be aware where to report problems and how to install updates: the two components are developed independently and consist of separate binaries. It is just because of limitations in the packaging system on the iPhone that the GUI package <em>contains</em> the SyncEvolution executable instead of <em>depending</em> on the SyncEvolution package.</p>
<p>Fabrizio and I discussed future updates and came up with the following plan:</p>
<ul>
<li>the GUI will contain the  SyncEvolution executable (as it is now) but under a different name: this way users can install one package and have a working sync application</li>
<li>a notice during the installation reminds them that installing SyncEvolution is the best way to always have an up-to-date sync engine</li>
<li>if installed, the GUI invokes the normal SyncEvolution instead of the embedded one</li>
<li>SyncEvolution will be installable via the Funambol repository in addition to the one on www.estamos.de; currently getting it there is a manual process so the Funambol repository might be a bit behind</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/11/01/syncevolution-funambol-iphone-plugin-how-they-are-related/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>iPhone name server lookup: &#8220;Unknown server error&#8221; for sync.scheduleworld.com</title>
		<link>http://www.estamos.de/blog/2007/10/30/iphone-name-server-lookup-unknown-server-error-for-syncscheduleworldcom/</link>
		<comments>http://www.estamos.de/blog/2007/10/30/iphone-name-server-lookup-unknown-server-error-for-syncscheduleworldcom/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 21:19:30 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/10/30/iphone-name-server-lookup-unknown-server-error-for-syncscheduleworldcom/</guid>
		<description><![CDATA[# ping sync.scheduleworld.com
ping: cannot resolve sync.scheduleworld.com: Unknown server error
# nslookup
&#62; sync.scheduleworld.com
Server:         62.134.11.4
Address:        62.134.11.4#53
Non-authoritative answer:
sync.scheduleworld.com  canonical name = ns2.scheduleworld.com.
Name:   ns2.scheduleworld.com
Address: 72.51.41.97
This is one of the known problems on the iPhone. The same thing happens when libCURL in SyncEvolution [...]]]></description>
			<content:encoded><![CDATA[<p><code># ping sync.scheduleworld.com<br />
ping: cannot resolve sync.scheduleworld.com: Unknown server error<br />
# nslookup<br />
&gt; sync.scheduleworld.com<br />
Server:         62.134.11.4<br />
Address:        62.134.11.4#53</code></p>
<p>Non-authoritative answer:<br />
sync.scheduleworld.com  canonical name = ns2.scheduleworld.com.<br />
Name:   ns2.scheduleworld.com<br />
Address: 72.51.41.97</p>
<p>This is one of the known problems on the iPhone. The same thing happens when libCURL in SyncEvolution tries to resolve the name. Visting the site in Safari &#8220;fixes&#8221; the problem for a while, but sooner or later it has a very unwelcome comeback. Strangely enough, it only affects sync.scheduleworld.com and not my.funambol.com.</p>
<p>One user reported that he had the same problem and that pinging the site helped, but I cannot reproduce that. Any other suggestions?</p>
<p><strong>Update 2007-11-28:</strong> good news for users of ScheduleWorld &#8211; since November 27th ScheduleWorld moved sync.scheduleworld.com off of a CNAME and onto a dedicated A record. This was done to avoid the name server lookup problems on the iPhone. Thanks Mark!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/10/30/iphone-name-server-lookup-unknown-server-error-for-syncscheduleworldcom/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>iPhone Address Book Synchronization with SyncEvolution: The Making Of</title>
		<link>http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/</link>
		<comments>http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 21:24:29 +0000</pubDate>
		<dc:creator>Patrick Ohly</dc:creator>
				<category><![CDATA[SyncEvolution]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/</guid>
		<description><![CDATA[The iPhone port of SyncEvolution has been publicly available for a week now. Since then Fabrizio has mentioned it in his blog posting about the Apple SDK and announced his Funambol GUI for SyncEvolution on the iPhone. Users have started asking questions about it. Before examining the possible next steps with this exciting new platform [...]]]></description>
			<content:encoded><![CDATA[<p>The iPhone port of SyncEvolution has been publicly available for a week now. Since then Fabrizio has mentioned it in his <a href="http://www.funambol.com/blog/capo/2007/10/iphone-sdk-apple-deck.html">blog posting about the Apple SDK</a> and announced <a href="http://www.funambol.com/blog/capo/2007/10/introducing-funambol-iphone-plug-in.html">his Funambol GUI</a> for SyncEvolution on the iPhone. Users have started asking questions about it. Before examining the possible next steps with this exciting new platform for SyncEvolution (after the Evolution on Linux and Nokia 770/800 Address Book versions), let&#8217;s take a step back and review how the iPhone port saw the light of day.<span id="more-5"></span></p>
<p>At the beginning god created the iPhone&#8230; or so some believe when Steve Jobs announce it. I&#8217;m not a follower of that particular religion and usually react allergic to hypes, but when Fabrizio offered to send me an iPhone in return for the promise to port SyncEvolution I couldn&#8217;t resist. The goal was to have a solid implementation of address book synchronization.  With all my contacts maintained in Evolution on Linux, iTunes isn&#8217;t much help in that regard.</p>
<p>After experimenting with directly accessing the contacts in the SQLite database that approach was dropped in favor of using the Addressbook framework:</p>
<ul>
<li>the internal  database schema is sufficiently complex that reimplementing read/write routines would have been a lot of work and likely led to compatibility issues with the iPhone address book</li>
<li>changes to the SQLite database were not detected by the iPhone address book or caused it to crash</li>
<li>using the Address Book API would allow to compile the same source also for Mac OS X synchronization, a nice extra because there doesn&#8217;t seem to be a SyncML client for Mac OS X</li>
</ul>
<p>After all, iPhone runs parts of Mac OS X and that API is documented, so how different can it be on the iPhone? Unfortunately the answer turned out to be: quite a lot. From analyzing the libraries on the iPhone it was clear that all of the functions had been renamed. Using them in a way that works on Mac OS X just crashed on the iPhone. Due to the lack of documentation a lot of guessing and trial-and-error was required to figure out all the changes and avoid bugs that still seem to be lurking in normally unused parts of the iPhone libraries.</p>
<p>Besides figuring out how to access contacts on the iPhone the complete conversion to and from a standard format (vCard 2.1) had to be written. On Mac OS X there are library functions for that, but a) they use vCard in a way which is unlikely to be supported well enough by SyncML server and b) these functions are missing on the iPhone. With full control over the conversion process it was possible to minimize data loss to a minimum; see the <a href="http://www.estamos.de/projects/SyncML/Compatibility.html">compatibility entry for the platform</a> for details.</p>
<p>For software on the iPhone a single-click installation is almost a requirement. Once I started with setting up the necessary <a href="http://www.estamos.de/download/iphone/">repository</a> I felt bad about not offering the same convenience to existing users, so I also added an apt repository for Debian/Ubuntu and an <a href="http://www.estamos.de/download/syncevolution.install">.install</a> file for the Nokia Internet tablets.</p>
<p>Fabrizio tested all of these early versions on his own iPhone and provided valuable feedback. When it became obvious that the command line version worked, he was eager to also offer a GUI for it to the less technically inclined users. This time I managed to resist &#8211; I was a bit more diplomatic than &#8220;I&#8217;ve got better things to do&#8221; though <img src='http://www.estamos.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  But there is some truth to it: for the final 0.7 release the other platforms still need a bit of love and care. It also would be nice to not spend all evenings in front of the computer, even if just for a while.</p>
<p>Luckily that was enough motivation for Fabrizio to do the GUI himself. Now we just need to figure out a way how users can install both easily while at the same time being able to upgrade GUI and SyncEvolution independently: currently the Funambol GUI package contains a full copy of the SyncEvolution files. Therefore installing or updating the GUI after a SyncEvolution update will fall back to an older version of it unless the packages are always in sync. Hmm.</p>
<p>I have dodged an obvious question which came up right after the release: what about calendars? More on that in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.estamos.de/blog/2007/10/29/iphone-address-book-synchronization-with-syncevolution-the-making-of/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

