[comp.software-eng] New release of shape-toolkit

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