September 13, 2007

Hosting multiple projects with DrProject

Author: Rudolf Olah

Individual developers can use sites like to host multiple projects, but such sites are not well suited to college environments that have many student programming projects to host. DrProject is a multiple project hosting application designed for schools. It gives each project a wiki, bug tracker, and source code repository.

DrProject is a fork of the Trac project, which can only host project at a time. DrProject has a different look and feel but the navigation menu is very similar to Trac's.

Before you can install DrProject you must install several other packages. The software relies on the popular revision control system Subversion, the event-model system PyDispatcher, and the XML-based templating language Kid. It uses PySQLite or Pyscopg2 (PostgreSQL module) for database storage.

DrProject is simple to install. You can download the latest release or check out the code from the Subversion repository. The current release is Release Candidate 1. The DrProject package includes a detailed installation document in the DrProject wiki directory and on the DrProject Web site.

Note: when trying to install PyDispatcher 2.0.0 I ran into a problem with the script. It says that directories are missing. To resolve this problem run the following command in the PyDispatcher directory: mkdir tests examples.

Running a DrProject server

Once you have the software installed you must create a DrProject environment using the executable script drproject-admin, then configure the environment by editing the drproject.ini file located in the conf/ directory of your newly created environment. If you have any dependency problems, they will show up when you run the script, listing the module missing along with its minimum required version number.

Start the DrProject server with the executable script drproject-server, which serves the Web pages needed for DrProject along with handling wiki, mailing list, and bug tracker actions. DrProject supports FastCGI, Simple Common Gateway Interface (SCGI), and Common Gateway Interface (CGI) for execution of DrProject Web scripts and can start its own HTTP server as well.

The drproject-admin command line tool lets you add and delete projects and users. It is similar to the admin tool that comes with Trac, but adds a few more commands. However, it would be much more helpful if it were possible to use its functions from the Web interface.

To add users to a project, enter the command membership grant user role project. Users' roles determine what they are allowed to do with the project, such as file tickets, edit the wiki, or commit changes to the source code.

In addition, there are scripts for creating a set of projects, adding a large number of users, and filing tickets against every project in a set of projects.

DrProject's wiki, bug tracking systems, and source code browser are the same as Trac's, but the bug report ticket form is different from Trac's: it includes a date selection instead of milestone selection, no cc field, three priorities (Trac has five), and no severity field.

All projects, regardless of whether or not a user is a member of them, are listed in the top right corner of every page in a combo box. Switching to a different project redirects you to the main wiki page associated with the project. You can browse the source and view a road map for the project currently selected.

When you create a new project, DrProject creates a project mailing lists -- something that Trac lacks. When you add a user to a project, the user is automatically added to the mailing list.

DrProject lets you use an existing SQL database system or your operating system's authentication method to authenticate users by setting the validate_path option in the [trac] section of a project's conf/drproject.ini configuration file. The validate_path points to a program that checks to see if the username and password match. To use a pre-existing SQL database, you would need to write a short script that connects to the database, checks for the username and password, and returns a 0 if it is found. There is also an internal password management system and a program that authenticates using the /etc/shadow file.

The software's dashboard displays graphs and reports to help analyze trends in development. It requires a few extra libraries be installed to generate those graphs and reports. This is an extra step, but worth it for project managers, since it shows quickly how projects are progressing.

In the latest version the developers replaced the software's Object Relation Mapper with SQLAlchemy/Elixir, a mature database interface for Python. This makes all of DrProject more stable by reducing the chances of there being an SQL bug.

Things to watch out for

Unfortunately, I ran into some problems when setting up DrProject. Elixir, a dependency, was not listed on the DrProject installation page. Another bug is that the DrProject download listed is an older version of the source code and contains a strange error. Hopefully that link will be replaced soon, but to be safe, download the latest revision of DrProject from the Subversion repository. One more dependency that was missing and not mentioned in the documentation is matplotlib/pylab and is required by the dashboard.

The documentation is a work in progress. It lacks a quick start guide -- not a major issue, but it would be helpful for first-timers. The documentation is also missing vital details, such as how to set up the user authentication system to allow users to be added, and how to set up the dashboard. Also, the install guide contains deprecated instructions for installation on Mac OS X, Cygwin and Fedora.

Despite those glitches, DrProject is well-suited for use in universities because it lets administrators and users handle multiple projects with a simple interface. Instead of forcing students and administrators to set up and deal with multiple Trac projects, which would require reconfiguring Web site domain names and FastCGI or some other Web serving method, they can install DrProject and start creating as many projects as they need.


  • Internet & WWW
Click Here!