⏱️ Reading time: 14 min

In 1977, Bill Joy recorded a Pascal compiler and a text editor onto a magnetic tape and mailed it to another university. Thirty copies later, that tape gave rise to the BSD license, the legal agreement that still lets FreeBSD, OpenBSD, and macOS share code with each other without asking permission.

📑 En este artículo
  1. TL;DR
  2. What Is the BSD License?
  3. The Origin: From Bell Labs to a Tape Mailed by Post
  4. The Legal War That Ended Up Freeing the Code
  5. What Makes the BSD License Different From the GPL
  6. The Living Lineage: FreeBSD, NetBSD, OpenBSD, and macOS
  7. Getting Started: Trying FreeBSD Without Touching Your Main System
    1. Step-by-Step Example: Installing Software on FreeBSD vs Linux
  8. Comparison: Choosing Between a BSD System and Linux
  9. Common Misconceptions About BSD Unix
  10. Going Deeper: Why It Matters That the Kernel and Userland Live Together
  11. Frequently Asked Questions
    1. Does the BSD License Require Publishing Modified Code?
    2. Do FreeBSD and OpenBSD Share the Same Kernel?
    3. Why Is macOS Considered Part of the BSD Lineage If It Uses a Mach Kernel?
    4. What’s the Practical Difference Between FreeBSD’s pkg and Linux’s apt?
    5. Is Choosing a BSD System Still Relevant in 2026?
  12. References

Nearly fifty years later, every time someone opens a Mac or spins up a FreeBSD server, they’re using a direct branch of that first shipment from Berkeley. Understanding that license explains why these systems look like Linux on the surface but play by different rules.

TL;DR

  • The BSD license, born at Berkeley in 1977, allows copying and modifying code without requiring you to publish your changes, unlike the GPL.
  • FreeBSD, OpenBSD, and NetBSD all descend from the same 386BSD code released in 1992 by Bill Jolitz.
  • macOS runs Darwin, a Mach kernel combined with utilities from 4.4BSD-Lite inherited from that same lineage.
  • pkg and the ports tree replace apt in FreeBSD, but the kernel and the userland are developed together in a single repository.
  • OpenBSD split from NetBSD in 1995 to prioritize security audits over hardware compatibility.

What Is the BSD License?

The BSD license is a free software permission created at the University of California, Berkeley in the late 1970s that authorizes copying, modifying, and redistributing code, even in closed products, with the sole condition of keeping the original copyright notice.

Two variants are still active: the 2-clause BSD license, which only requires keeping the copyright notice and the list of conditions in the source code and documentation, and the 3-clause version, which also prohibits using the university’s name or the original authors’ names to promote derived products without permission.

The Origin: From Bell Labs to a Tape Mailed by Post

When Ken Thompson returned to Bell Labs in 1976 after a year teaching at Berkeley, he left behind two students, Bill Joy and Chuck Haley, deep in the Unix kernel code. They began optimizing it and, in parallel, packaging their own tools: a Pascal compiler and ex, a line editor that would later spawn vi.

In early 1977, Joy put together the first Berkeley Software Distribution with that Pascal compiler and ex. It wasn’t a separate operating system: it was a package to install on top of a Unix you already had. Over the following year, about thirty tape copies went out, each one copied and mailed by hand by Joy himself.

Getting a copy required already holding an AT&T Unix source license; Berkeley only charged the cost of the tape and the postage. That near-symbolic pricing policy, combined with Berkeley’s tradition of sharing academic software, made the distribution spread quickly among universities that already held the base license.

The second distribution, 2BSD, arrived with vi (the visual mode of ex), the C shell, and improvements to the Pascal compiler; about 75 tapes shipped out of Berkeley the following year, again copied and mailed by Joy in person.

The real leap came in 1978, when professor Richard Fateman’s group got hold of a 32-bit VAX with one megabyte of memory to run Macsyma, a symbolic algebra system. The VAX already had a Bell Labs version of Unix called 32/V, but with no real virtual memory support: each program’s address space was limited to the physical memory available, which wasn’t enough for Macsyma.

Ozalp Babaoglu, a graduate student advised by professor Domenico Ferrari, wrote the virtual memory support for 32/V. Joy helped integrate and debug that code during the end-of-1978 holidays, when fewer people were using the VAX. By January 1979, most of the bugs were fixed.

Joy ported ex, vi, the C shell, and the rest of 2BSD to the VAX; Peter Kessler and Marshall Kirk McKusick ported the Pascal system. All that work, combined with the now-debugged virtual memory kernel, shipped in December 1979 as 3BSD.

The ARPANET network, operational since 1969 and funded by the US Defense Advanced Research Projects Agency, connected institutions with different hardware and operating systems that couldn’t easily share software. DARPA took an interest in Unix’s portability and took note of 3BSD’s success spreading among research centers, which opened the door to directly funding BSD development in the following years.

The first Berkeley distribution of 1977 traveled on magnetic tape to about thirty universities. Foto de The New York Public Library en Unsplash

By the late 1980s, Berkeley was already distributing 4.3BSD with most of its own utilities, but it still depended on licensed AT&T source code. In 1991, a group of developers, including Keith Bostic, founded Berkeley Software Design Inc. (BSDi) to sell a commercial version based on that work.

Unix System Laboratories, the AT&T subsidiary that then owned the rights to Unix, sued BSDi and the University of California in 1992, alleging that the product still contained AT&T code and trade secrets. The litigation stalled, for nearly two years, any clear progress on which parts of BSD were actually free of claims.

📌 Note: the settlement didn’t declare either side a winner; it forced the rewriting or removal of a handful of specific files, not the whole system.

The case was settled in 1994 with an agreement that forced the rewriting or removal of those disputed files. The result was 4.4BSD-Lite, a distribution without a single line of AT&T code, released under the BSD license with no inherited restrictions. That’s the legally clean foundation on which FreeBSD, NetBSD, and, via NeXTSTEP, macOS itself were later built.

What Makes the BSD License Different From the GPL

The core difference between BSD-style licenses and the GPL is what happens when someone redistributes a modified version. BSD doesn’t ask what you did with the code after touching it; the GPL does, and it requires you to publish the result under the same license.

That difference has concrete practical consequences. A company can take FreeBSD’s network stack, put it into a closed commercial router, and never publish its changes, something the Linux kernel’s GPLv2 doesn’t allow without publishing the derived code.

LicenseObligation when redistributingAllows closing the derived code
BSD license (2 or 3 clauses)Keep the copyright notice and the list of conditionsYes
MITKeep the copyright notice, nearly identical in spirit to BSDYes
GPLv2 / GPLv3Publish the full source code of the derivative under the same licenseNo

The Living Lineage: FreeBSD, NetBSD, OpenBSD, and macOS

In 1992, Bill and Lynne Jolitz ported 4.3BSD-Lite to PC hardware under the name 386BSD and released it as shareware. The project accumulated hundreds of patches with no orderly integration process, and by 1993 two separate groups picked up that code and organized it on their own: one became FreeBSD, focused on ease of use on PCs and servers; the other became NetBSD, focused on portability to as many architectures as possible.

In 1995, Theo de Raadt split from NetBSD over internal disagreements and founded OpenBSD, with an explicit emphasis on auditing every line of the codebase for security bugs before accepting it. That emphasis explains why OpenBSD created OpenSSH, the SSH client and server that ended up bundled into practically every Linux distribution and into Windows.

The fourth heir is less obvious: when Steve Jobs founded NeXT after leaving Apple, he built NeXTSTEP on top of a Mach microkernel combined with BSD utilities and a compatibility layer. When Apple bought NeXT in 1997, that foundation became Darwin, the open source kernel that runs underneath macOS, iOS, iPadOS, and watchOS. That’s why a Mac terminal understands ls flags that don’t exist in the GNU version of the same tool.

flowchart TD
 A["Unix at Bell Labs (AT&T)"] --> B["BSD 1977 (Pascal + ex)"]
 B --> C["2BSD (vi, csh)"]
 C --> D["3BSD on VAX (1979)"]
 D --> E["4.3BSD"]
 E --> F["386BSD (1992)"]
 F --> G["FreeBSD"]
 F --> H["NetBSD"]
 H --> I["OpenBSD (1995)"]
 E --> J["4.4BSD-Lite (1994)"]
 J --> K["Darwin / macOS"]
OpenBSD split from NetBSD in 1995; macOS inherits utilities from 4.4BSD-Lite, released in 1994. Foto de Carlota O. en Unsplash

Getting Started: Trying FreeBSD Without Touching Your Main System

You don’t need to install anything on your actual machine to see the BSD lineage in action: a virtual machine emulator is enough. Here’s what you need before starting:

  • QEMU installed (sudo apt install qemu-system-x86 on Debian or Ubuntu, brew install qemu on macOS).
  • At least 20 GB of free disk space and 2 GB of RAM available for the virtual machine.
  • The official installation ISO image, downloaded from the official FreeBSD downloads page (amd64 architecture, disc 1 of the latest RELEASE version).

With the ISO already downloaded as FreeBSD.iso, these two commands create the virtual disk and boot the installer:

qemu-img create -f qcow2 freebsd.qcow2 20G
qemu-system-x86_64 -m 2048 -cdrom FreeBSD.iso -hda freebsd.qcow2 -boot d

The first command creates a 20 GB virtual disk in qcow2 format; the second boots a machine with 2 GB of RAM using that disk and the ISO as the boot medium. Within a few seconds, bsdinstall appears, the same text-based installer FreeBSD uses on real hardware.

💡 Tip: before applying freebsd-update for the first time, shut down the VM and copy the freebsd.qcow2 file aside; if something breaks, rolling back just means pasting the file back instead of reinstalling.

Once inside the installed system, this command confirms you’re standing on the real BSD lineage and not on a compatibility layer:

uname -a

The output has the format FreeBSD hostname 14.x-RELEASE FreeBSD 14.x-RELEASE releng/14.x amd64, where FreeBSD appears twice: once as the operating system and once as the kernel name. On Linux, the same command returns Linux followed by the kernel version, never the name of a distribution.

Step-by-Step Example: Installing Software on FreeBSD vs Linux

On FreeBSD, the binary package manager is called pkg and works similarly to apt or dnf, but it can rebuild from the ports tree if you need it to:

pkg install nginx

The output shows the installation plan before executing it:

The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
 nginx: 1.27.x

Proceed with this action? [y/N]:

It’s the same mental flow as apt install nginx on Debian, but the installed binary comes from FreeBSD’s ports tree, not from a Canonical repository or any GNU/Linux distribution: the entire chain, from source code to binary package, lives inside the same project that maintains the kernel.

Comparison: Choosing Between a BSD System and Linux

CriterionFreeBSD / OpenBSDLinux (any distro)
License modelPermissive: you can keep your changes closedKernel under GPLv2: kernel changes must be published
Who packages the kernel and utilitiesA single project, a single releaseKernel and userland come from separate projects, assembled by the distro
Supported hardwareFewer ready-made driversMuch broader hardware catalog
Typical use caseFirewalls (pfSense, OPNsense), network appliances, servers that prioritize stabilityGeneral-purpose servers, desktop, containers, cloud
When it’s NOT a good fitIf you need immediate support for recent desktop hardware or proprietary driversIf you need a single, end-to-end audited tree with no third-party pieces

Common Misconceptions About BSD Unix

  • “BSD is dead”: false. Netflix built most of Open Connect, its video delivery platform, on top of FreeBSD, and Sony uses a FreeBSD derivative as the base for the PlayStation 4 and PlayStation 5 firmware.
  • “The BSD license is public domain”: also false. The code remains copyrighted by its authors; the license only waives the requirement to share changes, not authorship.
  • “OpenBSD is just FreeBSD under another name”: they are projects with different codebases, release schedules, and priorities, ever since Theo de Raadt forked OpenBSD from NetBSD in 1995 to put security auditing ahead of hardware compatibility.
  • “macOS is Unix, therefore it’s BSD”: macOS combines the Mach microkernel with utilities inherited from 4.4BSD-Lite inside Darwin; it holds Unix 03 certification, but its kernel is not a fork of a monolithic BSD kernel like FreeBSD’s.

Going Deeper: Why It Matters That the Kernel and Userland Live Together

The most technical difference between a BSD system and a Linux distribution isn’t the kernel itself, but who packages it. FreeBSD, OpenBSD, and NetBSD release the kernel, the base tools (ls, cp, the compiler, the boot system), and the documentation from a single repository and under a single release process.

Linux, by contrast, is only the kernel: the tools around it (coreutils, systemd or its alternative, the package manager) are contributed by an ecosystem of independent projects, and each distribution decides how to combine them. That explains why two Linux installations can differ radically in commands and initialization, while two FreeBSD installations rarely surprise each other.

flowchart TD
 subgraph BSD["FreeBSD or OpenBSD: a single tree"]
 K1["Kernel"] --- U1["Userland and utilities"]
 end
 subgraph LINUX["Linux Ecosystem"]
 K2["Linux Kernel"] --- U2["Userland (GNU, systemd, etc.)"]
 end

That coherence has a cost: a BSD system’s cycle is slower to adopt new hardware, because every driver has to enter the same audited tree instead of arriving as a separately compiled external module, something common in Linux.

Your next step: spin up the FreeBSD VM from the previous section and run pkg install bash git to feel firsthand how the ports tree compares to your usual package manager.

📬 Get new articles by email

We only email about big articles (1-2 a month).

Frequently Asked Questions

Does the BSD License Require Publishing Modified Code?

No. Unlike the GPL, the BSD license only requires keeping the original copyright notice; you can modify the code and sell the result closed.

Do FreeBSD and OpenBSD Share the Same Kernel?

No. Both were born from the 1992 386BSD code, but ever since NetBSD and FreeBSD split in 1993, and OpenBSD split from NetBSD in 1995, each project has maintained its own kernel with different design decisions.

Why Is macOS Considered Part of the BSD Lineage If It Uses a Mach Kernel?

Because Darwin, the macOS kernel, combines that Mach microkernel with utilities and a compatibility layer inherited from 4.4BSD-Lite; a good portion of the terminal commands on a Mac come directly from that code.

What’s the Practical Difference Between FreeBSD’s pkg and Linux’s apt?

Both install binary packages with similar syntax, but pkg is built from the same ports tree maintained by the FreeBSD project, while apt depends on a repository from a distribution external to the Linux kernel.

Is Choosing a BSD System Still Relevant in 2026?

Yes, in specific niches: firewalls like pfSense and OPNsense run on FreeBSD, and OpenBSD remains a reference point for security audits, though for desktop use or recent hardware support, Linux has a broader catalog.

References

📱 Enjoy this content? Follow @programacion on Telegram for daily tech content in Spanish: quick summaries, fresh content every day. @programacion

Featured image: Foto de Mohammad Rahmani en Unsplash

Did it work for you? Got a different error? Say so below: questions get answered and help the next reader.

Leave a comment
Categories: ProgrammingTutorials

Andrés Morales

Developer and AI researcher. Writes about language models, frameworks, developer tooling, and open source releases. Covers ML papers, the tech startup ecosystem, and programming trends.

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

You can include code inside <code>…</code> or, for several lines, <pre><code>…</code></pre>.

This site uses Akismet to reduce spam. Learn how your comment data is processed.