Automatic Schedules?

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?

17 thoughts on “Automatic Schedules?

  1. I have a friend who worked on something similar to this. I think he would be willing to share algorithms and perhaps even code (although it will be PHP). Email me if you want to know more.

    • Hm true, I did not even think about that ^^
      For regular work schedules I agree that it is a good option. The thing is, with conference schedules you really want other people to influence the schedule and having the complexity overhead of taskjuggler does not help there, it also raises the question where to store the taskjuggler file(s):/

  2. I had several courses dealing with this type of stuff in school, it is called Constraint Satisfaction Programming. I might have some free time in a couple of weeks to work on this. What type of program would you like? Would you like a stand-alone application that could export the generated schedule or a web application?

    • Now this would be uberaweomse!!! I was thinking web app for starters, I suppose one can always add an API to that and attach a desktop app to it, which of course would be even better (with notifications and all ;)), but a web app would be awesome since you have it available on all devices immediately.

  3. http://www.pentabarf.org/Main_Page

    It’s not just timetable, but a complete conference-planning-tool/-framework written in Ruby on Rails and used by many conferences such as Re:Publica, FOSDEM or – most known for – the Chaos Communication Congress. An option for academy, too?

    BTW: You can set up a server/service once and then plan as many conferences as you want with it.

  4. There are thousands of software tools for this kind of problems. The real issue is that you need to formulate your problem to achieve satisfactory results and for that you need someone who knows scheduling problems.

    Someone already mentioned constraint programming, that is one approach. I used genetic algorithms, but of this type of simple schedules, you might use something simpler hill climbing algorithm. If your problem contains only small amount of restrictions (there is a schedule that satisfies everything), you will be probably best of with the constraint programming model.

    You can usually get the implementation in GPL/LGPL/BSD/Public domain license in the form of a generic library, that can be relatively easily integrated into anything.

  5. With regard to Wiki solutions, I want to extend EventAggregator – a calendaring system for MoinMoin [*] – to handle same-day schedules in a prettier way. That doesn’t involve messing around with table markup at all: the aggregator puts all the events into the calendar view itself; the only markup you mess with is the simple stuff which tells the aggregator when something is, and I’ve even considered having a form to help people edit that (as well the form already present that helps people create events).

    From that point onwards, managing conflicts could be done using fairly basic techniques. Calendaring systems often drift towards providing free/busy information, and this is the classic tool for scheduling exposed by various groupware clients. I’d like to support this too, ultimately.

    Frequently, people reach for technological solutions when a bit of human creativity can get the job done. Exposing the schedule in a collaborative medium is a good way of scheduling things where people don’t end up missing out. The alternative is heuristics and guesswork that ultimately leads to a “correct” schedule where people have to choose between the two talks in an entire conference that they most wanted to see, all because they were second-guessed by some scoring system or other.

    [*] http://moinmo.in/MacroMarket/EventAggregator

  6. Maybe also ask in the Edubuntu community – I know one of the highlight when it launched was school classes scheduling. It’s a long shot but sometimes you can be surprised of the answers you may get.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s