Why there are many BSD systems but only one Linux kernel?
I wonder why BSD was forked many times, but no such thing with Linux.
bsdkernellinuxlinux-kernel
Why there are many BSD systems but only one Linux kernel?
I wonder why BSD was forked many times, but no such thing with Linux.
It is very tempting to want to define the differences between BSD and Linux. Just like Gilles said in the comments, it is not an easy task since they're so numerous and disparate. Very often, the differences won't even be noticeable at the user's level; everything has been worked out so that the OS behaves as you would expect a Unix to.
Moreover multiple distributions are available for each. No matter what you say about Linux/BSD generally, you'll often find a distribution that contradicts it.
The following is a list of comparisons I found scattered over the web.
Big differences are (in my opinion of course):
- Userland (Linux uses GNU while BSD uses BSD)
- Integration (Linux is a collection of different efforts, BSD is much more unified at the core)
- Packaging (Linux typically manages installed software in binary packages - BSD typically manages a "ports" tree that you use to build software from sources)
Notice the word typically in his last point. Some Linux distributions will manage source code and conversely some BSDs will manage binary packages.
BSD is what you get when a bunch of Unix hackers sit down to try to port a Unix system to the PC. Linux is what you get when a bunch of PC hackers sit down and try to write a Unix system for the PC.
--
BSD is designed. Linux is grown. Perhaps that's the only succinct way to describe it, and possibly the most correct.
Key differences:
- FreeBSD full os. Linux is kernel. Linux distribution is os (100+ majro disrtos).
- FreeBSD everything comes from a single source. Linux is like mix of lot of stuff.
- BSD License vs GPL
- FreeBSD Installer
- BSD commands (ls file -l will not work) vs GPL command (ls file -l will work)
- FreeBSD better and updated man pages.
- BSD rc.d style booting vs Linux SysV style init.d booting
Here are some articles describing the history of each:
Written by Dave Tyson, this article describes the history of many Unix variants (including of course BSD and Linux).
Scott Barman describes how both operating systems came to be and how it forged his opinion:
I will give one "solid" opinion: If I had to choose one system that would act as my router, DNS, ftp server, e-mail gateway, firewall, web server, proxy server, etc., that system would run a BSD-based operating system. If I had to choose one system that would act as my desktop workstation, run X, all the application I like, etc., that system would run Linux. HOWEVER, I would have no problem running Linux as my work horse server or running the BSD-based system on my desktop.
Further reading
It could be interesting to clone the git repository of linux and query it immediately.
Cloning the repo
Beware it's a large file! (~1.5G)
Install git
and run the following (in a new directory):
git clone http://github.com/torvalds/linux.git
Querying the repo
Once you've cloned it, you can analyze the log of commits with git log
.
Since the log is so long, you may want to limit your research to a smaller period of time:
git log <since>..<to>
for instance
git log v3.4..v3.5
This has theoretically a lot of info you could use. For example, that command prints the 20 most prolific committers along with their number of commits and their email address.
$ git log v3.4..v3.5 | grep Author | cut -d ":" -f 2 | sort | uniq -c | sort -nr | head -n 20
417 Linus Torvalds <torvalds@linux-foundation.org>
257 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
196 Mark Brown <broonie@opensource.wolfsonmicro.com>
191 Axel Lin <axel.lin@gmail.com>
172 David S. Miller <davem@davemloft.net>
138 Daniel Vetter <daniel.vetter@ffwll.ch>
132 H Hartley Sweeten <hartleys@visionengravers.com>
128 Al Viro <viro@zeniv.linux.org.uk>
117 Stephen Warren <swarren@nvidia.com>
113 Tejun Heo <tj@kernel.org>
111 Paul Mundt <lethal@linux-sh.org>
104 Johannes Berg <johannes.berg@intel.com>
103 Shawn Guo <shawn.guo@linaro.org>
101 Arnd Bergmann <arnd@arndb.de>
100 Thomas Gleixner <tglx@linutronix.de>
96 Eric Dumazet <edumazet@google.com>
94 Hans Verkuil <hans.verkuil@cisco.com>
86 Chris Wilson <chris@chris-wilson.co.uk>
85 Sam Ravnborg <sam@ravnborg.org>
85 Dan Carpenter <dan.carpenter@oracle.com>
The email address can give you an idea about the employers of the developers (google.com, cisco.com, oracle.com).
Best Answer
You are comparing kernel and whole systems.
Kernels are just the main central piece of a system, but not all of it. In fact there is no such thing as a Linux system per se, but there are countless "Gnu/Linux" or other Linux Kernel based systems (one being Android).
Linus Torvalds choose to concentrate his work on the central piece and successfully manage to keep control of it ("Linux" has been a trademark for quite some time in fact).
(BSD Unix history or a less clear, but more complete, Unix history diagram)
About numbers, there is only a couple of BSD systems (one being Apple OS-X) and countless Linux based system (aka "Linux distributions" - see DistroWatch):
Edit:
The fact that the Linux kernel is distributed through a GPL licence might have some impact on the way Linus Torvalds managed to keep control. But watching the way BSD system are not forked or are not used more than that make me wonder if it is that way because of the licence or because they are whole systems. Having a lego-like model with a modern kernel and a bunch of Gnu-tools around might be more appealing (?).