[comp.unix.questions] Source Code Control

john@tirnan.UUCP (John Richartz) (05/31/89)

    I'd like to second MacK's motion for a discussion of source code
    control strategies, facilities, or systems. I'm involved in
    implementing a source code control capability and have chosen to
    base the implementation on CCC from Softool (after considering
    extending SCCS, or using ADC from SMDC) and am not having very much
    luck finding realistic discussions of usable facilities. We're
    developing this in an environment of networked multiuser machines
    on which one will act as a source code repository with development
    occurring on the others.

    Clearly, the floppy (I guess this is a reference to PC based
    development) approach, or anything similar, is fraught with peril.
    But any approach based on ad-hoc procedures is likely to produce a
    product that is difficult or impossible to maintain - particularly
    when multiple product versions, products requiring site or
    installation specific differences, or derivative products must be
    managed.  While I'm reluctant to admit such a thing, even a PC can
    be used as a legitimate platform for some aspects of the
    development and provision must be made within a 'real'
    configuration control (note the change from "source control")
    system to accomodate this.

    I'm taking the approach that the 'developers' are responsible for
    provision of the source code and for changes to handle bug fixes
    and functional product extensions, while the configuration
    management people handle release builds, packaging, and releasing
    the product. (Developers are responsible for builds during their
    unit test activity, but use the same build procedures as
    employed for release builds.)

    Another consideration is to connect the configuration management
    system to the problem tracking system to allow us to readily
    track the progress of bug fixes through the resolution stage.
    This, of course, requires some discipline in generating change
    documentation - both to initiate a change to a product, and by
    the developer to identify what he did (or intended to do when
    operating on a source module).

    So, how 'bout it, guys? Like to discuss capabilities provided to
    developers? source control environments? configuration
    management issues??? In another newsgroup, perhaps?

    John Richartz
    !tektronix!reed!tirnan!john

runyan@hpirs.HP.COM (Mark Runyan) (06/02/89)

>/ john@tirnan.UUCP (John Richartz) / 10:08 pm  May 30, 1989 /
>
>    I'd like to second MacK's motion for a discussion of source code
>    control strategies, facilities, or systems. ...
>...
>    So, how 'bout it, guys? Like to discuss capabilities provided to
>    developers? source control environments? configuration
>    management issues??? In another newsgroup, perhaps?

Which newsgroup should it be in?  I'm interested.

mark@spider.co.uk (Mark Valentine) (06/08/89)

    From: john@tirnan.uucp (John Richartz)
    Date: Fri 2 Jun, 1989
    Subject: Source Code Control
    
	[...]
    
        So, how 'bout it, guys? Like to discuss capabilities provided to
        developers? source control environments? configuration
        management issues??? In another newsgroup, perhaps?

I think the time is right to make a concerted effort at least to discover
what the real state of affairs is out in the big wide world.  I would be
pretty confident at guessing there are large numbers of development groups
still struggling along with make and sccs, or with quickly cobbled together
systems that they've knocked up themselves to get round the worst of the
problems.  At least I don't think *we* are unique!

>From what's been visible to me as a (fairly typical?) developer trying to
keep an ear close to the ground, it seems that at least some of the semi-
academic groups (in Europe especially) have been trying to come up with
solutions which tackle medium-sized projects, but it's still the case that
the commercially available systems are huge monsters which still don't cater
much for the possibility of creating a source release that will build in a
standard Unix environment (divorced from the system from which it was spawned)
and still be flexible enough to be hacked on outside the system.  That's what
our customers *need* as an end product.

I for one am all set to play with stuff like ``shape'' that's now appearing
in comp.sources.unix (and see also ``cake'' and ``cvs'' from a while back),
because I think with a little effort these tools are going to satisfy my needs
better than most of the commercial products.  How do others feel about issues
such as the difference between shipping your product build tools with your
product versus having your configuration management produce a set of standard
makefiles? I tend to favour the latter, since often most of the complicated
stuff is done by the time you actually want to build a system, and there are
some strange targets on which you would otherwise have to support your build
tool.  However, another approach is to use an intermediate tool such as
``imake'' which is small enough to support and gets around some of the hassles
of raw make.  The production of standard (semi-portable) makefiles/imakefiles
is not something I have seen tackled at great length.

There are lots of issues to discuss, and I'm sure there are significant
numbers of folks thinking about them privately!  Let's apply some communal
effort and speak to each other and to the people who are implementing these
tools.  Too often I think that commercial development groups have kept their
problems to themselves, solved them partly to suit their own requirements, and
sold the result at a price which is just too much for other groups to fork out
for a system that doesn't quite match their own way of working and can't be
made to do so because it's become a proprietary system.  There now appear to
be a number of groups willing to produce more general and open solutions, and
I'm sure that they would appreciate input from real-life commercial groups who
don't have the resources to go it alone.  What's more, I'm sure they'd appre-
ciate the funding that we could undoubtedly provide if we knew the work was
going to benefit us in the foreseeable future!  Am I being too naive and/or
radical??

Let's hope I've poked at something relevant here, and let's have a show of
hands from those who think we *should* be discussing this sort of thing.
I don't think this forum is entirely inappropriate.  It has the advantage
of widespread distribution via a mail gateway (which is how I imagine lots
of folk in smallish companies like mine without newsfeeds read it).

		Say something?

			Mark.
__
Mark Valentine, Spider Systems Limited, Edinburgh, UK.		/\oo/\
<mark@spider.co.uk, mark%spider.co.uk@uunet.uu.net, uunet!mcvax!ukc!spider!mark>
My company wouldn't dare associate themselves with my opinions.

john@tirnan.UUCP (John Richartz) (06/10/89)

    Thanks to Mark Runyan (runyan@hpirs.HP.COM) and Mark Valentine
    (mark@spider.co.uk) for responding to my suggestion for discussion
    of these issues.

    It strikes me that comp.software-eng might be an appropriate place
    for discussion, since it seems to be fairly low volume now, and
    they're currently pretty hung up on whether software engineering
    really exists and whether you're better off training an Engineer
    to develop software than to teach a Software guy engineering.

    Mr. Valentine does, I believe, characterize the situation fairly
    well.  I've worked with several (mostly ad-hoc) variants of
    development based on either SCCS or RCS and find that the structure
    is generally not in place to provide a development model that
    allows for realistic development of a Product and any variants and
    descendents of it (admittedly this often results from lack of
    organizational focus on the problems). I believe that this is due
    to an inherent weakness in the model of a product as the state of a
    particular set of source files, rather than as the collection of
    source files and configuration specifics that define a particular
    instance of the product.

    "Source Control" is only a part of the problem and one can feel
    fairly comfortable knowing that the developers have retained a file
    revision history for each file, and one can certainly snapshot the
    development at product release by treating the product as the list
    of files in the source control system at some revision (the
    software bill of materials kind of approach, useful with both SCCS
    and RCS). But this gets really messy when you've got either
    multiple similar products, or perhaps site specific versions. So we
    immediately find ourselves considering a higher level abstraction of
    the product - and ending up with "Configuration Control/Management"
    rather than just source archiving.

    So - comp.software-eng?

    john richartz
    !tektronix.tek.com!reed!tirnan!john

pgh@stl.stc.co.uk (Peter Hamer) (06/13/89)

In article <133@tirnan.UUCP> john@tirnan.UUCP (John Richartz) writes:
>
>    I've worked with several (mostly ad-hoc) variants of
>    development based on either SCCS or RCS and find that the structure
>    is generally not in place to provide a development model that
>    allows for realistic development of a Product and any variants and
>    descendents of it ...
>
>    "Source Control" is only a part of the problem ...

I know the problem well! A configuration management system called Shape
has just been distributed on comp.sources.unix. You will probably find
the papers included in the distribution well worth the effort of unpacking
all 33 parts; they are very interesting.

Shape is in some ways yet another SCCS/RCS combined with yet another Make.
However, it is built on an 'Attribute FileSystem' which maintains a
distinction between objects and their attributes. This enables Make requests
of the form 'select the newest version of all components I am working on and
the newest published version of all other components' to be used. Similarly,
some of the problems of variants seem to be addressed; both when the variants
are realised as separate sources, and when they are realised as a common source
with different compiler-time flags.

I would be interested in other peoples comments on the approach adopted by
the Shape team, and any feedback from people using it [or trying to use it].

Please read the Shape papers and don't rely on the accuracy of my summary.

johnm@uts.amdahl.com (John Murray) (06/14/89)

In article <133@tirnan.UUCP>, john@tirnan.UUCP (John Richartz) writes:
> 
>     [... Having used] either SCCS or RCS[, I] find that the structure
>     is generally not in place to provide a development model that
>     allows for realistic development of a Product and any variants and
>     descendents of it (admittedly this often results from lack of
>     organizational focus on the problems).  . . .
>             [...Things get] really messy when you've got either
>     multiple similar products, or perhaps site specific versions.

A development group frequently suffers from tunnel vision,
to the extent that it cannot see how it fits into the entire
organization. This seems to be a real problem where both
hardware and software are being developed simultaneously,
or more particularly, when existing software is being modified
to run with new hardware. I like to think of this activity
as software "maintenance" rather than "new design". However,
organizations prefer to act as if they were designing from
scratch, even though they subsequently find themselves porting
software fixes forward from earlier versions, and so on.

Here's an interesting logistics problem. The prototype hardware
has a bug which will take several weeks to fix. A temporary fix
is applied to software to get around the problem and allow alpha
testing to continue. Software development is still continuing
at the same time. When the hardware problem is resolved, how do
you back off the temporary fix in an orderly fashion? (This is
basically an instance of the site-specific problem, I suppose).
Even establishing an appropriate mechanism for tracking the
changes can be a paperwork nightmare.

At Amdahl, one system we use tracks problem fixes and new s/w
enhancements simultaneously, and no source changes are allowed
without a corresponding entry in the tracking database. (See
Software Engineering Notes, ACM, Oct 1988 for my paper on it.)
Merging such software control with the corresponding hardware
change control system seems difficult, however; I'd be very
interested in hearing opinions on this subject.

- John Murray, Amdahl Corp, Sunnyvale, Ca.
  (My own opinions, etc.)