The Exchange Project - Syncing Exchange to iCal and back
· Updated: · 3 min read
As noted [elsewhere][], I decided to go on with the
Exchange2iCal
project I started almost one
year ago.I’m actually getting along nicely, also due to
the fact that Jeffrey Harris released the wonderful [VObject][]
package some days ago. (Thanks to [Jon][] for the tip!)
So far, the following bits and pieces are working:
-
I can get the whole Exchange Calendar as an
ics
file, including recurrence, alarms and meeting status. - I can parse and compare two iCalendar files and get the following information:
- New Local/Remote Events
- Changed Local/Remote Events
- Deleted Local/Remote Events
The first part can be considered “stable”, that is, if you’re OK w/ read-only access to you calendar, you could basically use that part. You can download these here: [e2i][].
Warning> These scripts are provided strictly as is. It’s alpha status at best, hacked together to work on my environment and not tested elsewhere than my Mac. There isn’t a
README
available and I assume that you know how to get the different tidbits needed to make it running, in particular:>#
- Python 2.3>
-
PyObjC (If you want to profit from Keychain-based
authentication to Exchange)> * Basic knowledge of
Python» (If you can’t, then maybe you’re not
the exact target audience for these scripts and
better wait for the moment where I have something a
little more user-friendly *or* where Apple themselves
release an iSync to Exchange. I know there are quite a bunch
o’ people in the wild that’d like to see this
working, but sorry, it’s just not there yet.).» I
further assume that you know how to read a program and change
certain parameters. > There is some documentation in the
code, but remember:>
This is not for the faint-hearted!> And
now go and run
exchange.py
:)
The second part (parsing & comparing) is still very buggy and unstable. I get pretty decent results but the parsing & comparing is somewhat unpredictable.
Now, I am heading for the following:
- Increase the stability of the comparison1
- Implement a first one-way updater
- Wrap the thing up so fetching, comparing and updating will become one monolithic sync process
- Write an iSync plugin
(This last point should be the easiest, as PyObjC can now be used to program NSBundles in Python, as seen [here][]. ;) (Hat tip: [John Gruber][])
Some other tidbits are going along with this as well:
- Increase the stability and usefulness of the XSLT that transforms the Exchange data to iCalendar
- Bring meeting attendee info into the iCS if possible
- Recur to less file-based transactions (i.e., less data-dumps and more advanced uses of stuff like LibXML2’s Python bindings etc.)
- Lure our Sysadmins to install Exchange 2003 ASAP.
- Become better in Python programming :)
- Set-up some project space with a constant URL so people can find this – if they want :)
RationaleYou might ask yourself the question what the rationale
of this project is? I’ll admit, I’m only doing this
to get /.
ed once in my life. :) But before you go
and call the dot to slash me, bear in mind that this project is
not yet finished – some more time is needed to get
something that’s worth a /.
:)#
(Actually, getting Exchange on my Mac desktop would be great, too … )
-
That is, better understand the [VObject][] architecture :)[elsewhere]: /2004/11/20/more-on-exchange-os-x/ “More on Exchange & OS X”[VObject]: http://vobject.skyhouseconsulting.com/ “VObject Project Home” [Jon]: http://weblog.infoworld.com/udell/2004/12/09.html#a1130 “Jon Udell on CalDAV”[here]: http://www.pycs.net/bbum/2004/12/10/ “PyObjC, py2app, and bundle”[John Gruber]: http://daringfireball.net “John Gruber”[e2i]: http://mycvs.org/wp/wp-content/e2i-0.1.tgz “Exchange2iCal” ↩︎
Comments.
No comments. Be the first to add one!
Add a comment.