FreeBSD vs Linux
GNU/Linux has a larger decentralized community comprised of many overlapping smaller communities. FreeBSD has a smaller, more centralized community, and relatively close relations with other BSD Unix communities.
This is reflected in the development model. FreeBSD's whole base system is mostly developed by a single group of dedicated developers, and while all contributions to the Linux kernel are (like contributions to the FreeBSD base system) vetted by the core team, GNU/Linux distributions as whole systems incorporate pieces coming from a broad range of teams, often without any direct interaction with those teams at all.
GNU/Linux is sometimes regarded as having a broader range of hardware support, and has been ported to more platforms than FreeBSD. Because of the more unified structure of the FreeBSD base system as contrasted with GNU/Linux distributions, supported hardware tends to be more easily and uniformly managed and configured with FreeBSD.
The primary compatibility APIs for GNU/Linux are POSIX and SysV Unix.
The primary compatibility APIs for FreeBSD are POSIX and BSD Unix.
The majority of open source applications developed for Unix-like systems can be easily ported to both FreeBSD and most GNU/Linux distributions. This being said, it is possible to run into troubles when porting FreeBSD software to Linux and vice versa, as they use a different API. Linux-based systems -- particularly Red Hat based systems -- receive more commercial software development support than FreeBSD. The FreeBSD community being smaller headcount-wise, there are more developers writing software for or compatible to Linux. As a result, one would expect a larger variety of software available on Linux systems. This can be exemplified by comparing the number of available packages on both systems.
At the time of this writing, FreeBSD ports has 24,004 packages, whereas Ubuntu 12.04 comes with 44,893 packages. Then again, Gentoo Linux, whose source-based package system is similar to the traditional open source BSD Unix approach, comes with 15,873 packages. Difference in developer activity might not be the only reason for this. Especially the distributions shipping binary releases come with multiple packages per software, whereas source code based Linux distributions, or FreeBSD, might end up having fewer (but larger) packages available without sacrificing options for installation variations.
FreeBSD closes the gap significantly by way of a Linux binary compatibility layer, which allows some software developed exclusively for Linux to run on FreeBSD without the need to be ported. Due to some differences between systems, poorly written software and software that is explicitly written in a nonportable manner for Linux-based systems may still require additional effort before it will run properly on FreeBSD, as in the case of hardcoded binary executable file paths. In many cases, accounting for these differences is easily achieved in creating a port than for software packages for Linux distributions whose assumptions about filesystem paths and other system-specific characteristics differ from the Linux distribution originally used as the target platform for the software developers. In other cases, such as with a small subset of device management functionality in XFCE relying on udev, targeting subsystems that are nonportable as dependencies ensures that either the entire software project or some functionality provided by that project is not reasonably portable to FreeBSD.
FreeBSD has a very good handbook and all the documentation stored centrally at FreeBSD.org in addition to fairly comprehensive manpage and other documentation coverage available within the core OS. Extensiveness of documentation for Linux-based systems is highly variable from one distribution to the next.
FreeBSD comes by default with the sources needed to recreate the base system (Kernel, /bin,/sbin,/lib,/usr/bin,/usr/sbin), which are installed into /usr/src. While Linux-based systems (generally distributed with the GNU userland) are developed with mostly open-source licenses, there is no central repository of the entire set of sources needed to build it all. It is up to the distribution maintainers to choose how they deliver their software (as either binaries or source code, mostly).
- NTFS (experimental)
- RAM disk
FreeBSD and GNU/Linux both support encrypted file systems, quotas, and RAID.
- Coda (experimental)
- ReiserFS (read only)
- XFS (experimental)
- UFS (read only)
Main article: Copyfree vs Copyleft
FreeBSD's preferred license is the BSD license, and this copyfree license is used for the FreeBSD kernel and large parts of the base system. Some core utilities are part of the GNU tool chain, and as such are licensed GPL or LGPL, though there are development efforts underway to replace GNU utilities.
The Linux kernel is distributed under the terms of the GPLv2, a copyleft license, and most GNU/Linux distributions favor the GNU tool chain. A lot of basic software in most GNU/Linux distributions was lifted from BSD Unix systems, and still bear the BSD license.
The freedom to copy BSD-licensed code makes the recycling of FreeBSD's code in GNU/Linux more likely than the recycling of GNU/Linux code in FreeBSD. The BSD license is seen by GPL fans as too permissive, and the GPL is seen by BSD fans as too restrictive.
- Access Control
- Both GNU/Linux and FreeBSD support Unix permissions, Mandatory Access Control, and ACLs.
- Integrated Firewall
- GNU/Linux uses the Netfilter firewall, normally managed with the iptables front end. FreeBSD supports IPFW2, IPFilter, and PF firewalls.
- Vulnerability Assessment
- FreeBSD's portaudit tool provides a convenient way to audit software installed from ports for known vulnerabilities.