# The Librarian (version control system)

The Librarian is a version control system and source code management software product originally developed by Applied Data Research for IBM mainframe computers. It was designed to supplant physical punched card decks as a way of maintaining programs, but kept a card model in terms of its interface. During the 1970s and 1980s it was in use at thousands of IBM mainframe installations and was one of the best-selling software products in the computer industry.
After Applied Data Research was acquired by Computer Associates in 1988, the product became known as CA-Librarian. After that company was acquired by Broadcom in 2018, the product became known simply as Librarian.

## History

Most computer source programs in the 1960s were kept on punched cards, which was problematic due to the amount of physical space they took, the constant chance of card decks being dropped or otherwise damaged, and problems with keeping a history of changes to the program. Even into the mid-to-late 1970s, when other forms of computer input emerged, the punched card deck was still the most important of these, and this was also true for the source code for computer programs themselves.
During its early years, Applied Data Research (ADR) was developing Autoflow, a program for automatic flowcharting, which is often cited as one of the first commercial software applications. The ADR staff wanted something to help manage the increasing size of the Autoflow source code base. Martin Goetz, an ADR co-founder, had used the UNITYPER system during a prior employment with Sperry Rand. This device wrote typed input onto a metal magnetic tape. Goetz realized that source code did not have to live on punched cards, but instead could be kept in stable magnetic storage; a program called the Librarian that did this was then built for in-house use.
ADR employees realized that what was valuable to them would be valuable to others. At first, Librarian was offered as part of ADR's Autoflow, and other software packages. This arrangement was in place by 1969. At this point, Librarian master files were kept on magnetic tape; an advertisement that ADR ran in Datamation in 1970 related the story of being able to save Librarian tapes when a fire broke out, whereas it would have been impossible to save the equivalent amount of source code had it been in punched card file cabinets.
Soon, ADR recognized that Librarian had a market of its own. By 1971, advertisements were running for the Librarian in Computerworld that did not mention it in connection with any other ADR products. A shift was made to Librarian master files being kept on mainframe disk drives, with ADR saying that data compression was used to keep disk drive usage to a minimum.
   "The Librarian ... took off very quickly. It was very well priced. Its practicality and its functionality were obvious. Companies were not happy maintaining card decks and if you replace a card with another card there is absolutely no way of keeping track of it; so from an auditing perspective, forgetting about security, there was no way to maintain an audit trail of changes you made to a program. It was just sort of an obvious type of application, so we sold lots of systems. They were low priced and sold very quickly. It was always very profitable for ADR."
—Martin Goetz in 2002
The Librarian quickly found success in the market and began being used by a large number of installations. The Librarian, along with Autoflow, became responsible for much of ADR's revenue and rapid growth as a company. Per a survey that ADR conducted amongst its customers, use of the Librarian significantly increased programmer productivity, especially in the areas of ongoing maintenance and enhancement of existing applications. Buoyed by this, ADR introduced other software packages in the category of programming tools.
By 1973, the Librarian had garnered a spot in the Datapro Research Corporation's Software Honor Roll for the number of customers and associated satisfaction that the package had, based on surveys conducted by Datapro. It made the Honor Roll in subsequent years as well. One 1979 analysis of software packages for IBM mainframe environments rated the Librarian as one of the few packages that excelled both in total number of installations and total amount of sales volume.
According to sales figures given to International Computer Programs, Inc. (ICP), by 1977, the Librarian was in use at some 3,300 sites – the most of any such software package it was tracking – and had aggregate sales revenues of over $10 million. By 1979, that number had increased to 4,500 installations. In 1982, ICP gave The Librarian an award for $50 million in total sales.
In 1985, the Librarian was named by ICP as a recipient for the $100 Million Award, again reflecting lifetime aggregate sales. It was one of only a handful of system software products to reach that level. This was followed in 1989, when ICP gave an award for $250 million in total sales for Librarian.
Throughout much of its existence, Librarian's main competitor was the Panvalet product from Pansophic Systems. It had roughly the same number of installations as the Librarian. As recollected by Pansophic's founder, Joseph A. Piscopo, "Panvalet and Librarian basically divided the program library market between the two of them.... Virtually everyone ended up with one or the other of the products."

## Operation

The punched card was at the time the model for many kinds of computer input, including for those representing source code. The Librarian works by interspersing its own control cards with the source program cards. These could be physical cards, or later, lines in a file kept on disk and shown and edited on display terminals. In any case, the Librarian operated under a batch processing model.
Librarian control cards begin with a hyphen. Some, such as -DESC, -PGMR, and -LANG, are used to provide basic identifying information about a Librarian module. For the language, some typical values are ASM for 370 Assembly language and CBL for COBOL.
The Librarian makes use of sequence numbers in the source file. Traditionally these occurred as columns 1–6 of a COBOL line (before the continuation indicator in column 7, area A starting in column 8 and area B starting in column 12), or columns 73–80 of a 370 Assembly language line, likewise columns 73–80 for FORTRAN, and so forth. For instance, on the Librarian -ADD control card, which adds a new source module to Librarian, the option SEQ=COBOL indicates that the sequencing numbers to Librarian should match those normally used in COBOL programming.
The main control cards used in modifying existing programs are -INS, -REP, and -DEL. An example set of cards to update a COBOL program might be:
The -INC control card can be used for including the source of another module into this one. It serves as an extralinguistic feature for programming languages or kept data that do not have an include directive of any kind or for shops that prefer that the source configuration system do inclusions even for languages that did have such a directive. Librarian users have control over under which circumstances, or phase, any -INC statements would be expanded. For instance, the inclusion will be done by a -SEL modname operation but not by a -PUNCH operation. In practice, however, inclusion of this kind can also be done using language-specific constructs, such as the COBOL COPY statement.
While Librarian insert/replace/deletion operations were tractible for modifications to existing code, they were an awkward vehicle in which to write new programs, where large numbers of changes or refactorings would often take place. One practice to work around this was to keep the program in a file in an online, interactive environment with a text editor, such as Source Program Maintenance Online running under CICS, that would be repeatedly submitted for batch compiles or assemblies. The file would comprise something like:
In this way, the module under development could be edited within the online text editor rather than with Librarian control cards, but the latest iteration would still be preserved within Librarian between batch compiles. Once the program was in a working state, however, normal Librarian updates would be done in order to keep track of changes to the module. Later, a workflow such as this could be done via the editor in the IBM ISPF facility.
In addition to keeping track of the history of changes to modules, the Librarian had features that supported the auditability, integrity, and recoverability of the master file of source modules.

## Releases

The Librarian went through a series of releases, both to add new functionality and to support changes in IBM mainframe environments. For instance, a new release in 1976 added support for the OS/VS1 and OS/VS2 operating systems. An illustration of an enhancement was the addition of the LIB/AM interface in 1983, which allowed the Librarian to appear like a partitioned data set to certain programs and utilities. Some of ADRs other offerings were integrated with the Librarian, for instance its Datadictionary product.
By 1981, Release 3.0 of the Librarian was out. Release 3.4, made in 1985, added support for the more interactive VM/CMS operating system and ISPF environment, both at the CMS command line and in ISPF panels and menus and editors. By 1986, the Librarian Release 3.5 was out, introducing a Change Control Facility for greater management and awareness of the software development cycle. Early 1988 saw version 3.7 which added the Change Control Facility to the CMS/ISPF environment Release 3.8 of the Librarian came out later in 1988, just as the product was being acquired by Computer Associates. It added the Librarian/Change Control Facility functionality for the DOS/VSE platform.

## Later years

Over time, approaches to version control began to move away from the Librarian model, with the Source Code Control System (SCCS) being an important early alternative. This was, as one of the creators of it said, "a radical departure from conventional methods for controlling source code", and gave more flexibility for complicated situations such as branching. SCCS was actually originally written for IBM OS/370, but found favor on the UNIX operating system for the PDP-11 where it was included in the Programmer's Workbench.
Nonetheless, the IBM mainframe world still went on. In 1988, ADR was acquired by Computer Associates (CA). The ADR product then became known as CA-Librarian. CA made enhancements to some of its other products to integrate with CA-Librarian. By 2003, version 4.3 of CA-Librarian was available, and was billed as being part of CA's AllFusion product suite. Release 4.4 of CA-Librarian appears to have come out in 2010.
In 2018, Broadcom Inc. acquired CA Technologies (the latest name for Computer Associates). The product name then became simply Librarian, although the CA-Librarian name did not disappear.
As of 2023, the Librarian is part of Broadcom's Mainframe Software line under a category for DevOps-related products. The current product version is Librarian 4.4.
The 2022 book Modern Mainframe Development, published by O'Reilly Media, lists CA Librarian as one of the source control systems still in use by mainframe developers, along with a few others such as IBM Software Configuration and Library Manager and ChangeMan ZMF from Micro Focus.