axel@coma.UUCP (Axel Mahler) (02/08/90)
We are pleased to announce availability of "Shapetools Release 1.1". "Shapetools" is the name of an integrated toolkit for version-control and configuration management. You can think of it as a convenient combination of make(1) and sccs/rcs. Shapetools is free software. A more detailed description of what Shapetools is all about can be found below. Shapetools1.1 is the second major release of the toolkit (first release was early 1989), introducing a number of new features, improved performance, robustness, and portability. In particular, Shapetools1.1 runs on System V.3 platforms. Under SysV, the version control system doesn't impose a 12 char limit for filenames as sccs/rcs do. There is also a faked symbolic link feature in the version object base that helps a lot in organizing cooperative software development. A great deal of effort has been devoted to making the toolkit easy to install and easy to use. Installation of the software should be trivial on following platforms: 4.3BSD/VAX, Ultrix3.0 (VAX + MIPS), {Sun3,Sun4,SparcStation}/SunOS4, HP/UX 6.2, and AT&T SysVR3/386 (well, ..uhm.. we used Toshiba's version of SystemV/386 ("T/PIX") as platform, but it is said that T/PIX is (almost?!) vanilla AT&T SVR3/386). While the version control system is very straightforward to use, it can be tricky to make ultimate use of "shape" (the toolkit's make(1) replacement). Besides a whole lotta options and switches, Shapefiles aren't as easy to write as Makefiles (many people have even problems with Makefiles). To help with this problem, we have introduced an include-mechanism into shape. The idea is that the more complicated parts of the Shapefile (such as version selection rules or variant definitions) can be written once for a particular project, and be placed in a standard-location (such as "/usr/myproject/lib") from where they can be included in the individual developers' Shapefiles. This technique not only facilitates Shapefile-writing but also helps to implement project-wide standards for structuring the Shapefiles. As a matter of fact, we made a selection of some generally useful rules (Shapefile fragments ready for being included) and a short tutorial part of the release. We also provided templates for Shapefiles and Makefiles that we think are very useful for moderately sized projects. Obtaining the Shapetools1.1 distribution Shapetools1.1 comes entirely in source code and free of charge. There is a copyright associated with the release that makes sure that the toolkit will remain free software and thus be accessible to any interested party without having to pay for it. For the time being, you can send us a blank tape (the software comes as a 1.6MB tar-archive) with a self addressed return envelope or address sticker to the address shown below. We can handle standard 1600bpi tape reels, Sun streamer cartridges, ExaByte/Video8 cartridges, and standard 1.44MB 3.5'' diskettes (one disk is sufficient for compressed archive). However, this sort of service will be limited by our timely resources (we have no extra staff to handle large volumes of requests). For distribution in internet-land, we hope to find sites willing to put the software in source archives accessible via anonymous ftp. If you are/know an anonymous-ftp-site administrator willing to help, please step forward and reply by e-mail! E-mail: shape@coma.uucp (uunet!unido!coma!shape) or shape@db0tui62.bitnet S-mail: TU-Berlin "shape" Sekr. FR 5-6 Franklinstr. 28/29 D-1000 Berlin 10 Enjoy, Axel. =========================================================================== WHAT IS THE "SHAPETOOLS" TOOLKIT ALL ABOUT ? The toolkit consists of a set of version control commands and "shape", a significantly enhanced Make-oid. "shape" and the version control commands are integrated on top of AFS ("Attributed File System"), a dedicated version object base (AFS is our internal name for the kid, no TM; don't confuse it with the Andrew File System). The system features RCS-style version control and a configuration identification and -build process that has full access to all revisions in the object base (other than make which only knows about plain files). AFS also supports derived object management, i.e. it maintains a cache of multiple versions of compiled object-files (e.g. compiled c-files with different compile switches). The "shape" program itself is upward compatible to Make in that it can properly handle conventional Makefiles. The *Shapefile* however, uses Makefile-style dependencies as (versionless) 'abstract system model' and employs 'configuration selection rules' to dynamically bind particular version objects in the object base to the names listed in the system model. The version selection mechanism exploits AFS' ability to maintain any number of arbitrary attributes for objects in the object base. This yields a configuration identification mechanism similar to (but more flexible than) DSEE's 'configuration threads'. On special request, shape records an identified configuration in a 'configuration identification document' (CID) which has the form of a completely bound Shapefile (all object-instances are explicit). This makes it particularly easy to rebuild recorded configurations. As CID's are themselves documents, they can be placed under version control, making it easy to maintain histories of entire software systems. One of the most useful features of shape is its support of various variant administration techniques. Shape makes no assumptions about the semantics of the 'variant' notion other than having "alternative (conceptually equivalent) instances of the same concept" (e.g. 'module'). Despite the particular semantics of a certain variant-concept, there is a small number of techniques to physically handle variants. These techniques are what shape supports. Most commonly used techniques are: - equally named files in different directories - one source file representing multiple variants that are extracted by a preprocessor using different preprocessor switches (e.g. conditional compilation) - one source file processed by different tools or different tool versions/variants (e.g. cross compilation, different coders) - combinations of the above. Shape includes a variant definition facility that allows very flexible and convenient handling of all of the above variant administration techniques. The object base abstraction presented by AFS provides uniform access to immutable revisions of data entities ('files') stored in special archives, and mutable regular UNIX files. Consequently, the AFS based toolkit lives peacefully (and meaningfully!) together with standard filesystem applications (editors, compilers, formatters etc.). Cooperative work within projects is supported by a build-in status model, controlling visibility of version objects, and locking, a primitive form of 'long transactions'. The general concept of object attributes provides for passing information between indiviual tools that would otherwise be lost. This mechanism is useful for building integrated environments from a set of unrelated tools. The toolkit character of the system allows to use it via shell-commands, or to build a customized environment on top of it. As an example, we used GNU-Emacs as an alternate user interface to the system which lead to a much more comprehensive, integrated user interface. For more sophisticated requirements, there is a complete C-language interface to AFS, on top of which all the toolkit programs are built. In case you find shape interesting, you may want to read "An Integrated Toolkit for Engineering Software Configurations", in "Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments", Nov. 1988, Boston Mass., or write to shape@coma.uucp which is the same as shape@db0tui62.bitnet. -- Axel Mahler, Tech.Univ. Berlin UUCP: axel@coma.uucp (unido!coma!axel) BITNET: axel@db0tui62.bitnet