A former CMS user who is active in Unix talked about the strengths and weaknesses of each. He also reviewed a little ancient history for those of us who weren't around to see the birth of VM and Unix.
CMS and Unix both came to light under somewhat similar circumstances. Back in 1964 IBM implemented a precursor to VM on a 360/40. They named the operating system CP-40 and the text editor portion that ran under CP became CMS - the Cambridge Monitor System. CMS was written by a very small group of programmers who wanted a text editor for themselves. It was not intended that CMS or CP ever become commercial products. CP-40 begat CP-67 on the IBM 360/67, a real commercial venture and a direct ancestor of VM/370. Since the IBM TSS project was late in delivery, IBM supplied CMS with CP-67 because it was the only editor available. The rest is history.
Likewise, at Bell Labs, Ken Thompson and Dennis Ritchie discovered a PDP-7 laying around mostly unused. Thompson wrote a very small operating system for it to run Ritchie's space war game in 1968. Between that time and 1972 the little operating system became a bigger operating system and acquired some real operating system facilities. At the time of its rewrite in 1973 in C, Unix had become a favorite among PDP hackers at Bell Labs.
(C itself was created by Ritchie. Several years earlier Ritchie had been fooling with a sort of high-level assembly language called BCPL. He added a number of modifications to the language and renamed it simply "B". After using B awhile, he made some further minor changes and called the result "C". The name stuck, and C is likely to be with us for years.)
CMS has a number of good things going for it: it is elegant, intuitive, and VERY user-friendly. It allows the user to tailor his session to his needs and/or tastes. In recent releases there has been less emphasis on the virtual machine and more emphasis placed on actual applications.
Unix also has its attractions: it has a powerful command language, uniform file handling, an interprogram communication system, and a general mechanism for combining small functions into big ones. It is concise and portable; since it is written mostly in C, it runs on many different systems.
| CMS | Unix |
| Oriented to 3270 terminals | Supports mostly "glass TTYs" |
| Transmits and receives full screens | Transmits and receives individual characters |
| Commands translated to uppercase | Unix is always case sensitive |
| Provides recall of previous commands | Command recall provided by a nonstandard command shell |
| CMS minidisks (small 3380s) | Device independent file system |
| Only certain commands support generic filenames | Command shell expands generic filenames |
| Unused disk space cannot be used by other users | Space used not controllable by any central authority |
| Sharing is at the volume level | Sharing is at the file level |
| Minidisks are very reliable, system failure won't usually hurt them | File system is not very reliable, due to Unix's disk cacheing algorithm (there are many utilities to correct filesystem errors) |