< Five 1.0 released!
Silva Flexible XML released >

[Comments] (5) iCalendar 0.10 released!:

The last couple of months I've been heavily involved in a cool Zope + Five based project involving calendaring, about which more will be announced shortly. As part of this project I've had the opportunity to improve Five. The project also needed support for the iCalendar RFC, and this lead to me to become the janitor of the awesome Python iCalendar library.

The iCalendar specification defines a format for importing and exporting information about calendars. Basically, you can specify in it that a particular event with a particular title will be happening on a particular date. There is however much more to it; certain events recur every week, for instance, and there is a way to describe that. Events may be private or public, and there's a way to describe that. And so on.

When I was faced with the task to enable iCalendar support for the project I was working on, I did a websearch first, to see whether there was any package that did this already out there. I already knew the Schoolbell project has an implementation, but wanted to make sure I wasn't missing something.

Soon enough I ran into the iCalendar package created by Max M. It seemed general and capable, more so than the schoolbell code, and I figured I'd give it a shot using it. I did have a few smaller niggles though: I did not like the package and module structure very much -- the files were CamelCase and all directly in the distribution directory, and I've become used to a more structured approach with lowercase package names and a setup.py and the like. The package contained many doctests, but didn't contain any testrunner to run them all at once, so I wanted to fix that too.

I contacted the author, Max M, and I got permission from him to move the stuff over onto codespeak.net subversion and restructure the package structure. It turned out he had some requests from other parties as well, including Linux distributors.

So I became what I can best describe as this project's janitor. I reorganized the package structure, hooked in a test runner, and cleaned up various texts some. I do not think I actually touched the code at all so far, though there are a few places where I have some ideas for improvements now.

The more I used the iCalendar package in the project afterwards, the happier I became about it. It is very powerful and the iCalendar import/export facility came together very quickly. My goal for the iCalendar package became broader: I must let others know about this! It needed a project website, mailing lists, the works! We must form a community of users so we can work on this together. Being a project janitor is a new and interesting experience to me, and we'll see whether my efforts will help make the library more well known. If we can establish a community to develop it beyond Max M, myself and Lennart Regebro (who created a simple setup.py), I also have a chance of not being its janitor forever. :) One of my hopes is that the schoolbell people will start using this instead of their home-grown import/export system.

Max M graciously gave his permission to start working on a web presence on codespeak.net. The result of this is that for the release today, I've also (thanks to the great guys at codespeak.net) set up little a website that I linked to earlier. We also got a mailing list and checkins mailing list now. If you're interested in this project, I hope you'll subscribe.


Comments:

Posted by Jeffrey Harris at Fri Apr 29 2005 04:07

Hi!

The iCalendar web page looks good!

I've been working on a Python iCalendar (and eventually, vCalendar) parser for OSAF. I call it, unoriginally, vobject. It's certainly not done, I wonder how our feature sets compare?

I haven't written anything down about licensing yet, but it'll be released under an Apache license, I REALLY need to do that...

Best wishes,
Jeffrey

Posted by Martijn Faassen at Fri Apr 29 2005 10:39

I consider iCalendar pretty complete -- it can parse iCalendar files and generate them, and it can also work
with fragments, such as vEvent, and do the same.

What kind of features do you require?

I'm not sure what you mean about licensing and writing it down -- I tried your homepage but it gives a traceback.

iCalendar is licensed LGPL. I got the impression from Max M that he's very open to licensing it more flexibly (if this isn't enough) when the need arises too.

It may be useful to take this to the icalendar-dev mailing list if you want to discuss this further, by the way.

Posted by Jeffrey Harris at Mon May 02 2005 23:51

Oops, the traceback is from your weblog because I didn't put an http:// in front of my homepage :)

Currently, vobject has good support for *parsing* rrules (through dateutil.rrule) and vtimezones (again from dateutil). To get vobject to the place I need it to be at, I need to serialize Python tzinfo classes as vtimezones, and I need to serialize dateutil.rrule instances. How does your iCalendar deal with vtimezones and rrules?

Generally, it would be attractive to stop reinventing the Python iCalendar wheel. I'd like vobject to be licensed permissively (a BSDish license).

Posted by Jarek Zgoda at Sat Jun 04 2005 22:04

Thanks, I tried this package in 0.9.x version (Max's original) and also found it very nice. Glad to see some order coming to this world. ;)

Posted by Gregory Gehrich at Thu Jun 23 2005 21:45

Is there any page I can look at that has iCalendar available to the public (or any other Five built app)?


[Main]

Unless otherwise noted, all content licensed by Martijn Faassen
under a Creative Commons License.