A lot of material that is exposed on the SEP web site is needed at other locations of the SEP file system. For example, the SEPlib source code (SEP's seismic processing package) is offered as a tar file on the SEP web site. At the same time, SEPlib, including its source code, is installed on SEP's computers, so that SEP researchers can use and maintain the software package. Such a duplication of source code invites the divergence of the various duplicates and poses a serious software maintenance problem.
Ideally, we would prefer to have a single set of source files that is simultaneously offered at the web and used locally. A natural solution would be to make the entire SEP file system accessible to the web. Unfortunately, such an open file system raises serious security problems and is therefore unrealistic at this time.
To maintain a single location for software source code, we suggest keeping all files pertinent to a software package in a single source directory structure. In the case of the SEPlib source code, this directory includes the programs, documentation, makefiles, and even the corresponding HTML files. All maintenance and the local installations are based on this source directory.
Additionally, the top makefile includes a command make www that properly installs the software on the SEP web site. For example, make www in the SEPlib directory would tar the SEPlib files, move the tar file to the ftp site, and would copy the SEPlib HTML file to the web site. If all source directories would contain rules on how to export themselves, a central make rule could routinely and automatically update the entire web site by visiting all necessary source code directories and executing make www in each of them.
The danger of diverging software versions also arises when software copies on the web are actually distributed. The traditional software maintenance concept asks software users to send error reports and patches to a central programmer who maintains the software. At SEP, however, local and remote users maintain the software together.
To facilitate easy remote software maintenance, SEP could extend a version control system to its web and ftp site. A simple solution could be a lock file that when it exists on our web page, signals to other developers that the software package is currently locked. The file could contain the email address of the developer who currently locks the package. We hope such a web CVS system will emerge in the public software domain soon.