Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Leaving a potential solution on the table that could make your own life easier is silly to me. You don't have to use it for everything and you shouldn't worry about some Linux takeover. Id imagine that for user-land desktop environment related stuff there isn't much difference. Gnome on FreeBSD and gnome on Ubuntu can't be doing things that different from one another.
 help



Sometimes it's better to have some discomfort now if it means there is a better chance of things working properly in the future.

Making your life a little easier without having a bigger picture is how you get trapped in local optimums.


Well if I wanted to make my life easier I would just use ubuntu or something. Or even Windows? Because even between Linux distros there's a lot of difference in terms of usability. FreeBSD is not something you can run without investing time to figure things out, you really have to be willing to think different. But that's good for me, I don't like going with the flow, I'm an anti-team player :)

But by supporting options that have real ports, I stimulate those. By giving in to the easy way I will make that more palatable for developers.

And Gnome and KDE have native ports. I really hate the opinionated design of Gnome so I don't use it, but I do use KDE. It does have a lot of cool tweaks by the maintainer to make it work properly.


I was just saying, is your goal for the os to get out of the way so you can get a job done, or is your job tinkering with your os. I've ran opensense which is a freebsd derivative, and I daily macOS/Darwin which is bsd. Honestly until I need to mess with some systemctl flags I get the same experience from bsd and Linux. Posix and all...

macOS is not BSD. It's a common misunderstanding, it borrows some userland but the kernel is radically different.

But yeah my OS should get out of the way but I don't mind investing a little time in getting things working right. That includes picking the right tools. I was looking for a notetaking app and one of them was like 'just use the compatibility layer'. I think it was notesnook. I just picked obsidian instead which has a port. Still not ideal as it's electron but pretty much all these notetaking apps seem to be electron somehow. And I needed compatibility with android too.

If there's something I could really not do without I would consider it but there's nothing like that right now.


> macOS is not BSD

No. This is a common contrarian take, but it's nonsense. macOS is built on Darwin which, along with XNU, traces its lineage through NeXTSTEP to 4.3BSD.

macOS is every bit as much of a BSD derivative as FreeBSD is.


I'm aware of its lineage but there's really precious little left from its BSD origins.

https://github.com/apple-oss-distributions/xnu/tree

You'll find there's a great deal left. Have a look at all the fundamental datastructures (proc, vnode, tty, file to name a few) for a starting point.


"Nonsense" is a strong word ;-)

Here's a contrarian-squared take: in reality, the question "Is macOS a BSD" is malformed. It makes some sens, but is more confusing than it's worth.

Yes, NeXT was built on Mach, which was itself basically an evolution of the Accent microkernel married with BSD, when BSD was a proper noun.

In fact, NextStep 0.8, the first public "pre-release", has left support in for A.OUT executables. The included ex and vi binaries are indeed A.OUT executables taken straight from BSD! In the very next release, support for A.OUT was removed, leaving only the Mach-O loader.

XNU is not derived from the Mach that NeXT was, though, but from the OSF Mach kernel, which was continued at the University of Utah. The BSD "bits" were selectively copied from the extent continuations of BSD, or rewritten from scratch. The XNU kernel doesn't strongly resemble any particular *BSD tree, to my knowledge.

Darwin's origins are messier, since it looks like it was a direct continuation of the existing NeXT packaging (but only Apple would know for sure). NeXT, very much unlike BSD, split its userland into distinct packages, which were versioned independently. This practice has carried on to this day, where e.g. Darwin's libc is packaged and versioned separately from the kernel and other utilities.

For that matter, for a very brief period of history, Darwin used Debian's dpkg for building and installing packages. Evidence of this stayed until OS X 10.4-ish, in the Darwin releases, but they returned to NeXT style BOM files for package management.

All that to say, does NeXT/macOS have a BSD-like userland? Yes, but so does Chimera Linux. Does the kernel resemble BSD? In some ways yes, but in many ways no, it's very semantically different.

And is it descendant from BSD? Again, "yes", but it also doesn't really "come" directly from BSD anymore than, say, OSF/1 did. There's no specific BSD it forked from, and no specific point at which it ever really looked like BSD, in terms of userland, packaging, or kernel semantics.

So I think the question just doesn't make much sense to ask.


It is a BSD. It has always been a BSD.

Saying "It's not like a *BSD" is a category error.

Is a wolf not a dog just because it's different from dog breeds with "Dog" in the name?


More succinctly:

- Darwin has no direct BSD ancestor. Unlike {Net,Free,Open}BSD and the more obscure ones (Bitrig, anyone?) there was never a point in time where it directly "connects" to the BSD lineage. The other BSDs all can trace their repositories back to CSRG's BSD.

- Darwin isn't stored or built like a BSD. The BSDs have massive monorepos containing all of the source, traditionally checked out to /usr/src, while Darwin is split into many independently versioned packages, (usually) compiled with Project Builder/Xcode.

Yes, the C API is derived from and supposed to resemble BSD, and much of the userspace was copied from a BSD-derivative (this has grown over time, as Apple (and the BSDs) replaced GNU utilities).

But that's why I would call macOS/Darwin "BSD-like" or "BSD-derived" rather than "a BSD".

Also, this isn't meant to be taken too seriously. I just like "OS taxonomy", and I think macOS/Darwin is distinct enough to qualify as a separate species ;-)


It's rather a bit more BSD than merely having a "C API that resembles BSD" or a "BSD userland".

https://github.com/apple-oss-distributions/xnu/tree/main/bsd

You can find there the better part of a whole BSD kernel, including the fundamental datastructures like proc, tty, vnode, and user.

The point of departure is 4.4BSD-Lite2. The majority of the core of the BSD kernel carries the relevant notices for that.


Yeah, I probably went too far in saying it's just the userland, but I'll insist it's more complicated than saying it was based on 4.4BSD-Lite2. I haven't done a proper deep dive yet, but I can tell that it wasn't strictly based on the Lite2 release. Take a look at XNU 123.5's (OS X 10.0) kern/tty.c:

https://github.com/apple/darwin-xnu/blob/xnu-123.5/bsd/kern/...

Notice the SCCS version info dates the file 1/21/94. Now look at the Lite2 equivalent:

https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s...

The SCCS date on this file is 1/9/95, a year later. It appears the XNU copy is from Lite1 instead:

https://github.com/dspinellis/unix-history-repo/blob/BSD-4_4...

You'll also see the source has been reorganized, with e.g. the VFS source being regrouped into bsd/vfs, instead of being left in bsd/kern. This coincidentally mirrors how OSF/1 was organized (no other source relation though, just an interesting observation):

https://github.com/Arquivotheca/OSF1/tree/OSC200/src/kernel/...

For that matter, compare the the differences between vfs_bio.c in XNU:

https://github.com/apple-oss-distributions/xnu/blob/rel/xnu-...

With Lite2's, where most function bodies have been replaced with the comment "Body deleted.", presumably due to use of encumbered code:

https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s...

This file had to be reimplemented by all of the BSDs. In this case, this version appears distinct from the FreeBSD and NetBSD versions I can find.

If you grep around for the `NeXT` ifndef/ifdefs in XNU, too, you'll see some code of which some appears to have been copied/adapted from the NeXT source tree, itself derived from Mach/CMU sources. (and 4.3BSD ;-)

I say all this to draw attention to the ways XNU differs from BSD, which is pretty interesting, at least to me.


No person acting in good faith can argue that having similarities to 4.3BSD-Lite1 or 4.3BSD-Reno (the basis for OSF/1) make something less of a BSD.

These are not ways it "differs from BSD." These are ways it is identical to BSD.


That's objectively false. You're just trolling at this point.



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

Search: