At the KDE MM + Edu Sprint 2010 in Randa we had a bit of a schedule problem – we did not have one until first day of sprint ^^
This made me think a bit about schedules and what makes a good schedule and whether there is software to do that.
First let me explain what I think a good schedule is. Most importantly it schedules things in a given time frame, pretty obvious, huh? 😛 This is not as trivial as it might sound. Lets consider that you have a conference with a vast amount of high-profile discussion sessions and a lot of people who are esssential to a lot of those sessions. Ultimately the schedule would make it possible for everyone to attend the sessions she needs to attend. Additionally each attendee will have some sessions she might want to attend, so the schedule should also try to make this happen as much as possible. You also have more difficult sessions that require 100% attention, so you want them scheduled at a time where everyone can give their best (i.e. especially not towards eating times, and not in the late afternoon). Then you might also have sessions that are fix points in your timetable and cannot be moved and others that depend on unkown presence information of attendees and can happen any time on a specific date.
I very much think that those are just a very basic requirements towards a good schedule, additionally you need to differ in amount of importance, like if you have a discussion session about a software design the author of the design must be present while any senior engineer who might have input on the design is good to have but not absolutely essential to the happening of the session. Hence the schedule cannot schedule the session at a time the author is not available, but can do so if (a not to large amount of) the software engineers are not available. Everyone else does not need to be considered in the creation of the schedule probably. Although you also could have some more categories of importance.
Of course using all those things you want to be able to update schedules on-the-fly. Say your keynote speaker for tomorrow is not available and you can not get another keynote speaker, so you might want to (conservatively) reschedule.
So I was looking around for free software that at least partially does implement the above. I DID NOT FIND ANY?! Either I was blind or there is really no free advanced scheduling software, which is a bit of a drag really.
You want everyone to be able to influence the schedule, and you want everyone to be able to view the schedule. So in the end you might end up using a wiki for scheduling since you get user management and sort-of status tracking and sort-of influencability. The horriblyness that comes from abusing software that was not made for this usecase is even for free.
To illustrate this a bit, let me tell you some of the observations I made with the rather simple schedule we had at the sprint in Randa, with only 2 tracks/rooms (one for KDE Edu and one for KDE Multimedia). First of all you have the general problem of editing conflicts that happen every once in a while, then you have a somewhat crappy way of tracking changes to the schedule and changing the structure of the schedule (say add a new track) is a horrible PITA because you have to consider like 5 things to change in order to not break the schedule structure. Also, if you want everything to look good you probably will use a table, which in most wikis is a science of its own and can be broken way too easily. With large schedule tables you will have the problem of not finding anything anymore, since most wikis do not allow for editing one cell or row you will have to find the appropriate parts in the monster that is called table markup. Now this are just some of the problems you have with maintaining a schedule in a wiki. Most of those are however caused by the fact that you are using a software that is not meant for quick occuring changes to large amount of data, which is something that might very well happen for a schedule.
This is all the more true if you consider what I wrote above about a good schedule. Since you have no backing technology that takes care of ensuring that a person is not “overallocated” the editors themself must do this. This leads to situations where editor A changes the schedule in some intrusive way, and editor B notices that attendee X is now supposed to hold two sessions at once, hence doing a new edit, which might again cause a similar situtation… this repeats until a sensible scheduling state is reached again. Long story short: you do not want to use a wiki for scheduling.
Does anyone know of any sensible scheduling software? Does anyone wanna work on one? Do we have to keep doing schedules in the wiki?