[Zope] - Requirements for a project development system

Curtis Galloway curtis@pdi.com
Wed, 30 Dec 1998 09:45:09 -0800


I realize that my previous message was slightly inflammatory.  In an effort to
be constructive, here is my minimum set of requirements for any project
development system:

1. The source code should be represented as plain ASCII files.

2. All required actions must be automatable.

Corollaries to requirement 1: you can edit source files with your favorite
editor, diff them, and store them in your favorite source code control
package.  By "source code" I mean all the information you create for your
project: C, Python, HTML, documentation, whatever.  If there is meta-data that
is required to make your project work, it should be stored in a human-readable
form as well.  An example of this might be permissions on files, which would
be stored in the form of a Makefile rule that sets the permissions..

Corollaries to requirement 2: you must be able to build and maintain your
project with command-line tools.  Being able to use a GUI or a web page to do
things is great, but there is no substitute for the UNIX way.  Windows NT is a
good counter-example to this rule.

Here are some examples of project tasks that are facilitated by these basic
two requirements:

- I want to be able to take a snapshot of my whole project that I can roll
back to at a future date.

- I want one team of people to work on part of the project independently
without clobbering what another team is doing.

- I need to look at the diffs between yesterday's version of the project and
today's version to figure out what person X did.

- I want to set up an automated task to check out the latest version of the
project from source control and build it on a test machine.

Having said all this, there are times when I break my own rules.  I am using a
GUI builder right now that creates a binary file describing the UI component
layouts for a window.  I'd rather it represented the data in an ASCII format,
but it's sufficiently useful that I'll put up with it.  Also, each window is
stored in a separate file, so that tends to limit the possibility of two
people needing to change the same file at the same time.

Your mileage may vary, of course.  But I have found these principles to be
useful.

--Curtis