From: rene@cadence.com (Rene Churchill; x6266)
Subject: Re: ClearCase <was Re: Robust Config Mgmt system wanted for MSwindows&UNIX>
Organization: Cadence Design Systems/CAE Div, Lowell MA
	<1992Aug14.215618.861@thirdi.uucp> <m40m+q#.ash@netcom.com>
	<GEOFF.92Aug20140645@wodehouse.flash.bellcore.com>
	<RENE.92Aug31152248@wizard.cadence.com>
	<GEOFF.92Sep2095048@wodehouse.flash.bellcore.com>
Date: Thu, 27 Aug 1992 06:49:43 GMT


In article <GEOFF.92Sep2095048@wodehouse.flash.bellcore.com> geoff@flash.bellcore.com (Geoffrey Clemm) writes:
>>   What is the basis for your belief that ClearCase does not scale to
>>   large (e.g. 5 million line) systems ?  The source information can be
>>   partitioned into an arbitrarily large number of disk servers (with the
>>   constraint that all versions of a given file are clustered on a
>>   single server).

Humm, perhaps I need to clarify a bunch of my assumptions.  ClearCase
could load in a system of the 5 million line size.  I do like how you
can split up various libraries across several disks file severs.  You
can have the source code on one machine, while the binaries reside on
another, or some on each.  Anyhow, the raw capacity isn't the
bottleneck of the problem.  It's the NFS file servers themselves that
have to be worked around.  A large project on the 5 million line scale
implies 100-500 engineers working on said code.  Several people could
access such a large project, but several hundred would bring a network
to it's knees.

>>   I agree that the current version of ClearCase currently does not support
>>   distributed development that is not on a local network, but that question
>>   is orthogonal to that of system size.  Also, I don't see any architectural
>>   impediments to providing a layer that supports non-local-network code
>>   development.

I'm sure they will be able to implement something like CVS's import
functionality, where the system can merge changes from another
development tree into the current tree.  I believe that they are
working on something like this now.  (Next release I think, ask them
for more details.)

I don't think this kind of funtionality has a fast enough turn around
time however, it also assumes that the various development sites have
well defined areas in which they work.  Site A works on chunk 1, site
B works on chunk 2, etc.  If you assume that each site work fairly
independantly of any other site, then this would work.  This also
assumes that the time between updates is fairly long, say on the
monthly timescale.  If you want daily updates between all sites, then
I think something more robust is needed.  While daily updates
shouldn't be needed most of the time, they are desparately needed
during this mad rush just before release.

A lot of this also depends on the code dependancies.  If all of the
sites develop their own code, then everything is fine and dandy.  If
site A depends on, say, the database that site B develops, then the
time it takes a bugfix to propogate from site B to site A becomes
important.

>>      This might go from a
>>      good tool to a great one, depending on what they do in the next couple
>>      of releases.
>>
>>   What changes are you looking for ?
>>

Ok, you asked for it.  Here's a description of my dream system.  Yo,
Atria, you folks listening?  :-)

In order to allow network access to all of the files that a developer
needs in such a large system, I believe that there needs to be several
"copies" of the system.  Each copy of the system could support say
10-50 developers, depending on how things were set up.  Postulating
500 developers, that 10-50 different development sites that need to be
kept in sync with each other in some kind of sane fashion.  What I'd
ideally like to find is some kind of version control which would
automaticly take care of this for me.

I think one of the sites would be designated as the "master" site,
which holds the "official" copies of the source code.  This site would
be notified when users at any of the "remote" sites check code in or
out of the system.  The master site would update it's own copy from
the remote site and then update the other remote sites with new code.
This way, the only network traffic between development sites would be
notification of changes to and updates of source code.

Because my company has development sites scattered around the world,
the ideal system could not depend on the network being up and running
constantly.  (Yeah, I know the Systems group promises reliability, but
little things like Hurricane Andrew can take anybody off-line.)  I
guess this translates into a nightly or some other regularly timed
syncronization process between the various sites.  If a site misses
out on several updates, it should be able to recover automaticly.

One side effect of breaking up the development like this is that the
normal locking paradiam of version control won't work.  Something like
CVS's non-locking system would need to be set up, where the master
site would attempt to automaticly merge in all of the changes and kick
back errors to either the developer or some other designated person.

A side effect of the side effect is the need to group changes.
Suppose a developer from site A checks in 10 files and one of them
fails to merge properly becuase of some changes from site B.  None of
those 10 files should be checked into the "master" site.  The system
should make the assumption that the changes to those 10 files are
inter-dependant and the compilation or tests would fail if a partial
checkin occured.

ClearCase would well as it for any of the individual sites as I've
described them here.  I just think that in and of itself it can't
handle the whole job.  I'm still trying to think of other methods to
develop on my own to tie a network of ClearCase sites together.  It
might be possible to use this tool as a piece of the overall solution.
It's a problem I'm going to work on when I get the time, which should
be Real Soon Now.  (Like as soon as Next Release :-)

    Rene
--
 Rene' Churchill                     rene@cadence.com
 Cadence Design Systems
 2 Lowell Research Center Drive      Experience is something you get
 Lowell, Mass. 01852-4995            just after you really needed it.
Newsgroups: comp.software-eng