CS 342 Lab 6: Software Carpentry Project Proposal



Lab date: 14 March-23 March 2000
Due date: Friday 24 March 2000 11:59 pm


Start development of a design suitable for entry to the Software Carpentry open source design competition. In Lab 6, you will select a project and begin the design. In Lab 7, you will finish your design and prepare your submission to the competition. In Lab 8, you will implement your design.

Here's the notice that was posted about the competition:

The Software Carpentry project is pleased to announce its first Open
Source design competition, with prizes totaling $100,000.  Students
and professionals from any country, working individually or in teams,
are invited to submit design outlines for:

* a platform inspection tool to replace autoconf;

* a dependency management tool to replace make;

* an issue tracking system; and

* a unit and regression testing harness.

Participants may submit separate entries in one or more categories by
March 31, 2000.  Entries must be in English, and no more than 5000 words
long.  The best four entries in each category will be awarded $2500, and
invited to submit full designs by June 1, 2000.  The best design in each
category will then receive an additional $7500, while runners-up will each
receive $2500.

Once winning designs have been announced, $200,000 will be available
through open bidding for implementation, testing, and documentation. All
of the project's work will be Open Source; all tools will be written in,
or scriptable with, Python, and will be required to run on both Linux and
Microsoft Windows NT.

The competition will be judged by a panel that includes the following
noted software developers, authors, and computational scientists:

    Stephen Adler       Brookhaven National Laboratory
    Frank Alexander     Los Alamos National Laboratory
    Donnie Barnes       Red Hat
    Chris DiBona        VA Linux
    Paul Dubois         Lawrence Livermore National Laboratory
    Andrew Hunt         Pragmatic Programmers, LLC
    Stephen R. Lee      Los Alamos National Laboratory
    Josh MacDonald      University of California, Berkeley
    Brian Marick        Reliable Software Technologies
    Doug Mewhort        Queen's University
    Bruce Perens        co-founder of the Open Source Initiative
    Dave Thomas         Pragmatic Programmers, LLC
    Jon Udell           author of Practical Internet Groupware
    Guido van Rossum    inventor of Python
    Tom Van Vleck       TransIlluminant
    Phil Wadler         Bell Labs
    Scot Wingo          AuctionRover
Though the competition requires Python implementation, the design submission does not require any implementation. If selected for implementation by the competition, your design must then be implemented in Python. For CS342, we will implement in C++.


  1. Read all of the relevant material on the Software Carpentry web site.

  2. It will be advantageous to express your design in terms of patterns, for conciseness and accuracy of expression. Therefore, review the pattern summary at the front of the GoF book.


  1. Select a design project. To enter the competition, it must be from one of the following four categories:

    1. Config: a platform investigation and project reconfiguration tool to supersede autoconf.
    2. Build: a dependency management and program reconstruction tool to supersede make .
    3. Test: a testing framework to replace tools such as XUnit, Expect, and DejaGnu.
    4. Track: an issue tracking system to supersede Gnats or Bugzilla

    If you would like to work on a different project, we will consider it. However, you won't be able to enter it into the competition. And, you must submit a written, one page summary of your planned project by midnight, Friday 17 March. Please email it to levine@cs.wustl.edu and cdgill@cs.wustl.edu.

  2. Start your design and proposal.

  3. As you develop your design, collect and document requirements in the form of user stories (see slide 45 of the class Software design principles and concepts slides [gzip-ps] [pdf]).

What to Submit:

By the due date, submit your design. Use zip and uuencode (see the Makefiles of previous labs) to package up your files. Email them to cs342gr@cec.wustl.edu.

Please refer to the Design Competition Rules and Example Initial Submission for guidance on format and level of detail. For Lab 6, you must submit a first draft of your initial submission.

Furthermore, you must submit the user stories that you have documented so far. You don't need to submit all of the stories that you expect to use. Submit a significant sample (probably a dozen or so) to show that you have rigorously thought about what users expect from your project.

CS 342 home page