Wednesday, November 7, 2012

GanttProject 2.6: RC IV and new scheduling engine

A new release candidate build of GanttProject 2.6 is available for downloading, and there are some important changes which you should be aware of.

TL;DR: there is new scheduling engine which may reschedule tasks in your existing projects. If it does, you'll see a warning when you open a project.

During GanttProject 2.0/2.5 lifetime we have received quite a few bug reports about our task scheduling engine. Sometimes parent tasks do not adjust their dates when their nested tasks change. Sometimes even more funny and weird things happen. I tried to fix such issues with small scope changes, but it  finally turned out that "small" fixes were wrong way: they complicated scheduling code which was already quite difficult to understand and maintain. So I took a tough decision to replace scheduling engine with a new one, and this new engine was published in RC III.

With two or three bugs found by RC III users and fixed, it now works fine and looks more robust than old one. However, there is a side-effect: if your project is complex enough, there may be scheduling problems which old engine would ignore for a while. For instance, parent task dates could be wrong, and because of that a successor task with Finish-Start dependency could be scheduled earlier than it ought to be, and so on. New scheduler will detect and fix such problems, and as a result, some tasks may change their dates. The schedule overall will become more "healthy" but it may become an unwanted surprise for you. So, to let you know about such changes, GanttProject will show you a warning after opening a project file if it reschedules any tasks. You'll be able to find the details in the log.

Please notice that old scheduler could do the same changes, but at pretty random moments, so I hope this change is positive: it is better to know about all the problems at once and get a list of them, rather than discover them occasionally one by one.