vi
In 1976, at the University of California, Berkeley, Bill Joy faced a problem familiar to all programmers of that era: how to edit text decently on a UNIX system? The available tools, such as ed, were more akin to intellectual torture than programming assistance. Peter H. Salus did not hesitate to describe them as “the most user-hostile editors ever created”. Imagine working line by line, never seeing your entire text!
Joy, a graduate student, refused to endure this situation. He was already working on a Pascal interpreter and collaborating with Chuck Haley to improve ed. The university had a PDP-11, a modest machine compared to the PDP-10s that MIT or Stanford could afford. This hardware constraint pushed them to innovate differently, seeking efficiency rather than raw power.
The summer of 1976 brought an unexpected breakthrough. Joy and Haley discovered em (Editor for Mortals), created by George Coulouris at Queen Mary College. Here was an editor that dared to display two error messages instead of one and offered a more visual approach to editing. Nothing groundbreaking in itself, but enough to spark inspiration. The two colleagues then developed ex, whose “visual” mode would give birth to the name “vi”.
The genesis of vi owes as much to chance as to genius. Joy remembers designing the interface one Saturday in 1976, with the radio in the background broadcasting Jimmy Carter’s question-and-answer session shortly after his election. This anecdote reveals the relaxed atmosphere in which a tool destined to mark computing history was born. The editor integrated its innovations while adapting to existing terminals, notably the ADM-3A. The famous mode system—normal, insert, command—naturally arose from these technical constraints and the art of making the most of every keystroke.
Joy did not bother with sophisticated commercial channels to distribute his creation. He offered copies on 9-track magnetic tapes for $50, of which $40 went to fund development. This artisanal distribution met with unexpected success: hundreds of copies went to universities and laboratories. The technical superiority of vi over its competitors explained this enthusiasm, reinforced by its distribution with BSD, Berkeley’s version of UNIX.
The arrival of VAX machines in 1977-1978 gave the project a second wind. Joy adapted vi to the capabilities of these new machines, particularly exploiting virtual memory. Development progressed well until a technical incident changed everything: a tape drive failure caused the source code to be lost. The planned advanced features, such as multi-window support, were abandoned. Joy preferred to stabilize what existed and produce proper documentation.
The story took a surprising turn when AT&T incorporated vi into UNIX System V. Joy learned this news after the fact, discovering his editor as a standard throughout the UNIX universe. This decision was explained by the massive adoption of vi within Bell Labs itself. Paradoxically, this popularity created problems: each team maintained its own copy, wasting machine memory.
vi established an editing philosophy that still divides opinion. Its modal system requires substantial initial learning but then offers unmatched text manipulation power. Some find it too complex, others swear by its efficiency once mastered. This duality has persisted through the decades without losing its relevance.
The 1990s saw the birth of vim (Vi IMproved), which extended the legacy of the original editor while adding features expected by modern users. vi is present on all UNIX systems and their descendants, including Linux and macOS. Its influence extends beyond these boundaries, and many modern editors offer a “vi mode” to attract its devotees.
This longevity is surprising in a field where obsolescence is rapid. A tool designed in the 1970s continues to serve millions of users daily. This longevity stems from its formidable efficiency for certain tasks, its universal presence, and its proven reliability. System administrators and programmers appreciate its guaranteed availability and rock-solid stability.
The vi adventure illustrates the importance of initial choices in software design. The constraints that guided Joy—memory economy, optimal keyboard exploitation, compatibility with limited terminals—produced a tool whose utility transcends technological eras. This success reminds us that good software is judged not only by its features but by its conceptual coherence and its response to users’ fundamental needs. Fifty years after its creation, vi continues to prove this truth every day.