[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