[net.unix] RCS vs SCCS

eric@osiris.UUCP (Eric Bergan) (04/30/85)

	I realize that this has probably been discussed before, but please
bear with me. We are embarking on several large software development efforts,
which need the security a code control system offers. What we would like to
know is the relative benefits of RCS vs. SCCS. Is one overwhelmingly better
than the other? Are there any hidden "features" we should be aware of? What
have everyone's experiences been in using one system of the other? I
will summarize all results to the net. Thank you.

-- 

					eric
					...!seismo!umcp-cs!aplvax!osiris!eric

eric@osiris.UUCP (Eric Bergan) (05/06/85)

	I have gotten several replies to my original posting, including
some compendiums from earlier queries about the same issue. Below is
a sampling of the answers. No one who had used both recommended SCCS over
RCS.

--------------------------------------------------------------------------


From: Craig Partridge <umcp-cs!seismo!craig@loki.ARPA>

I think the general view is that RCS is better.  It is certainly my
view.  Here are my reasons:

	(1) RCS is sort of in the public domain.  (I think Tichy claims
	some minor rights).  SCCS isn't.

	(2) RCS does everything SCCS does (or did last time I checked).

	(3) RCS is faster.  RCS stores diffs to take you back from the
	most recent edition of the source.  SCCS stores changes forward
	from the first version.  So in SCCS you wait a while for
	your current file to retrieved.  In RCS there is no wait.

	(4) Personally I find the RCS interface more intuitive,
	even though I think the interface differences are minor.

From: Chuck Collins <umcp-cs!seismo!cpc@AMES-NAS.ARPA>

I have been working with RCS since last fall. I built a custom configuration
management tool for controlling numerous baselines of sources for numerous
machines for a large project at Ames Research. My tool is essentially a
front end, the back end of which is RCS. Subsequently, I ported the tool
to a machine without RCS, using SCCS instead. So I am familiar with the
differences in this context.

To give you an indication of how I feel about it, I wish I had a nickel for
everytime I've typed:

	get control.c

followed by

	get s.control.c

SCCS has a user interface that would make an MVS program proud, since indeed
that is where SCCS came from. In general, as I was learning RCS, I kept on


From: <umcp-cs!seismo!ut-sally!oakhill!mot!fred>

for maintaining the complete source of Unix System V for M68000 and for
many other projects, we use SCCS and have had no problems that i am aware of.
since we do not have RCS, i cannot offer a comparison.
	note that, to improve the security of SCCS, we use a set of front-end
tools, setuid-to-<magic name>, where <magic name> only has access to the files.
these tools have been described in recent issues of Computer Languages magazine.

From: umcp-cs!seismo!hadron!tsp (T. Scott Pyne)

  We have used both SCCS and RCS at Hadron for large (order of 5 person-year)
software development efforts within the past year.  The projects using SCCS
were done under Xenix 2.3; the projects using RCS, under 4.2BSD.  Our exper-
ience indicates that RCS is preferable, but not absolutely mandatory, on such
projects, for several reasons.  In no particular order, here they are:
  Integration of RCS with make (so make can check out a copy of something if
it isn't already checked out and available) is easier than with SCCS.  The RCS
filename syntax fits in well with make's dependency-calculation approach; the
"s." prefix convention of SCCS does not.  I have used the S/III and S/V make
which understands prefixes, but for my money RCS and make still get along bet-
ter.  In any case, the make we had under Xenix was V7, with none of the prefix
handling stuff.
  We perceive an advantage to RCS since it does not use non-printing characters
in its archive file. (SCCS uses ^A to mark its control lines.)  A minor point.
  RCS is much more intelligent about handling keyword substitution, in our opin-
ion.  SCCS barfs and gags if you check in, uh, delta, a file which has had the
SCCS "keywords" already substituted.  So, if you accidentally get a file with-
out the '-e' flag, modify it, and try to delta it back in, SCCS bitches about
"No ID keywords".  RCS, on the other hand, keeps the keyword itself in place
when it is expanded, so checking in a file with alreeady-expanded keywords is
no problem.  (In fact, RCS always expands keywords upon checkout, for editing
or otherwise.)  This issue would never come up if all of our people were per-
fect, but after 2 or 3 times of accidentally doing "get s.foo.c;vi foo.c;delta
s.foo.c" and realizing one had screwed up, RCS' forgiving nature is welcome.
(Yes, I also know about SCCS' approach to file permissions....)  Not to mention
the fact that RCS uses real *keywords* instead of %X%.  The meaning of %G% %U%
is nowhere near as obvious as $ Date: $.
  RCS' ability to associate names with rev levels is nice, and I have found no
counterpart in SCCS.  When an old version of a package needs to be remade, it
is easier to do "co -rlitton" than "get -r2.7 s.foo.c; get -r3.9 s.bar.c; ..."
(When we send a version of a package out the door, we check the sources in
all at once with the same name, as in "ci -ncustomer_name *.c *.h".  RCS is
also nice in that it will ask you if you want to reuse the first log entry
for subsequent checkins when multiple files are passed to a single ci.
  From a functional viewpoint, SCCS stores the root of the archive tree and
change sets for subsequent revisions, while RCS stores the most recent revision
verbatim and changes to work back to older versions.  Probably insignificant
unless you are worried about time to do the archive updates and retrievals.
  Last, our group seems to prefer the command structure and argument syntax
of RCS.  It is (seems?) simpler and more orthogonal.  The fact that RCS will
also automatically use the directory ./RCS for archive files is also nice,
in our opinion.  SCCS will not do this automatically, one must do things like
"delta SCCS/s.foo.c".  We like the idea of keeping the archive files from
cluttering up a source directory.
  The bottom line:  either one will suffice, but we prefer RCS.  We are more
productive with RCS; it seems to fit in better with our software engineering
approach; and I hear fewer bitches about using it (none, in fact) than about
SCCS.  We use RCS exclusively anywhere it is available, even if SCCS is 
available on the same machine.
  I apologize for being so verbose, but I hope this is of benefit.  Good luck,
whichever you choose.

From: umcp-cs!seismo!arnold@ucsf-cgl.ARPA (Ken Arnold)

SCCS has a lousy user interface, unless you get the sccs front end
written by Eric Allman at Berkeley.  I believe this is available with
4BSD, but I'm not sure.

Otherwise, SCCS and RCS are roughly equivalent. However, RCS puts its
files in a subdirectory, and keeps them out of your way.  the sccs
front end will do that for you, but without it, SCCS keeps everything
in the same directory, which is a pain.  RCS also works a bit better with
make, since it uses a suffix instead of a prefix to indicate its files.

The other advantage of RCS is that it is more portable, since it doesn't
require a special license from Bell, and is, unless I am much mistaken,
public domain.  This means that, if you want to send source around, you
can send them RCS if they don't already have it.

From: ihnp4!pur-ee!ef:malcolm (Malcolm Slaney)

I used SCCS back in 1978 or so when I was working with at IH.  I found
it to be an awful pain and not especially fun to use.  To sum up
my impression of SCCS, it was more trouble than it was worth.  The
SCCS package I was using had a whole bunch of shell scripts grafted
on top of SCCS and that only made things half palatable.

I've been using RCS since it first came out and I have found RCS a
joy to use.  I use RCS for everything I do.  It is very painless to
use and has saved me countless of hours.

From: ihnp4!aurora!eugene (Eugene miya)

The only real advantage is the improved SCCS has a somewhat better
make.

RCS is simpler in design and easier to understand and use.  This latter
includes things like file descrepancies (user problems) when they occur
(like a user checks a file in when he or she didn't really mean to).
There are a fair number of GCOS file system features which appear to
be hold overs from earlier days.  The UCB front end to SCCS makes the
SCCS system more useable, but I still prefer RCS.  Oh, performance,
since RCS keeps reverse diffs, if you are working with the most recent
versions, you save on check out time {since SCCS uses forward diffs}.

We have since dropped the use of SCCS including the Berkeley front end.
If you have any specific questions, I am open.  We didn't take any stats,
but you can contact Walter Tichy as he did the comparison work with RCS
(developer) and SCCS.

From: Guy Harris <ulysses!seismo!rlgvax!guy>

Well, we haven't used SCCS much, but what I've seen of it leads me to
believe that RCS meets our needs better than SCCS.

SCCS has a *lot* more "features" than RCS, but either we've never spent
the time to learn enough about them to make them useful or they really
aren't useful.  RCS has one *very* nice feature that I don't think
SCCS has - you can stamp a "symbolic version number" on a version of
a file.  This means that if you have, say, a program made out of five
source files, and you've just checked in, built, tested, fixed, checked in
again, ... Version 1.1 of that program, and you've just frozen it for
release, you can stamp the current RCS version of that with the symbolic
name "V1_1".  This means you can check out the Version 1.1 source by
saying "co -rV1_1 ...".

From what little playing I've done with SCCS, RCS seems easier to use - in
part because it isn't so feature-laden.  You can check out the latest
version of a file faster using RCS than using SCCS, because RCS stores the
latest version and "backward differences" giving the earlier versions, rather
than storing the initial version and "forward differences" as does SCCS.
RCS doesn't store branches this way, however; I don't know which one can
apply a given set of differences faster.

Being able to give the plain file's name (which RCS lets you do) rather
than the SCCS file's name is nice.  It's also nice to be able to stick
the RCS files in a subdirectory called RCS and not have to give the "RCS/"
when checking out/in.  Our operating system source has all the RCS files
on a separate file system, and the RCS "subdirectories" are actually
symbolic links.

-- 

					eric
					...!seismo!umcp-cs!aplvax!osiris!eric

cpc@AMES-NAS.ARPA (Chuck Collins) (05/07/85)

I talked to Walter Tichy not too long ago, and he insists that RCS is NOT public
domain. It is distributed with BSD source, but that doesn't give one the right
to give the source to others. Also, part of RCS is covered by AT&T source
license. Perhaps we could get a definitive statement from the author?

Chuck Collins                 cpc@ames-nas       {ihnp4,hplabs}!ames!amelia!cpc

phil@amdcad.UUCP (Phil Ngai) (05/08/85)

We ran into an issue here at AMD which Eric Bergan's summary did not
really cover. Some people touched on the issue but I believe they are
wrong. I hope I am wrong but I did ask Tichy and unless I misunderstood
him, there are some disadvantages which make RCS less preferable.
These disadvantages are more legal than technical but can not be ignored.

To start with, RCS is *not* public domain. Tichy owns it and in addition
it is contaminated with ATT code (parts of diff). Therefore you need a source
license to legally have RCS source. You need a binary distribution license to
distribute binaries. And, Tichy does not permit (I believe) people to sell
or otherwise make profit off his code.

On the other hand, SCCS comes with System III or V. Free. No extra work.

We have a couple of CPUs licensed for source and RCS is just fine there.
We have a lot of Unix workstations with binary licenses from various vendors.
Guess what came with them? That's right, SCCS. Not RCS.

I think Tichy's use restrictions are why the vendors did not include RCS.

I believe we are not allowed to put the RCS source on our non-source licensed
workstations and compile it and run the binaries. I also believe we are not
allowed to just buy source for one workstation, compile binaries, and put them
on all the other workstations unless we buy a binary distribution license,
even to distribute to ourselves.

It would be very easy to cheat and do it anyway but that is not how we
operate.

Since it is a pain to switch back and forth between systems we have to
chose the inferior system because it is more widely available. I doubt this
is what Tichy intended, but that's how it works out.

I would be happy to hear of vendors such as Sun who do include RCS.

In article <308@osiris.UUCP>, eric@osiris.UUCP (Eric Bergan) writes:
> From: Craig Partridge <umcp-cs!seismo!craig@loki.ARPA>
> 	(1) RCS is sort of in the public domain.  (I think Tichy claims
> 	some minor rights).  SCCS isn't.

Nope, it's contaminated with ATT code and Tichy owns the rest.

> From: umcp-cs!seismo!arnold@ucsf-cgl.ARPA (Ken Arnold)
> The other advantage of RCS is that it is more portable, since it doesn't
> require a special license from Bell, and is, unless I am much mistaken,
> public domain.  This means that, if you want to send source around, you
> can send them RCS if they don't already have it.

Nope, it requires a Unix source license to have it.

> From: Guy Harris <ulysses!seismo!rlgvax!guy>
> Well, we haven't used SCCS much, but what I've seen of it leads me to
> believe that RCS meets our needs better than SCCS.

Guy, does Sun offer it? If not, why not?
-- 
 I speak for myself and no one else.

 Phil Ngai (408) 749-5720
 UUCP: {ucbvax,decwrl,ihnp4,allegra}!amdcad!phil
 ARPA: amdcad!phil@decwrl.ARPA

arnold@ucsfcgl.UUCP (Ken Arnold%CGL) (05/09/85)

>From: Craig Partridge <umcp-cs!seismo!craig@loki.ARPA>
>	(3) RCS is faster.  RCS stores diffs to take you back from the
>	most recent edition of the source.  SCCS stores changes forward
>	from the first version.  So in SCCS you wait a while for
>	your current file to retrieved.  In RCS there is no wait.

This is a common piece of misinformation.  RCS does store backward
delta's, i.e., it stores the current version intact, and has deltas
backwards to get earlier version.  However, SCCS does NOT store forward
deltas from the original.  It uses in-line deltas, giving a fixed
one-pass overhead to get different deltas.  Thus, getting the current
version is slightly slower (I believe the figure is around 5% slower
than RCS), but getting the version one delta back (for doing a diff,
say), SCCS is faster by a small amount, and for anything more than one
delta, SCCS is MUCH faster.

In other words, to get a delta N deltas back from the top, it takes one
pass for SCCS and N passes for RCS.

None the less, I do prefer RCS, as you know if you read father into the
summary to get my comments.  This particular piece of "slander" against
SCCS should be cleared up.  It is unfortunate that RCS doesn't use this
technique.

guy@sun.uucp (Guy Harris) (05/09/85)

> I think Tichy's use restrictions are why the vendors did not include RCS.

I believe your statements about putting RCS on your other machines are
probably correct, but that wouldn't restrict vendors from offering RCS.
They already distribute binaries of "diff" with their machines, so they
could also distribute binaries of "rdiff".  I asked Tichy about distributing
RCS a while back (when I was at CCI - we weren't distributing it as part of
our system, even though we'd ported it and were using it heavily, because we
weren't sure what restrictions Tichy had put on redistribution) and I think
he said that you could redistribute it (in binary form) as part of a system
if you were distributing binary UNIX sublicenses with the system.

> Guy, does Sun offer it? If not, why not?

No, we don't offer it, nor do we use internally (sigh).  (We do use the SCCS
front end, which does sugar-coat it somewhat.)  We don't offer any of the
4.2BSD User Contributed Software except for netnews (I don't think we should
be distributing that, since it's the 2.10.2 that came with 4.2BSD and may
still have the line-eater bug, and since other people are already in the
"business" of distributing it).  I suspect it's either

	1) because somebody made a policy decision not to redistribute
	   that stuff because it'd add to our support burden or something
	   like that

or

	2) because nobody ever brought it up and nobody felt like
	   spending the effort to bring it up.

	Guy Harris

seifert@hammer.UUCP (Snoopy) (05/10/85)

In article <1271@amdcad.UUCP> phil@amdcad.UUCP (Phil Ngai) writes:

>I would be happy to hear of vendors such as Sun who do include RCS.

> Phil Ngai (408) 749-5720
> UUCP: {ucbvax,decwrl,ihnp4,allegra}!amdcad!phil
> ARPA: amdcad!phil@decwrl.ARPA


The "Auxiliary Utilities" package for Utek includes RCS.

Snoopy
tektronix!mako!seifert