There's also a GNU replacement CSSC[0]. I had to set this up at work 6-7 years ago to handle a very old code base that no one wanted to modernize. The repo was delivered to me on an old SCO system. I was able to move it to a modern system using CSSC, where it still lives today and needs almost no attention.
One benefit of these ancient tools is that they are effectively done. They've been beaten on for years; all behavior and quirks are well understood, and whatever the promised feature set is, usually exists and works exactly as promised.
I started with SCCS, then moved to RCS, then to CVS for a long while. I'm now an occasional Git user. The number one problem with SCCS is a locked checkout paradigm: one person gets to edit at a time. Also, it doesn't manage directories, only files. Read here for some alternatives: https://en.m.wikipedia.org/wiki/Comparison_of_version_contro...
Here's what Verity Stob has to say about vcses of that era: "Thus the workflow was: connect to the archive, check out and lock a good selection of vital files, edit them a bit, then depart for two weeks in Corfu without releasing locks, secure in the knowledge that, short of guessing your password, any progress on the project by colleagues was effectively prevented. Marvellous.". :-)
In the "old days" people were used to the locked checkout scheme, and we were afraid of merges. In a large code base most people were working on different files, so lock conflicts ("I want to edit a file but somebody else has it checked out") were fairly rare.
We used SCCS on a shared filesystem. If you really needed to edit a file somebody else had locked, you simply removed the lock file. Of course, social convention was that you better have a really good reason for doing that. If you went on vacation with files locked, it was pretty much expected that your locks would be removed, and that you'd have to merge or otherwise deal with your stranded edits.
I've worked with both SCCS, RCS, Perforce and git. The way SCCS and RCS did it was a pain, but Perforce's was IMO more feature than bug. When Perforce told me "uh, X is editing this file you're just about to edit", talking to X was usually a good idea for some reason I wasn't aware of. Sometimes X was working on one issue and I on another, and the deeper cause was actually the same. Sometimes X had forgotten to check in some work and would do so immediately when I asked.
Not always. But often enough that I liked those locks. (Hated the RCS/SCCS locks though. Those had far too much cost and offered too little value.)
Sometimes locking out files on complex changes has a better outcome than a modify-merge cycle I have found. This doesn't scale out to lots of engineers however.
If you're doing critical heavy lifting or refactoring, merging inline changes is hell.
Every team I’ve worked with has had an informal locking method that gets used for really disruptive work. Instead of locking files in the VCS, you tell everybody that you’re going to be doing X, try not to make changes around that, and coordinate with that person if you really need to make changes on the same stuff.
I think the informal technique works better since it’s a lot more flexible, but the basic concept is very useful.
I think it's somewhere inbetween, similar to the heirloom-doctools. You can interact with any live SCCS repo -- if you find any outside of BitKeeper (whose format seems to have diverged anyway).
And for some reason it's in POSIX. I'm pretty sure nobody even cares about its existence in POSIX, but it's technically there. Though I can't think of a single OS that ships SCCS; OpenBSD ships GNU CVS and their own RCS (OpenCVS is sadly in eternal limbo[1]), not sure what FreeBSD does. Linux distributions generally don't ship anything. And git has basically won anyway.
Work on OpenCVS started in 2004[1] and schwarze@ said last year that the project is "dormant" and in a state where "trying to use it in production revealed instabilities that were non-trivial to debug, and nobody did the work to get if from 'almost ready' to 'reliable'."
I'd wager historical artifact. The feature set in git alone steamrolls SCCS, and concurrency methods have decidedly moved away from lock in favor of merge. There's also been little activity in the last three years or so. I'd also wager there are still some good uses for it, and it's probably enjoying use by some folks still, but it looks like it's gone the way of CVS.
Actually this is a real relic (started in 1972!). The original open source (SCCS used to be proprietary) RCS tool that predates CVS (CVS was built on top of RCS) was meant as an alternative to SCCS, with similar functionality.
SCCS was horrible, even by CVS standards. I had the "pleasure" of using this on HP UX back in the day and it wasn't fun at all.
* File oriented, there is no concept of an atomic commit, change set or anything similar, every file is independently tracked - so your commit may fail halfway (e.g. because of a conflict) and the repo is left in an inconsistent state, with some files having their changes applied and some not. RCS and CVS have inherited this wonderful design trait too. One of major Subversion improvements over CVS was introduction of atomic commits that either succeed or fail but not break halfway.
* Locking. Yay. You checked out a file, it got locked. If you forgot about it and e.g. went on vacation or something, everyone else was screwed until you came back ... Even CVS was not working in this way.
* Frequent file corruption. Hacking the ,v files was frequent, sometimes you had to do it as root (e.g. in the above-mentioned case of a colleague on vacation leaving a file locked). Hopefully you had good backups ...
* Yay for the wonderful "comma vee" extension that meant this didn't work on anything but Unix and even there some tools choked on it. Same for RCS and CVS ...
* No way to access the repository remotely, except over NFS, with all the associated problems.
SCCS (and RCS) were really meant to version individual files, such as system configuration files. There it was working relatively OK. However, using this for actual source code on a larger project with multiple developers was a pure masochism. I can't imagine anyone using this today. Even CVS runs circles around it, not to mention Subversion, Git or Mercurial.
"Yay for the wonderful "comma vee" extension that meant this didn't work on anything but Unix and even there some tools choked on it. Same for RCS and CVS ..."
RCS and CVS use "filename,v". SCCS uses "s.filename".
If I'm not mistaken, one more is that the only fully stored file in SCCS is the first commit, from them on its just the deltas. Checking out a lot of files with a long commit history could take a while on the old hardware we had back when SCCS was more common. RCS improved in this by doing the reverse: the latest file is fully stored and deltas go backwards in time. Again, that's if memory serves correctly...
You are mistaken, while it is true that first revision is stored essentially as-is, this ceases to be true when you create another revision. SCCS stores all the revisions interwoven in single file (the format is called weave) by tracking on per-line basis the range of revisions that contained such line.
It is kind of amusing how tracking history has evolved over the years.
We started out with an initial version (of a file) and then tracking the changes since the beginning.
One of the major innovations with RCS was to track changes in reverse time, so that the latest version of the file was quickly accessible.
And with git and other DVCS, we're back to forward-time tracking of changes, but now with snapshots along the way to easily produce the current version on a branch.
While it's amusing to see someone still working on it, for new projects, if I was interested in not using git, I'd likely go for fossil just because it integrates many other useful tools like issue tracking. It is unfortunate that an integrated issue tracking never seemed to get widespread adoption in the git world.
In theory, Git doesn't store deltas. In practice, it uses packfiles which store some objects as diffs against other objects. (As I understand it, though, it doesn't do this strictly by time, it has some heuristics to find the most similar other object which may pick completely unrelated objects if they're similar enough.)
My understanding is that that's an optimization for space and only used for much older commits. Pack files aren't needed in or present in every repository. They're more an archive than part of everyday usage is my understanding.
A single department of one organization, eight years ago, which you migrated to something else? You seem to be contradicting yourself. Any current use of SCCS would exceed my expectations, but I'm quite confused by your example.
When I said that there was SCCS in use at a major bank in 2010, the hope therefore was that the reader would think "that probably means that SCCS is in use elsewhere".
From my point of view this is primarily a historic artifact, with limited practical use. As I mentioned in another comment, my projects (at Sun in the 1980s and 1990s) used SCCS on shared filesystems. For day to day work everything has long since moved to other VCSes such as Git and Mercurial.
The JDK sources were maintained in SCCS (which was wrapped within CodeManager/Teamware) prior to being open sourced in 2007. The history in the OpenJDK repositories goes only back to that time. The (Oracle internal) archives of previous versions of the JDK, which date to before JDK 1.0, are still in SCCS format. I'll occasionally browse through the ancient history of these sources using Schily's SCCS implementation. What's cool is that all my old shell aliases and functions still work. Of course this is browsing/viewing only. I haven't checked in an edit using SCCS in decades.
1. git, until very recently (but haven't checked), requires you to check out the whole repo even if you're just interested in only a subdir or single file
2. Suppose you're implementing a Wiki where docs are version-controlled on a fs mounted by the web server. git doesn't really fit this use case since you'd need a shared checkout dir, whereas eg. RCS does, provided locking is accepted or even preferred
3. on-site version control of config files in /etc when you don't do full-blown DevOps
Because they want a DVCS that has less characters in its name, to save on typing? Mercurial [0] is a fairly popular choice these days, I believe, and uses 'hg' as its command line tool.
One benefit of these ancient tools is that they are effectively done. They've been beaten on for years; all behavior and quirks are well understood, and whatever the promised feature set is, usually exists and works exactly as promised.
[0]: https://www.gnu.org/software/cssc/