DCMS rationale
Jonathan S. Shapiro (shap@eros-os.org)
Sun, 9 Apr 2000 17:42:02 -0400
This is a multi-part message in MIME format.
------=_NextPart_000_0101_01BFA24A.EA08FB40
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Mike Linksvayer asked me (ever so politely) why I have taken leave of my =
senses to do yet another configuration management system. Here are some =
alteratives I have considered, the requirements I see an immediate need =
for (and some that I *don't*), and my sense of how long I expect all =
this to take.
CURRENT ALTERNATIVES
The current CM systems out there in the open source world are basically =
CVS, PRCS, BitKeeper, and AEGIS (in order of realistic usability).
CVS: I've been using this since 1991, and I'm not happy with it. It =
doesn't really do configurations at all, and it lacks a notion of a =
local repository, which is vital for people who work over slow links or =
portables. I could live with all of this if it got directories and =
rename right, but it doesn't. If it were for some reason necessary for =
me to recover the version of EROS as it existed in 1992 I don't think I =
could do it, and if a CM system doesn't give you that, it doesn't give =
you anything at all.
PRCS: no remoting, no rename handling, not complete soon enough. I think =
that Josh McDonald is doing a whole bunch of interesting things with =
PRCS, and I suspect that the stuff *I* am doing is largely =
complementary. He has focused primarily on back-end and comm issues, =
while I'm taking the view that disk is cheap and I need configurations. =
I very much hope that these efforts will merge, at least spiritually, =
and possibly (if Josh proves interested) perhaps even for real.
BitKeeper: Larry McVoy is a smart guy, but the "you can use it as long =
as you send me all the deltas" model doesn't wash. There are things we =
don't release, sometimes for good reason. Also, it's been in Beta =
forever, with no sign of emergence.
AEGIS: Seems to be total overkill. Aegis wants to take over your entire =
lifecycle model, and I don't want that. I spent years building CASE =
tools, and there simply doesn't exist a single, universally applicable =
lifecycle management model. For starters, I just want configuration =
management, but see below.
In short, nothing out there is currently doing the job.
NON-ISSUES
I think that Josh McDonald has done some really beautiful work on delta =
compression and storage, and that his network transfer stuff promises to =
be just as good. I'm eager to use the network transfer stuff. Frankly, =
anything that just avoids *redundant* transfers is a damn sight better =
than CVS; cleverness can come later. Also, I think that focusing on =
delta compression is deferable. Disk space today is $1 per 100 =
megabytes. I think delta compression is probably useful, but I also =
think that it adds a *lot* of complexity to the storage manager and it =
can wait till version 2. Get the function right and then optimize the =
storage manager.
WHY:
In addition to simply getting configurations right (obvious), there are =
some other issues:
Open source imposes some requirements for access. Security certification =
imposes some requirements for access *control*. These two issues cannot =
be managed by *any* current CM system, and this is my main motivator. We =
need a means to have branches that are tightly controlled by the core =
developers, and simultaneously a means for any Tom, Jane, or Harry to =
make changes in a local version for later submission into the pot. =
Further, we need a means for corporations to build *private* branches =
that are not externally visible until a release occurs (if ever). =
Finally, we need a system that can let two companies set up a shared =
workspace with some reasonable story for security.
In the limit, we need something programmable, because we do need =
lifecycle integration but there isn't a single right answer.
So that's what I'm trying to build here, in stages.
Your thoughts, as always, are appreciated.
------=_NextPart_000_0101_01BFA24A.EA08FB40
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Mike Linksvayer asked me (ever so =
politely) why I=20
have taken leave of my senses to do yet another configuration management =
system.=20
Here are some alteratives I have considered, the requirements I see an =
immediate=20
need for (and some that I *don't*), and my sense of how long I expect =
all this=20
to take.
CURRENT ALTERNATIVES
The current CM systems out there in the =
open source=20
world are basically CVS, PRCS, BitKeeper, and AEGIS (in order =
of=20
realistic usability).
CVS: I've been using this since 1991, =
and I'm not=20
happy with it. It doesn't really do configurations at all, and it lacks =
a notion=20
of a local repository, which is vital for people who work over slow =
links or=20
portables. I could live with all of this if it got directories and =
rename right,=20
but it doesn't. If it were for some reason necessary for me to recover =
the=20
version of EROS as it existed in 1992 I don't think I could do it, and =
if a CM=20
system doesn't give you that, it doesn't give you anything at =
all.
PRCS: no remoting, no rename handling, =
not complete=20
soon enough. I think that Josh McDonald is doing a whole bunch of =
interesting=20
things with PRCS, and I suspect that the stuff *I* am doing is largely=20
complementary. He has focused primarily on back-end and comm issues, =
while I'm=20
taking the view that disk is cheap and I need configurations. I very =
much hope=20
that these efforts will merge, at least spiritually, and possibly (if =
Josh=20
proves interested) perhaps even for real.
BitKeeper: Larry McVoy is a smart guy, =
but the "you=20
can use it as long as you send me all the deltas" model doesn't wash. =
There are=20
things we don't release, sometimes for good reason. Also, it's been in =
Beta=20
forever, with no sign of emergence.
AEGIS: Seems to be total overkill. =
Aegis wants to=20
take over your entire lifecycle model, and I don't want that. I spent =
years=20
building CASE tools, and there simply doesn't exist a single, =
universally=20
applicable lifecycle management model. For starters, I just want =
configuration=20
management, but see below.
In short, nothing out there is =
currently doing the=20
job.
NON-ISSUES
I think that Josh McDonald has done =
some really=20
beautiful work on delta compression and storage, and that his network =
transfer=20
stuff promises to be just as good. I'm eager to use the network transfer =
stuff. Frankly, anything that just avoids *redundant* transfers is =
a damn=20
sight better than CVS; cleverness can come later. Also, I think that =
focusing on=20
delta compression is deferable. Disk space today is $1 per 100 =
megabytes. I=20
think delta compression is probably useful, but I also think that it =
adds a=20
*lot* of complexity to the storage manager and it can wait till version =
2. Get=20
the function right and then optimize the storage manager.
WHY:
In addition to simply getting =
configurations right=20
(obvious), there are some other issues:
Open source imposes some requirements =
for access.=20
Security certification imposes some requirements for access *control*. =
These two=20
issues cannot be managed by *any* current CM system, and this is my main =
motivator. We need a means to have branches that are tightly controlled =
by the=20
core developers, and simultaneously a means for any Tom, Jane, or Harry =
to make=20
changes in a local version for later submission into the pot. =
Further, we=20
need a means for corporations to build *private* branches that are not=20
externally visible until a release occurs (if ever). Finally, we need a =
system=20
that can let two companies set up a shared workspace with some =
reasonable story=20
for security.
In the limit, we need something =
programmable,=20
because we do need lifecycle integration but there isn't a single right=20
answer.
So that's what I'm trying to build =
here, in=20
stages.
Your thoughts, as always, are=20
appreciated.
------=_NextPart_000_0101_01BFA24A.EA08FB40--