|
Task Coach - Your friendly task manager |
|
Task Coach - Your friendly task manager |
Here's some information for developers that either want to hack on Task Coach or reuse code.
A Yahoo!Groups mailinglist is available for discussing the development of Task Coach. You can join by sending mail to taskcoach-dev-subscribe@yahoogroups.com or alternatively, if you have a Yahoo id (or don't mind creating one), join via the webinterface.
You can browse the archive of messages without subscribing to the mailinglist.
The mailinglist is also available as the newsgroup gmane.comp.sysutils.pim.taskcoach.devel on Gmane.
A Sourceforge mailinglist is available for receiving CVS commit messages. If you are a Task Coach developer you can join this mailinglist.
Task Coach is developed in Python, using wxPython for the graphical user interface. On Windows, Pywin32 is used as well. The few other libraries (other than those provided by Python, wxPython and Pywin32) that are used are put into the taskcoachlib/thirdparty package and included in the CVS repository.
Task Coach source code is hosted at SourceForge. You can check out the code from CVS directly or browse the repository.
Tests can be run from the Makefile. There are targets for unittests, integrationtests, releasetests, and alltests. These targets all invoke the tests/test.py script. Run tests/test.py --help for many more test options (including profiling, timing, measuring test coverage, etc.).
The Makefile is used to build the different distributions of Task Coach. Currently, a Windows installer is built, a Mac OSX dmg file, and the sources are packaged as compressed archives (.zip and .tar.gz). The Makefile contains targets for each of the distributions. Most of the code for the actual building of the distributions, using the python distutils package, is located in make.py. In turn, make.py imports setup.py. These two files were split so that setup.py only contains distutils information related to installing, while make.py contains all information related to building the distributions. Only setup.py is included in the source distributions.
On Windows, py2exe is used to bundle the application with the python interpreter and wxPython libraries. Innosetup is used to create an executable installer. All the necessary packaging code is in make.py and driven from the Makefile (windist target).
On Mac OSX, py2app is used to bundle the application. The resulting application is packaged into a dmg file using the hdiutil utility, which is part of Mac OSX. All the necessary packaging code is in make.py and driven from the Makefile (macdist target).
I create RPM and DEB distributions on Ubuntu (lindist target). Alternatively, Linux users that have installed python and wxPython themselves (if not installed by default) can also use the source distribution. The source distributions are created by the sdist Makefile target.
Class names are StudlyCaps. Method names are camelCase, except for wxPython methods that are called or overridden because those are StudlyCaps. At first I thought that was ugly, a mixture of two styles. But it turned out to be quite handy, since you can easily see whether some method is a wxPython method or not.
Releases are tagged Releasex_y_z (where x has always been 0 so far) and for each Releasex_y_0 a branch (Releasex_y_Branch) is created to facilitate bug fix releases. The release tagging and branching is part of the release process as documented in release.py.
For new big features, feature-specific branches are created to facilitate parallel development, checking in changes while developing, and keep the code on the main trunk releaseable. The process is as follows: