Shared calendaring, so it begins

Why is it that the tech world has never really grasped the concept of communal calendaring? Whenever you ask someone about shared calendars, they immediately mention the only one that seems to be in use, that being Microsoft Exchange. The evils of this system are well known, and need not be ranted about here. Beside the fact that the environment I’d like to deploy in is primarily NOT Microsoft.
I’ll be posting more about this as I move through it, but here’s my initial foray.

The standard for calendar formats has boiled down to RFC2445 the IETF standards document for iCalendar format files. It’s a simple fileformat that everyone can read.
The trick is that most packages can easily generate calendars from their internal format, but I have yet to find a service that allows multiple people to edit the same calendar.
The solutions seems to be a ‘post and publish’ methodology, where iCal files are published into a common repository, and then a browser or client package downloads the calendar files and reviews them. This somewhat goes against the mindset of “shared database information” where one change is reflected everywhere, but after working with it for a bit, it works quite well.
What we’ve done here is set up a common drop directory on our fileserver to which client applications can ‘push’ their calendar files. These files (simply ‘foo.ics’) get dropped into the common directory, and then we use PHP iCalendar to browse them. the PHP app simply reviews all the calendars in that directory and presents a combined view. You can select which calendars to review and filter on.
If someone needs to change their calendar, they simply change it in their client and re-publish the calendar.
So far this is okay. We’re exploring other options to see what works and what doesn’t. Here’s a quick summary of what we’ve found:
iCal enabled clients

  • Evolution – I’m using this as my desktop groupware client. The internal calendar app is quite good, and uses iCal (calendar.ics) files as the default format. THere is no inherent ‘sync’ command to publish the files to the server, so I simply scp them:
    scp ~/evolution/local/Calendar/calendar.ics serverhost:/usr/local/apache/htdocs/calendar/calendars/dbs.ics

    I’ll probably make a quicky cron job that’ll do this automatically every couple hours.

  • eventSherpa – I absolutely love the name of this client. It’s a windows application that we’re toying around with, but it appears the only way it can publish calendar files is via their own eventSherpa server. We’re still exploring this one.

iCal server applications

  • phpiCalendar – A set of PHP scripts that presents a combined view of multiple iCal calendars. This is a very slick application, and while it does not allow actual editing, it’s a worthy web-based viewer.

I’m open to suggestions on other clients or tools. I’ll post a more exhaustive summary once I’ve had some time to explore this more.


A wandering geek. Toys, shiny things, pursuits and distractions.

View all posts by

4 thoughts on “Shared calendaring, so it begins

  1. The inability of ical calendars to do multi-person invites (‘A and B are busy at /time/, so C can’t invite B to do something at that same /time/.’ or the corporate idea of ‘room X is in use for a meeting at /time/ so noone else can use room X’) really gets on my nerves.
    (Ok, let’s be clearer – the lack of ability to do that without getting each person to edit their own calendar…)
    We have 4 of us using our calendar, with various levels of accuracy and timeliness in our updating, so if we couldn’t do something like ‘I ask K. out on a date in person and then I put that date on both of our calendars’, the whole thing’d be totally useless.
    I don’t /love/ the calendar we’re using, but it’s not the worst I’ve seen, by a long shot. I’m told its date math is amazingly ugly. 🙂
    It’s – seems to be mostly a one person project, in pure perl.
    If you ever find an ical solution that does proper invites, let me know. (It’s especially frustrating as everyone has a mac and thus apple’s iCalendar, which uses RFC 2445 icalendar format (as near as I know) is available to us all, and we could set up a DAV server to deal with the files…)

  2. What you’re describing is possible, the trick is how does the invite get from calendar A to calendar B? Doing group scheduling where you try to generate a meeting based on a series of avialable calendars is only possible after the calendars have been pooled.
    Exchange actually does this sort of thing totally in email, even though it doesn’t -look- like email half the time.
    I do know that KDE‘s internal scheduler app Korganizer can do invites / scheduling, and I believe it does it by exchanging some form of iCal information. No other detail right now.
    JB, in your case, why aren’t you using localized calendars with a publish target? Then anyone could look at the public calendars and say “Aha, We’re all free Friday. I’ll schedule then.” – you put in your meeting, then publish. Next person to look at it sees that things are scheduled.

  3. (Why I don’t like this blog SW (at least as you have it configured)…You posted what was a reply to me….but since there’s no ‘reply to’ button, I never received notification, despite that it FORCES me to give it an email address when I leave a comment…the only reason I saw this comment is I came back here after seeing your 2nd post. Anyway…)
    I know exchange does it. Webcal (the thing named webcal that I’m using as opposed to the webcals I’m not using.) does it.
    Why does A need to be able to book B? Because B is lame at managing their own calendar and if A doesn’t update BOTH calendars when a plan is made between A and B, things go out of sync from reality pretty quickly. As it stands right now, if A has “A/B Date” on their calendar, and it’s NOT on B’s, there’s not a guarantee that B knows about it.
    It’s a must have for us. As it is, we’re vague enough about the calendaring that we really need as much help as we can get. 🙂

  4. Hello,
    If you happen to read this, do you have a cron job, or apple script written that will allow PHPiCal to update my files from my Powerbook in iCal to upload to my webserver that is running PHPiCal on a scheduled basis? Or at least help me out a little on this, please e-mail me back if you have time.
    Brian J. King
    Bowling Green State University
    Visual Communications Technology
    BGSU Undergraduate Research
    Digital Magicians ’03, ’04
    Vital-Video: Graphic Artist
    American Marketing Association-BGSU-V.P Visual Communications
    Boy Scouts of America-Eagle Scout
    ““I love living. I have problems with my life, but living is the best
    thing they’ve come up with so far
    -Neil Simon

Comments are closed.