[cvs] [Wiki] changed: Project/ActiveSync

Michael Rubinsky mrubinsk at horde.org
Fri Mar 26 19:58:21 UTC 2010


mrubinsk  Fri, 26 Mar 2010 15:58:21 -0400

Modified page: http://wiki.horde.org/Project/ActiveSync
New Revision:  1.14
Change log:  start filling in some instructions, notes etc...

@@ -15,11 +15,41 @@
  ++ Description

  Integrate the Z-Push library into Horde. Provide the ability for  
Horde to provide over the air synchronization of email, contacts, and  
calendar data to devices such as the iPhone/iPod Touch, Android and  
any other system supporting !ActiveSync.

-++ Rough list of issues/todos in no particular order
+++ Trying it out

-Need to implement ghosted properties / SUPPORTED tag. Currently, all  
data on the server is overwritten and replaced with only what the PIM  
sends. It's possible for some PIMS to ghost contact and calendar  
properties so that only the supplied tags are changed, and missing,  
ghosted properties are retained on the server.  When a PIM supports  
this, it sends a SUPPORTED tag with children representing the  
NON-ghosted properties. The absence of the SUPPORTED tag would  
indicate that any property not transmitted should be handled as a  
ghosted property.
+The !ActiveSync code has been merged into git master, but is not  
active by default. You should be aware that this code is still very  
experimental. While it mostly works for me in my tests, on my test  
devices, there are likely still many bugs. It may work, it might not,  
or it might make your iPod grow legs and run for higher ground. You  
have been warned.
+
+To activate the server, you need to enable it in Horde's  
configuration. You will see an !ActiveSync tab. Right now, the only  
thing configurable is the directory you would like to store the state  
files in.
+
+You will also need to configure your webserver to redirect the URL  
Microsoft-Server-ActiveSync to your horde/rpc.php file. How you do  
this depends on your webserver and it's configuration. For Apache,  
something like:
+<code>
+Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
+</code>
+
+or for lighttpd:
+
+<code>
+alias.url = ("/Microsoft-Server-ActiveSync" =>  
"/var/www/html/horde/rpc.php");
+</code>
+
++++ What works
+
+Contacts and Calendar syncing is mostly working. The most notable  
issue is with recurring event exceptions. Exceptions created on the  
PIM work to a point, exceptions created in Kronolith, well, not so much.
+
+This code has been tested to some degree on the following devices:
+|| Device || Version(s) || Notes ||
+|| Android SDK Emulator|| 2.0.1 and 2.1 ||Contacts only as the  
emulator does not have a native calendar application ||
+|| Motorola Droid || Android 2.0.1 || Contacts and Calendar data  
(Native calendar still has some issues) ||
+|| Touchdown For Droid || Version 5.1.0028 || Contacts and Calendar ||
+|| iPod Touch || 3.1.3 || Contacts and Calendar ||
+
+++ Rough list of issues/todos/development notes in no particular order
+
+Horde_History state driver. Currently, ActiveSync support uses a  
file-based state driver to persist the PIM state so we know what  
changes. This is a refactored implementation of what the Z-Push  
library does. For Horde, this is inefficient, as we have the data  
needed to know what has changed and when. Once the majority of the  
feature set is working, a Horde_History driver should be written to  
replace the file based driver when syncing contacts, calendar, and  
todo data. We might still need it if/when push email is implemented.  
The backend drivers are able to specify a particular state storage to  
enable this functionality if it is needed.
+
+Need to implement ghosted properties / SUPPORTED tag. Currently, all  
data for a message on the server is overwritten and replaced with only  
what the PIM sends. It's possible for some PIMS to ghost contact and  
calendar properties so that only the supplied tags are changed, and  
missing, ghosted properties are retained on the server.  When a PIM  
supports this, it sends a SUPPORTED tag with children representing the  
NON-ghosted properties. The absence of the SUPPORTED tag would  
indicate that any property not transmitted should be handled as a  
ghosted property.

  Configurable heartbeat interval range: The protocol allows for  
rejecting heartbeat intervals that fall outside a specific range, and  
send back a suggested heartbeat interval to the client. This should be  
implemented as a configuration value.

  ++ Resources



More information about the cvs mailing list