The origin of RCS (the version control system)

January 25, 2014

Let's start with the tweets:

@johnregehr: quick! who remembers a revision control system before RCS?

@thatcks: SCCS. Bonus trivia: RCS exists because getting SCCS required paying AT&T extra money and universities don't have that.

I've mentioned this before in passing, but I might as well tell the full story (or at least folklore) here. The disclaimer is that this is the story as I heard it, not definitive history. A lot of Unix history goes around as folklore, or went around in the days when people were still passing Unix history around.

Version 7 Unix didn't ship with any version control system at all. SCCS, the first Unix version control system, first started appearing in in AT&T's PWB. PWB and things unique to it were not covered by AT&T's generous V7 university source code licenses; where you could get them at all (and I'm not sure outsiders could in any form before System III) AT&T apparently wanted extra money for them. Universities of course did not feel like paying extra money for niceties and anyways they weren't using PWB, they were using V7 or later BSD and so would have had to port anything they wanted from PWB to BSD. All of this meant that if you were using Unix at a university in the late 1970s and early 1980s you could look wistfully on SCCS from afar but you almost certainly could not get a copy.

Which is where RCS comes from. As the Wikipedia entry helpfully mentions, Walter Tichy wrote the initial version of RCS while at Purdue, where he had access to V7 and BSD but I assume not PWB. As the folklore goes, he wanted version control, could not get SCCS, and so wrote his own. As one did with Unix programs in an academic environment at the time, he released it for general use. Since quite a lot of universities were in a similar position of wanting some sort of version control on their Unix systems but not having SCCS, it got widely adopted.

As I mentioned before RCS required (V7) Unix source code (specifically for diff), which might strike you as odd if Tichy wrote it from scratch. As I remember the story, RCS required some additional diff features and and in an early 1980s university environment with V7 and BSD source code the easiest way for Tichy to get that was to modify the BSD diff to support what RCS needed. The reason you can get RCS widely today is GNU diff, which is both free and directly supports the features that RCS needs without any patching.

(I think that one of the diff features RCS needed was a three-way diff. I believe it may have also wanted a somewhat different format of diff output, given GNU diff's -n argument.)

(The official RCS home page has some early RCS papers online.)

Written on 25 January 2014.
« Things I want to remember during a security incident
Why writing sysadmin tools in Go is getting attractive »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sat Jan 25 00:20:55 2014
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.