Tycoon Developers

Welcome to the Tycoon developer page. The purpose of this wiki is to allow developers of Tycoon and the applications that run on it to share information and work together on plans. We use Mercurial for source code control. Brief directions for using it are below.

Making Changes

Development Policies

We haven't formalized all of the the policies yet. To be determined: testing strategy and release policy. Here are some key points:

  1. Coding Style: It is important to have a consistent style. Code that uses multiple coding styles is very hard to read and can lead to bugs. Here are the key style guidelines:
    1. Use the standard Python coding style.
    2. Minimize the size of interfaces. This means do not make class and module members public unless they absolutely need to be. Consequently, most methods and instance variables should be private. It is important to do this to improve modularity and reduce dependencies between classes.
    3. Minimize the use of inheritance. Systems programs rarely need to have deep heirarchies, but there is always the temptation to have them anyway. Avoid it. Over-use of inheritance usually results from developers confusing a "has-a" relationship between two classes for a "is-a" relationship. Deep heirarchies are difficult to understand and maintain because understanding a class requires understanding all of its ancestors and, frequently, all of its children, lest some child depends on an implementation quirk of an ancestor.
  2. Tickets: Use the ticket system to ask for features and report bugs. Close the ticket when you've added the feature or fixed the bug.
  3. Commit: Commit early and often. Mercurial is a robust and cutting-edge source code control system. Take advantage of it and commit frequently. If something later turns out to be a bad idea, we can always undo it.

Development Processes

Make sure you have the required packages to build the system. You can install them as root with

# yum -y install gcc zlib curl-devel python-devel

Testing a Development Version of the Command-Line Tycoon Client

Lets assume that after pulling a copy of the source code(as described in the section "Getting Source" above) you end up with the following high-level directory structure:

$HOME/somedir/tycoon/tycoon
$HOME/somedir/tycoon/KL

The entry point to the command-line tycoon client is a file named "tycoon" which resides in the "$HOME/somedir/tycoon/tycoon/src" directory. The core tycoon client classes reside in the "$HOME/somedir/tycoon/tycoon/src/Tycoon" directory. However some of the tycoon client classes refer to code modules under the "$HOME/somedir/tycoon/KL" directory.

Hence, to test the tycoon client you need to first create a symbolic link, linking the "$HOME/somedir/tycoon/KL" to the "$HOME/somedir/tycoon/tycoon/src" directory. Assuming you are currently in the "$HOME/somedir/tycoon/tycoon/src" directory, you can achive this with the following command:

$ ln -s ../../KL .

You can now execute the command-line tycoon client from the "$HOME/somedir/tycoon/tycoon/src" directory using the following command:

$ python tycoon <arguments>

Error: Failed to load processor TagIt
No macro or processor named 'TagIt' found