Connection with SCCS group
The TUHS CB-UNIX readme says "Bill Snider and Hal Pierson were really instrumental in taking UNIX from research and applying it to SCCS (Switching Control Center System). I worked with them when I first hired on. When we first used UNIX on an 11/20 with core memory it was written in assembler (1974)" - which I find confusing as SCCS seems to be in Holmdel? I suspect the connections between SCCS (which eventually did USG UNIX) and the Columbus group are more intertwined than it sounds. Jnc (talk) 20:23, 2 October 2021 (CEST)
First-hand data on the origins of CB-UNIX
A recent note about the origins of CB-UNIX from Dale DeJager, who was head of the group in Columbus which did CB-UNIX:
The Switching Control Center System (SCCS) was the first project outside of the patent office and research to use the UNIX system. (Note the possible confusion of acronyms: this SCCS is not the Source Code Control System SCCS.) The project was started in 1972/73. I hired into Bell Labs in August of 1973. Hal Pierson and Bill Snider were already working on the project. The supervisor on the project was John Carran. At that time it was running the assembler version of UNIX on the 11/20 with core memory, but was moved to the C-based system as soon as it was available from research. (The beta version of SCCS based on the assembler version of UNIX was deployed to NJ Bell in New Brusnwick, NJ, I believe.) The purpose of the system was to collect all the TTY data that came from a set of 10 to 20 ESS (Electronic Switching System) machines, scan the data and alert a centralized team when something was wrong. The system also allowed centralized staff to control the console of the remote ESSs. This avoided having to staff all the offices 24/7 in the unlikely event that something would go wrong with an ESS.
In the fall of 1974 the all of the SCCS team which was based in Holmdel, NJ at the time, was transferred to Columbus Ohio.
One of the main issues that SCCS initially had with UNIX was the need to collect async TTY data in an efficient manner on a limited machine like the PDP 11/20. Hal and Bill solved this problem by creating a special character device in UNIX called a multiplexor. (The multiplexor also allowed DMA into user space.) Think of this as something like a socket interface. A user program could attach serial TTY interfaces to the multiplexor and then read a single multiplexor interface that would return data from any of the interfaces attached to it, along with a tag that indicated which interface the data came from. Hal also implemented some basic P/V and post/block semaphores in the system.
Aside: Hal also implemented the first file system check routine that was written in C. It replaced an obtuse assembler version from research which simply prompted with an inode number and count.. Bill implemented line disciplines. We also implemented terminal types to allow applications to be independent of specific control sequences for various CRT displays. (This was separate from, but similar to the termcap library that came slightly later (from UCB?)).
In 1974/75 I worked on a the process in the SCCS that was called the Alerter using some of the IPC features. (It scanned all the data from the ESSs looking for problems and alerted the operators when something was amiss.) I gradually became much more involved in supporting the UNIX system for the SCCS until this was my full-time job as a Member of Technical Staff in Columbus.
Other OSSs (Operating Support Systems -- to support operations of the Bell System network) began to be developed in Columbus and these systems started with the UNIX modifications that were added for SCCS. Rather than have each OSS have its own UNIX person or persons, the CB-OSG (Columbus Operating Systems Group) was formed in January of 1977. I was named the supervisor of that group in January of 1979.
The CB-OSG produced and supported multiple releases of CB-UNIX for OSSs, primarily, but not exclusively based in Columbus. CB/UNIX was always based on the C version of UNIX and initially ran on the PDP-11, but was also supported on the VAX product line as it became available from DEC.
Significant enhancements in the kernel of CB-UNIX included: IPC (shared memory, messages, semaphores and extended signals), multiplexed character devices, line disciplines, terminal types, automatic power-fail restart, named pipes, enhanced scheduler and process locking. In user space there were also a number of enhancements including a new /etc/init process that implemented run levels allowing different sets of processes to be started and stopped and enhancements to UUCP for better control of various modems. I recall going to USENIX meetings in the 1978-1981 time frame, and being frustrated in conversations with Dave Yost (RAND?) and Bill Joy by AT&T's policies that prevented us from sharing these technologies.
The CB-UNIX group was disbanded in 1981 when CB-UNIX 2.3 was released and it was determined that needed features for OSSs would be incorporated in UNIX 4.0. This was consistent with the reorganization within Bell Labs to support UNIX from the UNIX lab in NJ. Prior to this time it was recommended (by the MOPS committee) that the OSSs adopt UNIX/RT (based on MERT), but this never really caught on due to the overhead of MERT and the need to move to a new system.
The Switching Control Center System Department never funded the USG. As I recall the USG was formed in MH to support UNIX for use within Bell Labs and the supervisor of that group was Joe Maranzano and the Department Head was Berkeley Tague.