<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://excalibursheath.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://excalibursheath.com/" rel="alternate" type="text/html" /><updated>2026-10-11T18:21:50-06:00</updated><id>https://excalibursheath.com/feed.xml</id><title type="html">Excalibur’s Sheath</title><subtitle>ExcaliburSheath.com explores Linux system administration, command-line mastery, and cybersecurity through practical articles, detailed guides, and hands-on tools. Focused on clarity and real-world application, it helps users navigate system internals, secure their environments, and build lasting technical skills.</subtitle><author><name>Jordan McGilvray</name></author><entry><title type="html">DOS to Windows: Microsoft, IBM, &amp;amp; Novell</title><link href="https://excalibursheath.com/article/2026/10/11/dos-to-windows.html" rel="alternate" type="text/html" title="DOS to Windows: Microsoft, IBM, &amp;amp; Novell" /><published>2026-10-11T11:00:00-06:00</published><updated>2026-10-11T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/10/11/dos-to-windows</id><content type="html" xml:base="https://excalibursheath.com/article/2026/10/11/dos-to-windows.html"><![CDATA[<p>In the previous article, we explored <a href="https://excalibursheath.com/article/2026/10/04/linux-family.html">the Linux family</a>, following the development of the Linux kernel and the operating systems built around it. Although Linux did not inherit the original UNIX source code, it implemented many of the same concepts and interfaces. Linux distributions share a common kernel while differing in their software, configuration, and development approaches.</p>

<p>The IBM-compatible PC took a different path. UNIX grew out of systems designed for multiple users sharing resources. Early personal computers were generally built for one person at a time. DOS became their common operating environment, allowing software to run across computers from different manufacturers. As PC hardware improved, the limitations of DOS became harder to ignore.</p>

<p>IBM and Microsoft initially cooperated on OS/2 as a successor to DOS, while Microsoft continued developing Windows as a graphical environment. Their partnership eventually ended, and Microsoft pursued Windows NT as a separate operating-system architecture. For several years, DOS-based Windows and Windows NT developed alongside one another before Microsoft consolidated its desktop operating systems around NT. Other companies developed DOS-compatible systems, and open-source projects have kept parts of that history alive.</p>

<p>Before looking at Windows and OS/2, it helps to understand what DOS provided, where it came from, and why replacing it proved difficult.</p>

<h2 id="dos">DOS</h2>

<p>DOS, short for Disk Operating System, became closely associated with the IBM PC and its compatible descendants. Although several unrelated operating systems used the name DOS, the PC-compatible DOS family became particularly influential because of the widespread adoption of IBM-compatible hardware.</p>

<p>DOS loaded programs, managed files and disks, and provided basic access to hardware. On an early PC, with limited memory and processing power, those services were enough to make the computer useful without consuming resources that applications needed.</p>

<p>DOS also incorporated ideas from other operating systems as it developed. Microsoft was already working with UNIX through its XENIX product, and <strong>MS-DOS 2.0</strong> introduced hierarchical directories, file handles, input/output redirection, and pipes influenced by that experience. Although these features resembled their UNIX counterparts, their implementations differed. DOS pipes, for example, used <em>temporary files</em> to pass data between sequentially executed programs rather than connecting concurrently running processes.</p>

<h3 id="cpm-and-the-origins-of-pc-dos">CP/M and the Origins of PC DOS</h3>

<p>Before the IBM PC appeared, Digital Research’s CP/M was an important operating system for microcomputers. CP/M gave programmers a common set of operating-system services, even when the computers themselves differed. That made it easier to bring applications to more than one machine.</p>

<p>IBM needed an operating system for its new Intel 8088-based PC. Microsoft supplied one, although the software did not begin as a Microsoft product.</p>

<p>Seattle Computer Products had created an operating system called 86-DOS, initially known as <em>QDOS</em>, for Intel 8086-based computers. Its design drew upon familiar CP/M conventions while providing an operating environment for the newer processor family.</p>

<p>Microsoft acquired the necessary rights to 86-DOS, adapted it for IBM’s hardware, and supplied it for the IBM PC. IBM distributed the resulting operating system as <strong>PC DOS</strong>, while Microsoft licensed <strong>MS-DOS</strong> to other computer manufacturers.</p>

<p>IBM sold PC DOS with its machines, but manufacturers building compatible PCs could license MS-DOS from Microsoft directly. That arrangement helped establish DOS as a common platform beyond IBM hardware.</p>

<h3 id="the-dos-operating-environment">The DOS Operating Environment</h3>

<p>DOS presented users with a command-line interface. Commands such as <code class="language-plaintext highlighter-rouge">DIR</code>, <code class="language-plaintext highlighter-rouge">COPY</code>, <code class="language-plaintext highlighter-rouge">DEL</code>, and <code class="language-plaintext highlighter-rouge">CD</code> allowed users to inspect directories, manage files, and navigate storage devices. Batch files made it possible to execute sequences of commands automatically.</p>

<p>Storage devices were identified by drive letters, while files were organized into directories. Early DOS releases used the FAT filesystem, which would remain closely associated with Microsoft operating systems for decades.</p>

<p>From the familiar <code class="language-plaintext highlighter-rouge">C:\&gt;</code> prompt, a user could start a program, copy a file, or run a batch script. There was no desktop to navigate; the command line was the interface.</p>

<p>Traditional DOS was primarily a <strong>single-user, single-tasking environment</strong>. A program generally received control of the computer until it finished or returned control to DOS. Applications could use terminate-and-stay-resident techniques to provide limited background functionality, but DOS did not offer the kind of protected, preemptive multitasking associated with more sophisticated operating systems.</p>

<p>Memory management presented another difficulty. The original IBM PC architecture and DOS programming model imposed practical constraints on how applications used memory. <strong>Conventional memory</strong> was limited to the first <strong>640 KB</strong> of the address space, while additional memory required specialized techniques and software.</p>

<p>Expanded memory, extended memory, memory managers, and DOS extenders helped applications use increasingly capable hardware. These approaches improved what DOS systems could accomplish, but they also introduced configuration complexity.</p>

<p>Hardware compatibility presented similar challenges. Applications, particularly games, frequently interacted directly with video adapters, sound cards, and other devices. That approach could provide excellent performance, but it also meant that software sometimes required configuration for specific hardware.</p>

<p>Those limitations mattered, particularly as PCs grew more capable. But DOS ran on modest hardware, and the amount of software written for it made switching operating systems difficult.</p>

<blockquote>
  <p>DOS compatibility helped establish a common software environment across IBM-compatible PCs, even when the computers came from different manufacturers.</p>
</blockquote>

<h3 id="ibm-pc-dos-and-microsoft-ms-dos">IBM PC DOS and Microsoft MS-DOS</h3>

<p>IBM PC DOS and Microsoft MS-DOS shared their origins and remained closely related through much of their development. Nevertheless, they were distributed by different companies and gradually acquired their own features, utilities, and release schedules.</p>

<p>IBM continued developing PC DOS after Microsoft’s attention increasingly shifted toward Windows. PC DOS 7, released in 1995, included additional utilities and improvements, while PC DOS 2000 represented a later release of IBM’s DOS family.</p>

<p>Microsoft’s standalone MS-DOS releases ended with <strong>version 6.22</strong>, although DOS continued as a component of Windows 95, Windows 98, and Windows Me.</p>

<h3 id="digital-research-and-dr-dos">Digital Research and DR-DOS</h3>

<p>Digital Research, the company responsible for CP/M, developed its own DOS-compatible operating system.</p>

<p>DR-DOS was designed to run software written for MS-DOS while offering competing features and utilities. Its releases included improvements to memory management and system configuration that made it attractive to users attempting to get more from DOS applications.</p>

<p>The important distinction was compatibility, not ownership of the code. DR-DOS could run DOS applications by providing the services those programs expected.</p>

<p>Novell subsequently acquired Digital Research and released Novell DOS 7. The product later passed through additional ownership and development arrangements, including Caldera’s involvement.</p>

<p>The competition between Microsoft and Digital Research also produced controversy. The Windows 3.1 beta releases included the <strong>AARD code</strong>, which detected certain non-Microsoft DOS environments and displayed compatibility warnings. Compatibility was not just a technical concern. It was also a commercial one.</p>

<h3 id="other-dos-implementations">Other DOS Implementations</h3>

<p>DR-DOS was not the only alternative. PTS-DOS provided another DOS-compatible implementation, while ROM-DOS was designed for environments where DOS functionality could be embedded in firmware or specialized devices.</p>

<p>PTS-DOS and ROM-DOS also showed how the DOS-compatible environment could be adapted to different uses.</p>

<p>A DOS program was no longer necessarily tied to one PC manufacturer or one DOS vendor. That expectation of compatibility would shape the next generation of PC operating systems.</p>

<h2 id="the-lighter-side-of-dos">The Lighter Side of DOS</h2>

<p>Not every DOS program was intended to do useful work. Some were written to experiment with the hardware, change the command prompt, or simply amuse whoever happened to be sitting at the computer.</p>

<h3 id="love-dos-and-hate-dos">Love-DOS and Hate-DOS</h3>

<p>Love-DOS and Hate-DOS were novelty command interpreters that changed how the computer responded to its user. Rather than replacing DOS itself, they altered the command-line experience by displaying affectionate or insulting messages.</p>

<p>I remember trying both programs and enjoying their unexpected responses. They also took advantage of a useful DOS feature: the <strong>command interpreter</strong> was separate from the operating-system services. You could replace the shell without replacing DOS itself.</p>

<h3 id="helpmecom--speech-through-the-pc-speaker">HELPME.COM — Speech Through the PC Speaker</h3>

<p>Another DOS program I remember is <code class="language-plaintext highlighter-rouge">HELPME.COM</code>. When I was young, my father called me into the computer room to hear a program that made the computer speak. A voice called for help, claiming to be trapped inside the machine.</p>

<p>The original IBM PC speaker was designed primarily to produce simple tones and alerts. By controlling the speaker rapidly, programmers could reproduce more complex sounds, including recognizable speech. The quality was limited, but hearing a computer speak without dedicated audio hardware was impressive at the time.</p>

<p>Years later, I found another copy of <code class="language-plaintext highlighter-rouge">HELPME.COM</code> and ran it through DOSBox for my own children. Initially, the speech played too quickly to understand. Some early programs depended upon processor timing rather than an independent clock, and modern computers can execute their instructions much faster than the original hardware.</p>

<p>Reducing DOSBox to approximately <strong>900 CPU cycles</strong> allowed the program to play at a recognizable speed. Once I adjusted the timing, I could hear the same little program my father had shown me years earlier.</p>

<p><a href="/assets/files/helpme.zip">Download the historical HELPME.COM archive</a></p>

<p>The archive contains historical DOS software intended for use in a compatible environment such as DOSBox.</p>

<blockquote>
  <p>When trying early DOS software in DOSBox, processor timing can matter as much as software compatibility.</p>
</blockquote>

<h2 id="dos-version-table">DOS Version Table</h2>

<p>Microsoft’s DOS releases illustrate how the operating system evolved alongside IBM-compatible hardware. Early versions provided basic file and program management, while later releases introduced support for larger storage devices, more sophisticated memory management, and improved utilities.</p>

<p>The dates identify major releases rather than the length of their support.</p>

<table>
  <thead>
    <tr>
      <th>Year range</th>
      <th>OS and Version</th>
      <th>Notable Features</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1981–1982</td>
      <td>MS-DOS 1.x</td>
      <td>Basic command-line environment, FAT12 floppy disk support, and original IBM PC compatibility.</td>
    </tr>
    <tr>
      <td>1983</td>
      <td>MS-DOS 2.x</td>
      <td>Hierarchical directories, hard disk support, device-driver improvements, and UNIX-influenced features such as I/O redirection.</td>
    </tr>
    <tr>
      <td>1984–1987</td>
      <td>MS-DOS 3.x</td>
      <td>Expanded hard disk support, larger disk partitions, networking-related capabilities, and improved support for evolving PC hardware. <strong>Significance:</strong> DOS matured from an operating system for early floppy-based PCs into a more capable environment for hard-disk-equipped and networked IBM-compatible computers.</td>
    </tr>
    <tr>
      <td>1988</td>
      <td>MS-DOS 4.x</td>
      <td>Support for larger partitions, DOS Shell, and additional utilities, although early releases had reliability concerns.</td>
    </tr>
    <tr>
      <td>1991–1992</td>
      <td>MS-DOS 5.x</td>
      <td>Improved memory management, DOS Shell, full-screen editor, and enhanced utilities.</td>
    </tr>
    <tr>
      <td>1993–1994</td>
      <td>MS-DOS 6.x / 6.22</td>
      <td>Disk utilities, memory management improvements, file transfer tools, and disk compression support. <strong>Significance:</strong> MS-DOS 6.22 became the final standalone retail MS-DOS release, representing the mature form of Microsoft’s traditional DOS environment.</td>
    </tr>
    <tr>
      <td>1995</td>
      <td>MS-DOS 7.0</td>
      <td>DOS component supplied with Windows 95. The Windows VFAT layer supported long filenames, while traditional DOS programs generally accessed their 8.3 filename aliases.</td>
    </tr>
    <tr>
      <td>1996–1999</td>
      <td>MS-DOS 7.1</td>
      <td>DOS component associated with Windows 95 OSR2 and Windows 98, including FAT32 support.</td>
    </tr>
    <tr>
      <td>2000</td>
      <td>MS-DOS 8.0</td>
      <td>DOS component supplied with Windows Me, with restrictions on conventional real-mode DOS startup.</td>
    </tr>
  </tbody>
</table>

<p>The later DOS versions in the table shipped inside Windows. DOS was no longer always sold as a separate product, but it was still there.</p>

<h2 id="os2">OS/2</h2>

<p>Intel processors were gaining capabilities that traditional DOS could not use directly, including protected memory and better support for multitasking. IBM and Microsoft began work on OS/2 to take advantage of that hardware.</p>

<p>Unlike early Windows, OS/2 was intended to replace DOS as the operating system, not merely provide another interface above it.</p>

<h3 id="ibm-and-microsofts-partnership">IBM and Microsoft’s Partnership</h3>

<p>The original OS/2 was developed for Intel 80286-based computers, taking advantage of the processor’s protected mode.</p>

<p>Protected mode offered mechanisms for managing memory and separating operating-system functions from applications. OS/2 also supported <strong>preemptive multitasking</strong>, allowing the operating system to schedule execution among programs rather than relying entirely on applications to cooperate.</p>

<p>OS/2 1.0 arrived without a graphical desktop. <strong>Presentation Manager</strong> followed in OS/2 1.1, giving users a graphical interface for OS/2 applications.</p>

<p>OS/2 also introduced features such as the High Performance File System, or HPFS, which addressed limitations associated with FAT filesystems.</p>

<h3 id="the-ibmmicrosoft-split">The IBM–Microsoft Split</h3>

<p>Windows 3.0 sold well, and Microsoft increasingly favored Windows over the jointly developed OS/2. The companies disagreed about where PC operating systems should go next.</p>

<p>IBM continued OS/2 development after the partnership ended. Microsoft concentrated on Windows and the new NT architecture.</p>

<h3 id="os2-2x-and-workplace-shell">OS/2 2.x and Workplace Shell</h3>

<p>IBM’s OS/2 2.0 introduced a substantially expanded 32-bit environment and the <strong>Workplace Shell</strong> desktop.</p>

<p>Workplace Shell used an object-oriented approach to desktop interaction. Files, folders, applications, and other resources were represented through objects with associated behaviors and properties.</p>

<p>OS/2 also maintained compatibility with DOS applications and supported selected Windows applications through compatibility facilities.</p>

<p>IBM promoted OS/2 as an operating system capable of running DOS, Windows, and native OS/2 applications. That compatibility was important because the existing DOS and Windows software libraries were already substantial.</p>

<p>Running existing software helped, but users also needed native applications and drivers for their hardware. Windows already had a growing software market, which made OS/2 a harder sell.</p>

<h3 id="os2-warp-and-later-development">OS/2 Warp and Later Development</h3>

<p>IBM continued developing OS/2 through the Warp releases, improving its desktop environment, networking, and application support.</p>

<p>OS/2 retained users in specialized business and industrial environments, but it did not displace Windows as the dominant operating system for IBM-compatible personal computers.</p>

<p>IBM eventually withdrew from active mainstream OS/2 development and support. Licensed successors continued the platform, however, including eComStation and later ArcaOS.</p>

<p>I knew about OS/2 while growing up and considered trying it, but never did. My experience with it has been from the outside rather than from using it on my own computers.</p>

<blockquote>
  <p>OS/2 offered protected memory and multitasking while maintaining compatibility with software written for earlier PC environments.</p>
</blockquote>

<h2 id="os2-version-table">OS/2 Version Table</h2>

<table>
  <thead>
    <tr>
      <th>Year range</th>
      <th>OS and Version</th>
      <th>Notable Features</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1987</td>
      <td>OS/2 1.0</td>
      <td>Protected-mode operation and preemptive multitasking, initially without a graphical desktop.</td>
    </tr>
    <tr>
      <td>1988</td>
      <td>OS/2 1.1</td>
      <td>Presentation Manager graphical interface.</td>
    </tr>
    <tr>
      <td>1989</td>
      <td>OS/2 1.2</td>
      <td>HPFS filesystem and other system improvements.</td>
    </tr>
    <tr>
      <td>1990</td>
      <td>OS/2 1.3</td>
      <td>Reduced memory requirements and refinements to the 1.x environment.</td>
    </tr>
    <tr>
      <td>1992</td>
      <td>OS/2 2.0</td>
      <td>32-bit operating environment, Workplace Shell, and improved DOS and Windows application support.</td>
    </tr>
    <tr>
      <td>1993</td>
      <td>OS/2 2.1</td>
      <td>Improved Windows application compatibility and hardware support.</td>
    </tr>
    <tr>
      <td>1994</td>
      <td>OS/2 Warp 3</td>
      <td>Desktop refinements, Internet connectivity options, and improved usability.</td>
    </tr>
    <tr>
      <td>1996</td>
      <td>OS/2 Warp 4</td>
      <td>VoiceType speech recognition, networking enhancements, and Java support.</td>
    </tr>
    <tr>
      <td>2001–2005</td>
      <td>eComStation</td>
      <td>Licensed continuation of OS/2 with updated drivers and utilities.</td>
    </tr>
    <tr>
      <td>2017–present</td>
      <td>ArcaOS</td>
      <td>Commercially maintained OS/2 continuation with updated hardware support.</td>
    </tr>
  </tbody>
</table>

<p>The final two entries are licensed successors, not IBM-branded OS/2 releases.</p>

<h2 id="dos-based-windows">DOS-Based Windows</h2>

<p>Microsoft took a different approach with early Windows: keep DOS and put a graphical environment above it.</p>

<p>Microsoft did not replace DOS immediately. Early Windows added a graphical interface while DOS continued to handle important parts of the system. Users could continue running familiar DOS applications while gaining access to graphical programs, windows, menus, and mouse-driven interfaces.</p>

<p>That arrangement changed as Windows gained more responsibility for memory, applications, and hardware. Windows 95 still included DOS, but much of the work was handled by Windows itself.</p>

<h3 id="windows-1x-and-2x">Windows 1.x and 2.x</h3>

<p>Windows 1.0 appeared in 1985 as a graphical operating environment for MS-DOS.</p>

<p>It brought windows, menus, a mouse-driven interface, and graphical applications to machines that still started in DOS. Early PC hardware limited what it could do.</p>

<p>Windows 2.x improved window management and supported overlapping application windows. Later releases took advantage of newer Intel processors and their memory-management capabilities.</p>

<p>These versions established elements of the Windows interface, but Windows did not see widespread adoption until version 3.0.</p>

<h3 id="windows-3x-and-windows-for-workgroups">Windows 3.x and Windows for Workgroups</h3>

<p>Windows 3.0, released in 1990, brought major improvements to the graphical environment, memory management, and application support.</p>

<p>Windows 3.1 continued that development with improvements including TrueType font support and multimedia capabilities.</p>

<p>Windows for Workgroups added integrated networking features, making it easier for personal computers to share files, printers, and other resources.</p>

<p>Even with these improvements, Windows 3.x still started from DOS. Users could exit Windows and return to the DOS prompt.</p>

<h3 id="windows-95">Windows 95</h3>

<p>Windows 95 introduced a substantially revised user interface, including the Start menu, taskbar, and a desktop model that would influence Microsoft operating systems for decades.</p>

<p>It also incorporated 32-bit components, improved multitasking, Plug and Play hardware configuration, and a more integrated operating environment.</p>

<p>Windows 95 was <strong>not based on the Windows NT kernel</strong>. Its startup process and compatibility architecture retained important DOS components. Windows 95 included MS-DOS 7.0, and users could configure the system to boot to a DOS command prompt rather than automatically launching the graphical environment.</p>

<p>Setting <strong><code class="language-plaintext highlighter-rouge">BootGUI=0</code></strong> in <code class="language-plaintext highlighter-rouge">MSDOS.SYS</code> allowed the system to stop at the DOS prompt. The <code class="language-plaintext highlighter-rouge">WIN</code> command could then be used to start Windows.</p>

<p>That DOS startup option is easy to mistake for the Windows 3.x arrangement. Once Windows 95 was running, however, its 32-bit components handled tasks that earlier Windows versions had left to DOS.</p>

<blockquote>
  <p>Windows 95 still used DOS during startup, but its running environment was considerably more than the old DOS command line with a graphical shell.</p>
</blockquote>

<h3 id="windows-98-and-windows-98-second-edition">Windows 98 and Windows 98 Second Edition</h3>

<p>Windows 98 continued the Windows 95 architecture while improving hardware support, networking, and integration with the expanding Internet-oriented software environment.</p>

<p>USB support was particularly important. Although USB support had appeared in certain Windows 95 releases, Windows 98 made the technology more practical for a broader range of users and hardware.</p>

<p>Windows 98 Second Edition, released in 1999, added Internet Connection Sharing and refinements to networking, hardware support, and bundled software. It was a well-developed version of the Windows 9x system, not a move to the NT architecture.</p>

<h3 id="windows-me-and-the-end-of-the-dos-line">Windows Me and the End of the DOS Line</h3>

<p>Windows Millennium Edition, released in 2000, was Microsoft’s final consumer operating system based on the Windows 9x architecture.</p>

<p>It introduced features such as System Restore and additional multimedia capabilities while restricting some traditional real-mode DOS startup behavior.</p>

<p>Windows Me did not achieve the same reputation for maturity as Windows 98 SE. More importantly, it arrived at a time when Microsoft already had a separate and increasingly capable operating-system family built around Windows NT.</p>

<p>Windows Me and Windows 2000 both appeared in 2000, but they came from <strong>different operating-system families</strong>. Me continued the DOS-based consumer line, while Windows 2000 used NT. Microsoft would soon bring its consumer systems over to NT as well.</p>

<h2 id="the-lighter-side-of-dos-based-windows">The Lighter Side of DOS-Based Windows</h2>

<p>Once PCs had graphical desktops, the little novelty programs could wander around the screen instead of responding from a command prompt. Microsoft also tried some unusual ideas of its own.</p>

<h3 id="esheep">eSheep</h3>

<p>One program I remember particularly well is eSheep. It put an animated sheep on the Windows desktop, where it wandered around and interacted with the screen. It served no practical purpose, <em>which was part of the appeal</em>.</p>

<p>I remember running ten or twenty sheep at once. A whole flock wandering across the desktop was better than just one.</p>

<p>The original eSheep was a 16-bit Windows application. I eventually located a copy of its trial version, and its executable identifies it as software intended for the Windows 3.1 environment rather than a DOS program or a later Win32 application.</p>

<p><a href="/assets/files/esheep.zip">Download the original eSheep trial archive</a></p>

<p>Running the original program requires a compatible historical Windows environment or suitable emulation.</p>

<h3 id="microsoft-bob">Microsoft Bob</h3>

<p>Microsoft also experimented with alternative ways to present the graphical desktop. Microsoft Bob, released in 1995, replaced conventional desktop metaphors with a virtual household in which rooms and familiar objects represented computer functions.</p>

<p>The interface was intended to help inexperienced users navigate a personal computer without first learning the conventions of windows, directories, and application menus. Rather than organizing tasks around a traditional desktop, Bob presented them through recognizable household objects and animated guides.</p>

<p>Bob did not catch on, and the conventional Windows desktop remained. It is still an interesting example of how Microsoft tried to make the PC approachable to someone who had never used one.</p>

<h2 id="dos-based-windows-version-table">DOS-Based Windows Version Table</h2>

<table>
  <thead>
    <tr>
      <th>Year range</th>
      <th>OS and Version</th>
      <th>Notable Features</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1985</td>
      <td>Windows 1.x</td>
      <td>Early graphical environment for DOS, tiled windows, mouse support, and graphical applications.</td>
    </tr>
    <tr>
      <td>1987–1989</td>
      <td>Windows 2.x</td>
      <td>Overlapping windows, improved applications, and enhanced processor-specific versions.</td>
    </tr>
    <tr>
      <td>1990</td>
      <td>Windows 3.0</td>
      <td>Improved graphical environment, memory management, and broader commercial adoption.</td>
    </tr>
    <tr>
      <td>1992</td>
      <td>Windows 3.1</td>
      <td>TrueType fonts, multimedia improvements, and application refinements.</td>
    </tr>
    <tr>
      <td>1992–1993</td>
      <td>Windows for Workgroups 3.1 / 3.11</td>
      <td>Integrated file and printer sharing, networking, and improved 32-bit file access in version 3.11.</td>
    </tr>
    <tr>
      <td>1995</td>
      <td>Windows 95</td>
      <td>Start menu, taskbar, Plug and Play, and integrated 32-bit capabilities. <strong>Significance:</strong> Windows 95 substantially changed the PC desktop while retaining a DOS-derived foundation. <strong>DOS capability:</strong> <code class="language-plaintext highlighter-rouge">BootGUI=0</code> could start the system at a DOS prompt, with <code class="language-plaintext highlighter-rouge">WIN</code> used to launch the graphical environment.</td>
    </tr>
    <tr>
      <td>1998</td>
      <td>Windows 98</td>
      <td>Improved hardware support, USB integration, and Internet-oriented features.</td>
    </tr>
    <tr>
      <td>1999</td>
      <td>Windows 98 SE</td>
      <td>Internet Connection Sharing, networking improvements, and hardware refinements. <strong>Significance:</strong> Windows 98 SE represented the mature refinement of the Windows 95/98 architecture rather than a replacement for it.</td>
    </tr>
    <tr>
      <td>2000</td>
      <td>Windows Me</td>
      <td>System Restore, multimedia improvements, and the final consumer DOS-derived Windows release.</td>
    </tr>
  </tbody>
</table>

<h2 id="nt-windows">NT Windows</h2>

<p>DOS-based Windows grew out of the original PC environment. Windows NT was built on a different foundation.</p>

<p>Microsoft designed NT with <strong>protected memory</strong>, <strong>preemptive multitasking</strong>, security, multiprocessing, and hardware abstraction. It also had to support existing Windows applications if Microsoft expected businesses to adopt it.</p>

<p>Windows NT and Windows 95 could look similar on screen, but they did not manage memory, processes, or security in the same way.</p>

<h3 id="dave-cutler-and-the-development-of-nt">Dave Cutler and the Development of NT</h3>

<p>Microsoft recruited Dave Cutler from Digital Equipment Corporation to lead development of NT. Cutler had worked on VMS, and that experience influenced NT’s design.</p>

<p>The project grew out of Microsoft’s plans for an advanced OS/2 successor, but the company redirected it toward Windows compatibility. NT became a separate operating-system family rather than an extension of DOS or Windows 3.x.</p>

<h3 id="nt-architecture">NT Architecture</h3>

<p>Windows NT provided preemptive multitasking, allowing the operating system to schedule execution among processes.</p>

<p><strong>Protected virtual memory</strong> helped isolate applications from one another and from the operating system. A failure in one ordinary user process was therefore less likely to damage unrelated processes than in the DOS-derived Windows environment.</p>

<p>NT also incorporated security mechanisms, user accounts, access controls, and services appropriate for networked and multi-user computing.</p>

<p>Its <strong>hardware abstraction layer</strong> helped separate operating-system components from hardware-specific details. Early NT releases supported multiple processor architectures, reflecting Microsoft’s interest in an operating system that was not permanently tied to a single PC processor family.</p>

<p>NT also included compatibility subsystems intended to support existing applications. These allowed many DOS and older Windows programs to run, although compatibility depended upon processor architecture, operating-system version, and application behavior.</p>

<p>Application compatibility was a feature of NT, not evidence that DOS was running underneath it.</p>

<h3 id="windows-nt-workstation-and-server">Windows NT Workstation and Server</h3>

<p>Windows NT 3.1 appeared in 1993, using a graphical interface similar to Windows 3.1 while operating on the new NT architecture.</p>

<p>NT 3.5 and 3.51 improved performance, networking, and support for additional hardware and applications.</p>

<p>Windows NT 4.0 adopted the Windows 95-style interface, making the two families look increasingly similar despite their architectural differences.</p>

<p>Microsoft offered NT editions for workstations and servers. Server editions included capabilities intended for centralized administration, network services, and organizational computing.</p>

<p>NT became an important foundation for Microsoft business networks while Windows 95 and 98 continued serving much of the consumer market.</p>

<h3 id="windows-2000">Windows 2000</h3>

<p>By Windows 2000, the NT family had become a practical choice for more professional desktops. Its improved hardware support, networking, and administrative tools helped make that possible.</p>

<p>Windows 2000 Professional served desktop and workstation users, while the Server editions provided additional networking and enterprise features.</p>

<p><strong>Active Directory</strong>, introduced with Windows 2000 Server, offered directory services for organizing and administering users, computers, and other network resources.</p>

<p>Windows 2000 still belonged to a different family from Windows 98 and Me. Businesses gained NT’s memory protection and administrative features, although some older hardware and applications still worked better under Windows 9x.</p>

<h3 id="windows-xp-and-the-convergence-of-windows">Windows XP and the Convergence of Windows</h3>

<p><strong>Windows XP</strong>, released in 2001, brought Microsoft’s mainstream consumer and professional desktop products together on the NT architecture.</p>

<p>Earlier consumer Windows releases had relied upon the DOS-derived Windows 9x architecture. Windows XP instead used the NT kernel and operating-system model while retaining a familiar graphical interface and substantial compatibility with existing Windows applications.</p>

<p>Windows XP brought NT’s process isolation, security model, and multitasking to home PCs. It was closer architecturally to Windows 2000 than to Windows Me, regardless of how familiar the desktop looked.</p>

<h3 id="modern-windows-and-windows-server">Modern Windows and Windows Server</h3>

<p>Windows Vista introduced substantial changes to the Windows driver model, security, graphics, and system architecture. Some of these changes caused compatibility and performance difficulties, but they also established foundations that later Windows releases refined.</p>

<p>Windows 7 improved the experience of the Vista generation, while Windows 8 and 8.1 introduced major interface changes intended to accommodate touch-oriented devices.</p>

<p>Windows 10 and Windows 11 continued development of the NT family with changes to security, hardware requirements, application support, and the desktop environment.</p>

<p>Windows Server likewise continued as an NT-based family designed around network services, centralized administration, virtualization, storage, and enterprise workloads.</p>

<p>Not everything called Windows used the NT architecture. Windows CE, for example, was a separate operating system for embedded and specialized devices.</p>

<p>The name on the box did not always tell you which Windows architecture was underneath.</p>

<blockquote>
  <p>Similar-looking Windows desktops did not necessarily mean the same operating system was running underneath.</p>
</blockquote>

<h2 id="the-lighter-side-of-windows-nt">The Lighter Side of Windows NT</h2>

<p>Some of the stranger things I remember from the Windows era came from applications rather than Windows itself. Microsoft put animated assistants into Office and other software, and developers hid games in a few Office releases. These were application features, not part of the NT kernel.</p>

<h3 id="clippy-and-microsoft-agent">Clippy and Microsoft Agent</h3>

<p>Microsoft Office introduced the Office Assistant, a feature intended to provide context-sensitive help while users worked with documents, spreadsheets, and other applications. Its best-known character was <em>Clippit</em>, commonly called <strong>Clippy</strong>, an animated paperclip that appeared with suggestions and questions.</p>

<p>The assistant attempted to anticipate when users might need help. Although the idea was intended to make software more approachable, its interruptions were not always welcome. Clippy nevertheless became one of Microsoft’s most recognizable interface experiments.</p>

<p>Microsoft Agent provided related technology for animated characters capable of speaking, moving, and responding to scripted interactions. Developers could incorporate these characters into applications, extending the idea of a graphical assistant beyond Microsoft Office.</p>

<p>Clippy was supposed to help, but anyone who had the paperclip interrupt their work can understand why it became a joke.</p>

<h3 id="hidden-games-in-microsoft-excel">Hidden Games in Microsoft Excel</h3>

<p>Microsoft Office also became known for Easter eggs: hidden features and demonstrations that were not part of an application’s ordinary functionality. Several releases of Excel contained elaborate graphical environments that could be accessed through particular sequences of commands.</p>

<h4 id="excel-95--hall-of-tortured-souls">Excel 95 — Hall of Tortured Souls</h4>

<p>Excel 95 included a hidden first-person environment called <em>Hall of Tortured Souls</em>. Its appearance resembled the three-dimensional games popular during the period, particularly Doom, although it was an explorable maze rather than a complete shooting game.</p>

<p>Historical instructions for accessing it describe the following sequence:</p>

<ol>
  <li>Open a worksheet and select row 95.</li>
  <li>Press <code class="language-plaintext highlighter-rouge">Tab</code> to move to cell B95.</li>
  <li>Open <strong>Help → About Microsoft Excel</strong>.</li>
  <li>Hold <code class="language-plaintext highlighter-rouge">Ctrl + Alt + Shift</code> while clicking <strong>Tech Support</strong>.</li>
  <li>Explore the hidden environment.</li>
</ol>

<p>The maze also contained a secret area associated with the code <code class="language-plaintext highlighter-rouge">EXCELKFA</code>.</p>

<h4 id="excel-97--flight-simulator">Excel 97 — Flight Simulator</h4>

<p>Excel 97 included a hidden three-dimensional flight demonstration. Users could move across a graphical landscape and discover developer credits.</p>

<p>To access it in the original release:</p>

<ol>
  <li>Open a worksheet and press <code class="language-plaintext highlighter-rouge">F5</code>.</li>
  <li>Enter <code class="language-plaintext highlighter-rouge">X97:L97</code> and press Enter.</li>
  <li>Press <code class="language-plaintext highlighter-rouge">Tab</code>.</li>
  <li>Hold <code class="language-plaintext highlighter-rouge">Ctrl + Shift</code> while clicking the <strong>Chart Wizard</strong> toolbar button.</li>
</ol>

<p>I remember playing an Excel flight simulator while using Windows 2000 and Office 2000. The documented flight simulator Easter egg belongs to Excel 97, however, so my recollection of the software version may differ from the published instructions.</p>

<h4 id="excel-2000--dev-hunter">Excel 2000 — Dev Hunter</h4>

<p>Excel 2000 included another hidden game called <em>Dev Hunter</em>. This demonstration used a driving environment reminiscent of arcade vehicle games.</p>

<p>The game is associated with the original Excel 2000 release before Service Release 1. Accessing it required saving an interactive worksheet as a web page and opening it in a compatible version of Internet Explorer with the necessary Office Web Components and DirectX support.</p>

<p>Historical instructions describe the process as follows:</p>

<ol>
  <li>Open Excel 2000.</li>
  <li>Choose <strong>File → Save As Web Page</strong>.</li>
  <li>Enable interactivity and save the page.</li>
  <li>Open the saved page in a compatible version of Internet Explorer.</li>
  <li>Navigate to row 2000 and column WC, select row 2000, then press <code class="language-plaintext highlighter-rouge">Tab</code> to make cell <code class="language-plaintext highlighter-rouge">WC2000</code> active.</li>
  <li>Hold <code class="language-plaintext highlighter-rouge">Ctrl + Alt + Shift</code> and click the Office logo.</li>
</ol>

<p>The game depended upon software components specific to that period. Office 2000 Service Release 1 removed access to the Easter egg.</p>

<p>Microsoft Word 97 also contained a hidden pinball game, demonstrating that these experiments were not limited to Excel.</p>

<p>A flight simulator hidden in a spreadsheet is a strange idea, but I can see why developers enjoyed putting it there.</p>

<p>To try these Easter eggs, you generally need the original software and a compatible environment. They are not included in modern Office releases.</p>

<blockquote>
  <p>The hidden Office games belonged to particular software releases. Reproducing them usually means recreating the software environment of their time.</p>
</blockquote>

<h2 id="nt-windows-version-table">NT Windows Version Table</h2>

<p>The Windows NT family developed alongside DOS-based Windows before becoming Microsoft’s primary desktop and server architecture.</p>

<p>The following table emphasizes major desktop releases, with server development discussed in the accompanying text.</p>

<table>
  <thead>
    <tr>
      <th>Year range</th>
      <th>OS and Version</th>
      <th>Notable Features</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1993</td>
      <td>Windows NT 3.1</td>
      <td>First NT release, protected memory, preemptive multitasking, security model, and multiple processor architectures.</td>
    </tr>
    <tr>
      <td>1994</td>
      <td>Windows NT 3.5</td>
      <td>Performance improvements, networking refinements, and expanded hardware support.</td>
    </tr>
    <tr>
      <td>1995</td>
      <td>Windows NT 3.51</td>
      <td>Improved compatibility, performance, and support for newer applications and hardware.</td>
    </tr>
    <tr>
      <td>1996</td>
      <td>Windows NT 4.0</td>
      <td>Windows 95-style interface on the NT architecture, with workstation and server editions.</td>
    </tr>
    <tr>
      <td>2000</td>
      <td>Windows 2000 (NT 5.0)</td>
      <td>Improved hardware support, networking, administration, and desktop usability. <strong>Significance:</strong> Windows 2000 demonstrated NT’s maturity as a practical professional desktop platform. Active Directory was introduced in the Server family.</td>
    </tr>
    <tr>
      <td>2001</td>
      <td>Windows XP (NT 5.1)</td>
      <td>Unified mainstream consumer and professional Windows desktops around NT. <strong>Significance:</strong> Windows XP ended Microsoft’s reliance on the DOS-derived Windows 9x architecture for mainstream consumer releases.</td>
    </tr>
    <tr>
      <td>2003</td>
      <td>Windows Server 2003 (NT 5.2)</td>
      <td>Server networking, security, performance, and administration improvements; later important as ReactOS’s compatibility baseline.</td>
    </tr>
    <tr>
      <td>2007</td>
      <td>Windows Vista (NT 6.0)</td>
      <td>User Account Control, revised graphics and driver models, and major security changes.</td>
    </tr>
    <tr>
      <td>2009</td>
      <td>Windows 7 (NT 6.1)</td>
      <td>Desktop refinements, performance improvements, and improved usability.</td>
    </tr>
    <tr>
      <td>2012</td>
      <td>Windows 8 (NT 6.2)</td>
      <td>Touch-oriented interface, Start screen, and platform changes.</td>
    </tr>
    <tr>
      <td>2013</td>
      <td>Windows 8.1 (NT 6.3)</td>
      <td>Refinements to the Windows 8 interface and system capabilities.</td>
    </tr>
    <tr>
      <td>2015</td>
      <td>Windows 10 (NT 10.0)</td>
      <td>Revised desktop interface, ongoing feature development, and expanded platform integration.</td>
    </tr>
    <tr>
      <td>2021–present</td>
      <td>Windows 11 (NT 10.0)</td>
      <td>Updated desktop interface, revised hardware requirements, and continuing security and platform development.</td>
    </tr>
  </tbody>
</table>

<p>Windows Server releases continued in parallel with the desktop family, sometimes sharing closely related underlying NT versions while providing different capabilities and release schedules.</p>

<h2 id="freedos">FreeDOS</h2>

<p>Microsoft stopped selling standalone MS-DOS, but DOS development did not end. Older programs and specialized equipment still needed it, and developers wanted a DOS-compatible system they could use, modify, and distribute freely.</p>

<p>FreeDOS is a <strong>free and open-source DOS-compatible operating system</strong> with its own kernel, command interpreter, utilities, and software packages. It does not use Microsoft’s DOS source code, and it is not an emulator pretending to be DOS.</p>

<h3 id="origins-and-development">Origins and Development</h3>

<p>Jim Hall announced the project in 1994, as Microsoft’s attention shifted toward Windows 95 and the future of standalone DOS became uncertain. Initially known as PD-DOS, the effort soon became FreeDOS. Its goal was to provide a complete operating system capable of running traditional DOS software without requiring a proprietary Microsoft DOS installation.</p>

<p>Contributors developed and assembled replacements for the familiar components of a DOS system. The project eventually produced complete distributions rather than only a collection of separate programs. FreeDOS 1.0 arrived in 2006, followed by later releases that continued to update the operating system and its accompanying software.</p>

<p>FreeDOS 1.4 was released on April 5, 2025. Between major releases, the project also provides test distributions so people can try newer components.</p>

<h3 id="the-freedos-operating-environment">The FreeDOS Operating Environment</h3>

<p>FreeDOS retains the basic DOS model: drive letters, a command prompt, batch files, familiar filesystem operations, and the ability to run many programs written for MS-DOS. Its command interpreter, <strong>FreeCOM</strong>, provides the environment in which users enter commands and execute batch files.</p>

<p>The distribution also offers file-management tools, editors, archivers, memory-management utilities, device support, and other software. Packages allow users to install additional programs according to their needs, rather than limiting the system to the utilities bundled with an early commercial DOS release.</p>

<p>FreeDOS also includes tools for people who want to write DOS software. Compilers, assemblers, debuggers, and editors make it possible to develop programs rather than only run old ones.</p>

<p>Its architecture remains recognizably DOS. FreeDOS does not acquire protected memory, modern process isolation, or the Windows NT driver model merely by including newer utilities. Improvements to its software should not be confused with a replacement of the underlying DOS operating model.</p>

<h3 id="graphical-interfaces">Graphical Interfaces</h3>

<p>FreeDOS normally presents a command-line environment, but a DOS-compatible computer need not be limited to text commands. Graphical desktops can run above DOS and provide windows, icons, menus, and mouse-driven applications.</p>

<p>OpenGEM is one option available for FreeDOS. It continues the GEM graphical desktop tradition associated with Digital Research and provides a graphical interface without replacing the DOS system underneath it. OpenGEM remains available with FreeDOS 1.4, although it is distributed on the <strong>BonusCD</strong> rather than installed as part of the basic system. Other DOS graphical environments, including SEAL and oZone, have also been developed. Both appeared in earlier FreeDOS distributions, but were dropped from FreeDOS 1.4 because of reliability problems.</p>

<p>Like Windows 3.x in its early days, these interfaces run above DOS. Installing one does not replace the DOS kernel.</p>

<h3 id="applications-and-practical-uses">Applications and Practical Uses</h3>

<p>FreeDOS is useful for retrocomputing and software preservation, but those are only part of its purpose. It can run many DOS games, productivity programs, development environments, and utilities. It can also serve as a platform for writing and testing new software designed for DOS-compatible systems.</p>

<p>The available software includes networking tools and other applications that extend what can be done from the traditional command line. Some specialized maintenance and industrial tasks also continue to benefit from DOS-compatible software, although suitability depends on the particular application and hardware.</p>

<p>FreeDOS can run on compatible physical PCs and in virtual machines or emulators. Running it directly on newer hardware can be difficult because of firmware changes, missing legacy interfaces, and driver availability. Virtualization often provides a more predictable environment, but it is not the only way to use the system.</p>

<p>Compatibility is not universal. Programs that depend on undocumented DOS behavior, unusual drivers, or direct access to particular hardware may need additional configuration or may not work correctly.</p>

<h3 id="dos-continues">DOS Continues</h3>

<p>FreeDOS continues the DOS environment instead of trying to turn it into Windows or Linux. The command prompt and familiar interfaces remain, while the operating system and its utilities continue to receive updates.</p>

<p>You can still install FreeDOS, configure it, and write software for it. DOS is no longer the standard PC operating system, but it remains usable.</p>

<blockquote>
  <p>A graphical desktop can run above DOS without changing the operating system underneath it.</p>
</blockquote>

<h2 id="reactos">ReactOS</h2>

<p>FreeDOS provides an open-source implementation of DOS. ReactOS attempts something different: an <strong>open-source operating system compatible with Windows NT</strong>, including the application and driver interfaces Windows software expects.</p>

<p>ReactOS is not a Linux distribution with a Windows-looking desktop. Its developers are implementing an operating system of their own.</p>

<h3 id="origins-and-compatibility-goals">Origins and Compatibility Goals</h3>

<p>ReactOS began as an effort to reproduce the Windows operating environment without Microsoft’s code. Its compatibility goals have changed as Windows has changed, from NT 4.0 through Windows 2000 and XP-era systems.</p>

<p>The project eventually settled on <strong>Windows Server 2003</strong> (NT 5.2) as a principal compatibility baseline.</p>

<p>I first discovered ReactOS when the project was targeting Windows 2000 compatibility. The idea of an open-source operating system capable of running Windows applications interested me immediately, and I have checked on its progress every few years since. I have never needed ReactOS myself, but if I had a Windows application that required a Windows-compatible environment, ReactOS would be my first alternative to try.</p>

<p>Using Windows Server 2003 as a baseline gave developers a defined collection of APIs, services, and driver behavior to implement. Supporting a particular NT generation is already a substantial undertaking without changing the target every time Microsoft releases another version of Windows.</p>

<h3 id="independent-implementation">Independent Implementation</h3>

<p>ReactOS developers implement compatible operating-system functionality independently, without deriving it from Microsoft’s Windows NT source code. They rely on available documentation, testing, and other lawful development techniques.</p>

<p>The project also incorporates work from other open-source software, including components associated with Wine, which implements Windows application interfaces on other operating systems.</p>

<p>Wine provides Windows-compatible application interfaces on other operating systems. ReactOS needs an entire operating system beneath those interfaces, including kernel services and drivers.</p>

<p>A program may call a familiar Windows API and still depend on lower-level behavior that ReactOS has not implemented. The same is true of drivers.</p>

<h3 id="development-and-limitations">Development and Limitations</h3>

<p>ReactOS remains <em>experimental</em>. Although it can run some Windows applications and supports portions of the expected NT environment, compatibility is incomplete. Driver support, application behavior, stability, and hardware compatibility remain important development challenges.</p>

<p>ReactOS 0.4.16, released on August 29, 2026, introduced a graphical installer, a combined live and installation image, and improvements to storage, audio, networking, and hardware compatibility. The release also included work to update its Wine-derived components toward Wine 10.0.</p>

<p>The project has relaxed its earlier strict adherence to Windows Server 2003 compatibility so it can incorporate newer interfaces. Standard 0.4.16 release images still expose Windows Server 2003-era exports by default, however; newer Windows API exports remain <em>experimental</em> and require a specially configured build. These changes expand the work under way without making ReactOS a complete replacement for modern Windows.</p>

<p>The graphical installer makes ReactOS easier to try, but it does not resolve every application or driver compatibility problem.</p>

<h2 id="summary">Summary</h2>

<p>DOS developed around the practical limitations of early personal computers. Its command-line environment, file management, and software interfaces became familiar across a growing collection of IBM-compatible machines. Microsoft played a central role in that development, but IBM, Digital Research, and other companies also produced DOS-compatible operating systems.</p>

<p>OS/2 represented an attempt to move beyond DOS through a more sophisticated operating-system architecture. Although IBM and Microsoft initially developed it together, their paths eventually separated. IBM continued OS/2, while Microsoft pursued both DOS-based Windows and Windows NT.</p>

<p>The Windows name came to describe two different architectural families. Windows 95, 98, and Me extended the DOS-derived environment, while Windows NT introduced protected memory, preemptive multitasking, stronger security, and other capabilities expected of a modern general-purpose operating system. Windows XP ultimately brought mainstream consumer Windows onto the NT foundation.</p>

<p>Those older operating-system families have not entirely disappeared. FreeDOS remains an actively developed DOS-compatible operating system, complete with its own tools, applications, and optional graphical desktops. ReactOS is still working toward a usable, open-source Windows NT-compatible operating system. Both projects are still being developed. They also show how long an operating-system interface can remain useful after the computers that first used it are gone.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="computer-history" /><category term="operating-systems" /><category term="dos" /><category term="ms-dos" /><category term="pc-dos" /><category term="cp-m" /><category term="dr-dos" /><category term="ibm" /><category term="microsoft" /><category term="windows" /><category term="windows-history" /><category term="windows-95" /><category term="windows-98" /><category term="windows-me" /><category term="windows-nt" /><category term="windows-2000" /><category term="windows-xp" /><category term="os-2" /><category term="os-2-warp" /><category term="freedos" /><category term="reactos" /><category term="retrocomputing" /><category term="software-compatibility" /><summary type="html"><![CDATA[Explore how DOS became the foundation of IBM-compatible PCs, why IBM and Microsoft developed OS/2, how Windows evolved from DOS-based releases to Windows NT, and how FreeDOS and ReactOS continue those operating-system traditions.]]></summary></entry><entry><title type="html">The Linux Family</title><link href="https://excalibursheath.com/article/2026/10/04/linux-family.html" rel="alternate" type="text/html" title="The Linux Family" /><published>2026-10-04T11:00:00-06:00</published><updated>2026-10-04T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/10/04/linux-family</id><content type="html" xml:base="https://excalibursheath.com/article/2026/10/04/linux-family.html"><![CDATA[<p>In the previous article, we followed Berkeley UNIX from its origins at the University of California, Berkeley into the modern BSD family. <a href="https://excalibursheath.com/article/2026/09/20/bsd-free-unix.html">FreeBSD, NetBSD, OpenBSD, and the other BSD systems remain connected to historical UNIX through a real line of descent</a>. The source has changed enormously, but the family tree leads backward toward UNIX.</p>

<p>Linux took another route. It did not descend from the UNIX source tree. Linus Torvalds began writing a new kernel in 1991 for his own computer, implementing an operating model that was already recognizably Unix-like. Linux eventually became compatible with many of the standards and conventions that allowed different Unix systems to work in similar ways, without generally pursuing the certification required to use UNIX as a formal trademark.</p>

<p>That difference can become surprisingly difficult to see from the command line. Log into a BSD system and then a Linux system and much of the environment remains familiar. There are processes, users, groups, permissions, pipes, shells, sockets, devices, daemons, and a filesystem rooted at <code class="language-plaintext highlighter-rouge">/</code>. The commands and administrative details may differ, but both systems belong to the broader Unix tradition.</p>

<p><strong>Linux represents another way that Unix survived.</strong> BSD carried the original family forward through historical lineage. Linux independently implemented the model and then became the foundation upon which many different operating systems could be assembled.</p>

<h2 id="linux-begins-with-a-kernel">Linux Begins With a Kernel</h2>

<p>The history of Linux begins with a distinction that is easy to lose after more than thirty years of Linux distributions: <strong>Linux was a kernel, not a complete operating system.</strong></p>

<p>Torvalds did not need to write every component of a Unix-like operating system because much of the surrounding software already existed. Once the Linux kernel could run that software, independently developed pieces could be assembled into a working system.</p>

<blockquote>
  <p>Linux began as a kernel. The operating systems we call Linux grew by combining that kernel with software from many other projects.</p>
</blockquote>

<h3 id="linus-torvalds-and-the-386">Linus Torvalds and the 386</h3>

<p>Linus Torvalds began developing Linux in 1991 while studying at the University of Helsinki. He was using MINIX, Andrew Tanenbaum’s small Unix-like operating system, on an Intel 386 computer and wanted to experiment with features of the processor and operating-system design.</p>

<p>Linux initially depended heavily on the environment in which it was developed. MINIX was used as a development platform, and the early kernel was specifically written for the 386. That did not make Linux a modified version of MINIX, however, any more than compiling a program on Linux makes that program part of the Linux source tree.</p>

<p>More importantly for our family history, Linux did not contain inherited UNIX source. Torvalds was implementing a new kernel around familiar Unix concepts and interfaces.</p>

<p>This places Linux in a very different historical position from BSD. We can trace BSD backward through Berkeley UNIX and ultimately into the original UNIX family. With Linux, the historical line of source descent stops with Linux itself.</p>

<p><em>The ideas did not.</em></p>

<h3 id="what-the-kernel-actually-provides">What the Kernel Actually Provides</h3>

<p>A <strong>kernel</strong> sits between programs and the underlying machine. Applications normally do not manipulate the processor, physical memory, disks, or other hardware directly. They request services from the kernel.</p>

<p>Among other responsibilities, a kernel provides mechanisms for:</p>

<ul>
  <li>scheduling processes and threads;</li>
  <li>managing virtual and physical memory;</li>
  <li>accessing storage through filesystems;</li>
  <li>communicating with hardware through device drivers;</li>
  <li>providing networking;</li>
  <li>enforcing process and user permissions;</li>
  <li>handling communication between processes;</li>
  <li>and exposing system calls through which programs request these services.</li>
</ul>

<p>Those mechanisms are enough to make Linux a kernel. They are not enough to make it the operating environment most people imagine when they say they are running Linux.</p>

<p>A user still needs a shell. Programs need libraries. Someone needs compilers and development tools to build software. Basic commands such as copying files, listing directories, manipulating text, and managing the machine have to come from somewhere. A usable system also needs configuration, startup mechanisms, networking utilities, and eventually a way to install and maintain additional software.</p>

<p>Torvalds recognized this very early. Linux 0.01 was not presented as though the kernel alone constituted everything required for a useful system. The surrounding Unix-like software was expected to come from elsewhere.</p>

<p><em>Much of it already had.</em></p>

<h3 id="gnu-had-much-of-the-rest">GNU Had Much of the Rest</h3>

<p>The GNU Project predated Linux by several years. Its goal was to develop a free Unix-compatible operating system, and by the beginning of the 1990s it had already produced important parts of the environment required to build one.</p>

<p>GNU software included components such as:</p>

<ul>
  <li>the GCC compiler;</li>
  <li>the GNU C Library;</li>
  <li>the Bash shell;</li>
  <li>file and text-processing utilities;</li>
  <li>development tools;</li>
  <li>and implementations of many familiar Unix commands.</li>
</ul>

<p>GNU’s missing piece was a production-ready kernel. The project was developing the Hurd, but that effort had not yet produced the practical kernel needed to complete the GNU operating system.</p>

<p>Linux and GNU met from opposite directions. <strong>GNU had much of a Unix-like environment but lacked a ready kernel. Linux supplied a usable kernel but depended upon software outside the kernel to become a practical operating system.</strong></p>

<p>Other projects supplied still more pieces. A conventional Linux system was never simply the work of Torvalds plus the work of GNU. It became an assembly of software maintained by many projects, organizations, companies, and individuals.</p>

<p>This history also explains the argument over the term <em>GNU/Linux</em>. The argument can become more distracting than useful, but the technical point underneath it is real. <strong>Linux is the kernel.</strong> GNU supplied many important parts of the environment traditionally associated with a Linux system, while many additional components came from elsewhere.</p>

<p>Throughout this article, I will use <em>Linux</em> in the common broader sense when discussing the operating-system family and <em>Linux kernel</em> when the distinction matters.</p>

<h3 id="linux-and-the-gpl">Linux and the GPL</h3>

<p>Licensing helped shape the family that developed around Linux as well.</p>

<p>Early Linux releases did not initially use the GNU General Public License, but Torvalds relicensed the kernel under <strong>GPL version 2</strong> in 1992. The GPL allowed people to use, study, modify, and redistribute Linux while requiring distributed derivative versions to preserve access to corresponding source under the same licensing terms.</p>

<p>That differs from the permissive licensing tradition associated with BSD. BSD-style licenses generally allow code to be incorporated into other projects with relatively few requirements. The GPL uses <em>copyleft</em>: redistribution remains possible, but the freedoms provided by the license travel with distributed derivative work.</p>

<p>Neither approach prevented large communities or commercial systems from developing. They established different rules under which those communities could build upon existing work.</p>

<p>The BSD and Linux families therefore differ in more than technical ancestry. Part of the environment in which their source code developed was different as well.</p>

<h2 id="kernel-userspace-and-the-complete-system">Kernel, Userspace, and the Complete System</h2>

<p>Once Linux is understood as a kernel, the variety of systems called Linux becomes easier to explain. The kernel provides a common foundation, but it does not determine everything above it.</p>

<p>The software running outside the kernel is generally described as <strong>userspace</strong>. This includes both the programs a person directly uses and much of the supporting environment that makes those programs possible.</p>

<h3 id="what-lives-above-the-kernel">What Lives Above the Kernel?</h3>

<p>A conventional Linux installation may combine the kernel with several layers of software.</p>

<p>A simplified system might contain:</p>

<ol>
  <li><strong>Linux kernel</strong> — process scheduling, memory, filesystems, drivers, networking, and other kernel services.</li>
  <li><strong>System libraries</strong> — interfaces that applications use to reach kernel and system services.</li>
  <li><strong>Core utilities</strong> — commands for manipulating files, text, processes, users, and the system.</li>
  <li><strong>Shells</strong> — interactive and programmable command environments such as Bash.</li>
  <li><strong>Boot and service software</strong> — tools responsible for bringing the system into operation and managing long-running services.</li>
  <li><strong>Package management</strong> — software for installing, upgrading, removing, and tracking other software.</li>
  <li><strong>System services</strong> — networking, logging, scheduled tasks, remote access, and other background functions.</li>
  <li><strong>Graphical environment</strong> — when required, display systems, desktop environments, window managers, and graphical applications.</li>
  <li><strong>Applications</strong> — everything from editors and compilers to databases, web servers, browsers, and games.</li>
</ol>

<p>GNU supplies important pieces of this stack on conventional Linux systems, but it does not supply everything.</p>

<p>The same kernel can therefore sit underneath systems intended for very different purposes.</p>

<h3 id="android-shows-the-difference">Android Shows the Difference</h3>

<p>Android provides a particularly clear example.</p>

<p>Android uses the <strong>Linux kernel</strong>, but the environment above that kernel differs substantially from a conventional desktop or server Linux distribution. Its application framework, runtime, libraries, security model, user interface, and normal method of software distribution are designed around mobile devices rather than around the traditional GNU/Linux environment.</p>

<p>An Android phone demonstrates why <em>uses Linux</em> and <em>is a conventional Linux distribution</em> are not identical statements.</p>

<blockquote>
  <p>The kernel can travel without taking the familiar desktop or shell environment with it.</p>
</blockquote>

<p>That separation became one of Linux’s greatest advantages. Linux could be adapted to servers, routers, phones, embedded systems, supercomputers, appliances, and desktops because the software above the kernel could change dramatically while the kernel continued performing the underlying work.</p>

<h2 id="turning-linux-into-an-operating-system">Turning Linux Into an Operating System</h2>

<p>Having a kernel and a collection of compatible software still leaves a substantial problem. Someone has to decide exactly which pieces belong together and how they should operate as a coherent system.</p>

<p>That work produces a <strong>Linux distribution</strong>.</p>

<p>A distribution is not simply Linux with a wallpaper, installer, and project name added. It represents a collection of technical and organizational decisions about how the kernel and surrounding software become an operating system.</p>

<blockquote>
  <p>A Linux distribution is a set of decisions about how to turn the Linux kernel and the surrounding software ecosystem into a usable operating system.</p>
</blockquote>

<h3 id="distributions-make-kernel-decisions">Distributions Make Kernel Decisions</h3>

<p>The common component between Linux distributions is the <strong>Linux kernel project and source—not necessarily an identical compiled kernel</strong>.</p>

<p>A distribution has to decide how Linux itself will be supplied. Those decisions can include:</p>

<ul>
  <li>which kernel version or branch to use;</li>
  <li>how frequently to adopt new kernel releases;</li>
  <li>which processor architectures to support;</li>
  <li>which drivers and subsystems to enable;</li>
  <li>which features should be compiled directly into the kernel;</li>
  <li>which features should be built as loadable modules;</li>
  <li>whether distribution-specific patches should be applied;</li>
  <li>which security and hardening options should be enabled;</li>
  <li>how long a kernel release will be maintained;</li>
  <li>and whether fixes from later kernels should be backported into an older maintained version.</li>
</ul>

<p>Two machines reporting that they run Linux may therefore not be running the same kernel build.</p>

<p>A long-lived enterprise distribution may deliberately maintain an older kernel while backporting selected security fixes and hardware support. A rolling distribution may move to newer upstream kernels much more quickly. An embedded distribution might compile only the functionality required for one device.</p>

<p><strong>The distribution’s decisions begin at the kernel.</strong></p>

<h3 id="distributions-make-userspace-decisions">Distributions Make Userspace Decisions</h3>

<p>Above the kernel, the number of choices increases dramatically.</p>

<p>A distribution must decide which software becomes part of the base system and how that software should be configured. Among the decisions are:</p>

<ul>
  <li>C library and other system libraries;</li>
  <li>command-line utilities;</li>
  <li>available shells;</li>
  <li>filesystem layout and conventions;</li>
  <li>boot process;</li>
  <li>service management;</li>
  <li>networking tools;</li>
  <li>logging;</li>
  <li>security defaults;</li>
  <li>administrative tools;</li>
  <li>graphical systems;</li>
  <li>default desktop environment, if any;</li>
  <li>hardware-detection tools;</li>
  <li>proprietary driver and firmware policies;</li>
  <li>documentation;</li>
  <li>localization;</li>
  <li>and default applications.</li>
</ul>

<p>Some distributions try to provide a complete working environment immediately after installation. Others deliberately begin with a minimal system and expect the administrator to decide what gets added.</p>

<p>Neither choice is inherent to Linux.</p>

<p><strong>It is a distribution decision.</strong></p>

<h3 id="package-management-solves-another-problem">Package Management Solves Another Problem</h3>

<p>Software installation creates another layer of complexity.</p>

<p>A modern Linux installation may contain thousands of packages maintained by hundreds or thousands of upstream projects. Those packages depend upon one another. A program may require a particular library. That library may require another package. Several programs may need compatible versions of the same shared components.</p>

<p>A distribution needs more than a file format for software packages. It needs an infrastructure for maintaining the relationships among them.</p>

<p>Modern <strong>package management</strong> generally combines several related mechanisms:</p>

<ul>
  <li>a package format;</li>
  <li>a database of installed software;</li>
  <li>repositories containing available packages;</li>
  <li>dependency information;</li>
  <li>cryptographic verification;</li>
  <li>tools for retrieving packages;</li>
  <li>dependency resolution;</li>
  <li>upgrade mechanisms;</li>
  <li>and policies governing which package versions belong together.</li>
</ul>

<p>This infrastructure is so routine today that it is easy to underestimate how much work it performs.</p>

<p>I remember when it was much harder to ignore.</p>

<p>Installing an RPM could lead to what became known as <strong>RPM Hell</strong>. Package A required Package B. Package B required C and D. D required another library, and that library might require a different version of something already installed. An installation that began with one downloaded RPM could turn into hours of searching for dependencies.</p>

<p>That was not really an inherent flaw in RPM. Debian could be just as unpleasant before its higher-level package-management tools handled these relationships automatically. <em>RPM Hell</em> is simply the name that stuck in the vocabulary.</p>

<blockquote>
  <p>A package format and a package manager are not the same thing. RPM defines how software is packaged; repositories and package-management tools handle retrieval, dependencies, upgrades, and distribution policy.</p>
</blockquote>

<p>Commands such as:</p>

<p>```text id=”joqjo3”
apt install
dnf install
pacman -S</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
look simple because the distribution has moved a great deal of complexity somewhere else.

### Release Models Are Distribution Decisions

Distributions also have to decide how change reaches the user.

One approach is to produce **discrete releases**. A collection of software is selected, integrated, tested, and released together. That release can then be maintained while development continues toward another version.

Another approach is the **rolling release**. Instead of periodically replacing one complete distribution release with another, packages continually move forward as newer versions are accepted.

There are many variations between those approaches. Enterprise distributions may maintain releases for years. Community distributions may release frequently. Some distributions divide development into stable, testing, and unstable branches. Others stay comparatively close to upstream releases.

These policies affect how a distribution feels at least as much as its package format.

The question is not simply, *What software does this distribution contain?*

It is also, *How does this distribution manage change?*

## The First Linux Distributions

The need for distributions became apparent almost immediately.

Early Linux users could assemble systems themselves, but doing so required knowledge and effort that limited who could realistically use Linux. Distributions began collecting the kernel and surrounding software into forms that could be installed and maintained more conveniently.

Several early projects helped establish the idea, including **MCC Interim Linux, Softlanding Linux System, TAMU Linux, and Yggdrasil Linux**.

Not all of them survived, but they established the distribution as a distinct layer of the Linux ecosystem.

### Softlanding Linux System

Softlanding Linux System, usually called **SLS**, became particularly influential.

SLS attempted to provide a relatively complete Linux environment rather than merely distributing the kernel and a few tools. It included a substantial collection of software and helped demonstrate that Linux could be distributed as something approaching a complete general-purpose operating system.

Its weaknesses were influential too.

Patrick Volkerding began modifying SLS, eventually producing Slackware. The company that became SUSE also interacted with SLS and Slackware during its early history before developing its own distribution.

A project does not need to survive indefinitely to influence the family tree.

### A Family Tree With Several Roots

The resulting genealogy is more complicated than drawing a line from one original Linux distribution to everything that followed.

Some distributions descended directly from earlier systems. Others borrowed tools or ideas without sharing ancestry. Some began from another distribution but eventually rebuilt enough of the system to establish an independent line. Later distributions could ignore the existing families entirely and return to the common Linux and free-software ecosystem.

A useful Linux genealogy therefore needs to show two processes:

- **descent**, where one distribution is built from another;
- **independent assembly**, where developers return to Linux and the surrounding software and create a new distribution family.

&gt; Sharing technology does not establish genealogy. Two distributions can use the same package format without belonging to the same family.

SUSE and Red Hat both use RPM packages, for example, but SUSE is not therefore a Red Hat descendant.

### The Linux Family Tree

The Linux family tree does not have a single distribution at its root. Linux itself, GNU software, and software from other projects provided the common pool of components. Early developers assembled those components into distributions, some of which became ancestors of long-lived families. Later developers could return to the same underlying source projects and begin again.

The following tree is deliberately selective. It traces the major lines discussed in this article rather than attempting to include the thousands of Linux distributions that have existed.

```text id="2bio7e"
Linux kernel + GNU + other free software
│
├── Early Linux distributions
│   │
│   ├── MCC Interim Linux
│   │
│   ├── SLS — Softlanding Linux System
│   │   │
│   │   ├── Slackware
│   │   │   └── Slackware family
│   │   │
│   │   └── early S.u.S.E. history
│   │       ├── SLS distribution
│   │       ├── Slackware-based S.u.S.E.
│   │       └── Jurix influence / rebuild
│   │           └── SUSE
│   │               ├── openSUSE
│   │               └── SUSE Linux Enterprise
│   │
│   ├── Yggdrasil Linux
│   │
│   └── other early systems
│
├── Debian
│   │
│   ├── Ubuntu
│   │   ├── Xubuntu
│   │   ├── Kubuntu
│   │   ├── Lubuntu
│   │   ├── other Ubuntu flavors
│   │   └── Linux Mint
│   │
│   └── Linux Mint Debian Edition (LMDE)
│
├── Red Hat Linux
│   │
│   └── Fedora
│       └── CentOS Stream
│           └── Red Hat Enterprise Linux
│               ├── historical CentOS Linux
│               ├── Rocky Linux
│               └── AlmaLinux
│
├── Later independent families
│   │
│   ├── Gentoo
│   │   └── Gentoo family
│   │
│   └── Arch Linux
│       ├── Manjaro
│       └── EndeavourOS
│
└── Linux From Scratch
    └── instructions for assembling a Linux system
        directly from the underlying source projects
</code></pre></div></div>

<p>Linux Mint illustrates why Linux genealogy sometimes resists a simple tree. Its principal edition is based on Ubuntu, while <strong>Linux Mint Debian Edition (LMDE)</strong> is based directly on Debian.</p>

<p>The Red Hat branch also needs some explanation because the direction of development has changed over time. Fedora serves as an upstream source for future Red Hat Enterprise Linux development, while CentOS Stream occupies the development space between Fedora and RHEL. Historical CentOS Linux worked in the other direction: it was built downstream from released RHEL sources. Rocky Linux and AlmaLinux later emerged as RHEL-compatible distributions, although their exact build policies are not identical.</p>

<p>The rest of the upper chart mostly shows ordinary distribution ancestry. Slackware emerged from work on SLS. Ubuntu is built from Debian. Descendants can then become parents of additional distributions.</p>

<p>SUSE is more complicated. Its early history passed through SLS and Slackware before the project rebuilt the distribution and established an independent SUSE line. Modern SUSE should not be treated simply as a Slackware descendant, and its use of RPM certainly does not make it a Red Hat descendant.</p>

<p>Gentoo and Arch show another path. They did not have to descend from Debian, Red Hat, Slackware, or SUSE. Their developers could return to the Linux kernel and the larger collection of independently maintained software and construct new distributions around their own decisions.</p>

<p>Linux From Scratch takes that possibility almost literally. It is not another family equivalent to Debian or Red Hat. It documents how to return to the underlying components and assemble a Linux system yourself.</p>

<blockquote>
  <p>The Linux family tree has an unusual property: you can always go back to the roots and start another branch.</p>
</blockquote>

<h2 id="the-major-distribution-families">The Major Distribution Families</h2>

<p>Thousands of Linux distributions have appeared over the years. Trying to place every one of them into a single chart quickly becomes more distracting than informative.</p>

<p>Four early families are particularly useful because they survived, developed recognizable approaches to system design, and influenced large parts of the Linux ecosystem:</p>

<ul>
  <li><strong>Slackware</strong>;</li>
  <li><strong>Debian</strong>;</li>
  <li><strong>Red Hat</strong>;</li>
  <li>and <strong>SUSE</strong>.</li>
</ul>

<p>They all use Linux, and they often use much of the same upstream software. What separates them is how each project assembles and maintains those components.</p>

<h3 id="slackware--keeping-it-simple">Slackware — Keeping It Simple</h3>

<p>Slackware emerged in 1993 from Patrick Volkerding’s work modifying and correcting SLS. It became one of the earliest successful Linux distributions and remains the oldest of the major early distributions still maintained.</p>

<p>Slackware has retained a comparatively traditional approach to Unix-like system administration. Rather than placing a specialized management layer over every component, it tends to expose the underlying system more directly.</p>

<p>Slackware still makes distribution decisions. Its preference for simplicity and conventional administration <strong>is itself a set of decisions</strong> about how the system should be assembled.</p>

<p>Its package management has historically reflected that philosophy as well. Slackware packages are relatively straightforward archives containing software and installation information. The system has generally placed less emphasis on automatic dependency resolution than distributions such as Debian or Red Hat.</p>

<p>That can require more knowledge from the administrator, but it also makes the machinery easier to see.</p>

<p>Slackware occupies an interesting place in Linux history. It was one of the earliest successful attempts to make Linux easier to install while continuing to expect users to understand what is happening underneath that convenience.</p>

<h3 id="debian--stable-means-stable">Debian — Stable Means Stable</h3>

<p>Debian also began in 1993, but developed around a different organizational and technical model. Rather than becoming primarily a commercial distribution, Debian grew into a community project with a strong commitment to free software and a large repository of packaged software.</p>

<p>Its approach to releases is one of its defining characteristics.</p>

<p>Debian development is commonly encountered through three branches:</p>

<ul>
  <li><strong>Stable</strong> — the current released distribution, emphasizing consistency and reliability;</li>
  <li><strong>Testing</strong> — packages being prepared for the next Stable release;</li>
  <li><strong>Unstable</strong> — active development, where newer package versions normally enter Debian.</li>
</ul>

<p>There are additional mechanisms and repositories surrounding those branches, but the progression helps explain why Debian Stable behaves the way it does.</p>

<p>I use Debian on servers fairly often, and <em>stable</em> describes exactly why. <strong>If I install Debian Stable, I expect it to stay stable.</strong> I do not expect a routine update to suddenly give me a substantially different system.</p>

<p>The tradeoff is obvious. Packages in Stable can become old compared with current upstream versions.</p>

<p>That is not necessarily neglect. It follows from the purpose of the branch. Debian Stable is trying to provide a collection of software that has been integrated and tested together rather than continuously replacing components simply because newer versions exist.</p>

<p>Debian’s commitment to free software has also affected the practical experience of installing it.</p>

<p>Historically, proprietary firmware, drivers, codecs, and other non-free components could require additional work. That could be frustrating when the component in question was not philosophically interesting at all—it was simply the firmware required to make the network adapter function.</p>

<p>Debian has adjusted that balance over time. Beginning with Debian 12, official installation media can include distributable non-free firmware, reducing one of the most common installation problems while maintaining distinctions between free and non-free parts of the repository.</p>

<p>Linux itself does not determine whether proprietary firmware should be included on installation media. Debian has to make that decision.</p>

<p>Debian also became the foundation for one of the largest descendant families in Linux.</p>

<p>Ubuntu is built from Debian but makes different choices about releases, hardware support, desktop configuration, software availability, and the experience presented to someone installing the system. Ubuntu then became a foundation for additional distributions and official variants, including Xubuntu, Kubuntu, and Lubuntu. Linux Mint’s principal edition is also built from Ubuntu, while LMDE follows Debian directly.</p>

<p>Descendants receive an enormous amount of infrastructure from their parent and then make another layer of decisions.</p>

<p>I currently use Xubuntu when I want a desktop system that mostly works without requiring me to construct the desktop myself. Ubuntu has historically been more willing than Debian to smooth over issues involving drivers, codecs, and desktop hardware.</p>

<p>I am less enthusiastic about Canonical’s integration of Snap into Ubuntu. That does not make Ubuntu bad or Debian better. It means Canonical has made a distribution decision that I would not make for my own system.</p>

<p>That is exactly what distributions do.</p>

<h3 id="red-hat--linux-goes-to-work">Red Hat — Linux Goes to Work</h3>

<p>Red Hat represents another important branch.</p>

<p>Red Hat Linux emerged during the 1990s and helped demonstrate that Linux could support a commercial operating-system business. Red Hat developed <strong>RPM—the Red Hat Package Manager</strong>—and built tooling and infrastructure around packaged software.</p>

<p>The modern Red Hat family does not fit neatly into a simple tree because the direction of development has changed. Fedora serves as an upstream community distribution from which major Red Hat Enterprise Linux development draws. CentOS Stream sits between Fedora and RHEL, providing a continuously delivered view of work intended for upcoming RHEL releases.</p>

<p>Historical CentOS Linux worked in the other direction. It was built downstream from released RHEL sources, providing a closely compatible system without the Red Hat branding and commercial support. The CentOS Project later shifted its focus from that downstream rebuild model to CentOS Stream.</p>

<p>Rocky Linux and AlmaLinux appeared after that shift to provide RHEL-compatible community distributions, although their current policies and methods are not identical. <strong>CentOS Stream is upstream of upcoming RHEL releases, while Rocky Linux and AlmaLinux aim to remain compatible with released RHEL.</strong></p>

<p>This family has long emphasized Linux as a platform for long-term administration, support, and organizational use.</p>

<p>That is where I have generally found Red Hat-family systems most comfortable. They make sense to me as servers.</p>

<p>Historically I found them less convenient as multimedia desktops. The official repositories often did not contain everything I wanted, particularly software involving patent, licensing, or proprietary-code complications. Adding third-party repositories became part of setting up the machine.</p>

<p>That was not a limitation imposed by the Linux kernel. It followed from decisions about what the distribution was willing to package, support, and distribute.</p>

<p>RPM became much larger than Red Hat itself.</p>

<p>Other distributions adopted the package format, including SUSE. That sometimes produces the mistaken impression that distributions using RPM belong to one family.</p>

<blockquote>
  <p>A package format is a technology, not a genealogy.</p>
</blockquote>

<p>Two distributions can use RPM while maintaining different repositories, dependency solvers, release processes, configuration tools, policies, and kernel builds. Sharing RPM tells us something about how software is packaged. It does not tell us who descended from whom.</p>

<p>SUSE makes that particularly obvious.</p>

<h3 id="suse--the-slightly-eccentric-cousin">SUSE — The Slightly Eccentric Cousin</h3>

<p>SUSE has always felt to me like <strong>Linux’s slightly eccentric cousin</strong>.</p>

<p>Its early history is appropriately complicated for that description. The German company that became SUSE initially distributed SLS, later provided a German version of Slackware, and released an early S.u.S.E. Linux based on Slackware. It subsequently rebuilt the distribution around Jurix, with SUSE Linux 4.2 in 1996 representing what SUSE describes as its first true distribution.</p>

<p>Slackware therefore belongs in SUSE’s early history, but modern SUSE should not simply be drawn as though it remains a Slackware derivative.</p>

<p>SUSE also adopted RPM packages, but approaching SUSE as though it were Red Hat with different branding quickly demonstrates how little a package format tells us about an operating system.</p>

<p>SUSE developed its own repositories, configuration conventions, release structure, administrative tools, and system-management philosophy. YaST became one of the most recognizable examples, providing a central interface for installation and system configuration.</p>

<p>I remember SUSE when its German origins were much more visible. One of its attractions was the sheer quantity of software available with the distribution. <em>SUSE seemed to come with everything.</em></p>

<p><strong>Shared technology does not necessarily mean shared ancestry.</strong></p>

<h2 id="new-families-can-begin-again">New Families Can Begin Again</h2>

<p>If the Linux family behaved like a conventional genealogy, every new distribution would have to descend from one of the established families.</p>

<p><em>It does not.</em></p>

<p>A developer can return to the Linux kernel, GNU software, libraries, package-building tools, desktop environments, and the enormous collection of other open-source projects and assemble them according to a new set of decisions.</p>

<p>Linux can therefore continue producing new root branches even after mature distributions already exist.</p>

<h3 id="gentoo--build-from-source">Gentoo — Build From Source</h3>

<p>Gentoo developed around a particularly source-oriented answer to the distribution problem.</p>

<p>Most mainstream Linux distributions primarily provide software that has already been compiled into binary packages. Gentoo’s <strong>Portage</strong> system instead makes building software from source a normal part of system management.</p>

<p>That exposes choices that binary distributions often make on behalf of the user.</p>

<p>A Gentoo administrator can influence questions such as:</p>

<ul>
  <li>which optional features are compiled into software;</li>
  <li>which supporting libraries are used;</li>
  <li>which capabilities are omitted;</li>
  <li>which compiler options are applied;</li>
  <li>and how much functionality is installed on the system.</li>
</ul>

<p>Gentoo still makes distribution decisions. It provides Portage, ebuilds, defaults, profiles, patches, documentation, and an organized software ecosystem. It simply moves some of the boundary between <strong>distribution decision</strong> and <strong>administrator decision</strong>.</p>

<h3 id="arch-linux--build-what-you-want">Arch Linux — Build What You Want</h3>

<p>Arch Linux represents another independent branch.</p>

<p>Arch appeared in the early 2000s and drew inspiration from existing systems, but it was not created simply by taking Debian, Red Hat, Slackware, or SUSE and modifying it. It established its own package-management infrastructure, repositories, release model, installation approach, and administrative conventions.</p>

<p>Its base system is intentionally small. Rather than installing a large predefined environment and removing unwanted components, the administrator can begin with a relatively minimal system and add what is required.</p>

<p>Arch also follows a <strong>rolling-release model</strong>. Instead of periodically replacing one numbered operating-system release with another, packages are continually updated as newer versions move through the repositories.</p>

<p>For my own personal projects, Arch has become my favorite distribution. I enjoy the installation process precisely because it makes me decide what the machine will contain. For a desktop I can begin with a small base, add a lightweight graphical environment, and stop when the machine does what I want.</p>

<p>That does not mean I want every computer to work that way.</p>

<p><strong>Sometimes I want to build the system. Sometimes I want to install Xubuntu because I need the computer to work and have something else to do.</strong></p>

<p>Those are different requirements, and Linux can accommodate both.</p>

<p>Arch has since produced its own descendant ecosystem, including distributions such as Manjaro and EndeavourOS. An independent distribution becomes established, other developers decide they want to make different choices, and another branch grows from it.</p>

<h2 id="linux-from-scratch">Linux From Scratch</h2>

<p>Linux From Scratch takes us underneath the distribution family tree.</p>

<p>It is tempting to place LFS beside Debian, Slackware, Gentoo, or Arch as another distribution. That misses its most useful role. <strong>Linux From Scratch is primarily a set of instructions for constructing a Linux system from source.</strong></p>

<p>Instead of installing someone else’s integration decisions, the reader performs many of those decisions directly.</p>

<h3 id="what-a-distribution-normally-does-for-you">What a Distribution Normally Does for You</h3>

<p>Building an LFS system exposes work that conventional distributions usually hide.</p>

<p>The process includes tasks such as:</p>

<ul>
  <li>constructing a temporary build environment and toolchain;</li>
  <li>compiling fundamental libraries and utilities;</li>
  <li>establishing the filesystem hierarchy;</li>
  <li>creating system configuration;</li>
  <li>building and configuring the Linux kernel;</li>
  <li>selecting kernel functionality;</li>
  <li>determining what is built into the kernel or provided as modules;</li>
  <li>installing boot components;</li>
  <li>and assembling the pieces into a bootable operating system.</li>
</ul>

<p>This makes LFS useful even for someone who never intends to maintain an LFS machine as a daily operating system.</p>

<p><strong>It reveals where the distribution exists.</strong></p>

<p>Debian did not simply download Linux and add a Debian logo. Red Hat is not Linux plus RPM. Arch is not Linux without a graphical installer.</p>

<p>A distribution is the accumulated result of decisions about how all these independently developed components become one system.</p>

<h3 id="here-are-the-engineering-drawings">Here Are the Engineering Drawings</h3>

<p>Most Linux distributions hand the user an operating system that has already been assembled according to the project’s decisions. Even source-oriented distributions such as Gentoo provide an established framework for making those decisions.</p>

<p>Linux From Scratch goes one layer deeper.</p>

<blockquote>
  <p>Linux From Scratch hands you the engineering drawings.</p>
</blockquote>

<p>The metaphor is not exact—LFS still provides instructions and makes assumptions of its own—but it captures the important difference. The reader sees the toolchain being constructed, the libraries and utilities being installed, the filesystem taking shape, and the kernel being configured and compiled.</p>

<p>It also explains why the Linux family tree can always grow another root branch.</p>

<p>Nothing requires a future distribution to begin with Debian, Fedora, Slackware, SUSE, Gentoo, or Arch. A developer can return to the underlying projects, make a different collection of decisions, and start again.</p>

<h2 id="what-makes-all-of-this-linux">What Makes All of This Linux?</h2>

<p>After looking at how differently Linux systems can be assembled, the obvious question is what still makes them members of the same family.</p>

<p>The kernel provides the clearest common foundation, but the shared Unix model and overlapping software ecosystem are nearly as important to the experience of actually using the systems.</p>

<h3 id="a-common-kernel-project">A Common Kernel Project</h3>

<p>The defining technical component is the <strong>Linux kernel</strong>.</p>

<p>Every Linux distribution does not ship the same kernel binary. Distributions choose versions, configurations, patches, modules, security options, hardware support, and maintenance policies.</p>

<p>What they share is the <strong>Linux kernel project and the interfaces it provides</strong>.</p>

<p>That common foundation can support radically different systems while retaining a recognizable kernel architecture underneath them.</p>

<h3 id="a-shared-software-ecosystem">A Shared Software Ecosystem</h3>

<p>Conventional Linux distributions also draw from a large overlapping collection of software.</p>

<p>GNU utilities are an important part of that ecosystem, but so are many projects that are not part of GNU. Linux distributions routinely share shells, compilers, libraries, graphical environments, web servers, databases, network utilities, programming languages, and applications.</p>

<p>The software may be packaged differently and configured differently, but much of it remains portable across distributions.</p>

<p>A program available as a Debian package can often be compiled and packaged for Fedora or Arch because changing the distribution does not require the application itself to become an entirely different program.</p>

<h3 id="the-unix-operating-model">The Unix Operating Model</h3>

<p>Underneath both the kernel and much of the userspace is the larger <strong>Unix operating model</strong>.</p>

<p>Linux inherited the concepts rather than the UNIX source.</p>

<p>Among the familiar characteristics are:</p>

<ul>
  <li>hierarchical filesystems;</li>
  <li>files and file-like interfaces as major abstractions;</li>
  <li>processes with distinct execution contexts;</li>
  <li>users and groups;</li>
  <li>ownership and permissions;</li>
  <li>shells;</li>
  <li>standard input, output, and error;</li>
  <li>pipes connecting programs;</li>
  <li>devices represented through filesystem interfaces;</li>
  <li>sockets for communication;</li>
  <li>background services;</li>
  <li>and command-line tools designed to be combined.</li>
</ul>

<p>Not every detail is identical across Unix-like systems, and Linux has developed many mechanisms of its own. The continuity is nevertheless strong enough that someone familiar with one Unix-like environment can usually recognize another.</p>

<p>That is why moving between BSD and Linux can feel simultaneously familiar and strange.</p>

<h3 id="unix-like-is-not-the-unix-trademark">Unix-like Is Not the UNIX Trademark</h3>

<p><strong>UNIX</strong> is also a formal trademark associated with systems certified against the <strong>Single UNIX Specification</strong>. Meeting the certification requirements allows a system to use the UNIX name officially.</p>

<p>Linux distributions generally have little reason to pursue that certification. Compatibility with Unix interfaces, standards, tools, and operating concepts provides most of the practical benefit without requiring the operating system to carry the UNIX trademark.</p>

<blockquote>
  <p>Keep the terms separate: UNIX lineage describes ancestry. Unix-like describes design and compatibility. UNIX certification grants the right to use the formal UNIX trademark.</p>
</blockquote>

<p>Three ideas should remain separate:</p>

<ol>
  <li><strong>UNIX lineage</strong> — historical descent from the original UNIX source family.</li>
  <li><strong>Unix-like design and compatibility</strong> — implementing the interfaces, conventions, and operating model associated with Unix systems.</li>
  <li><strong>UNIX certification</strong> — meeting the requirements to use UNIX as a formal trademark.</li>
</ol>

<p>BSD and Linux occupy different positions in those categories. Calling both of them simply <em>Unix</em> without qualification can conceal more history than it explains.</p>

<h2 id="from-a-386-to-nearly-everywhere">From a 386 to Nearly Everywhere</h2>

<p>Linux began as a kernel for an Intel 386 personal computer. What allowed it to escape that original machine was the combination we have been examining throughout this article.</p>

<p>The kernel could be adapted to new hardware without requiring every userspace environment to come with it. Distributions could configure the kernel and assemble different collections of software for different purposes. Source availability allowed developers and manufacturers to modify the system, while the Unix operating model provided familiar interfaces and concepts on which software could be built.</p>

<p>Add a large development community, increasingly broad hardware support, and substantial commercial investment, and Linux could move into computing environments that looked almost nothing like Torvalds’s original PC.</p>

<h3 id="servers-and-the-internet">Servers and the Internet</h3>

<p>Servers became one of Linux’s most important homes.</p>

<p>A Linux server does not need a graphical desktop, consumer applications, or much of the software expected on a personal computer. A distribution can install only the components required to provide web services, databases, file storage, networking, authentication, or other infrastructure.</p>

<p>Linux’s Unix-like design made it comfortable in a role Unix systems already understood well.</p>

<p>Distributions such as Debian, Red Hat Enterprise Linux, Ubuntu Server, SUSE Linux Enterprise Server, and their relatives turned that foundation into systems intended for long-term administration.</p>

<p>Linux consequently became deeply embedded in the infrastructure behind services whose users may never realize they are running Linux.</p>

<h3 id="cloud-computing-and-containers">Cloud Computing and Containers</h3>

<p>Cloud computing extended that server role.</p>

<p>Virtual machines made it practical to deploy large numbers of Linux systems without dedicating a physical computer to each installation. Linux could be reduced to a relatively small server image, copied, started, stopped, replaced, and automated.</p>

<p>Containers pushed the idea further.</p>

<p>Linux kernel mechanisms allow groups of processes to be isolated and given controlled views of system resources while still sharing a kernel. Container technologies built deployment and management systems around those mechanisms.</p>

<p>The modern cloud took advantage of characteristics already present in Linux and Unix-like system design: processes, permissions, namespaces, filesystems, networking, and composable tools.</p>

<h3 id="supercomputers">Supercomputers</h3>

<p>At the opposite end of the performance scale, Linux became the standard operating-system foundation of modern supercomputing.</p>

<p>Supercomputers are specialized machines, and specialization is exactly where the ability to modify an operating system becomes valuable. Builders can adapt Linux to unusual processors, enormous clusters, specialized interconnects, and workloads that ordinary desktop operating systems were never designed to handle.</p>

<p><strong>The desktop may be the most visible place to compare operating systems, but it is a poor measure of Linux’s overall reach.</strong></p>

<h3 id="embedded-systems">Embedded Systems</h3>

<p>Linux also moved downward into smaller machines.</p>

<p>Routers, network appliances, televisions, storage devices, industrial controllers, development boards, and other embedded systems can use Linux without resembling a conventional Linux computer from the user’s perspective.</p>

<p>An embedded system may have no desktop, no ordinary login prompt, and no expectation that its owner will install arbitrary software. Linux is simply the kernel underneath the function the device was built to perform.</p>

<p>Separating the kernel from assumptions about the surrounding environment made that possible.</p>

<h3 id="android-and-mobile-computing">Android and Mobile Computing</h3>

<p>Android carried the Linux kernel into billions of mobile devices.</p>

<p>As we saw earlier, Android does not look like Debian, Fedora, or Arch because it surrounds Linux with a different userspace and application platform. That difference became an advantage rather than an obstacle.</p>

<p>Linux did not have to conquer the smartphone by putting a traditional Linux desktop onto a phone.</p>

<p><strong>The kernel could become one component of something substantially different.</strong></p>

<h3 id="the-desktop">The Desktop</h3>

<p>Desktop Linux followed a different path.</p>

<p>Linux has supported graphical desktops for decades and offers environments ranging from complete integrated desktops to small window managers assembled almost component by component. It is entirely practical as a daily desktop operating system, and I use it that way myself.</p>

<p>It has not achieved the same dominance on conventional personal-computer desktops that it achieved in servers, supercomputers, embedded systems, or mobile devices through Android.</p>

<blockquote>
  <p>Looking only at laptops and desktop PCs makes Linux appear like a minority operating system. Looking at computing infrastructure as a whole produces a very different picture.</p>
</blockquote>

<p>Linux often succeeded most completely where the person benefiting from it never sees the operating system at all.</p>

<h2 id="summary">Summary</h2>

<p>BSD and Linux reached the modern Unix world through different histories. <strong>BSD carries a line of source and historical descent back through Berkeley UNIX. Linux was independently developed, implementing the Unix operating model without inheriting the original UNIX source.</strong></p>

<p>Linux itself began as a kernel. GNU supplied many of the components needed around it, while other projects supplied still more. Distributions turned those components into complete operating systems by making decisions about the kernel, userspace, packages, repositories, hardware, release models, maintenance, and system administration. Slackware, Debian, Red Hat, and SUSE became major early examples of how differently those decisions could be made.</p>

<p>The family tree does not grow only through descent. Gentoo and Arch demonstrate that developers can return to Linux and the wider software ecosystem and create new distribution families. Linux From Scratch exposes the process directly, showing how many decisions normally disappear beneath an installer and package manager. The common Linux kernel project connects these systems, while the larger Unix model makes them recognizable as relatives despite their differences.</p>

<p><strong>Linux did not replace UNIX by becoming another branch of the original UNIX source tree. It demonstrated another way for Unix to survive.</strong> Its interfaces and operating concepts could be implemented independently, combined with freely available software, packaged according to many different philosophies, and adapted to almost any kind of computer. What began on a 386 eventually became the foundation for systems ranging from small embedded devices to phones, servers, cloud infrastructure, and the world’s largest supercomputers.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="linux" /><category term="linux-history" /><category term="unix" /><category term="unix-history" /><category term="linux-kernel" /><category term="gnu" /><category term="linux-distributions" /><category term="slackware" /><category term="debian" /><category term="ubuntu" /><category term="red-hat" /><category term="fedora" /><category term="centos-stream" /><category term="suse" /><category term="opensuse" /><category term="gentoo" /><category term="arch-linux" /><category term="linux-from-scratch" /><category term="android" /><category term="package-management" /><category term="operating-systems" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how Linux grew from a kernel for the 386 into a family of operating systems, how distributions make different decisions about the kernel and surrounding software, and how Linux spread across servers, supercomputers, embedded systems, Android, and the desktop.]]></summary></entry><entry><title type="html">BSD: The First Free UNIX Family</title><link href="https://excalibursheath.com/article/2026/09/20/bsd-free-unix.html" rel="alternate" type="text/html" title="BSD: The First Free UNIX Family" /><published>2026-09-20T11:00:00-06:00</published><updated>2026-09-20T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/09/20/bsd-free-unix</id><content type="html" xml:base="https://excalibursheath.com/article/2026/09/20/bsd-free-unix.html"><![CDATA[<p>The <a href="../13/unix-beyond-sourche.html">distinctions between UNIX ancestry, standards, and compatibility</a> give us a clearer way to follow the operating-system families that emerged from UNIX and its influence. An operating system could belong to the historical UNIX source lineage, implement standardized Unix interfaces, qualify to use the UNIX trademark, or independently implement the broader Unix operating model.</p>
<p>BSD is one of the clearest examples of the <strong>original UNIX lineage continuing forward</strong>. The Berkeley Software Distribution grew directly from licensed UNIX source code and gradually became independent from it. That ancestry continues through operating systems still developed today, making BSD a living branch of the UNIX family rather than an independent reimplementation of the Unix model.</p>
<p>The BSD family did not remain a single operating system. <strong>FreeBSD, NetBSD, OpenBSD, DragonFly BSD</strong>, and other descendants separated at different points for different reasons. Each developed its own technical priorities while retaining a common ancestry. BSD code and technologies also spread into firewalls, network appliances, storage systems, and operating systems that do not necessarily carry BSD in their names.</p>
<p>Following BSD means looking at more than a family tree. We need to understand why its major branches separated, where they went afterward, and how technology moved both out of and into the family. That helps explain how BSD could become less visible than some other operating-system families while remaining <strong>deeply embedded in modern computing</strong>.</p>
<h2 id="from-berkeley-unix-to-an-independent-bsd">From Berkeley UNIX to an Independent BSD</h2>
<p>BSD did not begin as an independent operating system. The earliest <strong>Berkeley Software Distributions</strong> were collections of programs and modifications created at the University of California, Berkeley for systems already running licensed UNIX. As Berkeley’s work expanded, BSD became a recognizable branch of UNIX, but it still contained <strong>AT&amp;T source code</strong>. Anyone receiving a complete BSD system therefore needed the appropriate UNIX source license.</p>
<p>BSD has <strong>direct UNIX ancestry</strong> because it really did begin with UNIX source. The later BSD systems did not recreate Unix behavior independently from published interfaces or standards. Their lineage runs backward through Berkeley to the original UNIX family.</p>
<p>What changed was how much of the operating system belonged to Berkeley. The <strong>Computer Systems Research Group</strong> continued replacing, extending, and developing parts of the system until BSD contained a substantial body of code Berkeley could distribute under its own terms. Eventually, enough of the proprietary UNIX source would be replaced for the BSD lineage to continue without it.</p>
<h3 id="berkeley-builds-on-unix">Berkeley Builds on UNIX</h3>
<p>Berkeley’s contributions became substantial long before BSD could be distributed independently. BSD introduced or advanced technologies including <strong>virtual memory, job control, the Fast File System</strong>, and networking capabilities that would influence systems far outside Berkeley.</p>
<p>Networking is especially important to where we are in the <em>Foundations of Computation</em> series. Berkeley received funding from DARPA to integrate <strong>TCP/IP networking</strong> into BSD, and 4.2BSD included a TCP/IP stack and the sockets programming interface. BSD became an important platform for the protocols connecting previously independent computers into networks.</p>
<p>The <strong>sockets interface</strong> gave programs a practical way to use those networks. An application did not need to manipulate network hardware directly. It could create a socket, establish or accept a connection, and send or receive data through an interface provided by the operating system. Sockets spread well beyond BSD and became one of Berkeley’s most enduring contributions to networked computing.</p>
<p>BSD was developing an identity of its own while remaining part of the UNIX source family. Berkeley was not simply packaging AT&amp;T’s work. It was changing the operating system, adding capabilities, and producing code that other Unix vendors and researchers wanted.</p>
<p>The remaining AT&amp;T code still mattered. Berkeley could distribute the portions it had written, but it could not simply release AT&amp;T’s proprietary source along with them. <em>For BSD to become independently distributable, those dependencies had to go.</em></p>
<h3 id="removing-the-att-source">Removing the AT&amp;T Source</h3>
<p>Berkeley removed those dependencies incrementally. The Computer Systems Research Group replaced code still restricted by the UNIX license while separating Berkeley-developed components that could be released more freely.</p>
<p><strong>Networking Release 1</strong>, commonly called Net/1, was an important step. Instead of distributing a complete BSD operating system containing restricted UNIX source, Berkeley released networking code it could distribute under its own license. This also helped establish the <strong>permissive licensing approach</strong> that would become closely associated with BSD.</p>
<p>Work continued on the remaining proprietary components. In 1991, Berkeley released <strong>Networking Release 2</strong>, or Net/2. Despite the name, Net/2 contained substantially more than a networking stack. Most of the components needed for a complete BSD system were now available without the traditional AT&amp;T UNIX source license.</p>
<p>Net/2 was not quite complete. Important portions of the kernel still needed replacement before it could function as a standalone operating system. Developers outside Berkeley would soon supply that work, moving BSD development beyond the institution where it began.</p>
<p>There was also an unresolved legal problem. Berkeley believed it had removed the restricted UNIX code necessary to make Net/2 redistributable. <strong>UNIX System Laboratories disagreed.</strong></p>
<h3 id="the-bsd-lawsuit-and-44bsd-lite">The BSD Lawsuit and 4.4BSD-Lite</h3>
<p>The disagreement became a lawsuit after <strong>Berkeley Software Design, Inc.</strong>, commonly known as BSDi, began selling its own Intel-based operating system derived from Berkeley’s work. UNIX System Laboratories sued BSDi in 1992, and the dispute subsequently involved the University of California as well.</p>
<p>The legal fight reached farther than the two companies. If Net/2 still contained protected UNIX code, every project attempting to build a freely distributable operating system from it faced uncertainty over its foundation.</p>
<p>The dispute was eventually settled after Novell acquired UNIX System Laboratories. A small number of files from Net/2 were identified for removal or modification, and Berkeley produced <strong>4.4BSD-Lite</strong> as the release projects could use going forward without the same UNIX source encumbrances.</p>
<p>4.4BSD-Lite gave the growing BSD family a <strong>cleaner source foundation</strong>. BSD development could continue without depending on the old AT&amp;T licensing relationship.</p>
<blockquote>
<p>Removing the proprietary portions did not erase BSD’s history. <strong>The lineage remained continuous.</strong></p>
</blockquote>
<p>The lineage remained continuous even as Berkeley and later BSD developers replaced the pieces that could not be freely carried forward.</p>
<h3 id="bsd-moves-to-commodity-hardware">BSD Moves to Commodity Hardware</h3>
<p>While Berkeley was separating BSD from its remaining proprietary dependencies, the hardware underneath Unix systems was changing. The <strong>Intel 80386</strong> provided a 32-bit processor with memory protection and other capabilities suitable for a Unix-like operating system, but it belonged to the rapidly expanding world of IBM PC-compatible hardware rather than the traditional workstation and minicomputer markets.</p>
<p>William and Lynne Jolitz used the Net/2 source as the foundation for <strong>386BSD</strong>, filling in missing portions and porting the system to the Intel 386. The first public release appeared in 1992.</p>
<p>BSD could now move beyond university systems, proprietary workstations, and expensive Unix hardware. It could run on the same increasingly ordinary <strong>PC architecture</strong> that had already transformed personal computing.</p>
<p>386BSD attracted a community that wanted to improve and maintain the system. Patches accumulated, hardware support needed to expand, and users wanted development to move faster. Difficulties incorporating that work back into 386BSD eventually encouraged developers to organize projects of their own.</p>
<p>A commercial path was developing at roughly the same time. BSDi produced <strong>BSD/386</strong>, later renamed BSD/OS, as a commercial BSD operating system for Intel hardware. BSD’s move onto commodity computers produced both commercial and freely available descendants.</p>
<p>By 1993, developers from the 386BSD community had begun creating <strong>NetBSD</strong> and <strong>FreeBSD</strong>. Berkeley supplied the UNIX-derived foundation, the effort to remove proprietary dependencies made independent distribution possible, and 386BSD demonstrated that the system could live on commodity hardware.</p>
<blockquote>
<p><strong>BSD’s future no longer depended on Berkeley maintaining a single operating system. It was becoming a family.</strong></p>
</blockquote>
<h2 id="the-bsd-family-splits">The BSD Family Splits</h2>
<p>NetBSD and FreeBSD marked the beginning of the modern BSD family, but the branching did not stop there. Each project developed its own priorities, community, and technical direction. Later disagreements and new goals produced additional descendants, while commercial and specialized branches developed alongside the better-known free BSDs.</p>
<p>The major branches look like this:</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Berkeley BSD
│
├── Net/2
│   │
│   ├── 386BSD
│   │   │
│   │   ├── NetBSD
│   │   │   │
│   │   │   └── OpenBSD
│   │   │
│   │   └── FreeBSD
│   │       │
│   │       └── DragonFly BSD
│   │
│   └── BSD/386
│       │
│       └── BSD/OS
│
└── continued Berkeley development
    │
    └── 4.4BSD
        │
        └── 4.4BSD-Lite
            │
            └── source incorporated into the
                continuing BSD projects
</code></pre></div></div>
<p>This is a <strong>simplified ancestry tree, not a complete map of source-code inheritance</strong>. Code continued to move between projects, and the modern BSDs incorporated later Berkeley code, particularly 4.4BSD-Lite. For ancestry, the important relationships are clear: <strong>NetBSD and FreeBSD emerged from the 386BSD environment, OpenBSD later separated from NetBSD, and DragonFly BSD later separated from FreeBSD.</strong></p>
<h3 id="netbsd-portability-across-architectures">NetBSD: Portability Across Architectures</h3>
<p>NetBSD began in 1993 when Chris Demetriou, Theo de Raadt, Adam Glass, and Charles Hannum organized a new project around the freely available BSD work. Problems surrounding 386BSD development helped motivate the project. Patches were circulating outside the main source tree, developers had difficulty getting changes incorporated, and maintaining a coherent system was becoming increasingly difficult.</p>
<p>The new project also had a broader goal than maintaining BSD specifically for the Intel PC. NetBSD emphasized clean design and <strong>portability across hardware architectures</strong>. The operating system should not depend unnecessarily on assumptions specific to one processor, bus, or machine.</p>
<p>Portability became NetBSD’s defining characteristic. Over time, it was ported to an unusually broad collection of computers, including x86, ARM, SPARC, VAX, Motorola 68k, MIPS, PowerPC, and many others. The project’s long-standing slogan, <em>“Of course it runs NetBSD,”</em> grew from that emphasis.</p>
<p>Portability has value beyond keeping unusual or obsolete hardware alive. Moving the same operating system across substantially different machines exposes assumptions hidden in the code. Differences in byte ordering, memory layout, processor behavior, device access, and platform architecture force the boundaries between machine-dependent and machine-independent code to remain clearly defined.</p>
<p>NetBSD’s answer to what BSD should become after 386BSD was <strong>a portable operating system designed to follow the hardware rather than remain tied to one platform.</strong></p>
<h3 id="freebsd-bsd-on-the-growing-pc-platform">FreeBSD: BSD on the Growing PC Platform</h3>
<p>FreeBSD also emerged from the 386BSD community in 1993, but with a different early emphasis. Instead of making support for many architectures its defining objective, FreeBSD initially concentrated on producing a <strong>practical BSD system for the Intel 386 PC platform</strong>.</p>
<p>That was not a small target. IBM-compatible hardware was becoming increasingly capable, inexpensive, and standardized. The same commodity-hardware transition that transformed personal computing was making PCs suitable for jobs that previously required workstations and specialized Unix systems.</p>
<p>FreeBSD concentrated heavily on making BSD useful on that hardware: <strong>installation, hardware support, networking, performance, and system administration</strong>. When the USL settlement made the Net/2 foundation problematic, the project moved to 4.4BSD-Lite and released FreeBSD 2.0 from the new foundation.</p>
<p>As commodity x86 hardware became more capable, FreeBSD grew with it. The system found substantial use in Internet servers, network infrastructure, storage, and later appliances. Its BSD networking heritage, integrated base system, Ports Collection, and permissive licensing made it useful both as an operating system and as a foundation for building other systems.</p>
<p><em>That second role became important.</em> Many people who have never deliberately installed FreeBSD have still used systems built on it.</p>
<h3 id="openbsd-security-correctness-and-a-new-branch">OpenBSD: Security, Correctness, and a New Branch</h3>
<p>The next major branch came from NetBSD. Theo de Raadt had been one of NetBSD’s founders, but disagreements within the project eventually led to his removal from the NetBSD core team. In 1995, he began <strong>OpenBSD</strong> from the NetBSD source tree; its first official release followed in 1996.</p>
<p>The split explains where OpenBSD came from. What happened afterward defines the project. OpenBSD developed a strong emphasis on <strong>code correctness, auditing, security, documentation</strong>, and a coherent base system with carefully chosen defaults.</p>
<p>Security is treated as a property of the complete system rather than something added afterward. OpenBSD developers have repeatedly audited existing code, removed unsafe practices, introduced exploit mitigations, and replaced components when they believed they could build something better.</p>
<p>Some of that work spread far beyond OpenBSD. <strong>OpenSSH</strong>, developed by the OpenBSD project from the earlier SSH codebase, became one of the most widely deployed implementations of the Secure Shell protocol. The <strong>PF packet filter</strong> likewise became important within OpenBSD and other BSD-derived systems.</p>
<blockquote>
<p>OpenBSD’s reach is larger than the number of computers running OpenBSD itself.</p>
</blockquote>
<p>Software created because the project pursued its own goals became useful throughout the wider computing ecosystem.</p>
<h3 id="dragonfly-bsd-a-different-approach-to-multiprocessing">DragonFly BSD: A Different Approach to Multiprocessing</h3>
<p>The BSD family branched again in 2003, this time from FreeBSD. Matthew Dillon created <strong>DragonFly BSD</strong> from FreeBSD 4.8 after disagreeing with the direction FreeBSD was taking as it redesigned portions of the operating system for symmetric multiprocessing.</p>
<p>Multiprocessor hardware was becoming increasingly important, and operating systems had to determine how kernel work should be divided and synchronized across processors. FreeBSD was pursuing its approach during the transition toward the FreeBSD 5 series. Dillon believed a different architecture would provide a better long-term foundation.</p>
<p>DragonFly BSD provided a place to pursue that alternative without requiring FreeBSD to accommodate two competing kernel designs. The project developed its own approaches to <strong>concurrency, messaging, clustering</strong>, and other parts of operating-system architecture.</p>
<p>It also developed its own storage technology. <strong>HAMMER</strong>, followed by <strong>HAMMER2</strong>, provided DragonFly with a filesystem designed around features including snapshots, historical data retention, checksumming, and large storage systems. DragonFly remained much smaller than FreeBSD, but its continued development showed that BSD branching did not end in the 1990s.</p>
<blockquote>
<p>Forks do not always happen because a project failed. Sometimes separate systems are the practical way to explore competing architectural ideas.</p>
</blockquote>
<h3 id="bsdos-the-commercial-bsd-branch">BSD/OS: The Commercial BSD Branch</h3>
<p>Not every important BSD descendant followed the free community-project model. Berkeley Software Design developed <strong>BSD/386</strong> as a commercial Unix operating system for Intel hardware. The product was later renamed <strong>BSD/OS</strong>.</p>
<p>BSD/OS shared the Berkeley lineage but occupied a different part of the market from the emerging free BSD projects. It provided a commercially supported BSD system at a time when Unix vendors commonly sold the operating system, support, and related products as commercial offerings.</p>
<p>The company and operating system changed ownership as the Unix market consolidated, and BSD/OS was eventually discontinued. Its technology and developers still crossed back into the wider BSD ecosystem. Wind River, which had acquired BSDi, later transferred BSD/OS technology to the FreeBSD Foundation, while people associated with the commercial BSD world contributed knowledge and code elsewhere.</p>
<p><strong>BSD ancestry and open-source community development are not the same thing.</strong> The lineage produced both commercial and freely developed operating systems, just as the larger UNIX family had done before it.</p>
<h3 id="the-family-continues-to-branch">The Family Continues to Branch</h3>
<p>FreeBSD, NetBSD, OpenBSD, and DragonFly BSD form the major independently developed open BSD operating systems surviving from these branches, but they do not account for every system carrying BSD ancestry. Other projects have taken one of these operating systems and adapted it for <strong>security, desktops, storage, firewalls, embedded systems</strong>, and other specialized purposes.</p>
<p>These later descendants are somewhat different from the major forks. OpenBSD and DragonFly BSD separated to pursue independent operating-system development. Other projects begin with an existing BSD because it already provides a useful foundation for a more specialized goal.</p>
<p>The BSD family can therefore grow in two ways: <strong>independent branches can emerge over the direction of the operating system itself, while derived systems can build something more specialized on an existing BSD.</strong></p>
<p>There is another difference we need before following those derivatives. FreeBSD, NetBSD, OpenBSD, and DragonFly BSD are <strong>not BSD equivalents of Linux distributions</strong>. Each develops an operating system as an integrated whole.</p>
<h2 id="bsd-as-a-complete-operating-system">BSD as a Complete Operating System</h2>
<p>The modern BSD projects share ancestry, exchange code, and provide many of the same familiar Unix tools, but <strong>each develops a complete operating system</strong>. FreeBSD, NetBSD, OpenBSD, and DragonFly BSD are not different collections of software placed around a common BSD kernel. Each project maintains its own kernel together with the core userspace that makes up its <strong>base system</strong>.</p>
<p>This differs from the model familiar to Linux users. A Linux distribution combines the Linux kernel with software from many independently maintained projects to create a complete operating environment. GNU utilities and libraries have historically supplied many of those components, while other projects provide init systems, networking tools, package managers, graphical environments, and applications. Different distributions can combine those pieces in substantially different ways while sharing the Linux kernel lineage.</p>
<p>BSD development starts with the operating system as an <strong>integrated project</strong>. The kernel, commands, system libraries, startup infrastructure, administrative tools, manual pages, and other components of the base operating system can be developed together instead of being assembled afterward from unrelated upstream projects.</p>
<blockquote>
<p><strong>BSD Tip:</strong> FreeBSD, NetBSD, OpenBSD, and DragonFly BSD share ancestry, not a common modern kernel. They are separate operating systems, not BSD versions of Linux distributions.</p>
</blockquote>
<h3 id="the-base-system">The Base System</h3>
<p>The <strong>base system</strong> is the portion of a BSD maintained as part of the operating system itself. Its exact contents and implementation differ between projects, but the concept provides a useful boundary between the operating system and additional software installed on top of it.</p>
<p>In FreeBSD, for example, the base system includes the kernel and the fundamental userspace needed to operate and administer the machine. Its source is maintained together, and the project produces coordinated operating-system releases from it. NetBSD, OpenBSD, and DragonFly BSD follow the same broad integrated-system approach while maintaining their own implementations and release processes.</p>
<p>A change to a BSD does not have to stop at the kernel boundary. A project can modify the kernel, a system utility, a library, its documentation, and the interfaces connecting them as parts of the same operating system. This helps explain why the individual BSDs developed such distinct identities after their forks. Their differences are not limited to kernel patches or which software gets installed. <strong>Each project can make decisions across the complete base system.</strong></p>
<p>The manual pages are a good example. Documentation for the base system can evolve with the code it documents and ship as part of the same project. The documentation installed on the machine is intended to describe that particular operating system rather than a generic collection of Unix-like tools.</p>
<h3 id="packages-and-ports-build-on-the-base">Packages and Ports Build on the Base</h3>
<p>An integrated base system does not mean BSD projects try to develop every program their users might need. Web servers, databases, programming languages, desktop environments, editors, and thousands of other applications remain separate software projects.</p>
<p>BSD systems provide ways to install this additional software without making it part of the base operating system. FreeBSD, for example, provides binary packages and the <strong>Ports Collection</strong>, which contains the information needed to build and install third-party software from source. The other BSDs provide their own package and ports systems.</p>
<p>The basic division is:</p>
<ul>
<li><strong>Base system</strong> — the kernel and core operating-system components maintained by the BSD project.</li>
<li><strong>Packages and ports</strong> — additional software installed on top of that operating system.</li>
</ul>
<blockquote>
<p><strong>BSD Tip:</strong> When reading BSD documentation, keep the <em>base system</em> and installed packages separate in your head. The operating system is more than its kernel, but it also does not include every application installed on the machine.</p>
</blockquote>
<p>The base system can still contain software that originated elsewhere. BSD projects can import external projects into their source trees and integrate or maintain them as part of the operating system. What matters is responsibility: <strong>once something becomes part of the base system, its integration and release are managed within the operating-system project.</strong></p>
<h3 id="different-bsds-are-different-operating-systems">Different BSDs Are Different Operating Systems</h3>
<p>FreeBSD, NetBSD, OpenBSD, and DragonFly BSD should not be described as BSD distributions. <strong>There is no single modern “BSD kernel” underneath all four systems.</strong> Their kernels and base systems have diverged, and each project makes its own decisions about interfaces, security, hardware support, networking, filesystems, utilities, and release engineering.</p>
<p>Their common ancestry remains real. Code still moves between them, and similarities inherited from Berkeley remain obvious. But installing OpenBSD instead of FreeBSD means <strong>choosing a different operating system</strong>, not another packaging of the same underlying BSD.</p>
<p>When BSD becomes a foundation for something else, the distinction changes. A project can begin with FreeBSD and build a firewall, storage appliance, desktop system, or other specialized environment around it. Then there really <em>is</em> an underlying BSD with another system built from it.</p>
<p>This is one reason BSD’s influence is much larger than the number of computers whose users say they are running BSD. <strong>Much of the modern BSD family is hiding underneath something else.</strong></p>
<h2 id="bsd-underneath-other-systems">BSD Underneath Other Systems</h2>
<p>The BSD family becomes harder to see once we move beyond operating systems carrying BSD in their names. FreeBSD, NetBSD, OpenBSD, and DragonFly BSD are identifiable operating systems, but BSD’s <strong>permissive licensing and integrated design</strong> also make the family useful as a foundation for other projects. A developer can begin with a complete BSD system, change it for a particular purpose, and distribute the result under another identity.</p>
<p>These descendants are not all additional branches equivalent to OpenBSD or DragonFly BSD. Some remain closely tied to their parent BSD and make it easier to use for a particular purpose. Others substantially change the system around a specialized workload. Apple’s Darwin combines BSD technology with components from entirely different operating-system traditions.</p>
<blockquote>
<p>A person can use BSD code every day without ever deliberately choosing to install a BSD operating system.</p>
</blockquote>
<h3 id="firewalls-and-network-appliances">Firewalls and Network Appliances</h3>
<p>Networking is a natural place for BSD to appear beneath another system. The family already carried Berkeley’s long networking history, while a complete BSD operating system provided the routing, packet filtering, interfaces, storage, user management, and other facilities needed to turn ordinary hardware into a network appliance.</p>
<p><strong>m0n0wall</strong> was an important example. Beginning in the early 2000s, it used FreeBSD as the foundation for a small firewall system managed primarily through a web interface. The administrator did not need to treat the machine as a general-purpose FreeBSD server. FreeBSD supplied the operating system while m0n0wall turned it into an appliance built for a specific job.</p>
<p>That model produced descendants of its own. <strong>pfSense</strong> began as a fork of m0n0wall in 2004 and continued using FreeBSD as its operating-system foundation. It expanded the appliance model into a broader firewall and routing platform while retaining FreeBSD’s networking capabilities.</p>
<p><strong>OPNsense</strong> forked from pfSense in 2014 rather than starting again from scratch. It continued along the inherited FreeBSD-derived path, later incorporated work from HardenedBSD, and eventually moved its base more directly back toward FreeBSD.</p>
<p>This portion of the family has a genealogy of its own:</p>
<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>FreeBSD
│
└── m0n0wall
    │
    └── pfSense
        │
        └── OPNsense
</code></pre></div></div>
<p>The tree shows project ancestry rather than every source-code relationship between them. Several generations of firewall projects could concentrate on firewall and routing functionality because <strong>BSD already supplied the operating system underneath</strong>.</p>
<blockquote>
<p>Someone installs OPNsense because they want a firewall, not because they decided to deploy a general-purpose BSD server. <strong>BSD remains underneath doing the work.</strong></p>
</blockquote>
<h3 id="security-focused-and-desktop-derivatives">Security-Focused and Desktop Derivatives</h3>
<p>FreeBSD has also provided a foundation for projects that retain more of a general-purpose operating system while changing its emphasis.</p>
<p><strong>HardenedBSD</strong> began as a FreeBSD-derived project focused on additional security and exploit-mitigation technologies. Instead of creating a new kernel and userspace independently, the project could begin with FreeBSD and concentrate on its security-oriented changes.</p>
<p><strong>GhostBSD</strong> takes the idea in another direction. It builds a desktop-oriented operating system from the FreeBSD family, providing a graphical environment and installation experience intended to make BSD more approachable on the desktop.</p>
<p>These differ from the major BSD branches discussed earlier. NetBSD and FreeBSD emerged as independent operating-system projects. OpenBSD and DragonFly BSD forked to pursue their own continuing development of the operating system itself. HardenedBSD and GhostBSD show how an existing BSD can instead become the <strong>platform for a more specialized system</strong>.</p>
<p>The boundary is not absolute. A derivative can develop substantial technology of its own, and its relationship with its parent can change over time. The distinction still helps explain why the BSD family contains both a handful of major independently developed operating systems and a much larger collection of systems built from them.</p>
<h3 id="bsd-as-a-storage-foundation">BSD as a Storage Foundation</h3>
<p>Storage is another area where FreeBSD became useful underneath a specialized system. <strong>FreeNAS</strong> used FreeBSD to create a network-attached storage platform that could be administered as an appliance instead of a manually assembled general-purpose server.</p>
<p>FreeNAS eventually became part of the <strong>TrueNAS</strong> product family. TrueNAS later developed both FreeBSD-based CORE and Linux-based SCALE, with new feature development eventually shifting toward the Linux-based branch. FreeBSD nevertheless played an important role in TrueNAS history as a storage platform.</p>
<p>One technology became particularly important to that relationship: <strong>ZFS</strong>. Unlike the Berkeley networking stack and other technologies that originated within the BSD lineage, ZFS came from another branch of the UNIX family. Sun developed it for Solaris, yet it eventually became strongly associated with FreeBSD storage systems.</p>
<p><em>This time the technology was moving into BSD rather than out of it.</em></p>
<h3 id="darwin-and-macos">Darwin and macOS</h3>
<p>Apple provides a different example because <strong>Darwin is not simply another FreeBSD derivative</strong>. Its ancestry combines technologies from several operating-system traditions.</p>
<p>Part of the path runs through <strong>NeXT</strong>. NeXTSTEP combined the Mach kernel work developed at Carnegie Mellon with BSD-derived Unix facilities and NeXT’s own software. When Apple acquired NeXT in 1997, that technology became the foundation for the operating-system architecture that ultimately became Mac OS X.</p>
<p>At the center of Darwin is <strong>XNU</strong>, whose name originally reflected the idea that “X is Not Unix.” XNU combines <strong>Mach with BSD-derived components and Apple’s own development</strong>. Its BSD portion provides important Unix facilities including process and user models, networking, sockets, permissions, and familiar Unix interfaces.</p>
<p>FreeBSD also became an important source for BSD userspace and kernel components incorporated into Darwin. Apple could use BSD code without turning Darwin into FreeBSD or making macOS a BSD distribution. BSD’s permissive licensing allowed the technology to become part of a larger proprietary product while open portions continued to exist in Darwin.</p>
<blockquote>
<p><strong>BSD Tip:</strong> macOS is built partly from BSD technology, but it is <strong>not FreeBSD with an Apple interface</strong>. Mach, XNU, NeXT technology, BSD components, and Apple’s continuing development all contribute to the system.</p>
</blockquote>
<p>The Darwin/XNU foundation later spread across Apple’s other operating systems. BSD-derived technology consequently reached an enormous number of computers and mobile devices whose users would never describe them as BSD machines.</p>
<h3 id="influence-without-the-bsd-name">Influence Without the BSD Name</h3>
<p>Installation counts provide an incomplete picture of BSD. The family can appear in several forms:</p>
<ul>
<li>a <strong>directly installed BSD</strong> such as FreeBSD, NetBSD, OpenBSD, or DragonFly BSD;</li>
<li>a <strong>specialized system built from a BSD</strong>, such as a firewall or desktop derivative;</li>
<li>an <strong>appliance</strong> whose BSD foundation is largely hidden behind its purpose;</li>
<li>or <strong>BSD code and interfaces incorporated into a larger system</strong> with a different architecture and identity.</li>
</ul>
<p>Permissive licensing helped that movement happen. BSD code could be adopted, modified, and incorporated into open or proprietary systems without requiring those systems to become BSD projects themselves. The same characteristic that helped BSD technology spread could also make its influence less visible.</p>
<p><strong>BSD did not need every system using its technology to carry the BSD name.</strong></p>
<p>ZFS shows technology moving in the other direction. BSD could absorb an important technology from another UNIX branch and provide it with another place to develop and survive.</p>
<h2 id="zfs-moves-into-bsd">ZFS Moves into BSD</h2>
<p>Not every important technology associated with modern BSD originated at Berkeley or within one of the BSD projects. <strong>ZFS came from a different branch of the UNIX family entirely.</strong> Sun Microsystems developed it for Solaris as a new approach to managing storage, then released its source through OpenSolaris.</p>
<p>ZFS eventually became deeply integrated with FreeBSD and particularly important to BSD-based storage systems. Sun had created an unusually capable storage technology that could help distinguish Solaris and OpenSolaris from competing operating systems. Once the code was available, however, <strong>the technology proved more portable than the platform that created it</strong>.</p>
<p>ZFS left the boundaries of Solaris, found new homes, and continued developing after OpenSolaris itself disappeared. FreeBSD became one of those homes.</p>
<h3 id="rethinking-the-filesystem-and-the-disk">Rethinking the Filesystem and the Disk</h3>
<p>Traditional storage systems commonly separate several responsibilities. Physical disks may be combined or divided by RAID and volume-management layers, while a filesystem is created on the resulting block device. Each layer performs its own job, but the filesystem does not necessarily know what is happening beneath it.</p>
<p>ZFS was designed differently. It combines the filesystem with <strong>storage-pool management</strong>, giving ZFS knowledge of both the logical organization of files and the storage holding them. Disks and other devices become part of a storage pool, and filesystems draw capacity from that pool instead of being permanently tied to individually sized disk partitions.</p>
<p>That integration lets ZFS treat <strong>storage integrity as a system-wide problem</strong>. ZFS uses copy-on-write instead of overwriting live filesystem blocks in place. New data is written elsewhere, and the filesystem’s metadata is updated to reference it only after the write is complete.</p>
<p>ZFS also <strong>checksums data</strong>. When data is read, its checksum can be compared with the value recorded when it was written. If redundant copies are available through a mirror, RAID-Z, or another supported form of redundancy, ZFS can use a correct copy to repair corrupted data instead of merely reporting the corruption.</p>
<p>The integrated design also provides features particularly useful for servers and storage appliances:</p>
<ul>
<li><strong>storage pools</strong> combine available storage instead of requiring administrators to preallocate fixed filesystem partitions;</li>
<li><strong>copy-on-write</strong> preserves previous blocks until replacement data has been safely written;</li>
<li><strong>checksums</strong> allow ZFS to detect corruption instead of assuming a successful disk read returned the correct data;</li>
<li><strong>scrubs</strong> systematically read stored data and verify its integrity;</li>
<li><strong>mirrors and RAID-Z</strong> provide redundancy ZFS can use when repairing damaged data;</li>
<li><strong>snapshots and clones</strong> preserve filesystem states efficiently through copy-on-write;</li>
<li><strong>compression</strong> can be managed directly by the filesystem;</li>
<li><strong>replication</strong> allows snapshots to be transferred between ZFS systems.</li>
</ul>
<blockquote>
<p><strong>No single feature makes ZFS important.</strong> The strength comes from these capabilities working with knowledge of the same storage system instead of being assembled entirely from independent layers.</p>
</blockquote>
<h3 id="from-solaris-to-freebsd">From Solaris to FreeBSD</h3>
<p>Sun introduced ZFS through Solaris and later made its source available as part of OpenSolaris. FreeBSD developers began porting ZFS to their operating system, and <strong>FreeBSD 7.0 shipped with ZFS support in 2008</strong>.</p>
<p>FreeBSD was already used for servers and network infrastructure, and its integrated operating-system model gave ZFS room to become more than an unusual third-party filesystem. Over time, FreeBSD gained the ability to use ZFS throughout the system, including for boot and root filesystems.</p>
<p>Storage appliances made the relationship especially visible. FreeNAS originally used UFS but moved to the FreeBSD ZFS port in 2010. Its later development as TrueNAS continued making ZFS central to the storage platform.</p>
<p>Berkeley networking technology had moved outward from BSD and into other systems. <strong>ZFS moved inward from Solaris and became an important part of the BSD ecosystem.</strong></p>
<h3 id="zfs-outlives-opensolaris">ZFS Outlives OpenSolaris</h3>
<p>ZFS initially gave Solaris and OpenSolaris a substantial storage technology of their own. Sun controlled the operating system where ZFS originated, and Solaris could integrate the filesystem as a native part of its storage architecture.</p>
<p>Once ZFS was released as open-source software, other operating-system communities could bring that technology to their own platforms.</p>
<p><strong>FreeBSD did exactly that.</strong></p>
<p>ZFS did not cause the decline of OpenSolaris. Solaris and OpenSolaris existed in a much larger environment involving hardware support, applications, administration, commercial support, Sun’s business decisions, Linux’s rapid expansion, and eventually Oracle’s acquisition of Sun. Reducing that history to a filesystem would miss most of it.</p>
<p>What happened to ZFS is more specific. <strong>A valuable operating-system technology does not necessarily preserve the position of the operating system that created it.</strong> If the technology can move, some of its advantage can move with it.</p>
<p>When Oracle discontinued OpenSolaris in 2010, the open ZFS code did not disappear. The <strong>illumos</strong> project continued development from the OpenSolaris codebase, while ZFS development increasingly occurred across several operating systems. <strong>OpenZFS</strong> eventually became the common upstream project for continued open development.</p>
<p>FreeBSD later moved from maintaining its older illumos-derived ZFS implementation to the common OpenZFS codebase. TrueNAS made a corresponding transition with OpenZFS 2.0, bringing FreeBSD and Linux ZFS development around a shared upstream implementation.</p>
<blockquote>
<p><strong>ZFS had outgrown the operating system that created it.</strong></p>
</blockquote>
<h3 id="licensing-changes-the-linux-story">Licensing Changes the Linux Story</h3>
<p>There is a limit to how freely ZFS could move. Sun released ZFS under the <strong>Common Development and Distribution License</strong>, or CDDL. The Linux kernel is distributed under version 2 of the <strong>GNU General Public License</strong>, and code incorporated into the kernel source needs licensing compatible with GPLv2.</p>
<p>The <strong>CDDL and GPLv2 are generally considered incompatible for distributing ZFS as part of the Linux kernel itself</strong>. That does <strong>not</strong> mean ZFS cannot run on Linux. OpenZFS supports Linux, and Linux systems can use ZFS through separately distributed kernel modules. The licensing issue affects how ZFS can be combined and distributed with the kernel, not whether Linux can use it.</p>
<blockquote>
<p><strong>ZFS Tip:</strong> The CDDL/GPL issue is about <em>combining and distributing ZFS with the Linux kernel</em>. It does not mean Linux cannot use ZFS.</p>
</blockquote>
<p>FreeBSD does not have the same conflict. Its permissive licensing model allowed CDDL-licensed ZFS to be incorporated into the operating system while ZFS retained the requirements of its own license. FreeBSD could integrate ZFS deeply without requiring it to be relicensed.</p>
<p>This puts the <strong>software-licensing differences</strong> discussed earlier in the series into practice. Licenses do more than determine whether source code can be read. They establish the conditions under which independently developed software can be combined, modified, and redistributed.</p>
<p>There is an interesting tension here. Open-source licensing helped ZFS escape Solaris and survive the end of OpenSolaris as a Sun project. The particular license Sun chose also created a boundary that kept ZFS from being incorporated into the Linux kernel as straightforwardly as it could be incorporated into FreeBSD.</p>
<p>ZFS connects several parts of the BSD story: <strong>FreeBSD as a storage platform, technology crossing between UNIX branches, BSD as the foundation for specialized appliances, and licensing having practical technical consequences.</strong></p>
<blockquote>
<p><strong>The technology that survives is not always attached to the platform that invented it.</strong></p>
</blockquote>
<h2 id="summary">Summary</h2>
<p>BSD began as additions to licensed UNIX, but Berkeley’s developers gradually replaced the proprietary dependencies while adding important technologies of their own. <strong>Networking, sockets, the Fast File System</strong>, and other Berkeley work gave BSD an identity beyond the UNIX source where it began. Net/2, 386BSD, and ultimately 4.4BSD-Lite provided foundations from which BSD could continue after Berkeley stopped developing the operating system.</p>
<p>That continuation did not produce a single successor. <strong>NetBSD</strong> emphasized portability across architectures. <strong>FreeBSD</strong> initially concentrated on the growing PC platform and became important in servers, networking, storage, and appliances. <strong>OpenBSD</strong> branched from NetBSD and developed its emphasis on security and correctness, while <strong>DragonFly BSD</strong> later branched from FreeBSD to pursue a different approach to multiprocessing and operating-system architecture. <strong>BSD/OS</strong> shows that commercial development existed alongside the freely developed BSDs.</p>
<p>BSD’s influence extends much farther than those operating systems. FreeBSD became a foundation for firewalls, storage appliances, desktop systems, and other specialized projects, while BSD technology became part of Darwin and Apple’s larger operating-system family. <strong>Permissive licensing allowed BSD code to move into systems that did not need to retain the BSD name</strong> or the development model of the project where the code originated.</p>
<p>Technology moved in the other direction as well. <strong>ZFS began in Solaris, migrated into FreeBSD, and continued through OpenZFS after OpenSolaris disappeared.</strong> Its history shows both how useful technology can cross operating-system families and how licensing affects where that technology can be integrated. BSD survives as a direct branch of the original UNIX lineage, but <strong>its reach extends far beyond the systems carrying the BSD name.</strong></p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="unix" /><category term="unix-history" /><category term="bsd" /><category term="berkeley-software-distribution" /><category term="freebsd" /><category term="netbsd" /><category term="openbsd" /><category term="dragonfly-bsd" /><category term="386bsd" /><category term="bsd-os" /><category term="darwin" /><category term="macos" /><category term="opnsense" /><category term="pfsense" /><category term="freenas" /><category term="truenas" /><category term="zfs" /><category term="openzfs" /><category term="opensolaris" /><category term="illumos" /><category term="cddl" /><category term="operating-systems" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how BSD grew from Berkeley UNIX into the FreeBSD, NetBSD, OpenBSD, and DragonFly BSD families, spread beneath systems such as firewalls and macOS, an...]]></summary></entry><entry><title type="html">UNIX Beyond the Original Source</title><link href="https://excalibursheath.com/article/2026/09/13/unix-beyond-sourche.html" rel="alternate" type="text/html" title="UNIX Beyond the Original Source" /><published>2026-09-13T11:00:00-06:00</published><updated>2026-09-13T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/09/13/unix-beyond-sourche</id><content type="html" xml:base="https://excalibursheath.com/article/2026/09/13/unix-beyond-sourche.html"><![CDATA[<p>UNIX began as source code.  The operating system developed at Bell Labs spread because that source could be studied, modified, and adapted to new machines.  That freedom to modify UNIX helped produce a <a href="https://excalibursheath.com/2026/09/06/unix-source-standards.html">growing family of related systems</a>, with different branches developing for different machines, markets, and purposes.  By the 1980s, UNIX was no longer a single operating system moving along a single path.</p>
<p>That fragmentation also complicated what it meant for an operating system to be UNIX.  Some systems could trace their development directly back to Bell Labs UNIX.  Others could implement interfaces defined by standards such as POSIX without sharing that ancestry.  UNIX would also become a certification and trademark applied to systems meeting a defined specification.  <strong>Source lineage, compatibility, and the UNIX name were becoming separate questions.</strong></p>
<p>There was another possibility.  If the important interfaces and behavior of UNIX could be described, developers could reproduce them without using UNIX source code at all.  Such systems could be <em>Unix-like</em>: built around many of the same concepts and interfaces without becoming another branch of the original UNIX source tree.  That distinction became increasingly important as UNIX ideas spread beyond systems descended directly from Bell Labs.</p>
<p>Commercial UNIX systems continued the original source lineage.  Standards increasingly defined what software could expect from a Unix environment, and independent projects could pursue Unix compatibility without UNIX ancestry at all.  Following these paths separately helps explain how UNIX became both a family of operating systems and a model that extended far beyond its original source code.</p>
<h2 id="unix-by-code">UNIX by Code</h2>
<p>The oldest meaning of UNIX is also the most straightforward: an operating system belongs to the UNIX family because its development can be traced back to the operating system created at Bell Labs.  This is <strong>UNIX as a source-code lineage</strong>.  Later systems may differ substantially from early UNIX, but there is still a historical path connecting their development.</p>
<p>That lineage began branching early.  UNIX source moved to universities, computer manufacturers, and other organizations, where it was adapted to different hardware and different needs.  Changes accumulated, features moved between branches, and vendors eventually developed distinct commercial products.  UNIX became less like a single operating system with successive versions and more like <strong>a family whose members shared an ancestor</strong>.</p>
<p>Source ancestry does not mean that a later system must still contain some particular percentage of the original Bell Labs code.  Operating systems are continually maintained and rewritten.  Drivers disappear with obsolete hardware, subsystems are replaced, interfaces are redesigned, and old implementations give way to new ones.  After decades of development, asking how much original code remains can tell us less about the relationship than asking how the system developed.</p>
<blockquote>
<p>A family tree tells us where a system came from; it does not mean that everything in that system came exclusively from one branch.</p>
</blockquote>
<p>The branches did not remain isolated either.  Commercial UNIX systems could incorporate ideas and technology associated with both AT&amp;T UNIX and BSD.  Later standards encouraged common interfaces across systems with increasingly different internals.  A family tree tells us where a system came from; it does not mean that everything in that system came exclusively from one branch.</p>
<h3 id="system-v-and-commercial-unix">System V and Commercial UNIX</h3>
<p>One of the most important lines ran through <strong>AT&amp;T’s System V</strong>.  As AT&amp;T moved UNIX further into the commercial market, System V became a major branch of UNIX development and an important foundation for commercial UNIX systems during the 1980s and 1990s.</p>
<p>Computer manufacturers of this period commonly developed operating systems around their own hardware.  UNIX gave vendors an established operating model and software environment while leaving room to optimize the system for particular machines and customers.  The result was not one commercial UNIX, but <strong>an ecosystem of related products</strong>.</p>
<p>Some of the most important commercial UNIX systems included:</p>
<ul>
<li>AIX</li>
<li>SunOS and Solaris</li>
<li>HP-UX</li>
<li>IRIX</li>
<li>Tru64 UNIX</li>
<li>SCO UNIX and OpenServer</li>
</ul>
<p>These systems shared UNIX ancestry, but they were not interchangeable releases of the same operating system.  Vendors differentiated them through administration tools, filesystems, networking, graphical environments, hardware support, and features aimed at their particular markets.  UNIX on a graphics workstation could look quite different from UNIX running business applications on a large enterprise server.</p>
<p>The commercial UNIX market eventually contracted, but its branches did not all meet the same fate.  Some continued as specialized enterprise systems.  Others passed through acquisitions into new companies or disappeared along with the hardware platforms and companies that had supported them.</p>
<h3 id="aix">AIX</h3>
<p>IBM’s <strong>AIX</strong> became closely associated with IBM’s workstation and enterprise hardware.  Rather than disappearing as UNIX declined on general-purpose computers, AIX remained in the enterprise market and eventually became centered on IBM’s POWER systems.</p>
<p>UNIX did not need to dominate the broader operating-system market for AIX to remain useful.  Customers with established systems could value <strong>stability, compatibility, vendor support, and the ability to continue running existing workloads</strong> already built around the platform.</p>
<h3 id="sunos-and-solaris">SunOS and Solaris</h3>
<p>Sun Microsystems followed a different path.  Its early <strong>SunOS</strong> releases were strongly connected to BSD.  <strong>Solaris</strong> represented Sun’s move toward System V and eventually combined technology and ideas from both sides of the UNIX family.</p>
<p>Solaris became one of the most visible commercial UNIX systems of the workstation and server era.  Sun paired the operating system closely with its SPARC hardware while also supporting other architectures, including x86.</p>
<p>Sun was eventually acquired by Oracle, bringing Solaris with it.  The Solaris story also continued outside its commercial owner.  Open-source work surrounding OpenSolaris contributed to <strong>illumos</strong>, from which several operating systems continue the Solaris-derived tradition.</p>
<h3 id="other-commercial-unix-systems">Other Commercial UNIX Systems</h3>
<p>Not every important commercial UNIX needs its own complete history here.  <strong>HP-UX, IRIX, and Tru64 UNIX</strong> show how closely commercial UNIX could become tied to a manufacturer’s hardware and business.</p>
<p>These included:</p>
<ul>
<li>HP-UX</li>
<li>IRIX</li>
<li>Tru64 UNIX</li>
</ul>
<p>Their histories differ, but they shared a problem as the market changed.  Proprietary workstation architectures declined and the computer industry consolidated, making separate UNIX implementations harder to justify.  Some systems retained specialized customers for years.  Others eventually reached the end of active development.</p>
<h3 id="sco-and-unix-on-intel">SCO and UNIX on Intel</h3>
<p>The Santa Cruz Operation occupied another interesting part of the commercial UNIX market.  SCO concentrated heavily on bringing UNIX to <strong>comparatively inexpensive Intel-based systems</strong>.  Businesses could run multiuser UNIX applications without purchasing one of the proprietary workstation or server platforms associated with many other UNIX vendors.</p>
<p>SCO’s UNIX business eventually passed to Caldera, a company already known for selling Linux.  Caldera had also experimented with making Linux installation friendlier: one of its graphical installers let you play Tetris while waiting for the installation to finish.</p>
<blockquote>
<p>Sometimes computing history includes waiting for Linux to install while playing Tetris.</p>
</blockquote>
<p>Caldera later renamed itself The SCO Group.  For the UNIX lineage we are following here, that is where we can leave the branch.</p>
<h2 id="unix-by-standards">UNIX by Standards</h2>
<p><strong>Source lineage tells us where an operating system came from.</strong>  It does not necessarily tell us how software written for that system will behave.  As UNIX divided into competing implementations, differences between those systems created a practical problem.  Software developers needed a common set of interfaces they could rely upon even when the underlying operating systems came from different branches.</p>
<p>Standards addressed that problem without requiring common source code.  They could define the interfaces and behavior an operating system was expected to provide.  Different operating systems could then implement those interfaces in their own ways.</p>
<blockquote>
<p>UNIX ancestry and UNIX compatibility are not the same thing.</p>
</blockquote>
<p><strong>UNIX ancestry and UNIX compatibility are not the same thing.</strong>  A system descended from Bell Labs UNIX could have genuine UNIX ancestry while differing from later standards.  Another system could implement standardized Unix interfaces without containing UNIX source code at all.</p>
<h3 id="posix">POSIX</h3>
<p><strong>POSIX</strong>, the Portable Operating System Interface, developed as an effort to define a common interface that software could expect across operating systems.  Rather than defining how an operating system had to work internally, POSIX concentrated on <strong>interfaces visible to programs and users</strong>.  Software could rely upon defined behavior instead of the peculiarities of a particular vendor’s UNIX.</p>
<p>Among the areas standardized by POSIX are:</p>
<ul>
<li>Process management</li>
<li>Files and directories</li>
<li>Signals</li>
<li>Shell behavior</li>
<li>Command-line utilities</li>
<li>Programming interfaces</li>
</ul>
<p>Two operating systems can implement the same POSIX interfaces while using very different code internally.  POSIX could therefore improve portability across an increasingly diverse UNIX family <strong>without requiring every implementation to descend from UNIX source</strong>.</p>
<p>Windows NT provides an interesting example.  I remember wondering why Microsoft cared about including POSIX support in Windows NT.  I also remember people describing Windows NT as a UNIX because it supported POSIX.  <em>That never seemed quite right.</em>  The difference between lineage and standards explains why.</p>
<p>Microsoft could implement a POSIX environment without turning Windows NT into a descendant of UNIX.  <strong>POSIX described interfaces an operating system could provide; it did not prescribe where the operating system’s source code had to come from.</strong>  Windows NT shows just how far the Unix interface had traveled beyond the UNIX family itself.</p>
<p>Microsoft continued experimenting with ways to support Unix and, later, Linux software on Windows.  We will return to that history when we follow the Windows branch.  For now, POSIX shows how Unix compatibility could extend beyond the UNIX family.</p>
<h3 id="from-posix-to-the-single-unix-specification">From POSIX to the Single UNIX Specification</h3>
<p>POSIX was part of a broader effort to bring consistency to an increasingly fragmented Unix world.  Other standards efforts were also trying to define a common operating environment, and over time those efforts converged.</p>
<p><strong>POSIX and the Single UNIX Specification should not be treated as competing definitions of Unix.</strong>  Today, the core volumes of the Single UNIX Specification are simultaneously the IEEE POSIX standard and the ISO/IEC 9945 standard.  Much of the standardized Unix programming environment is shared between them.</p>
<p>The <strong>Single UNIX Specification</strong> extends that foundation into the standard used to measure conformance for UNIX systems.  It encompasses the base operating-system environment along with the additional requirements needed to provide a consistent UNIX environment.</p>
<blockquote>
<p>Source ancestry tells us how an operating system developed.  Standards tell us whether the environment it provides meets an established specification.</p>
</blockquote>
<p>Source ancestry and standards can now answer different questions.  One tells us how an operating system developed.  The other tells us whether the environment it provides meets an established specification.</p>
<h3 id="unix-as-a-trademark">UNIX as a Trademark</h3>
<p><strong>UNIX is also a trademark.</strong>  The Open Group administers the UNIX trademark and operates the certification program associated with the Single UNIX Specification.</p>
<p>Certification is based upon <strong>conformance rather than genealogy</strong>.  A product must demonstrate that it passes the applicable certification tests, and its supplier must agree to the requirements of the certification program.  The Open Group can then grant the supplier a license to use the UNIX trademark with that product.</p>
<p>A system can have historical UNIX ancestry without currently being a certified UNIX product.  Tracing source code back to Bell Labs is not what certification establishes.  Certification tells us that a particular product conforms to a defined UNIX specification.</p>
<p>The word <em>UNIX</em> can describe several related but distinct relationships:</p>
<table>
<thead>
<tr>
<th>Term</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>UNIX-derived</td>
<td>Historical or source ancestry</td>
</tr>
<tr>
<td>POSIX conforming</td>
<td>Implements the applicable POSIX interfaces</td>
</tr>
<tr>
<td>UNIX certified</td>
<td>Certified to the applicable UNIX specification and licensed to use the UNIX trademark</td>
</tr>
<tr>
<td>Unix-like</td>
<td>Resembles or implements the broader Unix operating model</td>
</tr>
</tbody>
</table>
<p>Keeping these meanings separate clears up otherwise confusing descriptions of operating systems.  Standards allowed Unix compatibility to extend beyond the original source tree.  Certification gave the UNIX name a definition that did not depend solely upon tracing code back to Bell Labs.</p>
<h2 id="unix-like-without-unix-source">Unix-Like Without UNIX Source</h2>
<p>Unix interfaces could be described independently of the source code that originally implemented them.  An operating system therefore did not have to descend from Bell Labs UNIX to provide a familiar Unix environment.  Developers could create <strong>their own implementations of the same ideas and interfaces</strong>.</p>
<p>The term <em>Unix-like</em> is useful for this broader family.  It can describe systems that follow Unix conventions, provide similar tools and interfaces, or deliberately seek compatibility without claiming UNIX source ancestry or certification.  The boundary is less precise than either a source lineage or a formal standard, but the term helps separate <strong>the influence of Unix from the narrower history of UNIX itself</strong>.</p>
<p>Independent implementation also mattered because UNIX source was proprietary.  Reproducing Unix behavior without copying that source made it possible to pursue goals that commercial UNIX vendors were not necessarily trying to achieve.  One of the most consequential attempts began with the GNU Project.</p>
<h3 id="gnus-not-unix">GNU’s Not Unix</h3>
<p>Richard Stallman <a href="https://www.gnu.org/gnu/initial-announcement.en.html">announced the GNU Project in 1983</a> with the goal of developing a <strong>complete free Unix-compatible operating system</strong>.  Its name, <strong>GNU’s Not Unix</strong>, deliberately captured the distinction.  GNU was intended to behave like Unix, but it would be independently implemented rather than another version of UNIX.</p>
<p>Unix compatibility gave the project an existing model to work from.  Developers did not need to invent an entirely new operating environment simply because they were writing new code.  Programs, commands, programming interfaces, and established Unix practices provided a familiar target while GNU’s implementation could remain independent.</p>
<p>The goal also connected compatibility with software freedom.  The <a href="https://excalibursheath.com/2026/08/30/distribution-freedom-licensing.html">freedoms to use, study, modify, and redistribute software</a> were central to the GNU Project.  A free Unix-compatible operating system could preserve a useful operating model without depending upon the proprietary software that implemented UNIX.</p>
<blockquote>
<p>GNU was intended to behave like Unix, but it would be independently implemented rather than another version of UNIX.</p>
</blockquote>
<p>GNU was not another branch of the Bell Labs source tree, and its purpose did not depend upon permission to use the UNIX trademark.  The goal was to build a new operating system that provided a compatible Unix environment using freely available source code.</p>
<p>That is where we can leave GNU for now.  The project had established its goal and shown that a Unix-like system could be built independently.  How GNU attempted to complete that operating system is the next part of its story.</p>
<h2 id="summary">Summary</h2>
<p>UNIX continued after its early fragmentation as a genuine source-code family.  System V and the commercial UNIX systems carried that lineage into workstations, servers, and enterprise computing.  Some branches survived in specialized markets, while others disappeared or passed through acquisitions as the commercial UNIX market contracted.</p>
<p>Source ancestry was no longer the only way an operating system could be related to UNIX.  POSIX defined interfaces that could be implemented independently.  The Single UNIX Specification and UNIX certification provided a standards-based meaning for the UNIX name.  A system could share UNIX ancestry, provide standardized Unix interfaces, qualify to use the UNIX trademark, or combine those relationships in different ways.</p>
<p>Unix ideas could also spread without the original source code.  A Unix-like system could reproduce familiar interfaces, tools, and conventions through an independent implementation.  The GNU Project made that distinction explicit in its own name: GNU’s Not Unix.  Its goal was not another proprietary UNIX descendant, but a complete free operating system compatible with Unix.</p>
<p>UNIX had become more than a line of source code descending from Bell Labs.  It was <strong>a historical family, a standardized environment, a certified name, and a model for independently developed Unix-like systems</strong>.  Keeping those meanings separate gives us a clearer way to follow the operating-system families that developed from them.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="unix" /><category term="unix-history" /><category term="bell-labs" /><category term="att" /><category term="system-v" /><category term="commercial-unix" /><category term="aix" /><category term="sunos" /><category term="solaris" /><category term="hp-ux" /><category term="irix" /><category term="tru64-unix" /><category term="sco" /><category term="caldera" /><category term="illumos" /><category term="posix" /><category term="single-unix-specification" /><category term="unix-certification" /><category term="unix-like" /><category term="gnu" /><category term="free-software" /><category term="operating-systems" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how UNIX continued through commercial source-code descendants, became defined through POSIX and the Single UNIX Specification, and inspired Unix-like...]]></summary></entry><entry><title type="html">UNIX: From Source to Standards</title><link href="https://excalibursheath.com/article/2026/09/06/unix-source-standards.html" rel="alternate" type="text/html" title="UNIX: From Source to Standards" /><published>2026-09-06T11:00:00-06:00</published><updated>2026-09-06T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/09/06/unix-source-standards</id><content type="html" xml:base="https://excalibursheath.com/article/2026/09/06/unix-source-standards.html"><![CDATA[<p>Last week, we looked at <a href="../../08/30/distribution-freedom-licensing.html">how software distribution and licensing shape what can be done with software after it has been written</a>. Proprietary software, shareware, free software, permissive licenses, and copyleft licenses provide different answers to questions about who can use, modify, and redistribute code. Those choices can affect not only individual programs, but the communities and systems that grow around them.</p>
<p>UNIX gives us an opportunity to see those effects across an entire family of operating systems. AT&amp;T licensed UNIX source code to universities and computer companies, allowing different organizations to study, modify, and adapt the system under the terms of those licenses. That helped UNIX spread, but it also helped create distinct branches as licensees developed UNIX for different hardware, customers, and purposes. Licensing continued shaping those branches: Berkeley eventually worked to remove AT&amp;T-controlled code from BSD so that its own work could be distributed more freely. <strong>Licensing did not merely determine who could receive UNIX. It helped shape what the UNIX family became.</strong></p>
<p>The code did not travel alone. As the UNIX family grew, ideas and capabilities moved between its branches, and eventually UNIX concepts traveled beyond systems descended from AT&amp;T source. New operating systems could reproduce UNIX interfaces and conventions without containing UNIX code. <strong>The ideas had begun to spread farther than the code.</strong></p>
<p>That success created a new problem. If UNIX could refer to descendants of the original source, systems assembled from different UNIX traditions, and independently developed systems that behaved like UNIX, <strong>what did it mean for an operating system to be UNIX?</strong> Standards such as POSIX emerged as part of the answer, defining common interfaces across an increasingly diverse UNIX and Unix-like world.</p>
<h2 id="unix-leaves-bell-labs">UNIX Leaves Bell Labs</h2>
<p>UNIX began at Bell Labs, but it did not stay there. During its early development, AT&amp;T operated under restrictions that limited its ability to enter the computer business. Instead of treating UNIX like a conventional commercial software product, AT&amp;T made it available under license to universities, government organizations, and eventually commercial organizations. Many of those licenses provided access to the source code.</p>
<p>That gave UNIX an unusual path outward. Organizations receiving the source did not merely receive an operating system they could run. They could study it, adapt it to their computers, and develop it for their own purposes. As more organizations did so, UNIX was becoming something larger than the system being developed at Bell Labs.</p>
<h3 id="licensing-lets-the-code-travel">Licensing Lets the Code Travel</h3>
<p>Source access became particularly useful because <a href="../../08/23/unix-family.html">UNIX had already gained another important characteristic: <em>portability</em></a>. Rewriting much of UNIX in C reduced its dependence on the assembly language of one particular computer. Moving UNIX to another architecture still required work, but it no longer meant rewriting the entire operating system for every new machine.</p>
<p>Licensing and portability solved different parts of the same problem. <strong>Portability allowed UNIX to move between computers; licensing allowed its code to move between organizations.</strong> Together, they made it possible for UNIX to appear on hardware and in institutions far removed from Bell Labs.</p>
<blockquote>
<p>Portability allowed UNIX to move between computers; licensing allowed its code to move between organizations.</p>
</blockquote>
<p>Those organizations did not all need the same operating system. Universities could experiment with UNIX and develop new capabilities. Computer manufacturers could adapt it to their own hardware and customers. Other organizations could modify it around their particular requirements. Once those changes began accumulating independently, UNIX no longer had to develop in only one direction.</p>
<p>The licenses that helped UNIX spread also created the conditions for different branches to develop. Organizations could begin with related AT&amp;T code and produce increasingly different systems. UNIX was becoming a family because its source had been allowed to travel.</p>
<h3 id="berkeley-builds-on-unix">Berkeley Builds on UNIX</h3>
<p>One of the most important destinations was the University of California, Berkeley. Berkeley began working with licensed UNIX in the 1970s and distributed additions and modifications as the <strong>Berkeley Software Distribution</strong>, or BSD. Over successive releases, those changes became increasingly substantial.</p>
<p>Berkeley contributed tools and operating-system capabilities that would become important well beyond the university. Its networking work became particularly influential as UNIX systems became connected to networks and eventually to the growing Internet. BSD was no longer simply a few local modifications to UNIX; it had become a major branch of UNIX development.</p>
<p>At this stage, however, BSD was still a branch in the literal sense. It had grown from licensed UNIX source, and its distributions contained AT&amp;T-controlled code. Receiving Berkeley’s additions did not erase the licensing requirements attached to the UNIX code underneath them.</p>
<p>That distinction will become increasingly important as we follow the UNIX family. BSD was not merely an operating system designed to resemble UNIX. <strong>Its history ran directly through the original UNIX source tree.</strong></p>
<h3 id="licensing-pushes-bsd-toward-independence">Licensing Pushes BSD Toward Independence</h3>
<p>The same licensing arrangement that allowed Berkeley to build on UNIX also placed limits on how Berkeley could distribute the resulting system. Berkeley could make its own work available under its own terms, but it could not simply treat AT&amp;T’s portions of the operating system as Berkeley code.</p>
<p>That gave Berkeley a reason to separate the two. Developers progressively replaced AT&amp;T-controlled portions of BSD with implementations that could be distributed under Berkeley’s terms. What had begun as modifications to licensed UNIX gradually moved toward a system that no longer required the original AT&amp;T source to function.</p>
<blockquote>
<p>Licensing gave Berkeley access to UNIX code. The restrictions attached to that code later gave Berkeley a reason to replace it.</p>
</blockquote>
<p>The process took years and eventually became part of a larger legal dispute over UNIX and BSD code. We will return to that history when we follow the BSD family itself. Here, the important point is the relationship between the two developments: <strong>AT&amp;T’s licensing helped create the BSD branch, while the restrictions attached to AT&amp;T code helped give Berkeley a reason to remove that code.</strong></p>
<p>BSD therefore shows why the UNIX family cannot be understood as a simple tree. UNIX source traveled outward and created a new branch, but that branch began replacing parts of the code from which it had grown. Meanwhile, AT&amp;T and commercial vendors continued UNIX development along other paths. <strong>The code had spread, and the branches were beginning to take on lives of their own.</strong></p>
<h2 id="att-builds-the-commercial-unix-line">AT&amp;T Builds the Commercial UNIX Line</h2>
<p>While Berkeley was developing BSD, UNIX continued changing at AT&amp;T. Changes in AT&amp;T’s business environment opened the way for the company to treat UNIX more directly as a commercial product. That created another major path for the code that had begun at Bell Labs.</p>
<p>The result was not simply an AT&amp;T operating system competing with BSD. Computer manufacturers wanted UNIX for their own hardware, and AT&amp;T’s commercial UNIX became a foundation on which vendors could build. The UNIX family expanded across machines ranging from workstations to larger commercial systems.</p>
<h3 id="from-research-unix-to-system-v">From Research UNIX to System V</h3>
<p>The UNIX developed at Bell Labs had gone through a series of Research UNIX editions, but AT&amp;T increasingly consolidated work intended for commercial use. UNIX System III, released outside Bell Labs in 1982, brought together development from several earlier AT&amp;T UNIX efforts. It was followed in 1983 by <strong>UNIX System V</strong>.</p>
<p>System V became the principal commercial UNIX line associated with AT&amp;T. It continued through several releases, adding capabilities while providing a common starting point for commercial UNIX implementations. Vendors could license AT&amp;T technology and adapt UNIX to the computers and markets they served.</p>
<p>This produced another kind of UNIX branch. Berkeley had grown from a university research environment, while commercial vendors built systems around particular hardware platforms and customers. <strong>The underlying UNIX code could be related even when the resulting operating systems were sold by different companies for very different machines.</strong></p>
<h3 id="ibm-builds-aix">IBM Builds AIX</h3>
<p>IBM entered the UNIX family with <strong>AIX</strong>. Like other vendor UNIX systems, AIX was not simply AT&amp;T UNIX with a different name. IBM developed it around its own hardware and enterprise requirements while drawing from established UNIX traditions.</p>
<p>AIX 3 shows how those traditions were already beginning to overlap. Its foundation drew from AT&amp;T System V while incorporating features associated with BSD. IBM could build a commercial UNIX whose source history ran through the AT&amp;T line while also adopting capabilities developed elsewhere in the UNIX family.</p>
<p>AIX also demonstrates how far UNIX had moved into commercial computing. AT&amp;T code could provide the foundation, while a major computer manufacturer developed that foundation into its own long-lived operating system.</p>
<h3 id="hewlett-packard-builds-hp-ux">Hewlett-Packard Builds HP-UX</h3>
<p>Hewlett-Packard followed a similar path with <strong>HP-UX</strong>. Early HP-UX development drew from AT&amp;T UNIX, including System III and later System V, as Hewlett-Packard adapted UNIX to its own computer systems.</p>
<p>HP-UX also incorporated capabilities associated with BSD, including networking interfaces that had become important in the Berkeley branch. Its history therefore cannot be understood simply by drawing a line from AT&amp;T and ignoring the rest of the UNIX family.</p>
<p>AIX and HP-UX show why the spread of UNIX was different from distributing identical copies of one operating system. Vendors received UNIX technology, adapted it to their hardware, selected capabilities useful to their customers, and continued developing their systems over many years. <strong>The AT&amp;T code provided ancestry, but it did not require every descendant to remain the same.</strong></p>
<h3 id="sun-crosses-the-major-unix-traditions">Sun Crosses the Major UNIX Traditions</h3>
<p>Sun Microsystems makes the relationship between the major UNIX branches even clearer. Early <strong>SunOS</strong> was strongly rooted in the BSD tradition. Sun became an important commercial home for technology that had developed through Berkeley rather than primarily through AT&amp;T’s System V line.</p>
<p>Sun later worked with AT&amp;T as the major UNIX traditions began moving back toward one another. Its operating-system line would eventually move from the earlier BSD-derived foundation to one based on System V Release 4.</p>
<p>Sun therefore crossed between two of the most important UNIX traditions. <strong>A company whose operating system had been rooted primarily in BSD became directly involved in bringing BSD and System V technology together.</strong></p>
<p>The same pattern was already visible in AIX and HP-UX. UNIX systems had distinct histories, but those histories no longer developed in isolation. The family tree was beginning to acquire connections between its branches.</p>
<h2 id="the-unix-tree-becomes-a-web">The UNIX Tree Becomes a Web</h2>
<p>A family tree is useful for showing where an operating system came from. AT&amp;T UNIX led to multiple lines of development, Berkeley built BSD from licensed UNIX source, and vendors developed their own commercial systems. If each branch had continued independently, a tree might be enough to describe the UNIX family.</p>
<p>That is not what happened. Once different groups began improving UNIX for their own purposes, useful work could travel between them. <strong>The UNIX source had created branches, but the branches began contributing back to the larger UNIX world.</strong> Ancestry still mattered, but ancestry alone could no longer explain what was inside a particular UNIX system.</p>
<h3 id="bsd-technology-travels-back-out">BSD Technology Travels Back Out</h3>
<p>Berkeley had received UNIX code through AT&amp;T licensing, but Berkeley did not simply consume what Bell Labs produced. Researchers and developers added their own tools and capabilities, and some of that work became valuable to UNIX users outside Berkeley.</p>
<p>Networking is one of the clearest examples. BSD became an important home for the development and implementation of <strong>TCP/IP networking</strong>, along with the <em>sockets</em> interface applications could use to communicate over networks. As networking became increasingly important, BSD-derived networking technology appeared in commercial UNIX systems as well.</p>
<p>The direction had reversed. AT&amp;T code traveled outward to Berkeley, where it helped create BSD. Technology developed in the BSD branch then traveled outward again and became part of systems whose primary lineage ran through commercial UNIX.</p>
<p>AIX and HP-UX already gave us examples of that mixture. Both belonged to the commercial UNIX world while incorporating capabilities associated with BSD. <strong>A system could have one primary ancestry while containing technology that had traveled through another branch of the family.</strong></p>
<blockquote>
<p>A UNIX family tree can show ancestry. It cannot show every movement of technology between the branches.</p>
</blockquote>
<h3 id="xenix-adds-another-path">Xenix Adds Another Path</h3>
<p>Microsoft also participated in the early commercial UNIX world. It licensed UNIX from AT&amp;T and developed <strong>Xenix</strong>, which was adapted to several hardware platforms and eventually became closely associated with the growing market for microcomputers.</p>
<p>Xenix developed along its own commercial path and incorporated technology from more than one UNIX tradition. Microsoft eventually shifted its operating-system attention elsewhere and transferred ownership of Xenix to the Santa Cruz Operation in 1987. Xenix nevertheless remained part of the larger UNIX story because UNIX technology had continued developing there outside AT&amp;T.</p>
<p>That became important when several of these paths met again. Xenix was not a dead branch disconnected from the rest of the UNIX family. Technology associated with it became one of the ingredients considered when AT&amp;T and Sun attempted to bring major UNIX traditions back together.</p>
<h3 id="system-v-release-4-recombines-the-family">System V Release 4 Recombines the Family</h3>
<p>By the late 1980s, the existence of competing UNIX variants had become a problem as well as a sign of UNIX’s success. Different vendors and development traditions had produced systems with different capabilities and interfaces. Shared ancestry did not guarantee that software or administrative knowledge would transfer cleanly between every member of the UNIX family.</p>
<p>AT&amp;T and Sun collaborated on <strong>System V Release 4</strong>, released in 1989. SVR4 brought together technology from several important UNIX traditions, including AT&amp;T System V, BSD, and Xenix. Rather than representing another clean split in the family tree, it deliberately recombined work that had developed along different paths.</p>
<p>Sun’s operating-system history makes that crossing particularly visible. Earlier SunOS had been rooted primarily in BSD. The later SunOS 5 foundation used for Solaris 2 was based on SVR4, moving Sun onto a system that combined the AT&amp;T System V tradition with technology that had traveled through BSD and other UNIX branches.</p>
<p>A simple family tree was no longer enough. A tree can still tell us something important about ancestry, but it cannot show every movement of code between related systems. <strong>UNIX had become a web: code traveled outward, branches developed independently, and useful work could cross between those branches or be brought together again.</strong></p>
<h3 id="where-did-the-original-att-unix-go">Where Did the Original AT&amp;T UNIX Go?</h3>
<p>With UNIX code spreading through so many branches, it is easy to lose track of the line AT&amp;T itself continued developing. That line did not disappear with System V Release 4. Instead, the UNIX business and the rights associated with it began passing between companies.</p>
<p>AT&amp;T placed its UNIX business in <strong>Unix System Laboratories</strong>, or USL, which continued developing and licensing System V. UnixWare emerged from <strong>Univel</strong>, a joint venture between USL and Novell, and was built on the System V Release 4 lineage. Novell acquired USL in 1993, bringing both the AT&amp;T commercial UNIX business and UnixWare under Novell.</p>
<p>In 1995, Novell transferred its UnixWare operating-system business to the <strong>Santa Cruz Operation</strong>, commonly known as SCO. The transaction did not amount to a simple transfer of everything associated with the word UNIX. Novell retained important rights and continued receiving revenue associated with older UNIX System V source licenses, while SCO received the UnixWare business and continued developing and selling UNIX systems. Those distinctions would become important years later when ownership of UNIX copyrights became part of the SCO litigation.</p>
<p>The business changed hands again. The original Santa Cruz Operation sold its server software and services divisions, including UnixWare and OpenServer, to Caldera Systems in 2001. Caldera later adopted the SCO name. After bankruptcy and further transfers, the UnixWare and OpenServer product line eventually reached <strong>Xinuos</strong>, which continues that commercial operating-system lineage today.</p>
<p>The UNIX name followed a different path. UNIX became increasingly defined through standards rather than ownership of AT&amp;T’s operating-system source, and responsibility for the UNIX trademark passed from Novell to X/Open in the 1990s. X/Open later became part of The Open Group. Ownership of a particular UNIX-derived codebase, historical rights associated with System V code, and the right to certify an operating system under the UNIX trademark are therefore different things.</p>
<blockquote>
<p>When following UNIX history, ask which relationship you mean: source ancestry, ownership of a particular codebase, compatibility with a standard, or the right to use the UNIX trademark. They are not the same thing.</p>
</blockquote>
<p>AT&amp;T left the UNIX operating-system business without bringing the UNIX story to an end. Its code had already spread throughout the family, its own commercial lineage continued through other companies, and the UNIX name was becoming separated from any single implementation. There was no longer one piece of code we could point to and say that everything called UNIX had to descend from it.</p>
<h2 id="unix-ideas-spread-beyond-unix-code">UNIX Ideas Spread Beyond UNIX Code</h2>
<p>By the 1980s, UNIX had spread far beyond Bell Labs. AT&amp;T source could be found in university systems, commercial UNIX products, and vendor-specific branches. Code developed in one branch could cross into another, making the UNIX family increasingly difficult to describe as a simple tree.</p>
<p>But source code was no longer the only thing spreading. UNIX had been studied, taught, documented, and used for years. Developers understood many of its interfaces and conventions, and programmers had learned to expect a particular kind of operating environment. <strong>It was becoming possible to reproduce the ideas behind UNIX without inheriting the original AT&amp;T code.</strong></p>
<p>That creates a different relationship to UNIX. BSD, System V, AIX, and HP-UX can be followed through <em>source ancestry</em>. Other systems could instead connect to UNIX through compatible interfaces, familiar tools, architectural ideas, documentation, education, or influence.</p>
<h3 id="minix-recreates-a-unix-like-system">MINIX Recreates a Unix-like System</h3>
<p>Andrew Tanenbaum developed <strong>MINIX</strong> as a small Unix-like operating system for teaching operating-system concepts. Earlier UNIX source had been used in university operating-systems courses, but AT&amp;T licensing restrictions eventually made that increasingly difficult. Tanenbaum responded by writing a new system from scratch that could provide a Unix-like environment without using AT&amp;T’s UNIX source.</p>
<p>MINIX was therefore fundamentally different from early BSD. Berkeley began with licensed UNIX code and gradually worked toward replacing the portions controlled by AT&amp;T. MINIX was a <strong>complete rewrite</strong>: neither its kernel nor its utility programs contained AT&amp;T code. Its source could be studied without inheriting the licensing restrictions attached to UNIX source.</p>
<p>The distinction matters because it shows another way UNIX could spread. A developer no longer needed the Bell Labs implementation itself to reproduce important parts of the UNIX operating model. <strong>UNIX had become an idea that could be independently implemented.</strong></p>
<blockquote>
<p>Similar behavior does not establish source ancestry. A system can reproduce UNIX interfaces and ideas without containing UNIX code.</p>
</blockquote>
<p>MINIX also became important for another reason. Its availability on personal computers put a Unix-like operating system in the hands of students and programmers who might never have had access to a commercial UNIX workstation or institutional UNIX system. One of those users was a Finnish computer-science student named Linus Torvalds.</p>
<h3 id="gnu-sets-out-to-replace-unix-without-copying-it">GNU Sets Out to Replace UNIX Without Copying It</h3>
<p>MINIX was not the only project demonstrating that UNIX ideas could exist independently of UNIX source. In 1983, several years before MINIX appeared, Richard Stallman announced the <strong>GNU Project</strong>. His goal was ambitious: build a complete free software system that would be compatible with UNIX without simply being UNIX.</p>
<p>The distinction was deliberate. GNU stands for <strong>“GNU’s Not Unix.”</strong> Stallman’s original announcement described a system intended to run UNIX programs while remaining its own implementation. Instead of requiring users to depend on proprietary UNIX software, GNU would recreate the operating environment with software that users could run, study, modify, and redistribute.</p>
<p>UNIX compatibility made that goal practical. Developers did not have to invent every interface from scratch or design an entirely new operating environment before separate pieces could work together. UNIX already provided a model for shells, compilers, utilities, libraries, and other components. Compatible replacements could be developed independently while still following expectations established by UNIX.</p>
<p>GNU therefore represents another way UNIX spread without AT&amp;T source. The project was not trying to continue AT&amp;T’s UNIX product line. It was building a different implementation around many of the same interfaces and expectations.</p>
<p>By 1990, GNU had found or written <strong>all of the major components it needed except the operating-system kernel</strong>. GNU’s operating environment was already well developed, but its own kernel was not yet ready to complete the system. <strong>GNU had nearly recreated the UNIX operating environment without inheriting UNIX itself.</strong></p>
<h3 id="from-minix-to-linux">From MINIX to Linux</h3>
<p>Meanwhile, Linus Torvalds was using MINIX on an Intel 386 computer. He began experimenting with the processor and gradually developed what became an independent operating-system kernel. MINIX provided the environment in which that early work took place, but Torvalds was not modifying MINIX into a new operating system.</p>
<p>The distinction is important: <strong>influence is not ancestry.</strong> MINIX provided Torvalds with a Unix-like environment, tools, documentation, and a community in which early Linux development could take place. Linux itself was independently written rather than a new branch of the MINIX source tree.</p>
<blockquote>
<p>Influence is not ancestry.</p>
</blockquote>
<p>On August 25, 1991, Torvalds <a href="https://groups.google.com/g/comp.os.minix/c/dlNtH7RRrGA/m/SwRavCzVE7gJ">announced his new operating-system project to the <code class="language-plaintext highlighter-rouge">comp.os.minix</code> community</a>. He described a free operating system for 386 and 486 computers and asked MINIX users what features they would like to see. He also made clear that the new system contained no MINIX code. The relationship between MINIX and Linux was real, but it was a relationship of environment and influence rather than inherited source.</p>
<p>Torvalds initially considered the name <strong>Freax</strong> for the project. When the early files were placed on an FTP server, Ari Lemmke instead used <strong>Linux</strong> for the directory, and that was the name that survived. The kernel would soon grow far beyond the experiments that produced it, but that belongs to a later part of our story.</p>
<p>For now, GNU and Linux should remain separate. GNU was an established effort to build a complete free Unix-compatible operating system. Linux was a newly written Unix-like kernel emerging from experiments performed in a MINIX environment. <strong>Neither needed AT&amp;T UNIX source for UNIX ideas to reach it.</strong></p>
<p>UNIX had first spread because organizations could obtain its code. Now systems could join the broader Unix-like world without inheriting that code at all. <strong>The code had created a family; the ideas had escaped the family tree.</strong></p>
<h2 id="what-is-unix">What Is UNIX?</h2>
<p>By the beginning of the 1990s, the question <strong>“What is UNIX?”</strong> no longer had a simple answer. Some operating systems descended directly from AT&amp;T source. Others combined code and capabilities from several UNIX branches. Still others, such as MINIX, GNU, and Linux, were being independently developed around UNIX interfaces and ideas without inheriting the original UNIX source.</p>
<p>Shared ancestry was no longer enough to describe the larger UNIX world. Two systems could descend from UNIX and behave differently, while another system could contain no original UNIX code and deliberately provide many of the same interfaces. If software developers wanted their programs to move between these systems, they needed something more useful than a family tree.</p>
<p>They needed agreement about <strong>how a Unix-like operating system should behave.</strong></p>
<h3 id="posix-defines-common-interfaces">POSIX Defines Common Interfaces</h3>
<p>Efforts to standardize UNIX interfaces had already begun while the commercial UNIX branches were developing. One of the most important results was <strong>POSIX</strong>, the Portable Operating System Interface. The first POSIX.1 standard was published in 1988.</p>
<p>POSIX approached the problem through interfaces rather than ancestry. Instead of requiring an operating system to contain a particular body of UNIX source code, the standard defined interfaces and behavior that software could expect an operating system to provide.</p>
<p>That made POSIX useful beyond systems descended directly from AT&amp;T UNIX. The standard was intended to apply not only to systems derived from original UNIX code, but also to compatible systems developed independently, emulations hosted on other operating systems, and systems running across a broad range of hardware.</p>
<p><strong>POSIX therefore provided a way to describe UNIX compatibility without requiring UNIX ancestry.</strong></p>
<p>That mattered for portability. A programmer targeting standardized interfaces could depend less on the peculiarities of one vendor’s UNIX implementation. Standards could not make every UNIX and Unix-like system identical, but they could establish common ground between systems whose source histories were becoming increasingly different.</p>
<h3 id="unix-becomes-a-standard-as-well-as-a-lineage">UNIX Becomes a Standard as Well as a Lineage</h3>
<p>POSIX did not completely answer the question of what could officially be called <strong>UNIX</strong>. During the 1990s, control of the UNIX trademark became separated from the commercial operating-system code that had descended from AT&amp;T.</p>
<p>As Novell moved away from the UNIX business, the UNIX trademark passed to X/Open, which later became part of The Open Group. In 1994, X/Open introduced the <a href="https://personal.opengroup.org/~ajosey/LWE2004/UNIX_Poster/unix_posterA3_Screen.pdf"><strong>Single UNIX Specification</strong></a>, establishing a common specification against which operating systems could be measured.</p>
<p>This changed what UNIX could mean. <strong>An operating system no longer had to descend from a particular AT&amp;T code stream to qualify as UNIX.</strong> What mattered for use of the UNIX trademark was conformance with the specification and certification under the UNIX branding program.</p>
<blockquote>
<p>The family name had effectively separated from the family tree.</p>
</blockquote>
<p>That does not make ancestry irrelevant. System V, BSD, AIX, HP-UX, Solaris, and other systems still have histories that can be traced through actual UNIX code. Source ancestry and the UNIX trademark now answer different questions. One tells us where a system came from; the other tells us whether a product has demonstrated the conformance required to use the UNIX name.</p>
<h3 id="why-gnu-and-linux-are-not-unix">Why GNU and Linux Are Not UNIX</h3>
<p>This helps explain something that can otherwise sound contradictory. GNU and Linux are deeply connected to the UNIX tradition, but that does not make either one a descendant of UNIX source.</p>
<p>In 1983, Richard Stallman <a href="https://www.gnu.org/gnu/initial-announcement.en.html">announced his intention to build a complete Unix-compatible software system called GNU</a>. <strong>GNU stands for “GNU’s Not Unix,”</strong> a recursive acronym deliberately emphasizing that the project was building a Unix-compatible system rather than continuing UNIX itself.</p>
<p>The distinction was practical as well as linguistic. UNIX was proprietary software, and Stallman’s purpose in creating GNU was to build a system that could be used, studied, modified, and shared without accepting the restrictions attached to proprietary UNIX. GNU could reproduce useful UNIX interfaces, tools, and behavior while implementing them independently. <strong>GNU wanted UNIX compatibility without UNIX’s licensing restrictions.</strong></p>
<p>Linux reached a similar technical position by a different route. Torvalds developed Linux in a Unix-like environment and deliberately implemented interfaces associated with UNIX and POSIX, but Linux was independently written rather than derived from AT&amp;T UNIX source. When Linux was combined with GNU tools and other software into complete operating systems, those systems could provide a Unix-like environment without acquiring a commercial UNIX source license.</p>
<p>By then, however, <em>UNIX</em> had also become a certification and trademark. A Linux-based operating system could potentially become an official UNIX system by demonstrating conformance with the Single UNIX Specification and completing The Open Group’s certification process. A small number of Linux-based systems eventually did. <strong>Most Linux distributions did not need the UNIX name badly enough to take on the cost and work of certification.</strong> Unix-like, Unix-compatible, and POSIX compatibility could describe the relationships that mattered without acquiring the right to market the product as UNIX®.</p>
<p>Linux can therefore follow the UNIX tradition closely without being UNIX in either of the senses we have been discussing. Linux did not inherit AT&amp;T UNIX source, and most Linux distributions have not sought certification for the UNIX trademark. What reached Linux instead were <strong>the interfaces, conventions, tools, and ideas of the UNIX environment.</strong></p>
<p>GNU and Linux therefore have a different relationship to UNIX than BSD does. <strong>BSD can point backward through source ancestry. GNU and Linux point backward through interfaces, conventions, standards, and ideas.</strong> All belong to the broader history of UNIX’s influence, but they arrived there by different paths.</p>
<h3 id="unix-posix-and-unix-like-are-not-the-same-thing">UNIX, POSIX, and Unix-like Are Not the Same Thing</h3>
<p>That history leaves several related ideas that are easy to collapse into the single word <em>UNIX</em>.</p>
<p>A system can have <strong>UNIX ancestry</strong> because its source history ultimately descends from the original UNIX code. That is the family tree we have followed through much of this article.</p>
<p>A system can be <strong>POSIX-conformant</strong> by implementing standardized interfaces. That relationship does not require the system to contain original UNIX source.</p>
<p>A product can be <strong>certified UNIX</strong> by demonstrating conformance with the applicable Single UNIX Specification and meeting the requirements for use of the UNIX trademark. UNIX in this formal sense is a certification, not simply a description of ancestry.</p>
<p>Finally, a system can be described more generally as <strong>Unix-like</strong> because it follows UNIX interfaces, conventions, tools, or design ideas without necessarily being descended from UNIX source or certified to use the UNIX trademark.</p>
<blockquote>
<p>UNIX ancestry, POSIX conformance, UNIX certification, and being Unix-like describe different relationships. They can overlap, but they are not interchangeable.</p>
</blockquote>
<p>These categories can overlap, but they are not interchangeable. A system’s source can tell us one story, its interfaces another, and its certification status another still. <strong>As UNIX spread, the meaning of the word had to expand beyond the history of one body of source code.</strong></p>
<p>UNIX first spread because its <strong>code</strong> could travel. Its branches then exchanged code and capabilities with one another. Eventually its <strong>ideas and interfaces</strong> traveled beyond systems containing UNIX code at all. Standards provided a way for those increasingly different systems to share a common operating environment.</p>
<p>The UNIX family had become more than a family tree.</p>
<h2 id="summary">Summary</h2>
<p>UNIX did not become a family simply because people liked the operating system and decided to imitate it. <strong>Its source code was allowed to travel.</strong> AT&amp;T licensing gave universities and computer companies access to UNIX code they could study and adapt, while the portability UNIX gained from C made those adaptations practical across different hardware. The same licensing system also placed limits on what recipients could do with that code. Berkeley demonstrates both sides particularly well: licensing gave Berkeley access to UNIX, while licensing restrictions eventually gave Berkeley a reason to replace the AT&amp;T-controlled portions of BSD.</p>
<p>Once UNIX had spread, its branches did not remain isolated. Berkeley-developed technology moved into commercial UNIX systems, vendors combined AT&amp;T and BSD traditions with their own work, and System V Release 4 deliberately brought together technology from System V, BSD, and Xenix. <strong>The UNIX tree became a web.</strong> Even as AT&amp;T left the UNIX business and its commercial operating-system lineage passed through other companies, UNIX technology had already spread too widely to belong to one development path.</p>
<p>Eventually, <strong>the ideas traveled farther than the code</strong>. MINIX demonstrated that a Unix-like system could be independently implemented for teaching. GNU deliberately pursued a free Unix-compatible system without becoming UNIX, and Linux emerged as another independent implementation shaped by the Unix-like environment around it. POSIX and the Single UNIX Specification helped separate compatibility and the UNIX name from any requirement that a system descend from one particular body of source code. UNIX ancestry, POSIX compatibility, UNIX certification, and being Unix-like could now describe related but different relationships.</p>
<p>That leaves us with more than one path through the UNIX tradition. Some systems can trace their history through the original UNIX source tree; others joined that tradition through interfaces, conventions, standards, and ideas instead. Over the next articles, we can follow those paths individually. We will begin with <strong>BSD</strong>, the branch that started with licensed AT&amp;T UNIX, grew into one of the major centers of UNIX development, and eventually became independent enough to produce a family of operating systems of its own.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="unix" /><category term="unix-history" /><category term="att" /><category term="bell-labs" /><category term="bsd" /><category term="system-v" /><category term="aix" /><category term="hp-ux" /><category term="sunos" /><category term="solaris" /><category term="xenix" /><category term="svr4" /><category term="minix" /><category term="gnu" /><category term="linux" /><category term="posix" /><category term="single-unix-specification" /><category term="software-licensing" /><category term="operating-systems" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how UNIX spread through source licensing and portability, developed into BSD and commercial UNIX branches, influenced independently developed systems...]]></summary></entry><entry><title type="html">Software Distribution, Freedom, and Licensing</title><link href="https://excalibursheath.com/article/2026/08/30/distribution-freedom-licensing.html" rel="alternate" type="text/html" title="Software Distribution, Freedom, and Licensing" /><published>2026-08-30T11:00:00-06:00</published><updated>2026-08-30T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/08/30/distribution-freedom-licensing</id><content type="html" xml:base="https://excalibursheath.com/article/2026/08/30/distribution-freedom-licensing.html"><![CDATA[<p>Last week, we followed UNIX as it grew from a Bell Labs system into a <a href="../23/unix-family.html">family of related systems</a>. Portability helped UNIX cross hardware boundaries, while licensing and access to source code helped it cross organizational boundaries. Universities could study and modify the system, Berkeley could develop BSD, and commercial vendors could carry UNIX in still other directions. That leaves an important part of the story unexplained: what does it actually mean to have permission to use, copy, study, modify, or redistribute someone else’s software?</p>
<p>Those are not all the same permission. A program might be available without charge but prohibit modification. Another might include its source code but restrict what can be done with it. A company might sell software while allowing its customers to study, modify, and redistribute it. A developer might even encourage people to copy a commercial program as widely as possible while keeping its source code proprietary. <strong>Price, source-code availability, copying, modification, redistribution, and commercial use</strong> are related, but they describe different things.</p>
<p>Those distinctions are behind terms such as <em>commercial software</em>, <em>shareware</em>, <em>Free Software</em>, <em>Open Source</em>, <em>proprietary software</em>, <em>permissive licensing</em>, and <em>copyleft</em>. They do not describe mutually exclusive categories. Free Software can be sold, Open Source software can use a copyleft license, and shareware can encourage copying while remaining proprietary. Even two Open Source projects can use licenses that affect how easily code can move between them.</p>
<p>Rather than treating those distinctions only as definitions, we are going to follow them through the histories of real software. Doom will take us from proprietary commercial software through shareware and eventually into Open Source. GNU Emacs will bring us into the GNU Project, Free Software, and copyleft. BSD will show what permissive licensing allows code to become downstream. Red Hat and Debian will demonstrate different ways of building systems from freely available software. Finally, StarOffice, OpenOffice.org, and LibreOffice will show what happens when ownership and stewardship change, a community forks the code, and different licenses affect what happens afterward.</p>
<h2 id="what-kind-of-software-is-it">What Kind of Software is it?</h2>
<p>Software licensing uses several terms that are often treated as though they describe mutually exclusive kinds of software. They do not. A program can be commercial and Open Source, or noncommercial and proprietary. Understanding the differences requires separating the business surrounding software from the rights its license gives to users.</p>
<h3 id="commercial-software">Commercial Software</h3>
<p><strong>Commercial software</strong> is software developed, distributed, or supported as part of a commercial activity. A company might sell copies of the program, charge for subscriptions or support, bundle it with another product, or use the software as part of a larger business.</p>
<p>The opposite is <strong>noncommercial software</strong>: software developed or distributed without a commercial purpose. Universities, hobbyists, volunteer communities, and individual programmers have all produced noncommercial software.</p>
<p>Neither term tells us what users are permitted to do with the software. Commercial software does not have to be proprietary, and noncommercial software does not have to be Free or Open Source. <em>Commercial</em> and <em>noncommercial</em> describe the economic activity surrounding software, not the rights granted by its license.</p>
<h3 id="proprietary-software">Proprietary Software</h3>
<p><strong>Proprietary software</strong> is software whose owner retains rights that are not granted to its users. A license might permit someone to run a program while restricting copying, modification, access to source code, redistribution, or some combination of those activities.</p>
<p>Proprietary software is frequently commercial, which is why the two terms are sometimes treated as synonyms. They are nevertheless different concepts. A developer can distribute proprietary software without charging for it, just as a company can make money from software that gives its users much broader rights.</p>
<h3 id="free-software">Free Software</h3>
<p><strong>Free Software</strong> describes software in terms of the freedoms given to its users. The Free Software movement defines those freedoms around the ability to run a program for any purpose, study how it works, modify it, redistribute copies, and distribute modified versions.</p>
<p>The word <em>free</em> refers to <strong>freedom, not necessarily price</strong>. Free Software can be given away, but it can also be sold. A business can charge for copies, packaging, support, integration, or other services without making the underlying software cease to be Free Software.</p>
<p>Source code is important because some of these freedoms cannot practically exist without it. Studying or modifying a program requires access to the human-readable code from which it was built. Merely making source code visible, however, does not automatically give someone permission to modify or redistribute it.</p>
<h3 id="open-source-software">Open Source Software</h3>
<p><strong>Open Source Software</strong> overlaps substantially with Free Software. Open Source licenses make source code available and provide rights to use, modify, and redistribute the software under defined conditions. As a result, much of the software we encounter can correctly be described as both Free Software and Open Source Software.</p>
<p>The two terms nevertheless come from different movements and emphasize different ideas. Free Software places the freedoms of software users at the center of the discussion. Open Source places greater emphasis on licensing and the development model that allows source code to be examined, modified, and redistributed. The distinction is often one of philosophy and emphasis rather than two completely separate bodies of software.</p>
<p>We can use <strong>Free and Open Source Software</strong>, or <strong>FOSS</strong>, when the distinction between the two movements is not important to what we are discussing. When it does matter, as it will when we reach GNU Emacs, we will use the more precise term.</p>
<p>None of these terms tells us how someone actually receives a copy of the software. A proprietary commercial program might be deliberately passed from user to user, while Free and Open Source Software can be sold as part of a commercial product. <strong>How software is distributed is a separate question.</strong></p>
<blockquote>
<p>Price, source availability, distribution, and licensing answer different questions about the same software.</p>
</blockquote>
<h2 id="how-proprietary-software-is-distributed">How Proprietary Software is Distributed</h2>
<p>How much software costs and how it reaches a user are separate from what its license allows the user to do afterward. Software can be sold, given away, or deliberately passed from one user to another while remaining proprietary. Free and Open Source Software can likewise be given away or sold. Several distribution models became particularly important during the personal-computer era.</p>
<h3 id="paid-distribution">Paid Distribution</h3>
<p>The most familiar model is to obtain software by paying for a copy or a license to use it. During much of the personal-computer era, that often meant buying a boxed package containing disks and documentation. Software later moved increasingly toward electronic distribution, but the basic relationship remained familiar: payment was part of obtaining the software.</p>
<p>Paying for software does not make it proprietary. Commercial Free and Open Source Software can also be sold. The transaction tells us how the software was distributed, not what rights came with it.</p>
<h3 id="freeware">Freeware</h3>
<p>Freeware is software distributed for use without requiring payment. It became common for developers and companies to make useful programs available at no charge, whether as complete products, promotional tools, companion utilities, or software maintained for other reasons.</p>
<p>The important word here is <strong><em>price</em></strong>. Freeware does not necessarily give users access to source code or permission to modify and redistribute it. A freeware program can remain completely proprietary.</p>
<p>This is one reason <em>freeware</em> and <em>Free Software</em> should not be confused. Freeware means that the software is available without charge. Free Software refers to freedoms granted to its users.</p>
<h3 id="shareware">Shareware</h3>
<p><strong>Shareware</strong> uses copying and evaluation as part of the distribution model. Instead of requiring a potential customer to purchase the software before trying it, developers encouraged users to obtain copies, try the program, and pass copies to other potential users. Payment or registration could then provide additional features, additional software, documentation, support, or continued authorized use, depending on the program.</p>
<p>Bulletin Board Systems made this model particularly powerful. A developer did not have to manufacture and ship every copy. A shareware program could be uploaded to a BBS, downloaded by its users, passed between friends, and uploaded elsewhere. The users themselves became part of the distribution network.</p>
<p>Permission to copy the distributed program did not make shareware Free or Open Source Software. Shareware was commonly proprietary. Its developer could encourage thousands of people to copy a program while still withholding its source code and restricting modification.</p>
<p>That combination will become important when we reach <em>Doom</em>. It was commercial software, it was proprietary, and its shareware release was deliberately designed to be copied. None of those descriptions contradicts the others.</p>
<h2 id="how-free-and-open-source-software-is-distributed">How Free and Open Source Software is Distributed</h2>
<p>Free and Open Source Software created a different distribution problem. Giving users permission to copy, modify, and redistribute software made it possible for copies to travel freely, but obtaining one program was only part of the problem. A useful computer system might depend on software produced by hundreds or thousands of independent projects.</p>
<h3 id="individual-projects">Individual Projects</h3>
<p>Early Free and Open Source projects could distribute their own software directly. Source code might be obtained from another user, copied from physical media, or downloaded from an FTP server or project site. Because redistribution was permitted, copies did not necessarily have to come from the original developer.</p>
<p>This decentralized distribution was powerful, but it also left users responsible for obtaining, building, configuring, and updating software from many different sources.</p>
<h3 id="packages-and-repositories">Packages and Repositories</h3>
<p>Packaging systems made that collection of independent software easier to manage. Instead of every user finding and installing each program directly from its original developer, software could be prepared as packages that described what was being installed and what other software it required.</p>
<p>Repositories took that idea further by collecting packages into maintained sources from which users could install and update software.</p>
<h3 id="distributions">Distributions</h3>
<p>A <strong>software distribution</strong> goes beyond simply making copies available. It selects software from many projects, integrates it, packages it, establishes defaults, provides installation and update mechanisms, and presents the result as a usable system.</p>
<p>This becomes especially important with GNU/Linux. <strong>Linux is the kernel</strong>, but what someone installs as a Linux distribution contains software from many independent projects: the Linux kernel, GNU utilities, libraries, shells, servers, desktop environments, applications, and thousands of other components.</p>
<p>The ability to redistribute Free and Open Source Software makes those larger systems possible, but it does not dictate who must assemble them or why. A volunteer community can build a distribution, and so can a commercial company. Debian and Red Hat will let us see both approaches using much of the same larger pool of software.</p>
<h2 id="source-code-and-the-rights-that-come-with-it">Source Code and the Rights That Come With It</h2>
<p>So far, we have repeatedly mentioned access to source code, but source code is not always included when software is distributed. Most users receive a compiled program: the machine-executable form produced from source code written by programmers. They can run the program without possessing the original human-readable code used to create it.</p>
<p>With proprietary software, the source code is commonly kept by its developer or owner. Users receive the compiled program and whatever rights its license grants them. Even if they are permitted to copy the program—as they might be with freeware or shareware—that permission does not necessarily include access to its source.</p>
<p>Free and Open Source Software works differently because the ability to study and modify a program requires access to its source code. The source therefore has to be available to users entitled to those rights. This does not mean every copy must arrive with a folder full of source files beside it. A distribution can provide ready-to-run binary packages while making the corresponding source available separately.</p>
<p>A developer can also publish source code without granting the rights required for the software to be Free or Open Source. The code may be <strong>source available</strong>—people can read it—but its license may restrict modification, redistribution, commercial use, or other activities.</p>
<blockquote>
<p>Being able to read the source is not the same thing as having permission to modify or redistribute it.</p>
</blockquote>
<h3 id="permissive-licenses">Permissive Licenses</h3>
<p>Making software Free or Open Source does <strong>not</strong> mean giving up copyright or placing the code into the public domain. The copyright holder instead uses a license to grant other people rights to use, study, modify, and redistribute the software. Different licenses can grant those rights under different conditions.</p>
<p>A <strong>permissive license</strong>, such as the licenses associated with BSD, grants broad rights with relatively few requirements on what happens to modified or redistributed versions. Copyright and license notices generally have to be preserved, but the code can often be incorporated into software distributed under different terms, including proprietary commercial products.</p>
<p>That flexibility helps explain why BSD code has traveled so widely. A company can take permissively licensed code, modify it, combine it with its own code, and distribute the resulting product without necessarily having to release its modifications under the original BSD license.</p>
<h3 id="copyleft-licenses">Copyleft Licenses</h3>
<p>A <strong>copyleft license</strong> takes a different approach. It also grants broad rights to use, study, modify, and redistribute software, but it places requirements on certain forms of redistribution so that the freedoms granted by the original license are preserved downstream.</p>
<p>The GNU General Public License, or <strong>GPL</strong>, is the best-known example. If GPL-covered software is modified and a covered derivative work is distributed, the GPL requires the corresponding source to be made available under the GPL’s terms. Someone can modify the software, sell it, and build commercial products with it, but cannot simply take the covered code, distribute a proprietary version of that covered work, and withhold the freedoms the GPL was designed to preserve.</p>
<p>Permissive and copyleft licenses therefore protect different goals. A permissive license emphasizes giving downstream developers broad freedom over what they build from the code. Copyleft emphasizes preserving particular software freedoms as the code moves downstream. Neither approach makes software inherently more or less Open Source; both permissive and copyleft licenses can qualify as Free and Open Source licenses.</p>
<h2 id="doom-from-shareware-to-open-source">Doom: From Shareware to Open Source</h2>
<p>When id Software released <em>Doom</em> in December 1993, it was unquestionably a commercial product. id Software intended to make money from the game, and the complete game was proprietary software. Yet the company did something that might sound strange if commercial and proprietary software are assumed to mean tightly controlled distribution: it encouraged people to copy <em>Doom</em>.</p>
<p>What people were encouraged to copy was the shareware version. The first episode, <em>Knee-Deep in the Dead</em>, could spread from one player to another and across Bulletin Board Systems, while the remaining episodes were part of the registered commercial product. Instead of treating every freely copied disk or download as a lost sale, the shareware model turned those copies into advertising. Someone could play a substantial portion of <em>Doom</em>, give it to a friend, and potentially create another customer.</p>
<p><em>Doom</em> was commercial because id Software was selling a product. It was proprietary because id retained control over the software and its source code. It was shareware because id deliberately permitted and encouraged redistribution of the shareware release. None of those descriptions conflicts with the others.</p>
<p>But <em>Doom</em> did not remain in that state forever.</p>
<p>On December 23, 1997, John Carmack released the source code for the <em>Doom</em> engine. The release used the Linux version rather than the original DOS code because the DOS sound support depended on the third-party DMX sound library, which was not publicly available and therefore could not be included. The game data—the levels, graphics, sounds, and other assets that made <em>Doom</em> the game—also remained copyrighted and were not simply given away with the engine source.</p>
<p>Publishing the source did not initially make <em>Doom</em> Free or Open Source Software in the sense we use those terms today. The original Doom Source Code License released the code for non-profit use and permitted people to examine and modify it, but it prohibited commercial exploitation and did not permit redistribution of the source itself. The <strong>source was available</strong>, but the rights attached to it were still restricted.</p>
<p>That changed again in October 1999, when id Software rereleased the <em>Doom</em> source under the GNU General Public License. The GPL allowed the engine to be used, modified, and redistributed under a copyleft license. The commercial game released in 1993 had therefore traveled through several different arrangements: proprietary software distributed partly through shareware, source code made publicly available under restrictions, and finally an engine released as Free and Open Source Software.</p>
<p>The results outlived the original computers for which <em>Doom</em> was written. Developers could port the engine to new operating systems and hardware, fix limitations, add features, and create new source ports. The original game assets still had their own copyright restrictions, so an Open Source <em>Doom</em> engine did not mean that the complete commercial game had suddenly become free to redistribute.</p>
<p>One result has become something of a tradition among programmers and hardware hackers: the <strong>Doom Test</strong>. If a device contains a processor and a display—or sometimes anything that can be persuaded to act like one—someone will eventually try to make it run <em>Doom</em>. The game has appeared on calculators, watches, cameras, printers, and other devices that were never intended to be gaming machines. Some of these ports are serious demonstrations of hardware and software capabilities; others exist largely because getting <em>Doom</em> to run somewhere unexpected is fun. The availability of the engine’s source code helped make that experimentation possible. A commercial game from 1993 became not only something people continued to play, but a familiar challenge for demonstrating what an unusual piece of hardware could be made to do.</p>
<p><em>Doom</em> gives us a useful first lesson because the software itself changed categories while remaining recognizably the same project. <strong>How software is sold, how copies are distributed, whether its source can be seen, and what its license permits are separate properties—and each of them can change over the life of a program.</strong></p>
<blockquote>
<p>A program can change its distribution model, source availability, and license without ceasing to be the same software project.</p>
</blockquote>
<h2 id="gnu-emacs-an-editor-and-the-freedom-to-modify-it">GNU Emacs: An Editor and the Freedom to Modify It</h2>
<p>The story of GNU Emacs begins before GNU. Its ancestry reaches back to the MIT Artificial Intelligence Laboratory in the 1970s, where Richard Stallman worked on an extensible editor built around TECO. Rather than treating an editor as a fixed collection of commands, Emacs could be customized and extended. Users could change how the editor behaved and add new capabilities instead of waiting for the original developer to provide them.</p>
<p>That extensibility became one of Emacs’s defining characteristics. GNU Emacs would eventually use Emacs Lisp as its extension language, allowing the editor to become considerably more than a place to type text. Email, calendars, games, development tools, and other applications could live inside Emacs. It even includes <code class="language-plaintext highlighter-rouge">M-x doctor</code>, a conversational psychotherapist program in the tradition of ELIZA.</p>
<p>By then, however, Stallman was confronting a larger problem than how a text editor should work. The cooperative software culture he had known at MIT was changing as software increasingly became proprietary and source code became less freely shared. In September 1983, he announced the GNU Project: an effort to create a complete Unix-compatible operating system whose users would be free to use, study, modify, and share its software. Development began in 1984.</p>
<p>GNU needed an editor, and Stallman already knew what kind of editor he wanted. He began writing GNU Emacs in September 1984. By early 1985 it was usable, and other people wanted copies.</p>
<p>That created an interesting distribution problem. People connected to the Internet could obtain GNU Emacs through anonymous FTP, but many potential users were not online. Stallman offered another option: for $150, he would mail GNU Emacs on tape. The software remained Free Software, and recipients remained free to copy it for someone else. What Stallman charged for was <strong>the service of providing a physical copy</strong>.</p>
<p>GNU Emacs therefore gives us an early example of something our terminology already allows: <strong>Free Software could also be commercial software.</strong> Charging money for a copy did not determine whether the software was Free. The freedoms accompanying that copy did.</p>
<h3 id="from-sharing-to-copyleft">From Sharing to Copyleft</h3>
<p>There was still another problem. Giving someone permission to modify and redistribute software did not necessarily guarantee that those freedoms would survive into later versions. A developer could take freely available code, modify it, and distribute the resulting program under proprietary terms if the original license permitted it.</p>
<p>Stallman’s answer was <strong>copyleft</strong>. Instead of abandoning copyright, copyleft uses copyright and a software license to grant users broad freedoms while placing conditions on redistribution intended to preserve those freedoms downstream. Someone can use the software, study it, modify it, share it, and even sell it, but covered derivative works that are distributed must remain available under the required copyleft terms.</p>
<p>GNU Emacs became an important early application of that idea. Early versions used a program-specific GNU Emacs General Public License, while the licensing work surrounding GNU software eventually developed into the GNU General Public License, or GPL. GPL version 1 appeared in 1989 and provided a reusable copyleft license for GNU software and other projects. Rather than every GNU program needing its own separately written licensing arrangement, the GPL could express the same basic set of downstream requirements across many programs.</p>
<p>This is the central difference between simply releasing source code and using copyleft. Source availability makes it possible to examine code. Permission to modify it makes further development possible. <strong>Copyleft adds the requirement that particular freedoms accompany covered code as it continues downstream.</strong></p>
<blockquote>
<p>Copyleft is not merely permission to modify code. It is a way of making particular freedoms travel downstream with covered code.</p>
</blockquote>
<h3 id="emacs-and-vi">Emacs and vi</h3>
<p>GNU Emacs also entered one of computing’s longest-running arguments: Emacs versus vi. The two editors grew from different traditions. vi came from Bill Joy’s work at Berkeley and the BSD world, while GNU Emacs became closely associated with GNU and Free Software. Their different interfaces and philosophies inspired decades of arguments over which editor programmers ought to use.</p>
<p>Plenty of users simply found something that worked for them. I largely avoided the Emacs-versus-vi argument by using Pico. As GNU/Linux distributions became more important, however, Pico’s license became a problem. Debian treated Pine and Pico as non-free, and the license did not permit Debian to distribute modified binaries, so users had to build the software from source and Debian’s patches rather than install it as a normal binary package. I moved to JOE instead.</p>
<p>By the time nano appeared as a GPL-licensed Free Software replacement for Pico, I had already moved on from that family of editors. The appearance of nano nevertheless demonstrates the practical effect of the licensing problem. Pico remained a useful editor, but its license affected whether distributions could package and redistribute it under their rules, and the resulting gap helped create demand for a Free Software replacement.</p>
<p>The editor war is mostly computing culture, but the histories behind the editors bring us back to licensing. GNU Emacs shows one answer to the question of what should happen when freely modifiable software moves from one developer to another: <strong>the freedom to modify the code should travel with the code.</strong> BSD, coming from the other side of the old editor rivalry, will give us a different answer.</p>
<h2 id="bsd-code-that-was-free-to-travel">BSD: Code That Was Free to Travel</h2>
<p>The other side of the old Emacs-versus-vi rivalry brings us back to Berkeley. vi was created by Bill Joy as part of the software work surrounding the Berkeley Software Distribution, or BSD. As we saw last week, BSD began as modifications and additions to AT&amp;T UNIX at the University of California, Berkeley, and eventually became one of the major branches of the UNIX family.</p>
<p>BSD’s influence spread well beyond the systems that carried its name. Berkeley developed important UNIX tools and, especially with 4.2BSD, helped establish the TCP/IP networking software that became enormously influential. Commercial UNIX systems incorporated Berkeley software, while BSD itself continued developing at the university.</p>
<p>There was a complication, however. BSD had grown from UNIX, and early BSD distributions still contained AT&amp;T-owned UNIX code. Receiving those distributions therefore required an appropriate UNIX source license. Berkeley could distribute the software it had written, but it could not simply give everyone the proprietary AT&amp;T portions of the system.</p>
<p>By the late 1980s and early 1990s, Berkeley’s Computer Systems Research Group began separating its own work from the AT&amp;T code. Networking Release 1 made Berkeley’s networking code separately redistributable, and Networking Release 2 pushed much farther toward a complete system. A legal dispute over portions of Net/2 was settled in 1994, after which Berkeley released 4.4BSD-Lite as an unencumbered codebase. The BSD descendants could then continue developing without depending on proprietary AT&amp;T UNIX code.</p>
<p>The license Berkeley used for its own code took a different approach from the copyleft we just encountered with GNU Emacs. A <strong>BSD-style license is permissive</strong>. It grants broad permission to use, modify, and redistribute the code while imposing relatively few requirements on what a downstream developer must do with a resulting product.</p>
<p>Copyleft is designed to ensure that particular freedoms continue downstream when covered derivative works are distributed. A permissive BSD license allows a downstream developer considerably more discretion. BSD-licensed code can remain in an Open Source project, but it can also be incorporated into a proprietary product without requiring that all of the resulting proprietary code be released under the BSD license.</p>
<p>The code is not in the public domain. Copyright still exists, and BSD licenses still impose conditions, such as preserving copyright notices and disclaimers. What the license does <em>not</em> generally require is that someone who incorporates the code into a larger product must release that larger product’s source code under the same terms.</p>
<p>That choice helped BSD technology travel into some very different systems.</p>
<table>
<thead>
<tr>
<th>Product / System</th>
<th>BSD Connection</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>OPNsense</strong></td>
<td>Built on FreeBSD</td>
</tr>
<tr>
<td><strong>OpenBSD</strong></td>
<td>Forked from NetBSD</td>
</tr>
<tr>
<td><strong>DragonFly BSD</strong></td>
<td>Forked from FreeBSD 4.8</td>
</tr>
<tr>
<td><strong>macOS / Darwin</strong></td>
<td>BSD layer derived primarily from FreeBSD</td>
</tr>
<tr>
<td><strong>Force10 FTOS</strong></td>
<td>Built on NetBSD</td>
</tr>
</tbody>
</table>
<p>These are not all the same kind of system. OpenBSD and DragonFly BSD became independent Free and Open Source operating systems. OPNsense uses FreeBSD as the foundation for a specialized firewall and routing platform. Apple’s Darwin combines BSD technology with other components as the foundation beneath macOS, while Force10 used NetBSD as the foundation for a commercial network operating system.</p>
<p>The table only shows the immediate connection. The BSD family has a much larger and more complicated family tree, which deserves its own story. What matters here is what happened to the code after it was released under permissive terms. It could remain within Free and Open Source projects, become the foundation of new operating systems, power specialized appliances, or become part of larger commercial and proprietary products.</p>
<p>This is the other major answer to the downstream question. GNU’s copyleft approach says, in effect, <strong>you may build on this code, but the freedoms attached to covered code must continue with it.</strong> The permissive BSD approach says, <strong>you may build on this code, and you have broad freedom to decide how your own resulting work will be distributed.</strong></p>
<p>Both approaches produce Free and Open Source Software. They differ in what kind of freedom they emphasize downstream. BSD’s history shows one consequence of the permissive choice particularly well: <strong>the code was free to travel, even into systems whose developers chose a very different licensing model for what they built around it.</strong></p>
<blockquote>
<p>Permissive licensing gives downstream developers broad freedom over what they build. Copyleft puts more emphasis on preserving freedoms as covered code moves downstream.</p>
</blockquote>
<h2 id="debian-building-a-system-as-a-community">Debian: Building a System as a Community</h2>
<p>The software freedoms we have been following do more than allow an individual program to be modified or redistributed. They also allow people to assemble software from many independent projects into something larger. Debian shows what can happen when a community takes responsibility for doing exactly that.</p>
<p>Ian Murdock founded the Debian Project in August 1993, when the idea of a Linux distribution was still relatively new. Linux provided a kernel, GNU provided many of the tools needed around it, and other Free Software projects supplied still more pieces. Turning all of those pieces into a usable operating system required someone to select them, package them, keep track of their dependencies, integrate them, distribute updates, and decide what belonged in the system.</p>
<p>Debian was intended from the beginning to be developed openly. Instead of belonging to a company producing a Linux product, it grew from a small group of Free Software developers into an organized international community. Individual developers became responsible for packages, while the project developed policies and technical processes for making thousands of independently developed pieces of software behave as one distribution.</p>
<p>That organization matters because <strong>a distribution is itself a substantial piece of engineering</strong>. Debian does not write every program it distributes. Much of its work happens between the original software project—the <strong>upstream</strong> project—and the person installing Debian. Debian developers package upstream software, describe dependencies, integrate it with the rest of the system, apply or forward fixes, test combinations of packages, and maintain repositories from which complete systems can be installed and updated.</p>
<p>As Debian grew, its package-management system became increasingly important to that work. Early Debian releases had relatively primitive package handling, but the project developed <code class="language-plaintext highlighter-rouge">dpkg</code> and increasingly detailed information about relationships between packages. A user no longer needed to treat every program as an isolated piece of software obtained directly from its developer. The distribution could manage a collection of software as a system.</p>
<h3 id="defining-what-belongs-in-debian">Defining What Belongs in Debian</h3>
<p>Building a Free Software distribution also created a question that compiling and packaging alone could not answer: <strong>what counts as Free Software?</strong></p>
<p>In 1997, Debian adopted its <strong>Social Contract</strong> and the <strong>Debian Free Software Guidelines</strong>, or <strong>DFSG</strong>. The Social Contract states commitments the Debian Project makes to the Free Software community, while the DFSG provides criteria Debian can use when deciding whether a software license is sufficiently free for software to be included as part of Debian.</p>
<p>Those guidelines include requirements such as allowing free redistribution, permitting modification and derived works, and not restricting use of the software to particular people, groups, or fields of endeavor. They do not require one particular licensing strategy. Debian explicitly recognizes licenses including the GPL and BSD licenses as examples of Free Software licenses.</p>
<p>Debian can contain software under both copyleft and permissive licenses. The distribution does not require every component to make the same choice about downstream licensing. Instead, each component’s license must provide the freedoms necessary to satisfy Debian’s guidelines.</p>
<p>Software that does not meet those requirements has historically been handled in separate archive areas rather than as part of the Debian system itself. Debian can therefore help users obtain some non-free software without redefining that software as part of Debian’s Free Software distribution.</p>
<p>The DFSG would also have an influence beyond Debian. Bruce Perens, who drafted the Social Contract and DFSG with input from other Debian developers, later removed the Debian-specific language from the guidelines to form the basis of the <strong>Open Source Definition</strong>. A set of rules created to answer the practical question of what software Debian could include therefore became part of the larger history of the term <em>Open Source</em>.</p>
<h3 id="a-community-can-have-descendants">A Community Can Have Descendants</h3>
<p>Because Debian itself can be copied and modified, <strong>the distribution can also become an upstream source for another distribution</strong>. Someone does not have to begin again with the Linux kernel, GNU utilities, and thousands of unrelated projects. They can begin with Debian’s already integrated system and build something different from it.</p>
<p>That has produced a large extended Debian family. Among its descendants are:</p>
<ul>
<li>Ubuntu</li>
<li>Linux Mint Debian Edition</li>
<li>Kali Linux</li>
</ul>
<p>Linux Mint Debian Edition builds a general-purpose desktop system directly on Debian, while Kali Linux specializes that foundation for penetration testing and security work. The same freely redistributable base can therefore support projects intended for very different audiences.</p>
<p>Ubuntu adds another dimension to the story. It is built from Debian but developed with commercial backing from Canonical. Debian itself is a community project, yet the freedoms attached to its software allow a company to take that work downstream, integrate and develop it further, and build a commercially supported distribution around it.</p>
<p>That does not mean a company simply takes Debian and owns what came before it. The individual components retain their respective copyrights and licenses. Copyleft requirements still apply where copylefted components are involved, permissive licenses retain their own conditions, and changes can move between upstream and downstream projects when their licenses and development practices permit it.</p>
<p>Debian therefore gives us a different view of software distribution. A community can take thousands of independently developed Free and Open Source components, integrate them into a complete operating system, and make that integrated system available for still other communities and companies to build upon.</p>
<p><strong>Free and Open Source licensing did not merely make individual programs easier to share. It made it possible for communities to assemble complete systems that could themselves become foundations for whatever came next.</strong></p>
<blockquote>
<p>A distribution can become an upstream project too. Debian is not only assembled from other projects; other distributions can begin with Debian.</p>
</blockquote>
<h2 id="red-hat-building-a-business-around-free-software">Red Hat: Building a Business Around Free Software</h2>
<p>Debian showed how a community could assemble thousands of independently developed pieces of Free and Open Source Software into a complete operating system. The same freedoms also left room for a company to do much of the same work commercially. Red Hat would demonstrate that selling a Linux distribution did not require turning Linux into proprietary software.</p>
<p>Red Hat’s story began in the early 1990s with Marc Ewing’s Red Hat Linux distribution and Bob Young’s ACC Corporation, which sold Linux and UNIX software and accessories. Young began distributing Ewing’s work, and the two joined forces in 1995 to form Red Hat Software.</p>
<p>There was an apparent contradiction in the business. Much of the software Red Hat distributed could already be copied legally. A customer did not necessarily have to buy Linux from Red Hat to obtain Linux, GNU utilities, or the many other Free and Open Source components included in the system.</p>
<p>That meant <strong>the value of the product could not depend entirely on controlling access to the underlying software</strong>. Red Hat could instead sell the work required to turn that software into something organizations could reliably use.</p>
<p>One of the less pleasant ways Linux users learned the value of that integration was <strong>RPM Hell</strong>. RPM made it possible to install, remove, and track packaged software, but obtaining an RPM did not necessarily mean that everything required to run it was already installed. A package might depend on several other packages, each of which introduced dependencies of its own. Users could find themselves searching the Internet for one RPM after another, only to discover that the next package required still another library or a different version of one they already had.</p>
<p>One solution came from a descendant of Red Hat Linux. <strong>Yellow Dog Linux</strong> was an RPM-based distribution developed primarily for PowerPC computers, including Apple Macintosh systems. Yellow Dog developed <strong>YUP</strong>, the Yellowdog Updater, to work with software repositories rather than requiring users to locate every RPM individually.</p>
<p>Developers at Duke University built on YUP to create <strong>YUM</strong>, the Yellowdog Updater, Modified. YUM could use repositories to determine which packages were required to satisfy dependencies and retrieve them as part of an installation. Fedora adopted YUM, and it eventually became familiar to generations of Fedora, Red Hat Enterprise Linux, CentOS, and related-system users. Yellow Dog Linux itself eventually disappeared, but its name survived in <code class="language-plaintext highlighter-rouge">yum</code>.</p>
<p>Red Hat Linux helped provide the foundation for Yellow Dog Linux. Yellow Dog’s solution to an RPM problem was expanded by other developers, then flowed back into Fedora and the Red Hat ecosystem.</p>
<p>Packaging a Free and Open Source operating system therefore involves more than collecting freely available programs. Someone still has to decide which versions belong together, describe their dependencies, organize repositories, test combinations, and provide updates. Better tooling can automate much of that work for the user, but only because the distribution has already done the integration work behind it.</p>
<p>That work includes:</p>
<ul>
<li>Packaging</li>
<li>Integration</li>
<li>Testing</li>
<li>Documentation</li>
<li>Technical support</li>
<li>Security updates</li>
<li>Long-term maintenance</li>
<li>Certification</li>
</ul>
<p>None of those activities requires taking away the freedoms granted by the underlying software. They provide value around software that customers may already have the right to copy, inspect, modify, and redistribute.</p>
<p>This distinction became increasingly important as Linux moved from hobbyist computers and Internet servers into businesses and large organizations. A company might be perfectly capable of downloading source code without being interested in assembling, testing, maintaining, and supporting an operating system itself. What it could purchase from Red Hat was not simply permission to possess Linux, but a maintained product and a relationship with an organization willing to support it.</p>
<h3 id="from-red-hat-linux-to-an-ecosystem">From Red Hat Linux to an Ecosystem</h3>
<p>Red Hat eventually changed how it organized its Linux distributions. Red Hat Enterprise Linux, or <strong>RHEL</strong>, had been introduced in 2002 as the company’s commercially supported enterprise distribution. The original Red Hat Linux line was discontinued in 2003, and the Fedora Project was introduced for users and developers who wanted a faster-moving community distribution.</p>
<p>The ability to use and redistribute Free and Open Source Software also allowed other projects and companies to develop systems around the Red Hat ecosystem. A few examples show that movement in different directions:</p>
<ul>
<li>Fedora</li>
<li>Rocky Linux</li>
<li>Oracle Linux</li>
</ul>
<p>Fedora represents the community side of Red Hat’s own development ecosystem. Newer software and technologies can develop in Fedora before some of that work moves through CentOS Stream and eventually into Red Hat Enterprise Linux. The community project is therefore not merely a free copy of the commercial product; it participates upstream in the development path that can eventually lead toward RHEL.</p>
<p>Rocky Linux demonstrates movement in the other direction. It is a community-developed enterprise Linux distribution designed to be compatible with RHEL. The existence of a commercial enterprise distribution does not prevent a separate community from using the available Free and Open Source code to build its own compatible system.</p>
<p>Oracle Linux takes that possibility into the commercial world again. Oracle is not Red Hat, yet it can offer its own commercially supported Linux distribution designed for compatibility with RHEL. Free and Open Source licensing therefore permits an unusual commercial relationship: one company’s commercial software ecosystem can provide much of the foundation for another company’s competing commercial product.</p>
<p><strong>Fedora shows a community project feeding toward a commercial distribution, Rocky Linux shows a community project appearing downstream from it, and Oracle Linux shows another commercial product appearing downstream.</strong> Commercial and community development are not opposite ends of a line. Free and Open Source licensing allows software to move among both.</p>
<h3 id="what-red-hat-sells">What Red Hat Sells</h3>
<p>Red Hat Enterprise Linux is commercial software, but that does not make the Free and Open Source components from which it is built proprietary. Customers pay Red Hat for an enterprise product assembled from those components and for the services surrounding that product.</p>
<p>The distinction is easier to see if we separate the software from the business built around it. Linux can remain licensed under the GPL. BSD-licensed components can retain their permissive licenses. Thousands of other packages can retain the licenses chosen by their respective projects. Red Hat can still select versions, integrate them, test the resulting system, provide updates, certify hardware and software, maintain releases for years, and sell support for the complete product.</p>
<p><strong>A company can build a commercial product from software that its customers have substantial rights to copy and modify.</strong> The company does not necessarily make its money by preventing those freedoms. It can make money by doing work around the software that customers consider valuable.</p>
<p>Debian and Red Hat consequently arrive at complete operating systems through different organizations. Debian demonstrates that a community can integrate Free and Open Source Software into a distribution that later becomes the foundation for both community and commercial descendants. Red Hat demonstrates that a company can take much of the same larger pool of Free and Open Source Software and build a commercial product and support business around it.</p>
<p><strong>Free and Open Source Software does not eliminate commercial software. It changes what a software company can sell and where the value of that commercial product can come from.</strong></p>
<blockquote>
<p>When customers already have substantial rights to the software, commercial value can move toward integration, maintenance, support, certification, and trust.</p>
</blockquote>
<h2 id="staroffice-openofficeorg-and-libreoffice-who-controls-the-future">StarOffice, OpenOffice.org, and LibreOffice: Who Controls the Future?</h2>
<p>The office suite we now know as LibreOffice began as proprietary commercial software. Its roots reach back to StarWriter, created by Marco Börries in Germany in the 1980s. StarDivision developed the program into a larger suite, and by 1992 it had become <strong>StarOffice</strong>.</p>
<p>StarOffice was eventually available on several operating systems, including Windows, OS/2, Solaris, and Linux. It was still StarDivision’s product, however. The company controlled its development and distribution in much the same way another software company might control any proprietary office suite.</p>
<p>Then the owner changed.</p>
<p>Sun Microsystems acquired StarDivision in 1999. The following year, Sun did something more significant than simply continue selling StarOffice: it announced OpenOffice.org and released the StarOffice source code for the new project on October 13, 2000. OpenOffice.org 1.0 followed on April 30, 2002. A proprietary commercial software family now had an Open Source branch that other developers could study, modify, and help develop.</p>
<p>Sun did not have to stop selling an office suite in order to do this. StarOffice continued as a commercial product while OpenOffice.org developed as an Open Source project. Once again, <em>commercial</em> and <em>Open Source</em> were not opposites. The same software family could participate in both models.</p>
<p>For several years that arrangement continued with Sun as the principal corporate sponsor of OpenOffice.org. The community could contribute to the project, while Sun remained an important center of its development and stewardship.</p>
<p>Then the owner changed again.</p>
<p>Oracle acquired Sun Microsystems in January 2010. That acquisition meant that OpenOffice.org, along with the other technology Sun had accumulated, now sat under a different corporate owner. Members of the OpenOffice.org community did not have to wait to discover what Oracle would eventually choose to do with the project.</p>
<p>They could fork it.</p>
<h3 id="libreoffice">LibreOffice</h3>
<p>On September 28, 2010, members of the OpenOffice.org community announced <strong>The Document Foundation</strong>, an independent organization intended to provide a community-governed home for the office suite. Unable to obtain the trademarked OpenOffice.org name from Oracle, the new project was called <strong>LibreOffice</strong>.</p>
<p>LibreOffice was not a rewrite created from nothing. It began as a fork of OpenOffice.org. The developers already had access to the source and, more importantly, the software’s license gave them the rights necessary to take that source in another direction.</p>
<p>That is where the right to fork becomes more than an abstract freedom written into a license. The community did not need to purchase the project from Oracle, persuade Oracle to transfer ownership, or abandon years of existing code and begin again. Developers could take the code they were already working on and continue developing it under different stewardship.</p>
<p>Oracle later stopped developing OpenOffice.org and, in June 2011, contributed the source code and trademarks to the Apache Software Foundation. OpenOffice therefore continued as <strong>Apache OpenOffice</strong>, while LibreOffice continued independently under The Document Foundation.</p>
<p>One software family had now passed through several very different arrangements:</p>
<ul>
<li>StarOffice</li>
<li>OpenOffice.org</li>
<li>LibreOffice</li>
<li>Apache OpenOffice</li>
</ul>
<p>The names alone do not explain what happened. StarOffice began as proprietary commercial software. Sun opened its source to create OpenOffice.org. The OpenOffice.org community later exercised its right to fork the code and created LibreOffice. Oracle then transferred OpenOffice.org to Apache, producing another independently governed Open Source branch.</p>
<p><strong>The ability to fork did not guarantee which branch would attract developers, users, or institutional support.</strong> A software license cannot determine whether a project will succeed. What it can determine is whether people have the legal ability to continue the software when they disagree with the decisions of whoever currently controls a project.</p>
<h3 id="open-does-not-mean-interchangeable">Open Does Not Mean Interchangeable</h3>
<p>The split also produced a subtler licensing lesson. Apache OpenOffice and LibreOffice are both Open Source, but they do not use the same licensing model.</p>
<p>Apache OpenOffice uses the permissive <strong>Apache License 2.0</strong>. LibreOffice is currently distributed primarily under the <strong>Mozilla Public License 2.0</strong>, with new contributions also licensed under the LGPLv3+ according to the project’s contribution policy. Those differences affect how code can move between the two projects.</p>
<p>Apache-licensed code can be incorporated into LibreOffice under the applicable licensing arrangements, and LibreOffice has incorporated code originating in Apache OpenOffice. The reverse direction is more difficult. Code contributed only under LibreOffice’s copyleft licenses cannot simply be incorporated into Apache OpenOffice and redistributed solely under Apache’s permissive license.</p>
<p>The result is an <strong>asymmetric relationship</strong>. Apache OpenOffice can develop a feature under a permissive license that LibreOffice may be able to incorporate. If LibreOffice develops a change under licensing terms that impose copyleft requirements, Apache OpenOffice cannot simply take that code and place it into its Apache-licensed codebase.</p>
<p><strong>Open Source does not mean that code can move freely between every Open Source project.</strong> Two projects can both provide their source code, both permit modification, and both permit redistribution while still using licenses that place different requirements on what happens when their code is combined or redistributed.</p>
<p>Commercial software can become the source of an Open Source project. Commercial and Open Source versions can coexist. A change in corporate ownership does not necessarily give that corporation complete control over the future of previously released Open Source code. A community with the right to fork can continue development independently. And even after a fork, the licenses chosen by the resulting projects can affect which direction code is able to travel between them.</p>
<p><strong>Open Source does not guarantee who will control a project tomorrow. It gives others rights that can prevent one owner from being the only possible future for the code.</strong></p>
<blockquote>
<p>The right to fork does not guarantee that a fork will succeed. It guarantees that continued development does not have to depend on one owner saying yes.</p>
</blockquote>
<h2 id="summary">Summary</h2>
<p>Software does not fit neatly into a single category. Whether software is commercial, whether someone pays to obtain it, whether its source code is available, how copies are distributed, and what users are permitted to do with those copies are separate questions. Shareware can be proprietary. Freeware can restrict modification. Free Software can be sold commercially. Open Source software can be developed by volunteers, businesses, or both. Understanding software licensing begins by separating those questions rather than assuming that one answer determines all the others.</p>
<p>The histories of <em>Doom</em>, GNU Emacs, and BSD show how much the rights attached to software can differ. Encouraging people to copy <em>Doom</em> did not initially give them its source code, and publishing that source did not immediately make it Open Source. GNU Emacs demonstrated how copyleft could use copyright to preserve particular freedoms as software moved downstream. BSD licenses made a different choice, granting broad freedoms while generally allowing downstream developers to decide how their larger resulting works would be licensed. Both copyleft and permissive licenses can produce Free and Open Source Software, but they do not impose the same obligations on what comes next.</p>
<p>Those permissions become even more significant when individual programs become parts of larger systems. Debian shows how a community can assemble thousands of independently developed components into a complete operating system that can itself become the foundation for other projects. Red Hat shows how much commercial value can be created around software that customers already have substantial rights to use, study, modify, and redistribute. The history from StarOffice through OpenOffice.org and LibreOffice shows why the right to fork matters when ownership or stewardship changes—and why even two Open Source projects may not be able to exchange code equally when their licenses differ.</p>
<p>Licensing is therefore more than a statement about whether software costs money or whether its source code can be downloaded. It establishes permissions and obligations that help determine where code can travel, what can be built from it, and what rights accompany it along the way. Those choices helped UNIX cross organizational boundaries, allowed BSD code to spread into an enormous range of systems, and made it possible to assemble the Free and Open Source components surrounding Linux into complete operating systems. As we continue following the modern UNIX family, those licensing decisions will remain part of the explanation for why BSD and Linux developed into the ecosystems we know today.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="software" /><category term="software-licensing" /><category term="free-software" /><category term="open-source" /><category term="foss" /><category term="proprietary-software" /><category term="shareware" /><category term="copyleft" /><category term="permissive-licensing" /><category term="gnu" /><category term="bsd" /><category term="debian" /><category term="red-hat" /><category term="linux" /><category term="doom" /><category term="libreoffice" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how software distribution and licensing developed through shareware, Free Software, Open Source, permissive licensing, and copyleft, and how Doom, GN...]]></summary></entry><entry><title type="html">UNIX Becomes a Family</title><link href="https://excalibursheath.com/article/2026/08/23/unix-family.html" rel="alternate" type="text/html" title="UNIX Becomes a Family" /><published>2026-08-23T11:00:00-06:00</published><updated>2026-08-23T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/08/23/unix-family</id><content type="html" xml:base="https://excalibursheath.com/article/2026/08/23/unix-family.html"><![CDATA[<p>Last week, we looked at how <a href="../16/hardware-no-longer-defines.html">the operating system became increasingly important as hardware alone became less useful for describing what a computer did</a>.  Similar hardware could serve as a workstation, provide network services, or perform several roles at once depending upon its operating system, software, and configuration.  That discussion ended with UNIX, an operating tradition that had developed around shared computing long before networked personal computers made those characteristics increasingly useful.</p>
<p>UNIX did not begin as a networking operating system in the modern sense.  It developed in an environment where computing resources were shared among multiple users and where multiple programs needed to operate within the same system.  Users, processes, permissions, files, and small programs that could work together were part of its operating model from relatively early in its development.  As networking became more important, many of those existing assumptions translated naturally into computers that increasingly needed to interact with other computers.</p>
<p>The same characteristics that helped UNIX adapt to changing uses also helped it spread.  Rewriting much of UNIX in C reduced its dependence upon a particular machine, allowing it to move across hardware architectures more readily than an operating system closely tied to one computer.  Universities, researchers, and commercial vendors could encounter UNIX, adapt it to different environments, and develop it in different directions.  Berkeley became particularly important to that development, while AT&amp;T continued its own UNIX lineage and commercial vendors created systems for their hardware and markets.</p>
<p>UNIX became more than the operating system originally developed at Bell Labs.  It became a family of related systems with common ancestry but increasingly distinct implementations, purposes, and identities.  Understanding how that happened requires returning to UNIX’s beginning, examining the operating model that developed around it, and following the branches that appeared as UNIX moved beyond the machines and organization where it began.</p>
<h2 id="from-multics-to-unix">From Multics to UNIX</h2>
<p>UNIX did not appear in isolation.  Its development followed Bell Laboratories’ participation in one of the most ambitious computing projects of the 1960s: the Multiplexed Information and Computing Service, better known as <strong>Multics</strong>.  Developed jointly by MIT, General Electric, and Bell Labs, Multics was intended to create a large time-sharing system in which many people could interact with a computer at the same time.</p>
<p>Time-sharing represented a different way of thinking about access to a computer.  Instead of preparing a job, submitting it, and waiting for the results, users could work interactively through terminals while the operating system managed access to the underlying machine.  Multics took that idea considerably further.  It was designed around multiple users, processes, protection between users and programs, a hierarchical filesystem, and an operating environment that could remain continuously available while serving a changing workload.</p>
<p>Those goals made Multics influential, but they also made it extraordinarily ambitious for the computers and software-development practices of the period.  Bell Labs became dissatisfied with the project’s progress and withdrew in 1969.  Its researchers no longer had Multics, but they had gained experience with both the possibilities and difficulties of building an interactive, multi-user computing environment.</p>
<h3 id="a-smaller-beginning">A Smaller Beginning</h3>
<p><strong>Ken Thompson</strong> was one of the Bell Labs researchers who had worked with Multics.  After Bell Labs withdrew, he continued experimenting with operating-system ideas on a much smaller DEC PDP-7.  The machine was considerably more limited than the hardware intended for Multics, which forced a different scale of development.  Rather than attempting to reproduce the larger system, Thompson began assembling the pieces of a useful computing environment on the hardware available to him.</p>
<p><strong>Dennis Ritchie</strong> soon became another central contributor, along with other researchers at Bell Labs.  The new system acquired a filesystem, processes, a command interpreter, utilities, and the ability to support multiple users.  Many of these concepts were not unique to UNIX, and some reflected lessons learned from Multics and other time-sharing systems.  What distinguished the emerging system was the particular way those pieces were assembled into a comparatively small and practical operating environment.</p>
<p>The relationship with Multics even appeared in the new system’s name.  The earliest name, <strong>Unics</strong>, was a play on Multics.  The spelling eventually became <strong>UNIX</strong>, and the joke became the name of an operating system that would develop far beyond the PDP-7 on which its earliest form had been assembled.</p>
<h3 id="unix-becomes-a-real-system">UNIX Becomes a Real System</h3>
<p>The PDP-7 system demonstrated the idea, but UNIX did not remain an experiment on obsolete hardware.  Bell Labs acquired a DEC PDP-11, and UNIX development moved to the newer machine.  The system continued to gain capabilities as it began supporting work within Bell Labs, giving its developers a practical reason to improve an operating environment that people were actually using.</p>
<p>UNIX was not designed once and then released as a finished operating system.  It grew through use.  Researchers added capabilities as they encountered problems to solve, while the system itself provided an environment in which they could build additional tools.  Features that would later be recognized as characteristic of UNIX developed over time rather than appearing together in a single original design.</p>
<blockquote>
<p>Many of the commands used by UNIX and UNIX-like operating systems are separate programs rather than functions built into the operating system itself.</p>
</blockquote>
<p>By the early 1970s, UNIX had moved beyond its beginning as Thompson’s PDP-7 project.  It was becoming a practical multi-user operating system and a development environment in its own right.  The next question is what kind of operating environment UNIX had become—and which characteristics would allow it to move beyond Bell Labs and eventually develop into an entire family of systems.</p>
<h2 id="what-is-unix">What Is UNIX?</h2>
<p>By the early 1970s, UNIX had become more than a small operating-system experiment.  It provided an environment in which multiple users could run programs, organize files, communicate with the system through a command interpreter, and combine programs to perform more complicated work.  Many of these capabilities existed elsewhere, but UNIX brought them together in a form that could grow while remaining comparatively understandable.</p>
<p>UNIX is not defined by a single feature.  Multi-user computing existed before UNIX.  Hierarchical filesystems existed before UNIX.  Command-line interfaces, processes, and eventually networking were not unique to it either.  What became characteristic of UNIX was the way these mechanisms worked together and the operating model that developed around them:</p>
<ul>
<li>A Multi-User, Multitasking System</li>
<li>Files as a Common Interface</li>
<li>The Shell and Separate Programs</li>
<li>Small Tools Working Together</li>
<li>Written Largely in C</li>
</ul>
<h3 id="a-multi-user-multitasking-system">A Multi-User, Multitasking System</h3>
<p>UNIX grew from the time-sharing tradition, so multiple users were part of its environment from early in its development.  Each user could have an identity, own files, run programs, and work within the same computer while the operating system managed the resources underneath them.  Rather than treating the computer as belonging to whichever person happened to be sitting in front of it, UNIX assumed that the system itself might be shared.</p>
<p>Processes extended that model to running programs.  The operating system could keep track of multiple processes and allocate processor time among them, allowing more than one program to make progress without requiring one program to finish before another could run.  Users could interact with their own programs while other users and system processes were doing work on the same machine.</p>
<p>Ownership and permissions helped make that sharing manageable.  Files and directories could belong to users and groups, with permissions controlling who could read, modify, or execute them.  These mechanisms were not merely security features added to a single-user computer.  They were part of operating a system in which different people and processes were expected to coexist.</p>
<p>That assumption would become increasingly useful as computers became networked.  UNIX did not need networking to make multi-user operation relevant; it already came from a world of shared computing.  Networking would eventually provide additional ways for users and systems to reach those shared resources.</p>
<h3 id="files-as-a-common-interface">Files as a Common Interface</h3>
<p>UNIX also used the filesystem as an abstraction for more than ordinary data.  Ordinary data was stored in files arranged within a hierarchical directory structure, but the file interface could represent more than documents and program data.  Devices could also be exposed through file-like interfaces, allowing programs to interact with hardware using many of the same operations they used when working with ordinary files.</p>
<p>This did not mean that everything inside UNIX literally worked the same way.  Different devices and system resources still had different capabilities and underlying implementations.  UNIX could provide a relatively small set of common interfaces instead of requiring every program to understand every device independently.</p>
<p>The result was an operating environment in which programs could often concentrate on reading input, transforming it, and producing output while the system handled where that input came from or where the output went.</p>
<h3 id="the-shell-and-separate-programs">The Shell and Separate Programs</h3>
<p>The UNIX shell provided the command environment through which users interacted with the system.  Rather than requiring every command to be implemented as a permanent part of the shell or operating-system kernel, many commands were independent executable programs.  When a user entered a command, the shell could locate the corresponding program, start it as a process, and connect it to the appropriate input and output.</p>
<p>That separation made the command environment extensible.  Adding a new utility did not necessarily require changing the shell or rebuilding the operating system.  A program that followed the expected conventions could become another tool available from the command line.</p>
<p>The shell itself could then provide mechanisms for connecting those tools.  Redirection allowed input and output to come from files instead of the terminal.  Pipes went further by allowing the output of one program to become the input of another.</p>
<h3 id="small-tools-working-together">Small Tools Working Together</h3>
<p>This ability to compose programs became one of the most recognizable characteristics of UNIX.  Instead of requiring one large program to anticipate every possible operation, smaller utilities could perform focused transformations and be connected when a more complicated task was required.</p>
<p>Consider three familiar UNIX tools: <code class="language-plaintext highlighter-rouge">grep</code>, <code class="language-plaintext highlighter-rouge">sed</code>, and <code class="language-plaintext highlighter-rouge">awk</code>.  Each is useful independently, but they can also participate in a pipeline:</p>
<p><code language="sh">
grep "error" system.log | sed 's/^/LOG: /' | awk '{print $1, $2, $3}'
</code></p>
<p>The command can be read from left to right:</p>
<ol>
<li><code class="language-plaintext highlighter-rouge">grep</code> searches <code class="language-plaintext highlighter-rouge">system.log</code> and outputs lines containing <code class="language-plaintext highlighter-rouge">error</code>.</li>
<li>The pipe (<code class="language-plaintext highlighter-rouge">|</code>) sends those lines to <code class="language-plaintext highlighter-rouge">sed</code> instead of displaying them on the terminal.</li>
<li><code class="language-plaintext highlighter-rouge">sed</code> adds <code class="language-plaintext highlighter-rouge">LOG: </code> to the beginning of each matching line and sends the result onward.</li>
<li>The next pipe sends that output to <code class="language-plaintext highlighter-rouge">awk</code>.</li>
<li><code class="language-plaintext highlighter-rouge">awk</code> prints the first three whitespace-separated fields from each resulting line.</li>
</ol>
<p>None of these programs needs to know that the others exist.  <code class="language-plaintext highlighter-rouge">grep</code> produces text.  <code class="language-plaintext highlighter-rouge">sed</code> receives text, transforms it, and produces text.  <code class="language-plaintext highlighter-rouge">awk</code> receives that text and performs another operation.  The shell connects them.</p>
<p>A user can construct a new operation from existing programs without modifying any of them.  Programs become building blocks, while standard input, standard output, and pipes provide conventions through which those blocks can work together.</p>
<p>The often-repeated idea that UNIX programs should do one thing well is a useful description of this style, but it should not be mistaken for a complete specification handed down with the first version of UNIX.  UNIX developed over time, and so did the tools, conventions, and philosophy associated with it.  What matters here is the operating pattern that emerged: programs could remain relatively independent while common interfaces allowed them to participate in larger workflows.</p>
<h3 id="written-largely-in-c">Written Largely in C</h3>
<p>One of the most consequential characteristics of UNIX was not something a user necessarily saw at the command line.  Early UNIX was written in assembly language for the PDP hardware on which it ran.  During the early 1970s, Dennis Ritchie developed the <strong>C programming language</strong>, and UNIX was subsequently rewritten largely in C.</p>
<p>Operating systems were commonly written substantially in assembly language because systems software needed direct access to the underlying machine.  Assembly provides that access, but instructions written for one processor generally cannot simply be moved to another architecture.  An operating system written primarily for a particular processor carries a substantial hardware dependency.</p>
<p>C did not make hardware differences disappear.  Some portions of an operating system still needed architecture-specific implementations, and a C compiler had to exist for the target machine.  What changed was how much of UNIX had to be rewritten when the operating system moved.</p>
<p>Much of the system could now be expressed in a language that was not itself tied to one processor’s instruction set.  Porting UNIX to another architecture could concentrate more heavily on the machine-dependent portions while retaining much of the operating system above them.</p>
<blockquote>
<p>Rewriting UNIX largely in C helped separate the operating system from the hardware on which it had been created.</p>
</blockquote>
<p>This portability would have consequences far beyond making UNIX easier to maintain.  An operating system that could move between different kinds of computers could also move between organizations.  As UNIX left its original hardware and spread beyond Bell Labs, new groups would encounter the system, modify it for their own purposes, and eventually carry its development in different directions.</p>
<h2 id="unix-spreads-beyond-bell-labs">UNIX Spreads Beyond Bell Labs</h2>
<p>Portability made it possible for UNIX to move between computers, but hardware was only part of the story.  UNIX also began moving between organizations.  Universities were particularly important because they provided environments where researchers and students could study the system, modify it, and use it as a foundation for additional work.</p>
<p>AT&amp;T’s position in the regulated telephone industry shaped how this happened.  Bell Labs could develop software for its own purposes, but AT&amp;T faced restrictions on entering other commercial markets.  Rather than initially treating UNIX as a conventional commercial software product, AT&amp;T licensed the system to universities, government organizations, and other institutions.  Academic licenses could include source code, giving researchers an unusual opportunity to examine and change a working operating system.</p>
<h3 id="unix-goes-to-the-universities">UNIX Goes to the Universities</h3>
<p>UNIX began reaching universities during the early 1970s.  For computer-science departments, access to the source code was particularly valuable.  Students and researchers could do more than learn how to operate the system.  They could examine how an operating system was constructed, modify it, develop new utilities, and adapt it to the equipment and research taking place around them.</p>
<p>Bell Labs remained an important center of development, but it was no longer the only place where UNIX was being used and changed.  Improvements could emerge from institutions with different hardware, different research interests, and different problems to solve.</p>
<p>Portability reinforced that spread.  Because much of UNIX was written in C, moving the system to another computer did not necessarily mean beginning again from assembly language.  UNIX could reach additional hardware while carrying much of the same operating environment with it.</p>
<blockquote>
<p>Portability allowed UNIX to move between computers.  Source availability allowed people outside Bell Labs to understand and change what moved with it.</p>
</blockquote>
<h3 id="berkeley-builds-on-unix">Berkeley Builds on UNIX</h3>
<p>One of the most important destinations was the University of California, Berkeley.  UNIX arrived there in the 1970s, where faculty and students began modifying and extending the system.  Those additions eventually became substantial enough to be distributed as the <strong>Berkeley Software Distribution</strong>, or <strong>BSD</strong>.</p>
<p>BSD did not begin as an independently created replacement for UNIX.  It grew from AT&amp;T UNIX while adding software and changes developed at Berkeley.  As those distributions continued to evolve, Berkeley became one of the major centers of UNIX development.</p>
<p>That work included improvements to the operating environment, performance, utilities, and eventually networking.  BSD became more than a collection of convenient additions.  It developed into a major UNIX lineage whose work would influence other UNIX systems and whose descendants would continue independently.</p>
<h3 id="networking-becomes-a-unix-strength">Networking Becomes a UNIX Strength</h3>
<p>Networking became one of the areas in which Berkeley’s UNIX work proved particularly important.  During the development of BSD, researchers incorporated and developed support for the TCP/IP protocol suite and created the sockets programming interface that applications could use to communicate across networks.</p>
<p>BSD did not invent TCP/IP, and UNIX had not originally been created around TCP/IP networking.  The significance was the combination.  A portable, multi-user operating environment was gaining a practical networking implementation and programming interface at a time when computer networks were becoming increasingly important.</p>
<p>Many of UNIX’s existing assumptions continued to make sense as interaction expanded beyond a single computer.  Processes could provide network services.  Users could connect remotely.  Permissions could control access to shared resources.  Small programs could communicate through established interfaces while networking provided another way for computers and users to reach one another.</p>
<p>Networking did not make UNIX relevant.  Networking made a set of assumptions UNIX already possessed increasingly useful.</p>
<blockquote>
<p>Networking did not make UNIX relevant.  Networking made a set of assumptions UNIX already possessed increasingly useful.</p>
</blockquote>
<h3 id="more-than-one-center-of-development">More Than One Center of Development</h3>
<p>Berkeley was important, but UNIX development had not simply moved from Bell Labs to a university.  AT&amp;T continued developing UNIX as well.  Other universities, research organizations, and eventually computer vendors also adapted UNIX to their own hardware and requirements.</p>
<p>That meant UNIX was beginning to develop in more than one direction at the same time.  Changes made in one branch could influence another, but the systems did not remain identical.  Different organizations had different priorities, release schedules, hardware, and users.</p>
<p>The portability that had allowed UNIX to spread had another consequence.  Once UNIX could move between machines and organizations, the people receiving it could take it somewhere new.  The next stage of UNIX history would not be the development of a single system, but the emergence of distinct branches.</p>
<blockquote>
<p>Once UNIX could move between machines and organizations, the people receiving it could take it somewhere new.</p>
</blockquote>
<h2 id="unix-begins-to-branch">UNIX Begins to Branch</h2>
<p>As UNIX spread, development no longer occurred within a single organization.  Bell Labs continued developing the system, Berkeley built increasingly substantial distributions from it, and computer manufacturers adapted UNIX to their own hardware.  These systems shared ancestry and continued exchanging ideas and technology, but they did not remain identical.</p>
<p>Two lineages became particularly important to the history that followed.  <strong>BSD</strong> developed from the UNIX work taking place at Berkeley, while AT&amp;T continued developing the original Bell Labs lineage toward what became <strong>UNIX System V</strong>.  The distinction was never completely clean: technology moved between the branches, and later systems could incorporate substantial work from both.  Still, BSD and System V provide useful reference points for understanding how UNIX developed into a family.</p>
<h3 id="the-bsd-lineage">The BSD Lineage</h3>
<p>The Berkeley Software Distribution began as additions to an existing AT&amp;T UNIX system.  Early BSD releases included software developed at Berkeley rather than constituting an entirely separate operating system.  As Berkeley continued its work, however, BSD accumulated increasingly substantial changes to the underlying system.</p>
<p>Berkeley’s work included new utilities, improvements to the filesystem and virtual-memory system, performance work, and the networking development discussed earlier.  BSD developed characteristics that distinguished it from the UNIX releases continuing through AT&amp;T, even though the two remained historically connected.</p>
<p>BSD also demonstrated what could happen when UNIX spread through universities.  Researchers were not limited to writing applications that ran on top of an operating system supplied by someone else.  With access to UNIX source code, they could change the operating system itself.  A university distribution could become the basis for further research and, eventually, another major branch of UNIX development.</p>
<h3 id="the-att-lineage">The AT&amp;T Lineage</h3>
<p>Development also continued within Bell Labs and AT&amp;T.  Research UNIX progressed through a series of editions, with <strong>Version 7 UNIX</strong>, released in 1979, becoming an especially important point in the family tree.  Version 7 was widely distributed and became an ancestor of several later UNIX systems.</p>
<p>AT&amp;T’s own development moved beyond the numbered Research UNIX editions.  <strong>UNIX System III</strong> appeared in the early 1980s, combining work from several internal AT&amp;T UNIX efforts.  It was followed by <strong>UNIX System V</strong>, which became the principal commercial AT&amp;T UNIX lineage.</p>
<p>System V continued through several major releases and became an important foundation for commercial UNIX.  Computer manufacturers could license UNIX, adapt it to their hardware, and add the features needed for their customers and markets.  UNIX was becoming not only a research and academic family, but also the basis for commercial operating systems tied to particular vendors and computer platforms.</p>
<h3 id="vendor-unix">Vendor UNIX</h3>
<p>As computer manufacturers adopted UNIX, the family grew wider.  Vendors had reasons to provide an operating environment that customers could recognize while still adapting that environment to their own processors, workstations, minicomputers, and larger systems.</p>
<p>IBM developed <strong>AIX</strong>.  Hewlett-Packard developed <strong>HP-UX</strong>.  Sun Microsystems developed <strong>SunOS</strong>, initially with strong BSD ancestry, and later <strong>Solaris</strong>, which incorporated the System V lineage while retaining important BSD-derived technology.  The Santa Cruz Operation developed commercial UNIX systems for increasingly important microcomputer hardware.  Other vendors and organizations produced their own implementations as well.</p>
<p>These systems could differ substantially while still belonging to the broader UNIX family.  They might use different hardware architectures, administration tools, filesystems, utilities, or combinations of BSD and System V technology.  Software written for one UNIX system could not automatically be assumed to compile or behave identically on every other UNIX.</p>
<p>The name <strong>UNIX</strong> described something increasingly complicated.  It could refer historically to the operating system developed at Bell Labs, to systems descended from that source, or more broadly to an operating tradition shared across a growing collection of implementations.  Later standards and trademark requirements would provide more precise meanings, while systems designed to behave similarly without sharing UNIX ancestry would commonly be described as <strong>UNIX-like</strong>.</p>
<h3 id="branches-continue-to-exchange-ideas">Branches Continue to Exchange Ideas</h3>
<p>Branching did not mean the different UNIX lineages stopped interacting.  BSD and AT&amp;T development influenced one another, and vendors incorporated technologies that originated elsewhere in the UNIX world.  A feature developed in one branch could prove useful enough to appear later in another.</p>
<p>This makes UNIX history difficult to represent as a simple sequence.  A family tree can show where systems descended from earlier systems, but it cannot cleanly represent every piece of code, interface, utility, or idea that moved between them.  Those exchanges are part of the history, but they are different from descent.</p>
<p>The distinction will matter when we build the UNIX family tree later in this article.  The tree will follow <strong>where systems came from</strong>, while the surrounding history explains why related branches could continue learning from and borrowing from one another.</p>
<p>UNIX had reached a very different position from the small PDP-7 system developed at Bell Labs.  Portability had allowed it to cross hardware boundaries.  Licensing and source availability had allowed it to cross organizational boundaries.  Once different groups began changing UNIX for their own purposes, those movements produced something more enduring than a series of ports: they produced a family.</p>
<blockquote>
<p>Portability had allowed UNIX to cross hardware boundaries.  Licensing and source availability had allowed it to cross organizational boundaries.</p>
</blockquote>
<h2 id="unix-express">UNIX Express</h2>
<p>By the late 1980s and early 1990s, UNIX had become difficult to describe as though it were still a single operating system.  Different branches shared ancestry, exchanged technology, and retained enough similarities to remain recognizably related, while vendors and research groups continued developing their own implementations.  The result could be complicated even for people who worked with computers.</p>
<p>An <a href="https://meyerweb.com/other/humor/osair.html">old computer-industry joke</a> imagined operating systems as airlines.  <strong>UNIX Express</strong> had its passengers arrive carrying pieces of an airplane and tools.  They argued about what they were building, split into groups, and ultimately produced several different aircraft bearing the same name.</p>
<p>The joke worked because people could picture it.  UNIX had begun as one operating system, but portability and continued development had allowed different groups to carry pieces of that system in different directions.  By following the major lines of descent, those relationships become easier to see.</p>
<h2 id="the-unix-family-tree">The UNIX Family Tree</h2>
<p>A UNIX family tree can quickly become difficult to read.  UNIX systems did not develop as completely isolated branches.  Code, utilities, interfaces, and ideas moved between implementations, and some later systems incorporated substantial work from more than one part of the UNIX family.</p>
<p>The tree below has a narrower purpose: <strong>it shows descent</strong>.  It does not attempt to document every exchange of code, feature, standard, or idea between UNIX systems.  Where multiple lines of descent are important enough that placing a system beneath only one parent would be misleading, the relationship is broken into a smaller tree rather than duplicating the same descendants in several places.</p>
<h3 id="research-unix">Research UNIX</h3>
<p>The earliest part of the tree begins with the UNIX editions developed at Bell Labs.  The first several editions remained closely associated with the PDP-11, while Version 6 became particularly important because it spread widely outside Bell Labs.  Version 7 followed in 1979 and became one of the major ancestors of the UNIX systems that followed.</p>
<p><code language="text">
Research UNIX
│
├── First Edition (1971)
│   └── Second Edition
│       └── Third Edition
│           └── Fourth Edition
│               └── Fifth Edition
│                   └── Version 6 (1975)
│                       ├── Version 7 (1979)
│                       │   └── UNIX/32V
│                       │
│                       └── 1BSD
│                           └── 2BSD
│
└── later Research UNIX editions
</code></p>
<p>The apparent split between Version 7 and the early BSD releases needs some explanation.  <strong>1BSD was not originally a complete replacement operating system.</strong>  It was a collection of Berkeley software added to Version 6 UNIX.  The BSD lineage became increasingly independent as Berkeley continued developing it.</p>
<p>Version 7 also led to <strong>UNIX/32V</strong>, a Bell Labs port for the DEC VAX.  UNIX/32V becomes particularly important because Berkeley used it as part of the foundation for the next stage of BSD.</p>
<h3 id="bsd-becomes-an-operating-system">BSD Becomes an Operating System</h3>
<p>Berkeley combined the VAX-based UNIX/32V system with the software it had been developing through the earlier BSD releases.  The result was 3BSD, a complete VAX operating system that included Berkeley’s virtual-memory work and the utilities developed through the earlier BSD lineage.</p>
<p>That gives 3BSD two useful lines of descent to show:</p>
<p><code language="text">
UNIX/32V ──┐
           ├── 3BSD
2BSD ──────┘
               │
               └── 4BSD
                   └── 4.1BSD
                       └── 4.2BSD
                           └── 4.3BSD
</code></p>
<p>This is where BSD becomes one of the major branches of the UNIX family rather than simply a collection of additions distributed for an existing UNIX installation.  Later BSD development would continue beyond 4.3BSD, but those descendants deserve their own treatment when we follow the BSD family in greater depth.</p>
<p>Several commercial UNIX systems also grew from the BSD side of the family.  <strong>SunOS</strong> was strongly BSD-derived, while Digital Equipment Corporation’s <strong>Ultrix</strong> was based primarily on BSD while incorporating some System V features.</p>
<p><code language="text">
4BSD / 4.xBSD
│
├── SunOS
│
└── 4.2BSD
    └── Ultrix
</code></p>
<p>Those systems also show why the tree does not attempt to include every influence.  Ultrix incorporated System V features, and SunOS would later participate in development that crossed the BSD and System V branches.  Those relationships matter, but they are not the same thing as simply identifying a parent and descendant.</p>
<h3 id="the-att-commercial-lineage">The AT&amp;T Commercial Lineage</h3>
<p>Version 7 also contributed to the commercial UNIX lineage developed by AT&amp;T.  UNIX System III combined several internal AT&amp;T UNIX developments, including Version 7 and UNIX/32V, into a system intended for distribution outside Bell Labs.  System III was followed by UNIX System V in 1983.</p>
<p>The resulting line became one of the major commercial trunks of the UNIX family:</p>
<p><code language="text">
Version 7 UNIX ──┐
                 ├── UNIX System III
UNIX/32V ────────┘
                     │
                     └── UNIX System V
                         ├── SVR2
                         ├── SVR3
                         └── SVR4
</code></p>
<p>System V became the basis for numerous commercial UNIX implementations.  Rather than every customer running an identical AT&amp;T operating system, vendors could adapt the System V codebase to their own hardware and products.</p>
<p>Among the important descendants were <strong>HP-UX</strong>, <strong>AIX</strong>, and <strong>SCO UNIX</strong>.  Their exact histories contain influences and additions from elsewhere in the UNIX family, but their primary commercial ancestry can be followed through System V.</p>
<p><code language="text">
UNIX System V
│
├── SVR2
│   └── HP-UX
│
└── SVR3
    ├── AIX
    └── SCO UNIX
</code></p>
<p>The Santa Cruz Operation had already become important in microcomputer UNIX through its work with Xenix before releasing SCO UNIX, a System V Release 3.2-based UNIX for Intel hardware.</p>
<h3 id="system-v-release-4-brings-branches-together">System V Release 4 Brings Branches Together</h3>
<p>System V Release 4 illustrates why UNIX descent eventually becomes more complicated than a single vertical tree.  AT&amp;T and Sun Microsystems worked together on SVR4, combining the System V lineage with substantial technology from BSD, SunOS, and Xenix.</p>
<p>For purposes of descent, SVR4 remains part of the System V line:</p>
<p><code language="text">
UNIX System V
│
├── SVR2
│
├── SVR3
│
└── SVR4
</code></p>
<p>But the history behind that branch includes several already-established parts of the UNIX family:</p>
<p><code language="text">
System V ──┐
BSD ───────┤
SunOS ─────┼── SVR4
Xenix ─────┘
</code></p>
<p>SVR4 provides a useful example of the difference between a family tree and the complete history of UNIX development.  The first tree tells us where the release belongs.  The second shows why describing its ancestry requires acknowledging more than one established branch.</p>
<p>Sun Microsystems subsequently moved from its BSD-derived <strong>SunOS</strong> foundation to the SVR4-based system marketed as <strong>Solaris</strong>.  The family tree crosses between the previously separate branches again here.</p>
<p><code language="text">
SVR4 ──────┐
           ├── Solaris
SunOS ─────┘
</code></p>
<h3 id="reading-the-tree">Reading the Tree</h3>
<p>These diagrams deliberately leave out many UNIX releases and implementations.  Their purpose is not to catalog every system that has carried UNIX code or behaved like UNIX.  They document the major lines of descent needed to understand how the operating system developed from the Bell Labs editions into BSD, System V, and the commercial UNIX systems surrounding them.</p>
<p>They also do not include every operating system described as <strong>UNIX-like</strong>.  An operating system can reproduce UNIX interfaces, conventions, or behavior without descending from the original UNIX source code.  Descent and compatibility are different relationships, and treating them separately keeps the history clearer.</p>
<blockquote>
<p>UNIX became a family not because every branch remained the same, but because different systems continued developing from shared ancestry.</p>
</blockquote>
<p><strong>About the family tree:</strong> These diagrams were assembled primarily from the histories presented across <a href="https://en.wikipedia.org/wiki/History_of_Unix">Wikipedia’s UNIX-related articles</a>, with major dates and branch points checked against <a href="https://www.unix.org/unix_history.html">The Open Group’s UNIX history</a>.  They focus on lines of descent rather than every exchange of code, features, standards, or ideas between systems.  Complex relationships have been divided into smaller diagrams where doing so makes the ancestry easier to follow.</p>
<h2 id="summary">Summary</h2>
<p>UNIX began as a comparatively small operating system developed at Bell Labs after the laboratory withdrew from the much more ambitious Multics project.  What began on a PDP-7 grew into a practical multi-user operating environment with processes, a hierarchical filesystem, a shell, independent utilities, and conventions that allowed those tools to work together.  Rewriting much of UNIX in C then helped loosen the connection between the operating system and the particular hardware on which it had been created.</p>
<p>Portability allowed UNIX to move to new computers, while licensing and access to source code allowed it to move into universities and other organizations.  Researchers could study the operating system, modify it, and build upon it rather than treating it as an inaccessible layer beneath their applications.  Berkeley became particularly important through BSD, including networking work that helped make UNIX increasingly useful as computers themselves became more connected.</p>
<p>That spread also meant UNIX no longer developed along a single path.  Bell Labs and AT&amp;T continued their own lineage, Berkeley developed BSD, and commercial vendors adapted UNIX to different machines and markets.  Those branches continued exchanging technology even as they became increasingly distinct.  UNIX had changed from one operating system developed for a particular environment into a family of related operating systems with shared ancestry.</p>
<p>The UNIX family grew from many of the same characteristics that made the original system successful.  It could move between hardware, be adapted to different purposes, and provide a recognizable operating environment even as individual implementations changed.  The result was not one UNIX frozen in time, but a collection of related systems whose common ancestry remained visible even as their branches continued developing in different directions.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="unix" /><category term="multics" /><category term="bell-labs" /><category term="operating-systems" /><category term="bsd" /><category term="system-v" /><category term="att" /><category term="berkeley" /><category term="unix-history" /><category term="networking" /><category term="c-programming" /><category term="computer-history" /><summary type="html"><![CDATA[Explore how UNIX grew from its Bell Labs origins into a family of operating systems, how portability and source availability allowed it to spread, and how BS...]]></summary></entry><entry><title type="html">When Hardware No Longer Defines the Computer</title><link href="https://excalibursheath.com/article/2026/08/16/hardware-no-longer-defines.html" rel="alternate" type="text/html" title="When Hardware No Longer Defines the Computer" /><published>2026-08-16T11:00:00-06:00</published><updated>2026-08-16T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/08/16/hardware-no-longer-defines</id><content type="html" xml:base="https://excalibursheath.com/article/2026/08/16/hardware-no-longer-defines.html"><![CDATA[<p>Last week, we looked at <a href="../09/server-emerges.html">how the server emerged as a role</a> as formerly isolated computers became connected through local networks.  A server was not necessarily a new class of computer in the same sense as a mainframe, minicomputer, microcomputer, or supercomputer.  Instead, the term increasingly described what a computer did within a network: it provided files, applications, printers, databases, or other resources to other computers.</p>
<p>That distinction creates a problem for the computer classifications we have been using throughout this series.  Mainframe, minicomputer, microcomputer, and supercomputer are useful categories because they describe real differences in architecture, scale, cost, access, and intended use.  For much of computing history, those characteristics were also closely connected to what a computer was expected to do.</p>
<p>Networking began to weaken that relationship.  A computer could still be classified according to its hardware and architecture, but those characteristics no longer necessarily described its function within a larger system.  Two computers built around similar hardware could perform very different jobs depending upon their operating systems, software, configuration, and relationship to other computers.</p>
<p>The older classifications did not disappear.  Instead, another way of understanding computers became increasingly important.  We could still ask what kind of computer a machine was, but we also needed to ask what role it performed.</p>
<h2 id="when-hardware-suggested-function">When Hardware Suggested Function</h2>
<p>The computer classifications discussed earlier in this series developed because hardware, economics, and use were closely related.  A computer’s architecture and resources placed practical limits on what it could do, while its cost helped determine who could afford to own and operate it.  Those constraints contributed to recognizable classes of computers that tended to be used in recognizable ways.</p>
<p>Knowing that a system was a mainframe, minicomputer, microcomputer, or supercomputer told us more than what hardware it contained.  The classification also suggested who used the machine, how it was operated, and what kinds of work it was likely to perform.</p>
<h3 id="hardware-and-use-were-closely-connected">Hardware and Use Were Closely Connected</h3>
<p>Mainframes were expensive centralized systems designed to support institutional workloads and many users.  Minicomputers brought shared computing into departments, laboratories, businesses, and smaller organizations.  Microcomputers reduced the scale further, placing relatively inexpensive computing resources directly in front of an individual user.  Supercomputers followed a different path by concentrating substantial resources on specialized computational workloads.</p>
<p>These distinctions involved more than raw performance.  Each class represented a combination of characteristics that influenced how the machine could reasonably be used:</p>
<ul>
<li>processor and memory architecture,</li>
<li>storage and I/O capabilities,</li>
<li>number of simultaneous users,</li>
<li>physical size and supporting infrastructure,</li>
<li>purchase and operating costs,</li>
<li>reliability requirements,</li>
<li>and the workloads for which the system was designed.</li>
</ul>
<p>A machine’s class also carried expectations about its function.  A personal computer was generally expected to serve the person sitting in front of it.  A mainframe or minicomputer provided computing resources to multiple users.  A supercomputer performed computational work that justified its specialized architecture and expense.</p>
<h3 id="useful-categories-not-absolute-boundaries">Useful Categories, Not Absolute Boundaries</h3>
<p>These classifications were never absolute.  Their boundaries changed as technology improved, and individual systems did not always fit neatly within them.  A powerful microcomputer could overlap with the capabilities of lower-end minicomputers, while newer generations of smaller machines could outperform older systems from supposedly larger classes.</p>
<p>That overlap did not make the categories useless.  Hardware characteristics and operational function remained closely related enough that the classification provided a reasonable starting point for understanding the system.</p>
<p>Networking made that starting point less complete.  A computer no longer needed to contain all of the resources used by the person sitting in front of it, and the resources contained within a computer no longer needed to be used only by that person.</p>
<h2 id="the-workstation-complicates-the-picture">The Workstation Complicates the Picture</h2>
<p>The workstation illustrates this transition particularly well.  It provided substantial computing resources directly to an individual user while commonly operating as part of a larger networked environment.  Computing could occur locally without requiring the machine to remain operationally isolated.</p>
<p>The workstation combined characteristics of two earlier computing models.  It retained the local independence associated with the microcomputer while taking advantage of shared resources traditionally associated with larger systems.</p>
<h3 id="more-than-a-terminal">More Than a Terminal</h3>
<p>A traditional terminal primarily provided an interface to computing resources located elsewhere.  The processor, programs, storage, and operating environment belonged to the central system.  The terminal allowed the user to interact with those resources but did not normally provide an independent general-purpose computing environment of its own.</p>
<p>A workstation did.  It contained its own processor, memory, storage, operating system, and applications.  A user could perform substantial work without sending every operation to another computer.</p>
<p>In this respect, the workstation shared an important characteristic with the personal computer.  Meaningful computation happened locally.</p>
<h3 id="local-and-remote-resources">Local and Remote Resources</h3>
<p>The workstation, however, was commonly intended to participate in a network.  Files might reside locally or on another machine.  Printers could be shared.  Data could be retrieved from remote systems.  Programs could execute locally while relying upon resources provided elsewhere.</p>
<p>The difference can be summarized through four general models:</p>
<ul>
<li><strong>Terminal:</strong> primarily accesses computing resources located elsewhere.</li>
<li><strong>Standalone personal computer:</strong> primarily uses its own local computing resources.</li>
<li><strong>Networked workstation:</strong> provides substantial local computing resources while also consuming resources and services provided by other systems.</li>
<li><strong>Server:</strong> primarily provides resources and services for use by other computers and users.</li>
</ul>
<p>The boundaries between these models were not absolute.  What mattered was that networking allowed local and shared computing to coexist within the same environment.</p>
<blockquote>
<p>These models describe where computing resources are located and how they are used.  They do not necessarily describe four different kinds of hardware.</p>
</blockquote>
<h3 id="when-workstation-describes-both-machine-and-use">When Workstation Describes Both Machine and Use</h3>
<p>Workstations from companies such as Sun, Apollo, DEC, HP, and SGI formed a recognizable market.  They often provided hardware and capabilities that distinguished them from ordinary personal computers of the same period, so <em>workstation</em> could legitimately describe a class of computer.</p>
<p>At the same time, the term said something about how the machine was used.  A workstation provided an individual computing environment while remaining part of a larger networked system.</p>
<p>As personal-computer hardware became more capable, the distinction became less obvious.  PC-compatible machines increasingly performed work that had previously justified specialized workstation hardware.  The hardware still mattered, but hardware alone was becoming less useful for determining the machine’s place within the larger system.</p>
<h2 id="networking-separates-the-machine-from-its-function">Networking Separates the Machine From Its Function</h2>
<p>A standalone personal computer primarily provides resources to its local user.  Its processor executes that user’s programs, its storage contains the user’s files, and its peripherals exist primarily for that user’s use.  The machine can perform many different kinds of work, but its operation remains centered upon the person sitting in front of it.</p>
<p>Networking allows those resources and functions to cross machine boundaries.  The physical location of a resource no longer needs to correspond with the physical location of the person using it.</p>
<h3 id="resources-move-across-machine-boundaries">Resources Move Across Machine Boundaries</h3>
<p>A file does not necessarily need to reside on the user’s local disk.  A printer does not need to be attached directly to the computer sending it a document.  Applications and databases can operate on another system.  Authentication and other shared functions can be provided centrally.</p>
<p>Functions can be divided among machines:</p>
<ul>
<li>one computer can provide shared storage,</li>
<li>another can provide printing,</li>
<li>another can host applications or databases,</li>
<li>while individual computers consume those services and continue performing their own local computation.</li>
</ul>
<p>The network becomes more than a connection between otherwise independent computers.  The machines begin forming a larger computing system in which resources can be provided and consumed across computer boundaries.</p>
<h3 id="similar-hardware-different-jobs">Similar Hardware, Different Jobs</h3>
<p>A PC-compatible machine might sit on someone’s desk and operate primarily as an individual’s computer.  Another machine based upon similar hardware might sit elsewhere and provide files, applications, or other resources to everyone on the network.</p>
<p>The underlying hardware lineage has not necessarily changed.  The job assigned to the machine has.</p>
<blockquote>
<p>The hardware may remain substantially the same while the machine’s role changes.</p>
</blockquote>
<p>The server role discussed in the previous article illustrates the same change from another direction.  If <em>server</em> describes a role rather than a fundamental hardware class, knowing the hardware class alone cannot tell us whether a particular machine is acting as a server.</p>
<h3 id="operational-roles-describe-relationships">Operational Roles Describe Relationships</h3>
<p>Terms such as <em>client</em>, <em>workstation</em>, <em>file server</em>, <em>print server</em>, and <em>database server</em> describe computers according to what they do and how they relate to other computers.</p>
<p>That differs from describing a system as a microcomputer, minicomputer, mainframe, or supercomputer.  Those classifications tell us something about the machine itself.  Operational roles tell us something about its function within a larger computing environment.</p>
<p>The same computer can be described in both ways.  It belongs to a hardware lineage while also performing one or more operational roles.</p>
<h2 id="the-operating-system-helps-define-the-role">The Operating System Helps Define the Role</h2>
<p>Hardware places limits on what a computer can do, but hardware capability alone does not determine how effectively a machine can perform a particular role.  The operating system determines how the processor, memory, storage, processes, users, and network connections are managed.  As PC hardware became increasingly capable, the operating environment became an important part of determining how that hardware could be used.</p>
<p>PC operating systems provide a useful example.</p>
<h3 id="dos-and-the-standalone-personal-computer">DOS and the Standalone Personal Computer</h3>
<p>MS-DOS reflected the personal-computer environment from which it emerged.  Its operating model assumed one person using one computer, with programs and resources primarily located on that machine.</p>
<p>DOS computers could participate in networks.  Network software allowed them to communicate with other systems and access shared resources, and specialized software could make PC hardware provide resources to other machines.  Networking itself was not the problem.</p>
<p>DOS had not been designed around the multi-user and multitasking environment traditionally associated with systems providing shared services.  A capable PC might possess the processor, memory, storage, and network interface needed for a particular role while its operating environment made that role difficult to implement effectively.</p>
<blockquote>
<p>Hardware capability does not guarantee that the operating environment is well suited to every role the hardware could theoretically perform.</p>
</blockquote>
<h3 id="windows-builds-on-the-personal-computer">Windows Builds on the Personal Computer</h3>
<p>The first generations of <strong>Microsoft Windows 1.x, 2.x, and 3.x</strong> did not replace DOS.  They provided a graphical and increasingly capable environment that operated with DOS underneath it.  They expanded how the personal computer could be used, but they remained connected to an operating model that originated with the standalone PC.</p>
<p><strong>Windows 95, 98, and Me</strong> moved considerably further.  Windows increasingly appeared to the user as the operating system itself, while networking, multitasking, hardware support, and resource sharing became normal parts of the environment.  These systems could participate effectively in networks and provide some resources to other machines, but they still retained substantial architectural ties to DOS and the earlier Windows lineage.</p>
<p><strong>Windows NT</strong> represented a different approach.  Rather than continuing the DOS architecture, NT was designed as an independent operating system with preemptive multitasking, protected memory, user accounts, security, networking, background services, and support for workstation and server operation.  Its early POSIX subsystem also reflected an effort to support established operating-system standards beyond the DOS and Windows environment.</p>
<p>The distinction became visible even in Microsoft’s product names.  Windows NT Workstation and Windows NT Server used closely related operating-system technology on PC-derived hardware while explicitly identifying different intended roles.</p>
<blockquote>
<p>Windows NT Workstation and Windows NT Server made the distinction visible in their names: closely related technology could be configured around different operational roles.</p>
</blockquote>
<h3 id="unix-follows-a-different-path">UNIX Follows a Different Path</h3>
<p><strong>UNIX did not emerge from this development of DOS and Windows.</strong>  It belonged to the older world of shared computing that we examined earlier in this series.</p>
<p>UNIX developed in the world of shared computing, initially on minicomputer hardware, and spread across larger systems and technical workstations.  Multi-user operation, simultaneous processes, permissions, shared resources, and remote access were not additions to a personal-computer model.  They were part of an operating tradition that had developed while computing resources were commonly shared among users.</p>
<p>As hardware became smaller, faster, and less expensive, that operating model could move with it.  UNIX systems appeared on workstations, BSD-derived systems became available on increasingly accessible hardware, and Linux eventually brought a UNIX-like operating environment directly into the rapidly expanding world of PC-compatible machines.</p>
<p>While Microsoft was developing its own operating-system lineage, UNIX and UNIX-like systems were moving onto increasingly accessible hardware.  Different operating traditions could now operate on similar classes of machines.</p>
<blockquote>
<p>Microcomputer-derived hardware was moving upward in capability while an operating model developed for shared computing was moving onto smaller and less expensive machines.  Networking gave those developments a place to meet.</p>
</blockquote>
<p>Why UNIX fit this environment so naturally is a larger question.  For now, its movement onto increasingly accessible hardware demonstrates how far the relationship between hardware class and operational function had changed.</p>
<h2 id="role-becomes-another-layer-of-classification">Role Becomes Another Layer of Classification</h2>
<p>The older computer taxonomy had not disappeared.  A mainframe remained different from a PC-compatible computer, and a supercomputer remained different from a workstation.  Those classifications continued to describe meaningful architectural and practical differences.</p>
<p>They no longer described the whole system.</p>
<p><strong>Networked computing increasingly required looking at a system in layers.</strong>  The physical hardware remained one part of the system, while the operating environment determined how that hardware was managed.  Above that, applications and services determined what the computer actually provided, while the network defined how those functions became available to other systems.  Each layer described something different, but all of them contributed to the behavior of the computer as a whole.</p>
<table>
<thead>
<tr>
<th>Layer</th>
<th>What It Helps Describe</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Hardware classification</strong></td>
<td>What kind of physical and architectural system the computer is</td>
</tr>
<tr>
<td><strong>Operating environment</strong></td>
<td>How hardware, processes, users, storage, and networking are managed</td>
</tr>
<tr>
<td><strong>Operational role</strong></td>
<td>What functions the computer performs</td>
</tr>
<tr>
<td><strong>Network relationship</strong></td>
<td>Which resources the computer provides to or consumes from other systems</td>
</tr>
</tbody>
</table>
<p>These layers interact.  Hardware constrains which operating systems and workloads are practical.  The operating system manages capabilities that allow the machine to perform particular roles.  Those roles help determine how the computer participates in the network around it.</p>
<blockquote>
<p>Hardware describes the machine.  The operating environment manages its capabilities.  Operational roles describe what it does.  Network relationships describe how those functions connect it to other systems.</p>
</blockquote>
<h3 id="one-machine-can-perform-multiple-roles">One Machine Can Perform Multiple Roles</h3>
<p>Operational roles do not necessarily correspond one-to-one with physical machines.  A computer might provide file storage while also handling authentication, printing, or remote access.  Another might function as someone’s workstation while simultaneously making some of its own resources available to other computers.</p>
<p>Calling a machine a server does not necessarily tell us that it performs only one function.  It tells us that at least some of its resources or services are being provided for use elsewhere.</p>
<p>The same applies in the other direction.  A workstation can consume network services while still providing substantial local computing resources.  <em>Client</em> and <em>server</em> describe <strong>relationships</strong> that can coexist with other descriptions of the same machine.</p>
<h3 id="different-machines-can-perform-similar-roles">Different Machines Can Perform Similar Roles</h3>
<p>Role does not erase differences between hardware classes.  A PC-compatible computer and a mainframe might both provide applications, storage, or other services to users without becoming equivalent systems.</p>
<p>Their architectures, capacities, reliability characteristics, I/O capabilities, and expected scales can remain substantially different.  What they share is a function within their respective environments.</p>
<p>Hardware classification and operational role answer different questions.  <strong>One describes the machine.  The other describes what that machine is doing.</strong></p>
<h2 id="hardware-still-matters">Hardware Still Matters</h2>
<p>The emergence of operational roles does not make hardware irrelevant.  Processor performance, memory capacity, storage, I/O bandwidth, reliability, expandability, and architecture continue to place practical limits on what a system can reasonably accomplish.</p>
<p>A PC providing files to several users does not become equivalent to a mainframe merely because both machines are acting as servers.  Likewise, calling two systems workstations does not imply that their capabilities are identical.  Operational role describes function, not equivalence.</p>
<p><strong>Hardware tells us what kind of machine we have.  The operating environment helps determine what that machine can do.  Operational role tells us what it is doing within the larger system.</strong></p>
<p>These descriptions become increasingly useful together because networked computers are no longer understandable solely as isolated physical machines.</p>
<h2 id="understanding-computers-as-parts-of-systems">Understanding Computers as Parts of Systems</h2>
<p>Earlier computer classifications encourage us to begin with the machine.  We examine its architecture, resources, scale, and capabilities and use those characteristics to understand what kind of computer it is.  That perspective remains useful, but networking requires us to widen the frame.</p>
<p>A networked computer exists in relation to other computers.  It may provide resources, consume resources, or do both.  Its local hardware matters, but so do its operating system, software, configuration, and connections.  Understanding the machine increasingly means understanding its place within the system around it.</p>
<p>We can still ask, <strong>What kind of computer is this?</strong>  But that question is no longer sufficient by itself.  We must also ask what the computer does, which resources it provides, which resources it consumes, and how it interacts with the other systems around it.</p>
<p>This is one consequence of the transition from isolated personal computers to networked computing.  Mainframes, minicomputers, microcomputers, and supercomputers remain useful classifications, but networking adds another perspective.</p>
<blockquote>
<p>The computer is both a machine and a participant in a larger computing system.</p>
</blockquote>
<h2 id="summary">Summary</h2>
<p>Traditional computer classifications developed because architecture, scale, economics, and expected use were closely related.  Mainframes, minicomputers, microcomputers, and supercomputers described more than physical machines; the categories also suggested how those machines would normally be operated and what kinds of work they would perform.</p>
<p>Workstations and networked personal computers began weakening that connection.  A computer could possess substantial local resources while also consuming resources from other systems, and increasingly similar hardware could be configured for very different purposes.  The machine’s place within the network became another important part of understanding what the computer was doing.</p>
<p>Operational role became an additional way of describing computers rather than a replacement for the older taxonomy.  Hardware classification describes characteristics and lineage of the machine, while operational role describes what that machine does within a larger system.  The operating system sits between those ideas, helping determine which roles the available hardware can effectively perform.</p>
<p>That relationship brings us to another development in networked computing.  If similar hardware can perform very different roles depending partly upon its operating environment, then the design of the operating system becomes increasingly important.  UNIX and the systems derived from its model were particularly well suited to this environment, bringing ideas developed for shared multi-user computing into a world increasingly built from networked computers.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="computer-classification" /><category term="networking" /><category term="workstations" /><category term="servers" /><category term="operating-systems" /><category term="ms-dos" /><category term="windows" /><category term="windows-nt" /><category term="unix" /><category term="linux" /><category term="client-server" /><summary type="html"><![CDATA[Explore how networking weakened the connection between hardware class and computer function, how workstations and servers introduced role-based computing, an...]]></summary></entry><entry><title type="html">The Server Emerges as a Role</title><link href="https://excalibursheath.com/article/2026/08/09/server-emerges.html" rel="alternate" type="text/html" title="The Server Emerges as a Role" /><published>2026-08-09T11:00:00-06:00</published><updated>2026-08-09T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/08/09/server-emerges</id><content type="html" xml:base="https://excalibursheath.com/article/2026/08/09/server-emerges.html"><![CDATA[<p>Last week, we looked at the transition from <a href="https://excalibursheath.com/article/2026/08/02/isolated-computer-local-network.html">independent microcomputers to machines connected through local networks</a>. Networking made it possible to share files, printers, and other resources between computers that had previously operated largely on their own. Connecting the computers was only the beginning. Once resources could cross the boundaries between individual machines, the role of the computers on the network could begin to change.</p>

<p>Earlier in this series, we looked at <a href="https://excalibursheath.com/article/2026/04/19/foundations-computation.html">mainframes, minicomputers, and microcomputers</a> as distinct approaches to computing. Mainframes provided shared computational resources to large numbers of users, while minicomputers brought many of those capabilities to departments and smaller organizations. The microcomputer changed that arrangement by placing the processor, memory, storage, applications, and peripherals directly in front of an individual user. Computing became increasingly personal and decentralized, but organizations still needed many of the shared resources that mainframes and minicomputers had provided.</p>

<p>Networking gave those functions a way to return on new hardware. Shared files could reside on one computer, printing could be handled by another, and applications or databases could be made available across the network. Instead of concentrating every shared function in one larger computer, a network of microcomputers could divide those responsibilities among several machines. Shared organizational computing was re-emerging, but its functions could now be distributed by role.</p>

<p>This is where the server begins to emerge as a role rather than another class of computer. A machine built from the same basic hardware as the personal computers around it could provide files, applications, databases, or other resources to the network. As those roles became more demanding, the machines performing them would gain more memory, storage, processing power, and eventually hardware designed specifically for reliability and continuous operation. The shared functions once associated with much larger computers had not disappeared. They were beginning to take new forms on descendants of the microcomputer.</p>

<h2 id="the-roles-that-never-disappeared">The Roles That Never Disappeared</h2>

<p>The move toward personal computing changed where computation happened, but it did not eliminate the problems shared computers had been solving. Organizations still needed common data, shared applications, centralized storage, access to expensive peripherals, and ways for multiple users to work with the same resources. Those requirements existed before the microcomputer and continued after computers began appearing on individual desks.</p>

<h3 id="mainframes-and-centralized-resources">Mainframes and Centralized Resources</h3>

<p>Mainframes addressed these needs by concentrating substantial computing resources in a central system shared by many users. Processing, storage, applications, and access to organizational data could all be managed in one place. Administration was concentrated there as well. Users might interact with the computer through terminals, but the important resources remained under the control of the central machine.</p>

<h3 id="minicomputers-bring-the-model-downward">Minicomputers Bring the Model Downward</h3>

<p>Minicomputers brought a similar model to a smaller scale. A department, laboratory, university group, or smaller organization could operate a shared computer without requiring the scale and expense of a mainframe installation. Multiple users could still share applications, files, processing capacity, and peripherals.</p>

<p>This placed the minicomputer particularly close to territory that network servers would later occupy. The hardware would change considerably, but the need for departmental and organizational resources shared among multiple users would remain.</p>

<h3 id="the-older-systems-did-not-disappear-overnight">The Older Systems Did Not Disappear Overnight</h3>

<p>The arrival of the microcomputer did not cause organizations to immediately abandon their mainframes and minicomputers. Those systems already held applications and data they depended upon, and they continued to provide capabilities that early personal computers could not easily replace. For many organizations, the first step was connecting the new machines to the larger computers already in use.</p>

<p>A PC could take the place of a dedicated terminal while still accessing applications and data running on a mainframe or minicomputer. Terminal emulation and other connectivity software allowed the personal computer to perform its own local work while providing access to existing shared systems. Mainframes, minicomputers, and PCs could coexist in the same computing environment for years.</p>

<p>I saw this overlap firsthand in 1995, when I worked in a college computer lab. The college had two labs filled with PCs, but in the corner was still a VAX terminal used by the administrators. The PCs had clearly become the everyday computers for the students, but that did not mean every function of the older system had moved with them.</p>

<p>As networking among microcomputers matured, that relationship began to change. Local networks increasingly allowed PCs to share files, printers, applications, and other resources among themselves. Mainframes and minicomputers remained important, but some of the responsibilities that had kept them at the center of organizational computing could now move onto networks of smaller machines.</p>

<p>Mainframes and minicomputers represented recognizable classes of computer, but shared storage, multi-user applications, common data, and centralized administration were functions rather than properties of a particular kind of hardware. Those machines had been the practical way to provide them. As microcomputers and their networks became more capable, the functions could move to new hardware without disappearing.</p>

<h2 id="the-microcomputer-pulls-computing-apart">The Microcomputer Pulls Computing Apart</h2>

<p>The microcomputer gave individual users computing resources of their own. Instead of connecting to a larger shared system, a user could have a processor, memory, storage, applications, display, keyboard, and peripherals sitting on a desk. As these machines became more capable, more work could be performed locally without depending on a central computer.</p>

<h3 id="computing-becomes-personal">Computing Becomes Personal</h3>

<p>This independence was one of the great strengths of personal computing. A program running slowly or failing on one computer did not necessarily affect everyone else. Users could install different software, store their own files, and configure the machine for their own needs. Organizations could also add computers incrementally rather than concentrating all of their computing capacity in a single large system.</p>

<p>For the individual user, this represented a significant change. Processing and storage were no longer resources that had to be requested from a shared system. Much of the computing environment was sitting on the desk and belonged, at least operationally, to the person using it.</p>

<h3 id="independence-creates-new-problems">Independence Creates New Problems</h3>

<p>Putting those resources on individual desks also scattered things that had previously been kept together. As personal computers spread through an organization:</p>

<ul>
  <li>files could become scattered across many hard drives;</li>
  <li>printers and other peripherals could be attached to individual computers even when several people needed them;</li>
  <li>applications might have to be installed and maintained separately on many machines; and</li>
  <li>transferring information between computers could mean carrying it on floppy disks.</li>
</ul>

<p>These were consequences of distributing resources that had previously been concentrated within shared systems. Personal computing provided independence, but that independence came with a new kind of isolation.</p>

<p>Local networks provided a way around some of that isolation. Once the machines were connected, resources distributed onto individual desks could begin to be shared again. The microcomputer had pulled computing apart; the network provided a way to put some of those pieces back together without giving up the individual computers themselves.</p>

<h2 id="the-network-puts-the-pieces-back-together">The Network Puts the Pieces Back Together</h2>

<p>Once microcomputers were connected, a resource no longer had to reside on the computer that used it. Files stored on one machine could be accessed from another. A printer connected to one system could serve users throughout an office. Applications, databases, and other resources could likewise be placed on a machine where multiple users could reach them across the network.</p>

<p>This brought shared computing back into an environment built around personal computers. Mainframes and minicomputers had generally concentrated many shared functions within the same computer. A network of microcomputers allowed those functions to be separated.</p>

<h3 id="sharing-resources-across-the-network">Sharing Resources Across the Network</h3>

<p>As shared resources moved onto networked computers, several recognizable server roles began to emerge:</p>

<ul>
  <li>File server</li>
  <li>Print server</li>
  <li>Database server</li>
  <li>Application server</li>
  <li>Authentication server</li>
</ul>

<p>A <strong>file server</strong> provided a common place to store files that could be accessed from other computers on the network. Instead of documents and other data existing only on individual hard drives, users could work with shared storage available to everyone who had permission to use it.</p>

<p>A <strong>print server</strong> managed access to one or more printers. This allowed a printer to be shared among many computers while print jobs could be queued and managed in one place.</p>

<p>A <strong>database server</strong> provided access to common data. Rather than maintaining separate copies on individual computers, applications and users could work with information stored and managed by a shared database system.</p>

<p>An <strong>application server</strong> moved some of the application workload away from the individual PC. Depending on the software, the server could provide an application itself, perform processing on behalf of clients, or provide services used by applications running on other computers.</p>

<p>An <strong>authentication server</strong> provided a common place to manage identities and access. Instead of every computer maintaining completely independent user accounts, authentication could become another shared network service.</p>

<p>These roles did not necessarily require five separate computers. A single machine could provide several services, particularly on a smaller network. The functions themselves no longer had to reside together.</p>

<h3 id="centralizing-functions-without-centralizing-everything">Centralizing Functions Without Centralizing Everything</h3>

<p>Users retained the processors, memory, applications, and storage available on their own computers while gaining access to resources provided elsewhere on the network. Local and shared computing could coexist.</p>

<p>This allowed organizations to centralize particular resources without centralizing the entire computing environment. Files might reside on a shared machine while processing remained on individual PCs. A database could be available throughout an organization without requiring every application to run on the same computer. Resources could be placed where sharing made sense while other work remained on the user’s machine.</p>

<p>As these shared resources became more important, particular machines could be given particular responsibilities. Instead of a user’s computer merely sharing a directory or printer when needed, an organization could dedicate a machine to providing that resource. Functions once concentrated within larger shared computers were becoming distinct roles distributed across the network.</p>

<h2 id="the-server-becomes-a-role">The Server Becomes a Role</h2>

<p>Once resources could be provided across the network, the distinction between a personal computer and a server was not necessarily a distinction between fundamentally different kinds of hardware. A server was defined primarily by what it provided to other systems.</p>

<p>A computer storing files for other machines was acting as a file server. The same computer might also manage printers or authenticate users. Another machine might request files from that server while providing a different service of its own.</p>

<h3 id="server-and-client-describe-what-a-computer-is-doing">Server and Client Describe What a Computer Is Doing</h3>

<p>Server and client described roles rather than permanent categories. A computer could act as a client when requesting a resource from another system and as a server when providing a resource to others. A single computer could also perform several server roles at the same time.</p>

<p>This differed from the older mainframe, minicomputer, and microcomputer taxonomy. Those terms described recognizable classes of computer with meaningful differences in scale, construction, cost, and typical use. Calling a computer a server described what that computer was doing within the network.</p>

<h3 id="the-hardware-could-still-be-a-pc">The Hardware Could Still Be a PC</h3>

<p>Early network servers could have a great deal in common with the personal computers around them. They used the same families of processors, memory, storage devices, expansion buses, network adapters, and other components found throughout the growing PC ecosystem.</p>

<p>A machine did not need to belong to a new hardware class before it could become a server. It might simply have a larger hard drive, more memory, a network adapter, and software configured to provide resources to other computers.</p>

<p>I’ve practiced system administration on plenty of “servers” built from discarded PCs over the years. They did not have redundant power supplies, error-correcting memory, hot-swappable drives, or many of the other features associated with dedicated server hardware. Once configured to provide files, web pages, or other network services to other computers, they were servers because of the role they performed.</p>

<p>The distinction was operational before it was necessarily physical.</p>

<p>An ordinary PC could therefore be a perfectly legitimate server. As more users began depending on a particular machine, there were increasingly good reasons to dedicate that computer to the role.</p>

<h2 id="from-shared-role-to-dedicated-machine">From Shared Role to Dedicated Machine</h2>

<p>A computer did not have to be dedicated exclusively to a server role. A workstation could share files or a printer while still being used by the person sitting in front of it, and one machine could provide several services at the same time. For a small network, that might be entirely sufficient.</p>

<p>The situation changed as more people began depending on those services. A shared directory used occasionally by two or three people placed very different demands on a computer than storage used throughout an organization. The consequences of that computer being unavailable also became greater.</p>

<h3 id="when-a-shared-pc-is-no-longer-enough">When a Shared PC Is No Longer Enough</h3>

<p>Using someone’s workstation to provide a network service introduced some obvious problems. If the computer was turned off, the service disappeared with it. Maintenance, software problems, or hardware failures could affect everyone depending on the resource rather than only the person using the computer.</p>

<p>Server workloads could also compete with the person sitting at the machine for:</p>

<ul>
  <li>processor time;</li>
  <li>memory;</li>
  <li>disk access; and</li>
  <li>network bandwidth.</li>
</ul>

<p>At some point, dedicating a computer to the service became more practical than asking one machine to serve both as someone’s personal computer and as an important shared resource.</p>

<h3 id="giving-machines-specific-jobs">Giving Machines Specific Jobs</h3>

<p>A machine could become <strong>the file server</strong>, while another became <strong>the database server</strong> or <strong>the mail server</strong>. Smaller networks might continue combining several roles on one computer, while larger environments could separate them as workloads and requirements increased.</p>

<p>An organization could centralize its files on one machine and its database on another while users continued running applications and performing much of their processing on individual PCs. Shared computing no longer required concentrating everything in one place.</p>

<p>The network was becoming a distributed environment assembled from computers with different responsibilities. Administrators could decide which machines should provide particular services rather than expecting one class of computer to provide all of an organization’s shared computing.</p>

<p>Once a computer supported many users or an important service, those responsibilities began influencing more than its configuration. Performance, capacity, reliability, and availability would increasingly shape the hardware itself.</p>

<h2 id="the-role-begins-to-change-the-hardware">The Role Begins to Change the Hardware</h2>

<p>An ordinary PC could perform a server role, but a machine supporting many users faced different demands from one sitting on an individual desk. More users meant more simultaneous requests for files, applications, or data. Some workloads placed heavy demands on storage and networking, while others needed substantially more memory or processing power.</p>

<p>As those demands increased, the hardware began to change with them.</p>

<h3 id="capacity-and-performance">Capacity and Performance</h3>

<p>Different server roles placed pressure on different parts of the system. A file server benefited from fast storage and greater disk capacity. A database server might need considerably more memory and processing power. A heavily used network service could require faster network interfaces and greater I/O capacity.</p>

<p>As workloads increased, servers could be equipped with:</p>

<ul>
  <li>more memory;</li>
  <li>larger and faster storage;</li>
  <li>greater I/O capacity;</li>
  <li>faster network interfaces; and</li>
  <li>additional processing capacity.</li>
</ul>

<p>A server could become considerably more powerful than the computers it served while still using processors, memory, storage, and expansion technologies from the same general hardware families. The PC hardware model provided plenty of room to grow before a server needed to look substantially different from the machines around it.</p>

<h3 id="reliability-and-availability">Reliability and Availability</h3>

<p>Capacity and performance were not the only concerns. Once people depended on a server, keeping it running became increasingly important.</p>

<p>A failed desktop computer might interrupt one person’s work. A failed file server could prevent an entire department from reaching its files. Hardware features that prevented failures or reduced their consequences became more valuable as the number of people depending on the machine increased.</p>

<p>Server systems increasingly incorporated features such as:</p>

<ul>
  <li>error-correcting memory;</li>
  <li>redundant disk arrays;</li>
  <li>redundant power supplies;</li>
  <li>improved cooling;</li>
  <li>hot-swappable drives; and</li>
  <li>components intended for continuous operation.</li>
</ul>

<p>Some of these features helped keep a hardware failure from bringing down the entire system. Others made failed components easier to replace with less disruption to the people depending on the server.</p>

<h3 id="server-hardware-becomes-recognizable">Server Hardware Becomes Recognizable</h3>

<p>Manufacturers eventually produced systems specifically designed for server workloads. Larger memory capacities, multiple processors, rackmount cases, remote-management hardware, redundant components, and greater expansion capabilities made these machines visibly different from the PCs sitting on users’ desks.</p>

<p>The relationship still worked in both directions. I once bought an old Pentium III-based server from my college. Later, when my PC died, I installed a desktop environment on the server and used it to do my homework. It had been built and sold as a server, but underneath the features intended for that role was still a computer closely related to the PCs of the same era.</p>

<p>By this point, it was easy to look at specialized server hardware and think of it as a different class of computer. In practical terms, it certainly was built for a different workload. The difference was not as fundamental as the older divisions between mainframes, minicomputers, and microcomputers.</p>

<p>Server hardware had become specialized because its role demanded greater capacity, reliability, and availability. Change the role, and even a purpose-built server could sometimes become a rather unusual desktop PC.</p>

<h2 id="old-functions-on-new-hardware">Old Functions on New Hardware</h2>

<p>The rise of the microcomputer did more than move computing onto smaller hardware. It separated functions that mainframes and minicomputers had often provided together. Processing moved onto individual PCs. Files moved onto local disks. Applications ran on individual machines, and peripherals could belong to individual users.</p>

<p>LANs allowed those functions to be reorganized. Some remained on the personal computer, while others became shared resources provided across the network:</p>

<ul>
  <li>processing could remain on individual PCs;</li>
  <li>files could move onto file servers;</li>
  <li>applications could be divided between clients and servers;</li>
  <li>databases could become shared network resources;</li>
  <li>printers could be managed centrally; and</li>
  <li>user accounts and authentication could be shared across many systems.</li>
</ul>

<p>The functions were familiar, but their organization had changed. They could now be separated and recombined according to the needs of the network rather than being tied together by the class of computer providing them.</p>

<h3 id="minicomputer-functions-become-server-roles">Minicomputer Functions Become Server Roles</h3>

<p>The correspondence with the minicomputer was particularly easy to see. A minicomputer could provide a department, laboratory, university group, or smaller organization with shared storage, applications, databases, user accounts, peripherals, and processing resources.</p>

<p>A network of PCs and servers could provide many of those same functions, but they no longer had to reside on the same machine. Files might reside on one server, a database on another, and authentication on a third. Smaller organizations could combine several roles on one machine, while larger environments could separate them as workloads increased.</p>

<p>The users’ computers were different as well. Instead of terminals depending on the minicomputer for most of their computation, PCs could perform substantial amounts of work locally and reach across the network when they needed a shared resource.</p>

<p>This makes the minicomputer an especially useful comparison for the dedicated server. Both could provide shared resources to a group of users, but the server existed within an environment where many other functions had already moved elsewhere. What had once been bundled together in the departmental computer could now become several distinct server roles.</p>

<h3 id="mainframe-functions-become-distributed-services">Mainframe Functions Become Distributed Services</h3>

<p>The same reorganization happened at a larger scale with functions associated with mainframes. Organizational databases, applications, storage, authentication, processing, and other shared resources no longer had to reside within one central computer. Some could move onto separate servers, some could remain on a mainframe, and still others could move onto users’ PCs.</p>

<p>A collection of PC-derived servers was not automatically equivalent to a mainframe. Mainframes continued to serve workloads where their reliability, I/O capabilities, capacity, and architecture remained valuable. The change was that large-scale shared computing no longer required every function to reside within a computer belonging to a particular hardware class.</p>

<p>This also helps explain why the transition was gradual. Organizations could move individual functions without replacing their entire computing environment at once. An established application might remain on a mainframe while file storage moved elsewhere. A minicomputer might continue supporting another application while PCs handled everyday work. New server roles could be added as the need arose.</p>

<p>The mixture of mainframes, minicomputers, PCs, and servers was therefore more than an intermediate stage between generations of hardware. It allowed individual computing functions to migrate at different times.</p>

<h3 id="the-functions-survive-the-hardware-classes">The Functions Survive the Hardware Classes</h3>

<p>By this point, the functions that had once helped define different classes of computer were becoming less closely tied to the hardware that provided them.</p>

<p>Shared storage could come from a server built on PC-derived hardware. Applications and databases could move to their own systems. Processing could remain on individual PCs or be performed elsewhere on the network. Mainframes and minicomputers could continue operating where their particular capabilities were still needed.</p>

<p>The functions survived even as their connection to particular classes of computer began to weaken.</p>

<p>For the network administrator, the practical question was increasingly not what historical class a computer belonged to, but what role it needed to perform.</p>

<h2 id="summary">Summary</h2>

<p>The microcomputer changed computing by moving processing, storage, applications, and peripherals away from shared mainframe and minicomputer systems and onto individual machines. The need for shared resources remained. Older systems continued operating alongside PCs, and as networking matured, many of the functions they had provided could move onto microcomputer-derived hardware.</p>

<p>LANs allowed functions once bundled together inside mainframes and minicomputers to become separate network roles. Files could reside on one server, databases on another, and authentication somewhere else, while users continued performing much of their work on their own PCs. Shared computing had returned in a form that could coexist with personal computing.</p>

<p>A server therefore emerged primarily as a role rather than a new class of computer. At first, the hardware performing that role might differ very little from an ordinary PC. As more people and more important services depended on it, the demands of the role encouraged dedicated machines and eventually specialized server hardware designed for greater capacity, reliability, and availability.</p>

<p>The shared functions of the mainframe and minicomputer had survived the transition to personal computing. They had moved among different machines and been reorganized through the network. That leaves an important question for the old mainframe, minicomputer, microcomputer, and supercomputer taxonomy we have used throughout this series: what happens when the functions that once helped define those classes are no longer tied to the hardware that originally provided them?</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="servers" /><category term="server-history" /><category term="networking" /><category term="local-area-network" /><category term="client-server" /><category term="mainframe" /><category term="minicomputer" /><category term="microcomputer" /><summary type="html"><![CDATA[Explore how networking allowed the shared functions of mainframes and minicomputers to reappear on microcomputer-derived hardware, how server roles developed, and why those roles eventually led to dedicated server hardware.]]></summary></entry><entry><title type="html">From Isolated Computers to Local Area Networks</title><link href="https://excalibursheath.com/article/2026/08/02/isolated-computer-local-network.html" rel="alternate" type="text/html" title="From Isolated Computers to Local Area Networks" /><published>2026-08-02T11:00:00-06:00</published><updated>2026-08-02T11:00:00-06:00</updated><id>https://excalibursheath.com/article/2026/08/02/isolated-computer-local-network</id><content type="html" xml:base="https://excalibursheath.com/article/2026/08/02/isolated-computer-local-network.html"><![CDATA[<p>Last week we recreated a classic DOS environment using FreeDOS and VirtualBox, exploring what it was like to use a personal computer as it existed during much of the 1980s and early 1990s. Those systems were remarkably capable despite their limited hardware, but they were also largely <strong>self-contained</strong>. Programs, files, and peripherals all belonged to a single computer. If you have not already read it, I recommend starting with <em><a href="https://excalibursheath.com/article/2026/07/26/dos-freedos-virtualbox-today.html">DOS, FreeDOS, and VirtualBox Today</a></em>, as this week’s discussion builds directly upon the ideas introduced there.</p>

<p>As personal computers became more common, users naturally began looking for ways to communicate with one another. Bulletin board systems and, later, dial-up Internet services demonstrated that computers no longer had to remain completely isolated. A modem allowed two computers to establish a <strong>temporary connection</strong>, exchange information, and disconnect when the session was complete. For the first time, computing extended beyond the boundaries of a single machine.</p>

<blockquote>
  <p>The history of personal computer networking is the story of increasing connectivity—from isolated systems, to temporary communication, and finally to persistent networks.</p>
</blockquote>

<p>Temporary communication, however, was only the beginning. If computers could exchange information for a few minutes over a telephone line, what would happen if they remained connected all the time? That question changed personal computing. Instead of treating communication as an occasional event, computers could begin sharing <strong>files</strong>, <strong>printers</strong>, <strong>storage</strong>, and eventually <strong>Internet access</strong> through <strong>persistent local connections</strong>.</p>

<p>This week we’ll examine how computing evolved from <strong>isolated systems</strong>, to <strong>temporary point-to-point communication</strong>, and finally to <strong>persistent networking</strong>. Along the way, we’ll explore the competing networking hardware, communication protocols, and operating systems that shaped this transition, why organizations invested in local area networks, how networking eventually entered our homes, and why <strong>Ethernet</strong> and the <strong>TCP/IP protocol suite</strong> became the common foundation that modern networks still rely upon today.</p>

<h2 id="from-isolation-to-temporary-connectivity">From Isolation to Temporary Connectivity</h2>

<p>For the first decade of the personal computer revolution, most computers existed in <strong>isolation</strong>. Programs were loaded from floppy disks, files were stored on local media, and printers connected directly to the computer sitting on the desk. Although multiple people might own the same model of computer, each machine functioned as an independent system with little awareness that other computers even existed.</p>

<p>The introduction of affordable <strong>modems</strong> began changing that model. By converting digital data into audio signals that could travel across the public telephone network, two computers could exchange information without occupying the same physical location. Bulletin board systems became one of the earliest practical demonstrations of this capability, allowing users to download software, leave messages, participate in discussions, and upload files from their own homes. Later, dial-up Internet service expanded those possibilities even further, connecting personal computers to a growing collection of online resources and services.</p>

<p>Despite these advances, communication remained <strong>temporary</strong>. A computer established a connection with another system, exchanged information, and disconnected when the session ended. Each connection served a specific purpose, whether retrieving a file, reading messages, or accessing a remote system. Once the telephone call ended, both computers returned to operating independently. Networking had introduced communication, but it had not yet transformed the computer into part of a larger, continuously connected environment.</p>

<blockquote>
  <p>Temporary communication proved that computers no longer had to remain isolated. The next question was whether they needed to disconnect at all.</p>
</blockquote>

<p>Even so, these temporary connections represented an important conceptual shift. Personal computers were no longer confined to the software and information stored locally. Data could move between machines, users could interact across distance, and computing itself began extending beyond the boundaries of a single system. The isolated personal computer had taken its first step toward becoming part of a network.</p>

<p>The next logical question was difficult to ignore. If temporarily connecting two computers could make both of them more useful, what might become possible if computers remained connected all the time? That question would drive the development of local area networks and change how personal computers were deployed in businesses, schools, and eventually homes.</p>

<h2 id="from-temporary-connections-to-permanent-networks">From Temporary Connections to Permanent Networks</h2>

<p>Temporary communication demonstrated that computers could exchange information, but it also revealed the limitations of <strong>point-to-point connections</strong>. Every session required establishing a connection, completing a specific task, and disconnecting when finished. While this model worked well for bulletin board systems, terminal sessions, and early Internet access, it was not an efficient way for multiple computers within the same organization to communicate throughout the day.</p>

<p>A <strong>local area network (LAN)</strong> introduced a different model. Rather than connecting only when information needed to be exchanged, computers remained connected continuously. Communication was no longer a separate activity—it became part of the normal operation of every computer on the network. Files, printers, and other shared resources could be accessed whenever they were needed, without placing a telephone call or manually transferring disks between systems.</p>

<blockquote>
  <p>A local area network didn’t simply connect computers. It changed communication from an occasional event into a permanent part of everyday computing.</p>
</blockquote>

<p>This <strong>persistent connectivity</strong> also changed how computers related to one another. A personal computer was no longer simply a standalone machine that occasionally communicated with another system. It became one participant in a larger environment where multiple computers could exchange information, share resources, and cooperate as part of the same network. While each computer continued running its own operating system and applications, it no longer existed in complete isolation.</p>

<p>The transition from temporary communication to <strong>persistent networking</strong> changed how organizations thought about computing. Instead of purchasing duplicate hardware and maintaining separate collections of files on every workstation, they could share resources across an entire office or campus. Computers were beginning to work together rather than merely communicate with one another.</p>

<p>Once organizations recognized these advantages, local area networks spread rapidly through businesses, schools, and universities. Building those networks, however, was far from straightforward. During the 1980s and early 1990s, there was no universally accepted way to connect computers. Different hardware technologies, communication protocols, and network operating systems all competed to become the standard, creating a diverse and often incompatible networking landscape.</p>

<h2 id="why-organizations-built-networks">Why Organizations Built Networks</h2>

<p>The earliest local area networks were not built because networking was an exciting new technology. Organizations invested in networks because they solved practical business problems. As personal computers became more common in offices, schools, and universities, administrators quickly discovered that managing dozens or even hundreds of completely independent systems was both expensive and inefficient.</p>

<h3 id="sharing-expensive-hardware">Sharing Expensive Hardware</h3>

<p>One of the earliest advantages was <strong>printer sharing</strong>. High-quality laser printers represented a significant investment, often costing far more than an individual workstation. Rather than purchasing a printer for every employee, a single network printer could serve an entire department. This reduced hardware costs while making higher-quality printing available to everyone connected to the network.</p>

<h3 id="sharing-information">Sharing Information</h3>

<p><strong>File sharing</strong> provided an equally important benefit. Before networking became commonplace, users often exchanged files by copying them to floppy disks and physically carrying them between computers, a practice that eventually became known as <em>sneakernet</em>. Local area networks allowed documents, spreadsheets, and other files to be stored in shared locations where multiple users could access the same information without constantly copying disks from one workstation to another. Collaboration became easier because everyone worked from the same collection of files.</p>

<blockquote>
  <p>Networking succeeded because it solved practical problems and saved money.</p>
</blockquote>

<h3 id="simplifying-administration">Simplifying Administration</h3>

<p>Networks also simplified many routine administrative tasks, including:</p>

<ul>
  <li><strong>Software deployment</strong></li>
  <li><strong>Centralized backups</strong></li>
  <li><strong>User account management</strong></li>
</ul>

<p>Instead of maintaining every computer independently, administrators could perform many of these tasks from a central location. As networks grew larger, these operational advantages often became just as valuable as the hardware savings.</p>

<p>By the late 1980s, the advantages of local area networking were becoming difficult to ignore. The challenge was no longer deciding whether computers should be connected, but determining <strong>how</strong> those connections should be built. A growing number of hardware technologies, communication protocols, and network operating systems competed for adoption, each offering a different solution to the same fundamental problem.</p>

<h2 id="building-a-local-area-network">Building a Local Area Network</h2>

<p>Once an organization decided to build a local area network, the next challenge was determining <strong>how</strong> to connect its computers. Today, <strong>Ethernet</strong> is so common that it is easy to assume networking has always worked the same way. During the 1980s and early 1990s, however, there was no universally accepted approach. Organizations could choose from a variety of competing hardware technologies, each with its own advantages, limitations, and target market.</p>

<h3 id="physical-network-technologies">Physical Network Technologies</h3>

<p>Early local area networks used a surprising variety of physical media and network designs. Organizations could choose from technologies such as:</p>

<ul>
  <li><strong>Serial</strong> connections</li>
  <li><strong>Parallel</strong> connections</li>
  <li><strong>ARCnet</strong></li>
  <li><strong>Ethernet</strong></li>
  <li><strong>IBM Token Ring</strong></li>
  <li><strong>Apple LocalTalk</strong></li>
</ul>

<p>Each represented a different philosophy of network design, balancing factors such as cost, performance, reliability, ease of installation, and compatibility with existing systems. The <strong>diversity</strong> of available options reflected an industry that was still exploring the best way to build a local area network.</p>

<blockquote>
  <p>During the 1980s, there was no single “correct” way to build a local area network. Every major computing ecosystem had its own approach.</p>
</blockquote>

<h3 id="communication-protocols">Communication Protocols</h3>

<p>Choosing the physical network was only part of the decision. Computers also needed a <strong>common language</strong> for exchanging information. Each protocol reflected the priorities of the ecosystem that developed it.</p>

<ul>
  <li><strong>NetBEUI</strong> — A simple protocol for small Microsoft Windows local area networks.</li>
  <li><strong>IPX/SPX</strong> — Closely associated with <strong>Novell NetWare</strong>, widely deployed in businesses, and familiar to many home users through multiplayer DOS games.</li>
  <li><strong>AppleTalk</strong> — Designed to provide seamless networking for Apple Macintosh systems.</li>
  <li><strong>TCP/IP</strong> — Gradually expanded beyond its research and UNIX roots, increasingly connecting different types of computers and networks before eventually becoming the common protocol suite across diverse systems.</li>
</ul>

<h3 id="networking-ecosystems">Networking Ecosystems</h3>

<p>Hardware, communication protocols, and operating systems often evolved together. Choosing a networking solution frequently meant choosing an entire <strong>networking ecosystem</strong> rather than a single technology. Common ecosystems included:</p>

<ul>
  <li><strong>Novell NetWare</strong> with <strong>IPX/SPX</strong></li>
  <li><strong>Apple Macintosh</strong> with <strong>AppleTalk</strong></li>
  <li><strong>Microsoft Windows</strong> with its own networking technologies</li>
  <li><strong>UNIX</strong> systems with <strong>TCP/IP</strong></li>
</ul>

<p>Although many of these systems eventually learned to communicate with one another, interoperability was often far more difficult than users expect today.</p>

<p>This diversity encouraged innovation, but it also created <strong>fragmentation</strong>. As organizations exchanged more information and the Internet continued to grow, the advantages of common standards became increasingly apparent. Over time, <strong>Ethernet</strong> emerged as the dominant physical networking technology, while the <strong>TCP/IP protocol suite</strong> became the common language that allowed computers from different manufacturers and operating systems to communicate across the same network.</p>

<h2 id="why-ethernet-and-tcpip-became-the-standards">Why Ethernet and TCP/IP Became the Standards</h2>

<p>Competition encouraged rapid innovation throughout the early years of local area networking, but it also created significant <strong>complexity</strong>. Organizations purchasing networking equipment often committed to an entire ecosystem that included specific network hardware, communication protocols, and network operating systems. As long as computers remained within a single environment, these solutions worked well. The challenge arose when businesses wanted to connect different systems together or exchange information with organizations using different technologies.</p>

<p><strong>Ethernet</strong> gradually emerged as the preferred physical networking technology because it combined flexibility with broad industry support. Rather than remaining closely tied to a single manufacturer or operating system, Ethernet evolved as an <strong>open standard</strong> that hardware vendors across the industry could adopt. As Ethernet equipment became faster, less expensive, and easier to deploy, many organizations concluded that the advantages of a common networking standard outweighed the benefits of competing proprietary solutions.</p>

<blockquote>
  <p>Open standards allowed computers from different manufacturers and operating systems to communicate more easily, reducing the fragmentation that had defined early networking.</p>
</blockquote>

<p>A similar transition occurred with <strong>communication protocols</strong>. While <strong>NetBEUI</strong>, <strong>IPX/SPX</strong>, <strong>AppleTalk</strong>, and other protocol families continued serving their respective environments, <strong>TCP/IP</strong> offered a broader vision. Designed to interconnect different types of networks rather than operate within a single proprietary ecosystem, TCP/IP made communication between diverse computer systems far more practical. As universities, businesses, government agencies, and eventually the public Internet expanded, the value of a common protocol suite became increasingly difficult to ignore.</p>

<p>It is also worth remembering that <strong>TCP/IP is not a single protocol</strong> but a family of related protocols, each designed for a specific purpose. The <strong>Transmission Control Protocol (TCP)</strong> provides reliable, ordered communication for applications where accuracy is essential, while the <strong>User Datagram Protocol (UDP)</strong> favors lower overhead and reduced latency for applications that benefit from faster, connectionless communication. Together with the <strong>Internet Protocol (IP)</strong> and other supporting protocols, they formed a flexible foundation capable of supporting a wide variety of network applications.</p>

<p>By the late 1990s, <strong>Ethernet</strong> and the <strong>TCP/IP protocol suite</strong> had become the common language of local area networking. Organizations no longer needed to choose entirely separate networking ecosystems based on their operating systems or hardware vendors. Computers running different operating systems could increasingly communicate across the same physical network using the same protocol suite. The fragmented networking landscape of the previous decade had largely converged into the interoperable foundation that still underpins modern networks today.</p>

<h2 id="why-networks-came-home">Why Networks Came Home</h2>

<p>For many years, <strong>local area networks</strong> remained primarily a business technology. Organizations justified the cost by sharing printers, files, software, and other expensive resources across dozens or even hundreds of computers. Schools and universities also embraced networking, giving many students their first experience with computers that could communicate continuously rather than operating in isolation.</p>

<h3 id="learning-networking-outside-the-home">Learning Networking Outside the Home</h3>

<p>As networking became more common in professional and educational environments, enthusiasts began recreating those experiences at home. One of the most visible examples was the rise of the <strong>LAN party</strong>, where friends physically connected their computers to play multiplayer games, exchange files, and explore the capabilities of local networking. Although these gatherings were often centered around entertainment, they introduced an entire generation of computer enthusiasts to network adapters, cables, communication protocols, and the practical challenges of building and troubleshooting a local area network.</p>

<blockquote>
  <p>Broadband Internet didn’t invent the home network. It gave ordinary households a compelling reason to build one.</p>
</blockquote>

<h3 id="broadband-changes-the-equation">Broadband Changes the Equation</h3>

<p>Even so, home networks remained relatively uncommon throughout the era of <strong>dial-up Internet</strong>. Dial-up connections established a temporary link between one computer and one remote system, whether a bulletin board system, an online service, or an Internet service provider. While a home network could certainly be built during this period, most households had little practical reason to do so because only one computer could actively use the telephone line at a time.</p>

<p><strong>Broadband Internet</strong> fundamentally changed that equation. Cable, DSL, and later fiber connections remained available continuously, allowing multiple computers to share a single Internet connection without interrupting telephone service. The question was no longer, <em>“How do I connect this computer to another computer?”</em> Instead, it became, <em>“How do I connect every computer in my home to the Internet?”</em> The local area network, once primarily a business tool, became an increasingly common feature of everyday households.</p>

<h3 id="the-connected-home">The Connected Home</h3>

<p>Over time, home networking expanded well beyond desktop computers. As networks became part of everyday life, an increasing variety of devices joined the home network, including:</p>

<ul>
  <li>Laptops</li>
  <li>Game consoles</li>
  <li>Network printers</li>
  <li>Smartphones</li>
  <li>Tablets</li>
  <li>Smart televisions</li>
  <li>Network-attached storage (NAS)</li>
  <li>Countless other connected devices</li>
</ul>

<p>What began as a way for organizations to share expensive resources gradually evolved into the connected home environment that many people now take for granted.</p>

<h2 id="summary">Summary</h2>

<p>The history of personal computer networking is the story of <strong>increasing connectivity</strong>. Early personal computers operated almost entirely in <strong>isolation</strong>, with programs, files, and peripherals belonging to a single machine. Modems introduced the ability to communicate across telephone lines, allowing <strong>temporary point-to-point connections</strong> that demonstrated computers no longer had to remain completely independent. <strong>Local area networks</strong> took the next logical step by making those connections <strong>persistent</strong>, transforming communication from an occasional activity into part of the normal operation of everyday computing.</p>

<blockquote>
  <p>Networking did more than connect computers. It transformed isolated machines into participants within larger computing environments.</p>
</blockquote>

<p>As organizations recognized the advantages of <strong>shared printers</strong>, <strong>centralized files</strong>, and <strong>collaborative computing</strong>, local area networks spread rapidly through businesses, schools, and universities. During those early years, however, networking was far from standardized. Competing hardware technologies, communication protocols, and network operating systems reflected an industry still searching for the best approach. Over time, <strong>Ethernet</strong> and the <strong>TCP/IP protocol suite</strong> emerged as the common foundation that allowed computers from different manufacturers and operating systems to communicate more easily.</p>

<p>Standardization also made networking accessible beyond the workplace. Home enthusiasts experimented with local area networks through multiplayer gaming and file sharing, while <strong>broadband Internet</strong> gave ordinary households a compelling reason to connect multiple computers to the same network. What had once been specialized business infrastructure gradually became an expected part of everyday life, eventually expanding beyond desktop computers to include countless connected devices throughout the home.</p>

<p>The transition from isolated computers to persistent networks changed the environment in which personal computers operated. Networking became an essential part of modern computing, providing a common foundation upon which increasingly sophisticated systems could be built. In the next article, we’ll examine how this shared networking foundation changed the role of individual computers, allowing them to become specialized participants within larger computing environments.</p>]]></content><author><name>Jordan McGilvray</name></author><category term="article" /><category term="computing-history" /><category term="networking" /><category term="local-area-network" /><category term="lan" /><category term="ethernet" /><category term="tcp-ip" /><category term="token-ring" /><category term="arcnet" /><category term="appletalk" /><category term="netware" /><category term="networking-history" /><summary type="html"><![CDATA[Explore how personal computing evolved from isolated machines to persistent local area networks, why organizations adopted networking, how competing technologies gave way to Ethernet and TCP/IP, and how networking eventually became part of everyday home computing.]]></summary></entry></feed>