== The origin of RCS (the version control system) Let's start with the tweets: > [[@johnregehr > https://twitter.com/johnregehr/status/426830492294332416]]: > quick! who remembers a revision control system before RCS? > > [[@thatcks > https://twitter.com/thatcks/status/426836819972751360]]: > 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 ../tech/ModernAgeGreatness]], 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 http://en.wikipedia.org/wiki/Source_Code_Control_System]], the first Unix version control system, first started appearing in in AT&T's [[PWB http://en.wikipedia.org/wiki/PWB/UNIX]]. PWB and things unique to it were not covered by [[AT&T's generous V7 university source code licenses UnixUniversitySourceCode]]; 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 http://en.wikipedia.org/wiki/Revision_Control_System]] comes from. As the Wikipedia entry helpfully mentions, [[Walter Tichy http://en.wikipedia.org/wiki/Walter_F._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 ../tech/ModernAgeGreatness]] 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 https://www.cs.purdue.edu/homes/trinkle/RCS/]] has some early RCS papers online.)