GanttProject 2.0.6 is a maintenance release that integrates better with Windows and MacOSX and fixes a couple of severe bugs and a few UI quirks.

New features

Windows installer can associate Microsoft Project files with GanttProject. It makes easier the life of those who don't have MS Project on their machines but want to view .mpp and .mpx files using GanttProject. The option in installer is turned off by default. If turned on during installation, it will associate .mpp and .mpx files with GanttProject so that GP starts when you double click such file and imports it

MacOSX application now handles "About" and "Quit" system menu commands correctly and also creates file associations with .gan files

Thursday, December 13, 2007

Unfortunately we have lost ganttproject.org domain name. Because of our sluggishness it was squatted by unknown friends and now is available for sale and is serving ads. In fact, it is just search spam now. I am not going to take any actions to get it back. ganttproject.biz is our main site from now on, and .org suffix will be removed whenever it occurs next to GanttProject

Wednesday, October 31, 2007

Andrew Churches from New Zealand has composed a nice video showing a simple scenario of using GanttProject. It covers the very basic things and might be helpful for those who don't know how to start. Thank you, Andrew!

Friday, August 17, 2007

OpenProj is a project scheduling/management tool similar to GanttProject. It is also open-source and is written in Java. There is a gantt chart, there is a network chart, there are a few resource-related charts. It is developed by Projity, which is probably better known by their online service Project-on-Demand.

My personal feeling after playing with OpenProj a little is that the application is quite raw and unstable so far. There are obvious annoying bugs and quite a lot of usability problems. Goog luck for them, though! If they manage to overcome the problems, the community will be given one more nice project management application.

Sunday, August 12, 2007

CSV export now understands custom fields and keeps correct order of tasks. Memory consumption of Print Preview has been decreased approximately twice. It is still possible that big projects will not fit into available memory if printed with big zoom level, but in this case an error message will be shown.

Tuesday, July 31, 2007

A few more evenings of coding resulted in ability to export custom columns to PDF. There is a new theme Samara which is aware of custom columns. User interface is very simple: columns that you see in the task table are columns that get exported to PDF, plus resources and task notes. Samara theme tries to keep proportions of column widths, places notes under task names, using smaller font and indent and uses task colors in a narrow column on the left, rather than in the whole task row.

Samara is a big and old Russian city on Volga river. I have never been there (except for one sporadic transit through its railway station 13 years ago) but GanttProject feels comfortable there (as well as in many other cities worldwide :)

Monday, July 23, 2007

Having spent a few evenings on refactoring of kilobytes of code, I finally added custom fields to the importing of .gan files. So, if you import one project into another, custom fields of your tasks will not be lost.

Two lessons which I personally have been familiar with for quite a long time, but other developers may not know:

Singleton pattern is very dangerous and one should avoid using it unless he is absolutely sure that two instances of that class is a non-sense. And even in this case avoid accessing singleton and prefer passing that singleton object as a parameters to the methods where it is required.

In our case the instance of CustomColumnsStorage class was accessed as singleton from just everywhere. So when I decided to create another instance which would load custom fields from a file during import process, I had to patch all those places.

Classes which represent user interface must not be used as a model for code that reads data from files (it is just a rephrased Model-View-Controller).

In our case code that handles tags storing custom fields in .gan files directly used instances of GanttTreeTable (a class that represents the table view). So if I want to keep in memory two .gan files (one is a project we work with and another is a project we import), I either have to create two UI tables or to refactor the smelling code and give that tag handler the interface it needs. I chose the second way.

Sunday, July 8, 2007

A number of people complained about performance problems in GanttProject 2.0.4 so I have spent last two evenings on profiling.

In one case the problem was in the project file: I found there one task that started in year 0007 (yep, 2000 years ago) and was half a million days long. It must've been an effect of this UI problem related to entering years using short notation ("7" instead of "2007").

In the second case the problem was in a code doing a lot of unnecessary stuff when loading a project file. Changes were quite easy and small and in the end I successfully loaded a project consisting of 1500 tasks and was able to work with that project with no significant pain.

A few days ago I realized that current implementation of gantt chart renderer had become overcomplicated. So I decided to do some refactoring. Fortunately, refactoring is not going to turn into an absolute disaster. And not only the code becomes more clear and understandable, but also a long awaited feature of showing quarters and years in a timeline gets closer to reality.