GanttProject

GanttProject is a free project management tool allowing to edit gantt models but also view pert models and resource allocation models. As this tools is written in java it runs on all platforms.

Features

GanttProject allows to create milestones and hierarchies of tasks related with dependency constraints. Different fields can be attached to milestones and tasks. This includes for instance “priority”, “cost”, “start date”, “duration”, etc. Custom fields can also be added.

../_images/gantt.png

gantt diagram editor - the house building example

GanttProject is mostly an editor for gantt models (see above). It also contains a viewer for pert models (see below). These read-only views are generated automatically.

../_images/pert.jpg

pert diagram viewer - the house building example

GanttProject also supports resource allocation models. Resources can be attached to tasks.The tool generates a resource allocation model showing the allocation of each resource along the project (see below).

../_images/resource.png

resource allocation viewer - house building example

Interoperability

Microsoft Project and CSV files can be imported and exported from the Graphical User Interface (GUI). GanttProject can also generate PDF, PNG, JPEG.

The tool use an .xml format reasonably simple so interoperability with other tools is also possible with some development.

The tool also has (a quite limited) Command Line Interface (CLI) allowing to export models in different formats.

Installation

  • Download the archive web
  • Copy the archive into %SCRIBESTOOLS% and extract it here.
  • Rename the directory to obtain %SCRIBESTOOLS%\GanttProject.
  • Copy the gandttproject.cmd into the directory.
  • Add %SCRIBESTOOLS%\GanttProject to the PATH variable

Launching GanttProject

GanttProject is mostly used trough its Graphical User Interface (GUI), but it also has a Command Line Interface (CLI) allowing some limited kind of automation. In a (new) shell you can type the following command to see the help about the CLI:

ganttproject.bat -h

The normal way to use the program is the GUI tough. You can launch it just clicking on the executable or the shortcut that the installer might have created.

When launched, one way to see what GanttProject is all about is to load house building example. In order to do that use the menu `` Projects >> Open `` and select the HouseBuildingSample.gan file in the installation directory of the tools.

Documentation

As far as we know there is no document describing GanttProject. The tool is nevertheless rather easy to use for someone acquainted with project management basics. There is a extended demonstration in the form of a 15’ video (youtube). The house building example is also a valuable resource for learning how to use GanttProject.

You may also want to have a look at the following unofficial documents created by people outside of the project:

  • “Apprendre Gantt project Ver 2.6” (local, web) by Lycée du Dauphiné DD & JPG. This tutorial, in french, is rather good.
  • “GandttProject Handbook 0.52” (local, web) by alexandre thomas. This handbook is rather obsolete and do not contains too much information.

Example

GanttProject is delivered with an example of “house building” project. This project is store in the HouseBuildingSample.gan (local) file in the root of the installation directory.

Graphical User Interface

This section describes the main panels of the GanttProject software.

Project

../_images/Project_NameAndDescription.png

Project_NameAndDescription

../_images/Project_Calendar.png

Project_Calendar

../_images/Project_ResourceRoles.png

Project_ResourceRoles

Tasks

../_images/Tasks_Hierarchy.png

Tasks_Hierarchy

../_images/Tasks_General.png

Tasks_General

../_images/Tasks_Predecessors.png

Tasks_Predecessors

../_images/Tasks_Resources.png

Tasks_Resources

../_images/Tasks_CustomColumns.png

Tasks_CustomColumns

../_images/Tasks_CustomFieldsManager.png

Tasks_CustomFieldsManager

../_images/Tasks_GanttGraph.png

Tasks_GanttGraph

../_images/Tasks_PertGraph.png

Tasks_PertGraph

Resources

../_images/Resources_General.png

Resources_General

../_images/Resources_DaysOff.png

Resources_DaysOff

../_images/Resources_CustomColumns.png

Resources_CustomColumns

../_images/Resources_CustomFieldsManager.png

Resources_CustomFieldsManager

../_images/Resources_TaskList.png

Resources_TaskList

../_images/Resources_TaskAllocation.png

Resources_TaskAllocation

Tools Interface

Gantt projects are saved in .gan files which are indeed xml files. This format can serve as an interoperability mean with other tools and constitutes therefore a potential interface for tools.

The HouseBuildingSample.gan file (local) corresponds to the House Building example. Developing a set of much simpler examples would be useful to serve as test cases and/or specification.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?xml version="1.0" encoding="UTF-8"?>
<project name="" company="" webLink="" view-date="2012-12-16" view-index="0" gantt-divider-location="369" resource-divider-location="322" version="2.0" locale="en">
    <description/>
    <view zooming-state="default:6" id="gantt-chart">
        <field id="tpd3" name="Name" width="33" order="0"/>
        <field id="tpd4" name="Begin date" width="33" order="1"/>
        <field id="tpd5" name="End date" width="33" order="2"/>
        <option id="taskLabelUp" value=""/>
        <option id="taskLabelDown" value=""/>
        <option id="taskLabelLeft" value="name"/>
        <option id="taskLabelRight" value=""/>
    </view>
    <view id="resource-table">
        <field id="0" name="Name" width="51" order="0"/>
        <field id="1" name="Default role" width="48" order="1"/>
    </view>
    <!-- -->
    <calendars>
        <day-types>
            <day-type id="0"/>
            <day-type id="1"/>
            <calendar id="1" name="default">
                <default-week sun="1" mon="0" tue="0" wed="0" thu="0" fri="0" sat="1"/>
                <only-show-weekends value="false"/>
                <overriden-day-types/>
                <days/>
            </calendar>
        </day-types>
        <date year="2006" month="2" date="14"/>
    </calendars>
    <tasks empty-milestones="true">
        <taskproperties>
            <taskproperty id="tpd0" name="type" type="default" valuetype="icon"/>
            <taskproperty id="tpd1" name="priority" type="default" valuetype="icon"/>
            <taskproperty id="tpd2" name="info" type="default" valuetype="icon"/>
            <taskproperty id="tpd3" name="name" type="default" valuetype="text"/>
            <taskproperty id="tpd4" name="begindate" type="default" valuetype="date"/>
            <taskproperty id="tpd5" name="enddate" type="default" valuetype="date"/>
            <taskproperty id="tpd6" name="duration" type="default" valuetype="int"/>
            <taskproperty id="tpd7" name="completion" type="default" valuetype="int"/>
            <taskproperty id="tpd8" name="coordinator" type="default" valuetype="text"/>
            <taskproperty id="tpd9" name="predecessorsr" type="default" valuetype="text"/>
        </taskproperties>
        <task id="0" name="Architectural design" color="#99ccff" meeting="false" start="2012-12-24" duration="25" complete="81" expand="true">
            <task id="9" name="Create draft of architecture" color="#99ccff" meeting="false" start="2012-12-24" duration="10" complete="100" expand="true">
                <depend id="10" type="2" difference="0" hardness="Strong"/>
                <depend id="12" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="10" name="Prepare construction documents" color="#99ccff" meeting="false" start="2013-01-07" duration="15" complete="75" expand="true">
                <depend id="17" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="17" name="Agreement on architectural plan " color="#000000" meeting="true" start="2013-01-28" duration="0" complete="0" expand="true">
                <depend id="1" type="2" difference="0" hardness="Strong"/>
            </task>
        </task>
        <task id="11" name="Interior design" color="#99ccff" meeting="false" start="2013-01-07" duration="10" complete="33" expand="true">
            <depend id="6" type="2" difference="0" hardness="Strong"/>
            <task id="12" name="Pre-design" color="#99ccff" meeting="false" start="2013-01-07" duration="5" complete="100" expand="true">
                <depend id="13" type="2" difference="0" hardness="Strong"/>
                <depend id="14" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="13" name="Furniture selection" color="#99ccff" meeting="false" start="2013-01-14" duration="5" complete="0" expand="true"/>
            <task id="14" name="Equipment planning" color="#99ccff" meeting="false" start="2013-01-14" duration="5" complete="0" expand="true">
                <notes><![CDATA[Embedded devices, kitchen, washing machine, dryer etc]]></notes>
            </task>
        </task>
        <task id="7" name="Construction phase" color="#99ccff" meeting="false" start="2013-01-28" duration="75" complete="0" expand="true">
            <depend id="20" type="2" difference="0" hardness="Strong"/>
            <task id="1" name="Foundation building" color="#99ccff" meeting="false" start="2013-01-28" duration="15" complete="0" expand="false">
                <depend id="2" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="2" name="Ground Floor building" color="#99ccff" meeting="false" start="2013-02-18" duration="20" complete="0" expand="false">
                <depend id="4" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="4" name="First Floor building" color="#99ccff" meeting="false" start="2013-03-18" duration="20" complete="0" expand="false">
                <depend id="5" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="5" name="Roof" color="#99ccff" meeting="false" start="2013-04-15" duration="10" complete="0" expand="false">
                <depend id="18" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="16" name="Connect to communications" color="#99ccff" meeting="false" start="2013-04-29" duration="10" complete="0" expand="true"/>
            <task id="18" name="Construction completed " color="#000000" meeting="true" start="2013-04-29" duration="0" complete="0" expand="true">
                <depend id="6" type="2" difference="0" hardness="Strong"/>
                <depend id="16" type="2" difference="0" hardness="Strong"/>
            </task>
        </task>
        <task id="8" name="Decoration phase" color="#99ccff" meeting="false" start="2013-04-29" duration="10" complete="0" expand="true">
            <task id="6" name="Walls" color="#99ccff" meeting="false" start="2013-04-29" duration="5" complete="0" expand="false">
                <depend id="15" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="15" name="Furniture" color="#99ccff" meeting="false" start="2013-05-06" duration="3" complete="0" expand="true">
                <depend id="20" type="2" difference="0" hardness="Strong"/>
            </task>
            <task id="20" name="Bring your family here" color="#000000" meeting="true" start="2013-05-13" duration="0" complete="0" expand="true"/>
        </task>
        <task id="49" name="Survive the End of the World" color="#ff3333" meeting="true" start="2012-12-21" duration="0" complete="0" expand="true">
            <depend id="0" type="2" difference="0" hardness="Rubber"/>
        </task>
    </tasks>
    <resources>
        <resource id="1" name="Jack House" function="Default:1" contacts="jack.house@myselfllc.net" phone="0044 077345456"/>
        <resource id="0" name="John Black" function="4" contacts="john.black@myselfllc.net" phone="+44 0794353567"/>
        <resource id="2" name="Michelangelo" function="0" contacts="mickelangelo@heaven.net" phone="078 9059056"/>
        <resource id="3" name="Tom White" function="1" contacts="tom.white@myselfllc.net" phone="07978978978"/>
        <resource id="4" name="Peter Green" function="1" contacts="peter.green@myselfllc.net" phone="0797897856"/>
        <resource id="5" name="George Brown" function="1" contacts="george.brown@myselfllc.net" phone="07967766447"/>
        <resource id="6" name="John Silver" function="2" contacts="john.silver@myselfllc.net" phone="07778967889"/>
    </resources>
    <allocations>
        <allocation task-id="9" resource-id="1" function="Default:1" responsible="false" load="50.0"/>
        <allocation task-id="12" resource-id="1" function="Default:1" responsible="true" load="100.0"/>
        <allocation task-id="13" resource-id="1" function="Default:1" responsible="true" load="100.0"/>
        <allocation task-id="14" resource-id="1" function="Default:1" responsible="true" load="50.0"/>
        <allocation task-id="15" resource-id="1" function="Default:1" responsible="true" load="100.0"/>
        <allocation task-id="1" resource-id="0" function="4" responsible="false" load="100.0"/>
        <allocation task-id="16" resource-id="0" function="4" responsible="true" load="100.0"/>
        <allocation task-id="9" resource-id="2" function="0" responsible="true" load="100.0"/>
        <allocation task-id="10" resource-id="2" function="0" responsible="true" load="100.0"/>
        <allocation task-id="12" resource-id="2" function="0" responsible="false" load="50.0"/>
        <allocation task-id="14" resource-id="2" function="0" responsible="false" load="50.0"/>
        <allocation task-id="1" resource-id="3" function="1" responsible="false" load="100.0"/>
        <allocation task-id="2" resource-id="3" function="1" responsible="false" load="100.0"/>
        <allocation task-id="4" resource-id="3" function="1" responsible="false" load="100.0"/>
        <allocation task-id="5" resource-id="3" function="5" responsible="false" load="100.0"/>
        <allocation task-id="6" resource-id="3" function="1" responsible="false" load="100.0"/>
        <allocation task-id="15" resource-id="3" function="1" responsible="false" load="100.0"/>
        <allocation task-id="2" resource-id="4" function="1" responsible="false" load="100.0"/>
        <allocation task-id="4" resource-id="4" function="1" responsible="false" load="100.0"/>
        <allocation task-id="16" resource-id="4" function="1" responsible="false" load="100.0"/>
        <allocation task-id="6" resource-id="4" function="1" responsible="false" load="100.0"/>
        <allocation task-id="1" resource-id="5" function="1" responsible="false" load="100.0"/>
        <allocation task-id="2" resource-id="5" function="1" responsible="false" load="100.0"/>
        <allocation task-id="4" resource-id="5" function="1" responsible="false" load="100.0"/>
        <allocation task-id="6" resource-id="5" function="1" responsible="false" load="100.0"/>
        <allocation task-id="1" resource-id="6" function="2" responsible="true" load="100.0"/>
        <allocation task-id="2" resource-id="6" function="2" responsible="true" load="100.0"/>
        <allocation task-id="4" resource-id="6" function="2" responsible="true" load="100.0"/>
        <allocation task-id="5" resource-id="6" function="2" responsible="true" load="100.0"/>
        <allocation task-id="6" resource-id="6" function="2" responsible="true" load="100.0"/>
    </allocations>
    <vacations>
        <vacation start="2009-02-02" end="2009-02-09" resourceid="1"/>
    </vacations>
    <taskdisplaycolumns>
        <displaycolumn property-id="tpd2" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd7" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd8" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd6" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd10" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd11" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd9" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd1" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd0" order="-1" width="75" visible="false"/>
        <displaycolumn property-id="tpd3" order="0" width="122" visible="true"/>
        <displaycolumn property-id="tpd4" order="1" width="122" visible="true"/>
        <displaycolumn property-id="tpd5" order="2" width="121" visible="true"/>
    </taskdisplaycolumns>
    <previous/>
    <roles roleset-name="Default"/>
    <roles>
        <role id="0" name="Architect"/>
        <role id="1" name="Bricklayer"/>
        <role id="2" name="Foreman"/>
        <role id="3" name="Decorator"/>
        <role id="4" name="Excavator operator"/>
        <role id="5" name="Roofer"/>
    </roles>
</project>