On Sat, Dec 14, 2024 at 6:43 PM Greg A. Woods <woods@robohack.ca> wrote:
Hi Marc,

This is more of an aside, but as a long time and ongoing SCCS user I've
wondered about the vc(1) command included in the SCCS tool suite.

So I was hoping you (or anyone else reading) might be able to shed some
light on its origins and maybe give, or point to, some examples of how
it was intended to be used, or indeed how it ended up being used.

I had completely forgotten about the vc command until I read this post. Vc was a language-independent macro processor mostly concerned with excluding or including lines of text based on the evaluation of logical expressions.

Even though "vc" stands for "version control," it has nothing to do with version control as that phrase is used nowadays. In the early 1970s where I worked at Bell Labs, we (or at least I) used the term "release" to refer to the different forms of a file as development proceeded, and "version" to refer to ongoing variants of the file. For example, there might be a version of some program for Southwestern Bell and a different version for New York Telephone. Those two versions were contained in the same identical sets of source files.

I just looked again at my 1975 paper and I don't think the word "version" appears anywhere. The terms "release" and "level" appear.

I designed vc, but it was implemented by a college student who was with us for the Summer. I credit a woman named Sabrina Feczko in my paper, and I think it was her. As I mentioned, vc was totally standalone so Sabrina didn't have to concern herself with all the squirrely code in the main part of SCCS.

Vc disappeared at some point. I don't think it was ever used, as it was intended for mainframe programs that were being developed (but not compiled) on PWB/UNIX. For UNIX development, C had its own macro processor.

Incidentally, UNIX had a different language-independent macro processor called m6. I think it was created by Doug McIlroy and Andy Hall, and, as I recall, that was even before UNIX became widely used. Hall's M6 implementation was in Fortran, possibly initially for the GE/Honeywell machines running at Murray Hill. Even before I'd heard of UNIX and before I did SCCS, I got the source from Andy and compiled M6 on our IBM mainframe. I'm sure Doug can provide a lot more information about M6. I recall once talking to Andy about a minor bug, and he said that he knew about it, had talked to Doug about it, and Doug said let it go. (I was just starting out at Holmdel and had never met Doug, Andy, or anybody else at Murray Hill. I didn't know it, but Ken and Dennis were writing the first version of UNIX around that time.)

Marc