Contributed Projects

There are several public filesystem locations where CS Dept users can install software projects. Each of these is administered using the same set of utilities. This page describes those utilites as well as the intended use of each of these project spaces.

The underlying mechanism for each of these is called PSFU (Project Space For Users), and is designed to make it easy for the user community to share software.

Note that, for now at least, these project spaces are of interest only to linux/unix users.

Project Spaces

The following public project spaces exist:

In all cases, a project is any collection of commands, libraries or files. Each space includes the usual public directories, like bin, lib, etc, share and others. A "projects" subdirectory contains the actual installation location of each project. So, for example, all /contrib projects are physically located in /contrib/projects/ — a /contrib project named "foobar" would be located in /contrib/projects/foobar/.

All projects in a space share the public directories. So one project may provide a /contrib/bin/foo command, and another might have /contrib/bin/bar. Each of these is a symbolic link into the respective project's "projects" directory. More on this below.

Project owners are solely responsible for their projects and may provide any level of support for them, including none at all.


Any CS Department account holder can create a /contrib project. Contrib projects should have some interest for the general CS community. Everyone is encouraged to include /contrib/bin in their shell command paths, after the standard system paths (e.g. /usr/bin). /contrib commands may not conflict with system commands (so you cannot install a "better" ls, for instance).


Software located under /local is provided by the Technical Staff and may be considered supported.


The /systest project space is for upgrade regression tests. Any user may contribute a regression test. All tests found in /systest/bin are run periodically, and especially as we near system software upgrade time. Tests that exit with a non-zero return status are flagged and an email alert is sent to the project owner.

How it works

All "project space" projects are administered using the same set of four commands, but named after the name of the space. For instance, the commands for /contrib are:

Without any arguments, displays a list of all projects. Use the -h option to display a helpful message describing how to use this command.
Request a new project, or to delete an existing project, or to change some other information about the project, such as the project's owners.
Create a link in a public directory (e.g. /contrib/bin) to a file in a project directory. A project link must point into the project directory.
Remove a link from a public directory.

The same commands for the /systest project space are named systest-info, systest-req, systest-link and systest-rem. This pattern holds for the other project spaces as well.

Note that these project space commands are in their respective project spaces. For instance, the full path of systest-info is /systest/bin/systest-info.

/contrib Project Information

You can use the contrib-info command to find out about existing /contrib projects.