I really wish I could find a really good calendaring tool. I’ve seen many of the features I want scattered in various tools, though some are nowhere to be found. I thought it would be good to itemize some of them. I’m mostly interested in *nix — I know that on Windows, MS Outlook is the most common choice, with Exchange for sharing.
Sharing (of course)
Shared calendars are becoming more and more common, but most of the ones I have tried have been hard to use. My personal calendar should really be a combination of a variety of calendars:
- A calendar just for me
- A calendar for private groups I belong to
- Public calendars
Some will be read/write, some will be read only. Some will export to others with more limited information (such as the classic free/busy exported calendar.) However, the combined calendar, subject to various factors, is the one that would be synced to a less-smart device, such as a phone or PDA.
Obviously you want a nice permission system including one for temporary access. For example, if I’m meeting a person next week I might give them access to my calendar for just that week. Or I might give them a larger range, but only for a limited time. I might let them add an event, but only on June 23rd. I don’t want to have to add and revoke permissions.
The sharing engine should ideally be easy to set up, decently secure and ideally open source.
Sharing also happens outside a sharing engine. It should be easy to send ical entries to other parties, ideally with drag and drop into E-mails and IMs, and to likewise import them.
Shared to-do lists, too
To-do lists should have just about the same functions calendar events have. I should be able to add to-do items to shared group calendars, or to other people’s private calendars (such as employees) if I have permission.
Level of binding
Events that come from external calendars should be flagged (even if I can’t write the external calendar) with information about how much they apply to me. That’s because even though I import a calendar for a group I’m in, I may not plan to attend everything on it. Indeed, some imported calendars, notably public ones, become more “suggestions of possible events.”
Some calendars implement this flagging by having you import an external event into your “real” calendar. Unfortunately in many cases this makes the event show up twice, something the tools could obviously be smarter about. I don’t care how it’s done as long as its easy and transparent, but I think it’s important to do a live import rather than a copy so that if the original calendar changes or cancels the event, I see those changes.
Calendars will have a default binding. For example chances are you will attend everything in your personal calendar, most things in a family or workgroup calendar and few things in a lecture series calendar. You should be able to manually set the level but the default should normally work well.
Here are some levels I think one might set on tagging an external event (or even a personal one) into your day.
- I will not attend this event (usually means it will not be shown.)
- I will not attend but need to keep track of this event.
- The event is canceled.
- I have not made any decision (default behaviour.)
- There is some chance I will attend (perhaps a percentage can be applied.)
- I want to attend, but something may change my mind.
- I plan to attend. (A typical default.)
- I am central to this event (speaking, leading meeting etc.)
When viewing the calendar a slider should allow a quick change from seeing everything (ie. browsing for potential events) to seeing only things you are very likely to attend. Likewise such a slider would control what gets synced out to a PDA or cell phone.
If declared and open, this status can also do RSVP management. I could put a party into a public calendar that friends import, and they might then mark that they plan to attend the event with a certain probability, and in the style of eVite, I might be able to see that.
A roaming interface, and web interface
I should be able to see and enter events from the web, or from portable devices. Since the portable devices will not have the same functionality as the full calendar, the system must be smart about how to import from them.
Another useful interface is an E-mail interface. By sending an E-mail to a magic address, I should be able to put something on my calendar. I could E-mail some unstructured text (with a pass phrase) to the magic address from anywhere that a person can E-mail, and get something on the calendar, possibly getting a reply about how it went. Likewise an IM-bot might make sense, so I can send an IM to my calendar.
I must also be able to work with my calendar on my laptop even when it is offline. A web interface is not enough. If need be, an existing calendar program can be used with smart import/export. (For example, I might add special keywords in unstructured areas which are interpreted by the system.) Of course, a native program that does it all is still to be hoped for.
The calendar should be able to figure a bit about where I am (indeed it should know that better than anybody) and send me event alerts appropriately, including with screen pop-ups. E-mails at the start of the day with the day’s and tomorrow’s events, IMs if I am online elsewhere, or cell phone calls and text messages.
Free form input
GUI input is nice, but free form input is a must. Some calendars are doing this already. I should be able to say “with bob g. 3-4pm Friday, room 23” and have it figure out what that means. In particular, it should know my address book, and figure out who “bob g.” is, possibly even adding this to a calendar of his I have access to, or offering to do that. If I know more than one “bob g” it might ask me to pick one, but I should be able to tell it that “fred” is always a particular Fred I know well even if I know multiple Freds.
The presence of others might also allow permissions. For example, possibly all the people invited might have permission to change the description of the event by default, or remove themselves from it. A single invited person might be able to cancel the event. (Such removals or cancels should leave a ghost so people can see this happened.) It may also make sense to allow the others to make proposed changes which the event owner can approve, such as moving the time, or adding more people.
After parsing the free-form input, it can display it structured so I am sure it got it right, but it should allow re-editing of the either the GUI input or the free-form, and even correct the free form with changes I make in the GUI version and vice versa. Some less frequent tasks might only be available through GUI.
Be smart about events
Earlier I detailed the calendar understanding a flight. It should do lots of things like this. I should also be able to enter manual changes of state, such as going on vacation.
Handle a conference
I’ve wanted for some time a calendar that can also easily handle a conference. A conference will have a public calendar with lots of concurrent events, often 10 or 12 tracks of them. I would like to be able to view that calendar, and then tag particular events as ones I will attend or may attend. It must be possible to tag more than one event at the same time and have it be handled. Then I should be able to export to my PDA the chosen subset of events and meetings at the conference.
I’ve always wanted a good conference program manager for PDAs, one that might be given to me by conference organizers which could do this even if I didn’t have a calendar able to handle it. I don’t want to carry a giant conference book, so putting the info in my PDA is the right answer. I would go over the program, note the 2 or 3 things of possible interest in any given timeslot and then have something easy to browse to figure out what I am going to do.
I’ve noted I want to sync my calendar to my PDA, Cell Phone or other such devices, or indeed to other calendar systems. It must be understood those systems will not have all of these fabulous features, so this must be managed. Events might not be exported or might be modified on export. Copied events from emails, other calendars etc. must get good defaults.
So who wins?
What are your favourite tools? I have not tried every system, do any of them come close? No, I doubt any program will do all of this (in particular the RSVP and conference features are more in the bell and whistle category) but I haven’t seen anything to satisfy me yet.