4 ms·
This is a brief (probably incomplete) summary of my understanding (many points also supported by the essays in your included link): --- Philosophy: FreeBSD h
by wyc 12y ago
This is a brief (probably incomplete) summary of my understanding (many points
also supported by the essays in your included link):
---
Philosophy:
FreeBSD has the concept of a base system: a set of tools intended to work
together harmoniously, maintained by a core group of people. You can easily
find evidence of this by looking at the source code; the userspace tools sit
right next to the kernel[0]. This is in contrast to _GNU_/Linux, where everything
(including coreutils) is pulled in from various sources. Many Linux
distributions emulate a base system by including utilities that transform the
kernel into a complete standard system (e.g. Debian[1]).
[0]: https://github.com/freebsd/freebsd/tree/master/usr.bin https://github.com/freebsd/freebsd/tree/master/usr.bin
[1]: https://www.debian.org/doc/debian-policy/ch-binary.html#s3.7 https://www.debian.org/doc/debian-policy/ch-binary.html#s3.7
---
Leadership:
Linux has a benevolent dictator who decides project direction[0], while FreeBSD
has a core group of contributers who decide the future of the project. However,
I'm not sure that the Cathedral vs. Bazaar is a fair comparison to impose on
these projects[1]. In any case, both projects seem to have been getting things
done, and unfortunately (or maybe fortunately), I'm not too savvy on internal
managerial disputes or issues.
[0]: http://www.softpanorama.org/People/Torvalds/index.shtml http://www.softpanorama.org/People/Torvalds/index.shtml
[1]: https://www.freebsd.org/advocacy/myths.html#closed-model https://www.freebsd.org/advocacy/myths.html#closed-model
---
Package Management:
The closest Linux distribution to FreeBSD is most likely Gentoo Linux, as its
Portage system is very heavily inspired by the FreeBSD Ports system, in which
all "packages" are simply recipes to build from source. You can even run the
Gentoo project on a BSD kernel[0], although this sickens most FreeBSD users
for some reason. Most other Linux distributions default to installing binary
packages, which is also possible, but not traditional in FreeBSD[1].
[0]: http://en.wikipedia.org/wiki/Gentoo/Alt#Gentoo.2FFreeBSD http://en.wikipedia.org/wiki/Gentoo/Alt#Gentoo.2FFreeBSD
[1]: https://www.freebsd.org/doc/handbook/pkgng-intro.html https://www.freebsd.org/doc/handbook/pkgng-intro.html
---
Process Management:
Linux has recently added LXC, while FreeBSD has had Jails for a while now[0].
LXC is much better marketed than BSD Jails through Docker, but
Absolute FreeBSD has an excellent section that describes how to do isolated
deployments via Jails[1]. FreeBSD also has the Linuxulator[2] that emulates
32-bit Linux system calls via FreeBSD system calls, allowing users to
seamlessly run Linux binaries on FreeBSD. The FreeBSD startup system, however,
has stayed more or less the same for the past few decades, revolving around
an rc.conf file and init scripts. Linux has seen many more efforts in this
area, including systemd and initramfs.
[0]: https://www.freebsd.org/doc/handbook/jails.html https://www.freebsd.org/doc/handbook/jails.html
[1]: http://www.amazon.com/Absolute-FreeBSD-Complete-Guide-Edition/dp/1593271514 http://www.amazon.com/Absolute-FreeBSD-Complete-Guide-Editio...
[2]: https://www.freebsd.org/doc/handbook/linuxemu.html https://www.freebsd.org/doc/handbook/linuxemu.html
---
Licensing:
BSD projects use a BSD license, which many businesses prefer over the GNU
license used by Linux. However, this is a discussion that deserves more than
a small summary.
---
Misc:
Linux is most likely to support recent hardware because of extensive userbase
and industry support. For example, NVidia's latest CUDA SDKs always have Linux
bindings, but not BSD ones.
The BSDs have great reputations for killer implementations of TCP/IP.
The BSDs have been using the GEOM[0] disk management system for a long time,
which is one of my personal favorites in terms of features. It allows you to
treat character and block devices as pipes, so for example, adding encryption
is simply "piping" a bare disk through an encryption layer, resulting in a new
device. You can even "pipe" things across the network. Linux is somewhat caught
up via device-mapper, so this is not a huge deal if you're trying to choose
which one to use. Both are great operating systems. Just use whatever works.
[0] https://www.freebsd.org/doc/handbook/geom.html https://www.freebsd.org/doc/handbook/geom.html
It's likely that you know things that I don't, so please feel free to correct
me if I'm wrong.
- the_why_of_y 12y agoYour "Philosophy" section describes the current situation, but with the growing adoption of systemd the GNU/Linux ecosystem will move more and more in the FreeBSD direction here so its coherent development approach will be less of a differentiator. Re GEOM: does it have any features that Linux device-mapper lacks? Both look very similar to me in capabilities. For example, device-mapper has support for thin provisioning (thinp) and GEOM has gvirstor(8).