Project scheduling software (scriptable, cross-platform, and open source)
GanttPV Home
Why GanttPV? Help Scripts Server
Object Role Modeling

Developer overview

NOTE: The source has moved to subversion. See the GanttPV Subversion page for details. This page will be updated in the near future.

The current source for GanttPV is available via CVS on To make enhancements to GanttPV you will need the following:

  • Python programming language
  • wxPython widgets library
  • CVS version control client
  • Knowledge about the GanttPV program and data structure

Python is a delightful scripting language. The best introduction to the language is the Python Tutorial (tut.pdf) that comes with Python. Python documentation is surprisingly good and beautifully formatted. The Python Library Reference (lib.pdf) is especially useful. But the best book to keep in hand is the Python Pocket Reference by Mark Lutz from O'Reilly. (If only their other pocket books were as good.)

wxPython is a Python interface to the wxWidgets GUI development library. The library is near wonderful (if rough around the edges), but the documentation is poor. wxPython is only usable because of an excellent set of demo programs (full of working examples of key features) and an active developers mailing list.

CVS is the most popular tool for managing changes to open source software. Learning to use CVS can be complicated. Probably the best place to start is with the fine documentation provided by SourceForge. Be sure to read the following two documents. The first provides invaluable examples of the commands you are most likely to use. The second explains how to set up your secure access to the repository (hidden in a lot of other information that you probably will not need).

  1. Basic Introduction to CVS and ( Project CVS Services
  2. Introduction to Project CVS Services for Developers

These are the main, one-time start up tasks:

  • Install Python. (Currently Python version 2.3.3)
  • Install wxPython. (Currently wxPython version
  • Install a CVS client program. (Brian uses the one that came with the Apple Developer kit for Mac OS X 10.2.8)
  • Register for a user account at
  • Contact about gaining developer access to GanttPV.
  • Set up secure access to repository (See the SourceForge document #2 above)
  • Create a directory to use for development where you will keep your working copy of the GanttPV source. (For example: "cd; mkdir version")
  • Check out a work copy of GanttPV. (Described below; creates a directory named "ganttpv")
  • Copy the icons and script directories from the GanttPV distribution into the development directory. ("cp -R icons ~/version/; cp -R Scripts ~/version/")
  • Create symbolic links in the ganttpv directory that point to icons and scripts. ("cd ~/version/ganttpv/; ln -s ../icons; ln -s ../Scripts")

The typical work flow goes something like this:

  • Decide what you would like to change about GanttPV.
  • Discuss the changes to determine how to best approach them. (Either post a message on the GanttPV Forum or contact
  • If the feature you would like to add can be done as a script, try that first. Otherwise continue to the next step.(Scripts are faster to develop and easier to distribute. Most new features should be developed as scripts first.)
  • Update your working copy to reflect the most current version.
  • Make and test your changes.
  • Send the changes to for review.
  • Make sure the changes don't conflict with other updates.
  • Submit the changes to CVS.

The following are the most essential CVS commands. (The format of the "export" command used below assumes you are using a shell that is compatible with "sh". You can probably use "echo $SHELL" or "ps" to identify your shell program. If you are using "tcsh" or "csh", execute "sh" before continuing.)

The commands "anzai" used to checkout a work copy of GanttPV:

  • cd ~/version
  • export CVS_RSH=ssh
  • cvs checkout ganttpv

The commands used to update the work copy to include changes submitted by others:

  • cd ~/version/ganttpv
  • export CVS_RSH=ssh
  • cvs update -dP

The commands to display the changes that you have made (in diff format):

  • cd ~/version/ganttpv
  • export CVS_RSH=ssh
  • cvs diff

The commands used to submit changes when they are ready (the message in quotes should describe the changes):

  • cd ~/version/ganttpv
  • export CVS_RSH=ssh
  • cvs commit -m "Make sure Data.FileName is cleared by 'New' command."