Posted
by
Soulskill
on Wednesday October 17, 2012 @05:09PM
from the onward-and-upward dept.

New submitter Madwand sends this quote from the NetBSD Project's announcement that NetBSD 6.0 has been released:
"Changes from the previous release include scalability improvements on multi-core systems, many new and updated device drivers, Xen and MIPS port improvements, and brand new features such as a new packet filter. Some NetBSD 6.0 highlights are: support for thread-local storage (TLS), Logical Volume Manager (LVM) functionality, rewritten disk quota subsystem, new subsystems to handle flash devices and NAND controllers, an experimental CHFS file system designed for flash devices, support for Multiprotocol Label Switching (MPLS) protocol, and more. This release also introduces NPF — a new packet filter, designed with multi-core systems in mind, which can do TCP/IP traffic filtering, stateful inspection, and network address translation (NAT)."

Darwin has code from FreeBSD, NetBSD, and OpenBSD, as well as code from Apple both in kernel space and userland (including the system library - the memory allocator [apple.com], for example, isn't from any *BSD).

...and there's lots of FreeBSD code in OS X. One obvious example is the property lists API, which is a really odd feature from FreeBSD

No, it's from NeXTStEP, not FreeBSD.

Also, there's a BSD kernel in OS X, which is a process managed by Mach.

Mach manages tasks and threads; UN*X processes are built atop Mach tasks, and pthreads are built atop Mach threads. The "BSD kernel" part of XNU (under the bsd subdirectory) is what implements the "UN*X processes" stuff (among other things, such as the file system and networking mechanisms), and that code runs in both the "kernel task" (the UN*X process for which is pid 0) and in other tasks; it doesn't run in "a" process/task in the sense of "it runs in a single process/task".

Not sure if it was ripped from FreeBSD or NetBSD.

The from-BSD parts of the "BSD kernel" are mostly taken from FreeBSD, but have changed significantly, and the "BSD kernel" has a fair bit of Apple code in it, as well as, for example, Sun (Open Solaris) code (as in "DTrace").

STABLE is just the branch release. It means if you track the STABLE tree, you'll only get bugfixes. If you track CURRENT, you get stuff that'll go into the next version of NetBSD, but stuff will change on you (requiring you to update scripts and such). See the release map [netbsd.org] for a better explaination.

It has nothing to do with the stability of the OS itself. I can't comment on that, since I haven't used it much, but from what I hear it's pretty good.

I've never really used NetBSD (I've installed it a couple times, but never used it much), but I've used OpenBSD and FreeBSD quite a bit.

It's probably not what you'd want for a desktop system. It will run all the server stuff you listed just fine. The system compiler is gcc, although it likely comes with BSD make, so you'll want to install GNU make for compiling some software (usually it doesn't make a difference, but some projects rely on GNU make).

Packaging is similar to Slackware's package system (or at least how it used to be - I haven't use Slack in years) - it's tarball based. There is the pkgsrc system where you can automatically download and compile software for the system (based off FreeBSD's port system, which I rather like). You can also download and recompile the entire OS if you want (the infamous "make world" on FreeBSD, although glancing at the docs it seems NetBSD doesn't use that exact term).

Binary updates are generally available for security or bugfixes. The system doesn't do this for you (unless you recompile the system from source regularly - see below), so you have to check the errata page often to see if you need to update something. If you do, it's generally as simple as downloading the new binary and installing it using the system install tool.

Source updates are done on CVS trees - you track one of the trees (STABLE or CURRENT) and you get updates. The BSDs differ a bit where this is concerned, so I can't really give any specifics, but on FreeBSD and OpenBSD it's relatively painless once you get it set up. There's a utility to help you update your configuration files in FreeBSD and OpenBSD, so I assume NetBSD has something similar.

It supports CARP if you want to do clustering. I'm not sure if that will cover your needs, but if not, OpenBSD or FreeBSD might. I can attest that netbooting OpenBSD is cake - my firewall runs diskless.

As far as my experiences, well, there's a bit of a learning curve. It's easier if you've worked with Slackware or some other source-heavy Linux distro. The BSDs have a very unified feel to them, probably because there's no separation of userland and kernel development - the base system is developed as one unit, not a bunch of different projects. Like with anything, you have to use it a while to get a feel for it.

I like it. It's not as stuffy as Solaris, but it has a more consistant feel than Linux. Documentation is usually excellent, and the man pages are the definitive resource and usually include examples and explainations. I use OpenBSD for my firewall and nameserver, and FreeBSD for my file/webserver (due to ZFS and better Java support). I would use FreeBSD as a professional workstation (as long as it didn't require heavy 3D work), but not for my home machine.

If you've got the time to put into learning it (which if you know your stuff from Linux, it won't take long), it's well worth it. Throw it on a server and use it for a bit, and see what you think.