posted by Julian Djamil Fagir on Thu 14th Feb 2013 22:23 UTC
IconBSD (Berkely System Distribution) was a research operating system based on the original AT&T Unix, developed by the University of Berkeley, California. It has been Open Source right from the beginning, and after the university lost interest in developing it further, several community projects started up (the very first ones were NetBSD and FreeBSD in the early nineties) to continue developing BSD. Anyway, Linux was born roughly at the same time, but a pending lawsuit about copyright infringements prevented the BSD projects to become as successful as Linux (though you could argue about the exact reasons).

This led to Linux having great media coverage, while the BSD projects - though still having fresh innovations and being actively developed - except for new releases rarely make it to the press.


Community

As already covered on OSNews there was a debate about increasing incompatibilities of third party tools with BSD. This has always been an issue, especially for everything but FreeBSD, which has some coverage by hardware vendors as it is often used in servers. Though this was raised on an OpenBSD mailing list, developers are frustrated everywhere. But to understand the reasons for the concern, it's important to understand the different philosophies of BSD and Linux developers. BSD guys are conservative folks, and they have to be: Every decision they make will immediately influence the whole operating system, as the whole BSD userland is bundled together and developed by the same persons and teams. Thus they tend to discuss more of the decisions part of any technical design.

With Linux, you don't have this problem. The GNU/Linux world consists of many independent software projects and distributions bundling them. A distributor can easily decide not to adopt a special version of a tool, but rather stay with an old one in order to preserve compatibility.

So the major issue in this case is not only that there are incompatibilities -- it is a general technical refusal of several implementations, but at the same time being forced to implement things to be compatible with the rest of the Open Source world (and especially desktop environments).

As an example, just browse a random BSD board, mailing list or chat, and search for discussions about systemd. You'll most probably find the worst trolling and ranting about it, while the Linux world in most cases took it with a shrug.


DragonFlyBSD

DragonFlyBSD is a fork of FreeBSD after the core developer of DragonFlyBSD, who was a FreeBSD developer at that time, didn't like the technical decisions taken in the project and decided to found his own one.

In 2012, DragonFlyBSD released two new versions: 3.0 on February 22nd, and 3.2 on November 2nd.

The ongoing work to improve SMP and clustering support resulted in exceptionally good PostgreSQL benchmarks also beating Linux, but there were also several other important changes:

  • VFS accounting/vquota -- DragonFlyBSD introduced a quota subsystem in their VFS (Virtual File System) layer, which is the subsystem used for accessing the real filesystem modules. Thus, they are able to have quotas on any filesystem, no matter if the filesystem supports it or not - but with the current implementation, those quotas are only stored until the machine is shut down.

  • TRIM support -- DragonFlyBSD now supports the TRIM command to improve communication of the operating system with their solid state drives.

  • USB4BSD import -- The USB4BSD USB stack originally written for FreeBSD was imported to DragonFly, allowing easier maintenance and a broad range of drivers, including XHCI (USB 3.0) support.

  • TrueCrypt/tcplay -- TrueCrypt, a disk encryption tool, though being Closed Source, gained a wide distribution among computers due to its ease of use and cross-platform compatibility. DragonFlyBSD developers decided to write a compatible Open Source implementation. This implementation has already been ported to Linux and imported into some distributions, e.g. Fedora.

When it comes to filesystems, DragonFlyBSD is famous for its HAMMER filesystem, which, informally speaking, is something like a ZFS, but with DragonFlyBSD's more powerful vfs layer. In February 2012, with the conclusions and experiences gained from HAMMER, the development of HAMMER2 started.

While DragonFlyBSD currently uses pkgsrc, the package system primarily used by NetBSD (but being cross-platform), there are intentions to introduce a new system. It is named DPorts, providing binary packages on top of FreeBSD's packaging system, ports. Though it is rather experimental for now, the final goal is to make binary packages and the new pkg tool from FreeBSD the default for coming releases. Users won't be forced to compile packages anymore.


FreeBSD/PC-BSD

FreeBSD is by far the most active BSD when it comes to sheer numbers, having the largest user and developer base (roughly 80% of the whole BSD community). In 2012, a new minor version of FreeBSD 8 (8.3-RELEASE in April) was released, as well as a new major version (9.0-RELEASE in January) and its first minor release (9.1-RELEASE in December).

With 9.0-RELEASE, there came a long list of changes:

  • HAST -- HAST, the Highly Available STorage is an easy way to mirror block devices over the network and create high availability solutions with them. Essentially, it's a RAID with synchronisation which is geared for networking.

  • Capsicum -- The capabilities framework Capsicum has been added to FreeBSD but tagged experimental. It enables applications to use fine-tuned capabilities. There is a dedicated developer for Capsicum, being funded by Google (which is apprently interested in using it for Chrome).

  • Softupdates journaling -- FFS now supports softupdates journaling, enabling you to use softupdates in conjunction with journaling, which have been two competing technologies until now.

  • bsdinstall -- The new bsdinstall(8) replaces the old installer which got a bit rusty in the end, not supporting many of the features FreeBSD introduced in the last years. bsdinstall provides more functionality and is more extendable by just being a bunch of sh scripts with dialog(1).

  • NFSv4 -- FreeBSD 9.0 supports the fourth version of the network file system NFS. Though it has been specified in 2000 (and again in 2003), there were only few implementations so far.

  • Playstation 3 -- FreeBSD now officially supports the Playstation 3 game console. This might be a bit late, but the Playstation 3 has been useful for several number crunching applications due to its processor and its low price.

  • RACCT -- A new Resource Accounting framework (RACCT) has been added: rctl(8) now supports limiting the resources on a per-jail, per-user, per-process or per-login-class model, but not percentual CPU time yet.

  • gpart -- The ancient tools for labeling disks (fdisk, *label) have been dropped in favour of gpart(8), though they will remain in base for compatibility reasons. The new tool should mainly be used with GPT partitions, the old types (MBR and disklabel) are not endorsed anymore.

  • Clang/LLVM -- In FreeBSD 9.0, the new compiler has been imported. It is not used for building 9.0, but in November 2012, all platforms were switched to use Clang by default, i.e. FreeBSD 10.0 will build with Clang instead of GCC by default.

With 9.1-RELEASE, there was a change indicating an interesting development: ZFS changes from Illumos were pulled in. Maybe there is hope for an Oracle-independent development of ZFS?

As many Open Source projects do, FreeBSD had a fundraising campaign at the end of the year, this time achieving a record result: About 750k USD were collected, showing the commercial size of FreeBSD well in comparison to the other BSDs.

The money is spent for maintaining infrastructure and funding new projects, some of which promise interesting results:

  • standard ARM platform -- A standard ARM platform, the Genesi Efika MX SmartBook and SmartTop (ever heard of it?) with an ARM Cortex A8 SoC was determined, and developers got free devices to start development for.

  • NAND flash -- The goal of this project is to improve the support for devices running on small NAND flash memory, i.e. a filesystem, a driver framework for controllers and memory chips and tools shall be developed.

  • growfs -- The tool for enlarging filesystems shall be modified to be able to grow filesystems online. Until now, growfs is only capable of handling offline filesystems, i.e. unmounted filesystems.

For FreeBSD, there were two unpleasant events in 2012: First, the security advisories on the best possible date, 23rd of December (the day just before Christmas holidays, when most administrators had already left). And second, there was another broad security issue this year: a security breach, published on November 17th. Administrators might have noticed that for about one week, there were no portsnap updates to ports trees. The reason was that one week earlier, the security team found an SSH key of a developer compromised as of 19th of September, with access to two ports development machines.

Eventually, the security team announced they didn't find anything security-relevant, but still recommend not to trust binary package installations made in that time frame. In December, everything was completely back online.


NetBSD

NetBSD is the oldest BSD derivate still under development. A few years ago, its developers mostly focused on supporting many platforms and providing a good abstraction to achieve this. Nowadays, the focus slightly shifted to provide a clean operating system. Here, clean means that code should be clean, and new features should be introduced thoughtfully, not just to be removed again after some releases or break compatibility.

Three years after the last major NetBSD release (5.0), NetBSD 6.0 was finally released on October 17th. The NetBSD 5 branch was updated to 5.2 on 3rd of December and NetBSD 4.0 support was dropped five years after its initial release in 2007.

Nearly three years after the last release, there are a lot of changes for 6.0:

  • apropos -- During the Google Summer Of Code (GSoC) 2011, there was a project to rewrite apropos(1) to not only have a dumb full-text search, but a relevance-weighted search. This apropos is now included in NetBSD 6.0.
  • posix_spawn -- POSIX finally decided to specify an interface to spawn a new process, named posix_spawn. In a GSoC project, this was implemented and is now part of NetBSD.

  • netpgp -- Due to many large dependencies GnuPG has, and the fact that it is GPL licenced (remember: BSD folks don't like that), there was a rewrite of PGP/GPG, named netpgp. The implementation is not yet as feature-rich as gpg, but it is being further developed and is already capable of doing basic encryption and signing.

  • v7fs, chfs -- The ancient Unix 7th Edition file system has been reimplemented. The reason behind it is to have a very small filesystem alternative to FAT, and to be able to read old disks from PDP-11s. On the other hand, there is a new filesystem named CHFS which is intended to be used on small flash devices.

  • npf -- In NetBSD 6.0, a new firewall solution named npf was introduced. It was written as a replacement to overcome the problems with the two which were already implemented (ipf and pf).

Recently, Antti Kantee (pooka@) provided two more nice applications of his rump anykernel concept: He ran NetBSD kernel modules on Linux and even in a browser, using JavaScript.

In July, there was an interesting post on a mailing list from a Google developer. It addressed the bionic C library used in Android devices, which apparently uses many parts from several sources. The goal of the developer was to merge the code used by Android back with upstream, eventually taking one single C library, and not several different ones. Though the discussion just ended without a result (at least without a public result), it is still nice to see how many projects are actually using parts of NetBSD's code somehwere.

This is also the case for MINIX. On March 7th, MINIX 3.2.0 was released. As the developers of MINIX are mainly researchers who want to use MINIX for researching, and not for developing software, and their userland was fairly old, they decided to use another one: NetBSD's. Thus, from MINIX 3.2.0 on, there are large parts of the ordinary NetBSD userland as well as pkgsrc, the package management from NetBSD contained in MINIX.


OpenBSD

OpenBSD is a fork of NetBSD after personal issues between the now-OpenBSD main developer and the rest of the development team back in the nineties. Nowadays, OpenBSD is famous for its focus on security and its radicalness in not accepting Closed Source software, leading to the development of common tools like OpenSSH.

As every year, OpenBSD released two new versions (5.1 in May, 5.2 in November) - they have a fixed periodic release schedule. OpenBSD releases always have a motto and an accompanying release song, sometimes also with a story behind it. 5.1 had the generic motto Bug Busters, while 5.2 had the motto Aquarela Do Linux, referring to the problems Marc Espie pointed out as mentioned before (see "Community").

The major changes in 2012 were:

  • NAT64 -- OpenBSD 5.1 introduced NAT64 for their packet filter pf.

  • Books -- The preorder of Absolute OpenBSD, 2nd Edition, a famous book about OpenBSD, started.

  • pthreads -- Until then, pthreads in OpenBSD had been user-level only. This year, rthreads were introduced, mapping pthreads of a userland utility directly to kernel processes, improving SMP capability and speed, now making better usage of multicore machines.

In June 2012, the project Bitrig forked from OpenBSD. Their philosophy, as opposed to OpenBSD, is mainly about being less conservative. Its developers want to drop the main focus on security and supporting old platforms, but focus on

  • using Clang as their default compiler (OpenBSD uses GCC),
  • providing better KVM (virtualisation) support,
  • providing filesystem journaling by porting NetBSD's WAPBL,
  • supporting only x86 machines (i386, amd64),
  • improving OpenBSD's SMP support.

Note

You should have in mind that I'm part of the FreeBSD and NetBSD community myself, so this report might have been biased towards these two.

I also excluded all the general improvements operating systems go through over time: improving performance, adding drivers, becoming more stable.

e p (13)    61 Comment(s)

Technology White Papers

See More