Hacker News new | past | comments | ask | show | jobs | submit login
The BSD family tree (github.com/freebsd)
184 points by jbergstroem on March 17, 2017 | hide | past | favorite | 57 comments

Here's a much bigger one that takes lots of Unix variants into account: https://www.levenez.com/unix/unix.png (from here [1]). Also available as a big PDF.

Edit: Updated with newest version.

[1] https://www.levenez.com/unix/

Wow, looking at the family tree above - I can't help but think how this has fractured the BSD development community.

Unlike Linux, with has a viral license which essentially forces people to work on the same code base - BSD doesn't, which from a technical standpoint causes way more forking and less contributions back to a main tree.

I don't think the situation is that different. Linux being the kernel, there are lots of "Linux distros", some of which are almost as different from each other as FreeBSD and NetBSD. For example, consider the many package managers (deb, rpm, Nix, etc.), init systems (SysV, Upstart, Systemd, etc.), graphical environments, etc.

The BSDs have a different philosophy where the kernel and userland go together as one package. Linux distros reuse the same kernel and rely on GNU for many tools, but are otherwise free to do their own thing, just like the BSDs.

I doubt the GPL is what really keeps Linux together. Rather, since the Linux kernel is developed separately from everything else, and is such a huge thing, there's little incentive to fork the kernel along with userland. You develop a new userland (as with Android) and keep the kernel.

It's not entirely accurate to say the Linux kernel wasn't forked. There are many distros that manage a separate kernel from the standard releases and backport individual changes, RHEL is an example of this.

Now it's not exactly accurate to call this a fork either b/c they do eventually catch up... but still, lots of non-standard kernels out there.

> Linux, with has a viral license which essentially forces people to work on the same code base

If this were so, my life would be so much easier. Maybe things are like this on higher-end servers, in DevOps and so on, but the other side of Linux deployment -- in embedded systems, consumer hardware, various gizmos, phones and so on -- it's very much not true.

Virtually no device that's actually being sold somewhere runs a vanilla Linux kernel when you take it off the shelf. Companies comply with GPL technically -- they publish their changes and they'll even mail you the CD if you ask nicely -- but there's no community work of any kind, really. Sometimes you'll have manufacturers working with funky hardware from obscure companies that never bothered to update their drivers past 2.6.32 (or, best case scenario, 3.2) and the forward-porting dance begins -- that is, if you're lucky and the driver isn't a binary blob. Sometimes the opposite happens -- you're working with shiny new stuff but a Really Smart Manager heard that older kernels are more stable and now the backporting from 4.10 to 3.16 dance begins. The "same codebase" thing is pretty much just a distant dream now -- and you don't want to see most of the codebases out there.

Granted, there is a common(-ish) core -- the differences are not on the magnitude of FreeBSD vs. OpenBSD (different vmm systems etc.), but IRL, there's rarely a "single" Linux.

Edit: oh, and don't even get me started on all the innuvashon that happens in the layers above the kernel.

How would a GPL license have prevented any split between the open source variants of BSD? Why would it have made Theo happy to stay with NetBSD?

Also, Linux have longstanding forks, the Android kernel and the real-time tree to take two prominent examples.

GPL, dude. It solves all the problems.

There seems to be a large(ish?) portion of the free software community that devotes a large amount of its time and energy to handwringing and general agitating about licenses.

I really don't get it: Companies are routinely shown to be ignoring GPL and other licensing with zero consequence and your average computer user probably doesn't even understand the concept of a source code license.

Does anyone really think that if OpenBSD had some GPL'ed code in there, and $company was taking that code and distributing it closed-source, that there would be any consequences whatsoever? If so, why does this never make the news? If not, then why do these people bother?

One of the reasons I like BSD license as an author, philosophy aside, is there's simply much less policing involved.

Wikipedia has a lovely visualization of the Linux distro family tree: https://en.wikipedia.org/wiki/Linux_distribution#/media/File...

I dunno. Linux the kernel may be singular, but the userland is trying its level best to recreate the Unix wars...

There really hasn't been that much forking. FreeBSD, NetBSD, OpenBSD, DragonFlyBSD and Darwin being the only existing operating systems. On top of that, they are complete operating systems with a user environment and kernel. You can't directly compare them to "Linux" which is only a kernel. You could more accurately compare them to Linux distributions (FreeBSD <=> Ubuntu). When looked at that way, the "fractured" community looks less like BSD and more like Linux.

I don't think it is proper to consider Darwin a BSD fork. My understanding is that it is a Mack kernel with elements borrowed from BSD.

It's not a "fork" per se, but it is reasonable to describe Darwin as a member of the BSD family tree, descended largely from FreeBSD. My understanding, based on my memory and the [Wikipedia page](https://en.wikipedia.org/wiki/XNU) is that the XNU kernel was built out of Mach, but then had 4.3BSD grafted on to provide a normal-looking UNIX API, which was later upgraded using FreeBSD. But it isn't a normal BSD, certainly; Darwin still shows its Mach heritage in the way it does process management and message passing.

Consider this one case study in the similarities of XNU, FreeBSD, and OpenBSD:

* http://unix.stackexchange.com/a/350824/5132

Heh. Between NetBSD 1.4 and Darwin/Mac OS X there's an entry that just says "(?)".

It's probably pretty well-known that question mark is NeXTSTEP, which was built at NeXT, the company that Steve Jobs founded after he left Apple the first time around. NeXTSTEP was built around BSD mostly because of Avie Tevanian's involvement in CMU's Mach kernel project.

I was wondering about that; didn't realize it was NeXT. A friend of mine still has his original NeXT box for the short time he worked on it.

I was also surprised at the origins of DarwinBSD. I never really looked up the history and didn't realize it forked some of the code off FreeBSD.

It's interesting to note that the PS4 OS is also a forked FreeBSD variant as well.

`It's interesting to note that the PS4 OS is also a forked FreeBSD variant as well.`

Here's a nice talk at CCC last year which explains some bits of FreeBSD in the PS4. It's mostly about hardware and how to run Linux on it, but FreeBSD gets a nice mention there too.


Jordon Hubbard even worked at Apple for a bit.

Kinda funny watching him getting rebuffed when trying to convince FreeBSD to adopt Launchd.

Sometimes i wish the same kind of attitude towards stability would be a prevalent in the Linux world, rather than the magpie like chase of shinies.

Switch also forked

Nah, it turns out the switch is using an OS derived from their custom, proprietary 3DS OS.

They run the FreeBSD network stack in another process in user land, hence the copyright claim.

Still haven't seen anything showing this, including the license for the FreeBSD kernel can mean a lot of different things. Windows did/does ship with it, I wouldn't call it a fork.

If you mean the TCP/IP stack it was re-written from scratch on Vista.

As is the Nintendo Switch.

Wikipedia mentions Rhapsody being developed off 4.4BSD


This is a bit complicated because NeXTstep didn't use a BSD kernel, using the Mach microkernel instead. Much of the layers above were taken from BSD, so it definitely had a BSD feel to it, but it wasn't a BSD kernel so maybe couldn't really be called a BSD derived OS?

Mach did not separate BSD into userland (like a true "microkernel") until 3.0. NeXTSTEP did not use Mach 3.0. Mac OS X still has the BSD code in the kernel.

If you go down that road, Linux and derivatives will drop off the table too.

there's incredible similarity under the hood between the first version of OSX 10.0 server and nextstep. How this was missed in the diagram is puzzling to me.


This is missing a lot of BSDs. Now granted some of them are dead, some inactive, some just missing. The ones I can think of off the top of my head: PC-BSD/TruOS, MirBSD/MirOS, Bitrig, HardenedBSD.

Most of those are just FreeBSD. Pulling from the FreeBSD tree for their base.

MirBSD and BitRig (which looks very dead?) are OpenBSD forks.

GhostBSD, MidnightBSD, DragonflyBSD, FuguIta...

It is funny.. I was just combing through old BSDs earlier today. I'm giving an internal talk next week about some changes I've been making to mbufs, and I was trying to find out when mbufs were introduced. They've been around since before I wrote my first FreeBSD, Tru64, and BSDI drivers in the 90s.

The earliest I can find is 4.1c from 1983, but that looks more fully formed that I expected. And there is a fragment in a 2.9 from 1982, but I think that leaked in from 4.1.

3BSD-4.2 sounds about right -

My thinking w/o references (enthusiast but was not 'there' at the time) is that this was introduced with either the 32Bit VM system, FFS implementation, or BSD network starck - probably the McCusick FFS papers [ed: are worth a read].

Really it's kind of nuts how 'usable' and 'current' a load of 4.3BSD on a VM load feels out of the box.

If you ever get a chance to hear Kirk talk about the history of BSD, I highly recommend it. He tells some great stories about the TCP bakeoff, the history of the VAX context switch code, etc.

The Unix Heritage Society¹ has earlier: http://www.tuhs.org/

SunOS should be in there too, not exactly sure where.

-Off NET/2 or Reno probably.-

Correction, off 4.0.something or earlier.

See wikipedia.

Along with DEC Ultrix, and (kind of OSF/1, Tru64, etc).

There were lots of other proprietary BSD based systems in the 80s as well.

Ultrix forked off BSD 4.2. It was the Unix I learned first, and working with it when the civilized world was working off BSD 4.3 variants made life really awkward.

Ultrix was my 2nd unix, after SunOS 4.1 on a massively over-committed Solbourne. I preferred Ultrix just because the machines were in a closed lab, and "faster" because there weren't 300 undergrads trying to compile their projects all at the same time on an overheating Solbourne...

Yeah, certainly Ultrix was one of the closest. Many diverged heavily though - HP/UX etc.

I guess they're confining the history to non-commercial (albeit semi-closed source) versions.

I love the BSDs. I just took a personal tour of the current state of affairs in BSD-land. I can't get WiFi to work with OpenBSD on an old Thinkpad T60 I recently got, so I've been trying all the other BSDs on it to see what works. A couple of them won't boot at all. WiFi works best with FreeBSD and HardenedBSD, which is unusual on laptops in my experience.

I've just had a similar experience with an old 32-bit CPU Acer Aspire One. I tried what modern 32-bit BSDs I had, including GhostBSD and OpenBSD. Only FreeBSD 10.3 drove the WiFi network adapter. Interestingly, FreeBSD 11 did not. So there's a regression of some sort in there, somewhere.

Someone should convert it to graphviz.

"4.4BSD Lite2 -> OpenBSD 2.3"

What happened with the 4.4BSD lite to OpenBSD fork? The next OBSD is a parent of NetBSD.

The openbsd 2.3 label is duplicated to prevent too many lines.

thx @tedunangst probably should have duplicated the txt diagram with a proper diagram. A jump could be shown with a "<" or "(".

So what happened to NextBSD, has FreeBSD 12 essentially replaced it?

NextBSD was a fork of FreeBSD that used a microkernel and components from Darwin. It was not intended to replace FreeBSD. That said, it looks like the project died well before it was ready for production use.

> that used a microkernel

I though they just added Mach IPC ?

where's bitrig?

It's dead, Jim.

Applications are open for YC Winter 2023

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact