Unix Sheikh has published an article named "Why you should migrate everything from Linux to BSD". While I agree, that there may be reasons to migrate to BSD I think, that this article just lists the wrong reasons. But let's have a look at the points, one by one.
"Linux is fragmented"
Yes it is. But so is BSD nowadays. The 3 "traditional" BSD's - FreeBSD, NetBSD and OpenBSD - alone differ greatly from each other - technological and in their goals. Then there are the "new" BSD forks, like Dragonfly, MidnightBSD, HardenedBSD, etc. Distrowatch.com lists 18 different BSD "distros". The ZFS file system, which the author praises so highly, is only available in FreeBSD and near relatives and is based on "ZFS on Linux". It isn't available on NetBSD or OpenBSD.
"Linux has been hijacked"
The Author says, that big "controversial" companies are influencing the development of Linux. That may be true, but is the situation in FreeBSD really better?
The FreeBSD community says at every possible opportunity proudly, that Netflix is using FreeBSD to deliver their content. Further Netflix is one of the biggest commercial contributors to the FreeBSD kernel. Still it is not possible, to watch Netflix content on a FreeBSD desktop natively. If this, and their spreading of DRM content, doesn't make Netflix one of the most controversial companies out there, I don't know what "controversial" is. Then there are of course dozens of commercial and proprietary product based on FreeBSD, which deny users the benefits of free software
"BSD is where the sane people are"
The author says: "The BSD projects maintain the entire operating system, not only the kernel." It is true, that BSD is not only a the kernel, there are also userland programs. But how much "userland" comes with the BSD operating system is absolutely up to the BSD developers. It is often a minimum of tools. For the rest you have to use ports and packages, which is no different then using packages in a Linux distro. FreeBSD for example doesn't even have Xorg in their base system, you have to install it from packages using "pkg install xorg". It is not seldom the case, that a part of the integrated system is removed from the base system and became a package.
The most "complete" system is indeed OpenBSD, which comes not only with X (Xenocara) but also with their own MTA (OpenSMTPd) and web server (OpenBSD httpd), which can make an OpenBSD base system a good choice for a server for basic tasks. Of course, besides of xterm and xcalc and 3 window managers (twm, fvwm and cwm) there are not much "graphical" programs included. If you want a web browser or decent mail program, you have to install it from packages.
I don't think this is a valid argument. The discussion about "BSD or GPL" is as old as the licenses are. There are good points for or against either of them. Personally, I don't care as long it is free software. The argument, that the GPL leads to software which is lead by profit instead of compassion isn't really convincing.
As for the systemd argument, that is the only point I partly agree with. Systemd is not bad by itself, but it doesn't fit in every use case. Making systemd the only option in Linux distros does exclude this distros for some usage scenarios. And that's the reason I choose BSD (OpenBSD to be specific) for some use cases. But there are still Linux distros out there which don't use systemd, such as Alpine Linux, Antix, MX Linux, Devuan, Artix and, of course, Slackware
There maybe perfectly valid reasons to migrate from a Linux distro to a BSD system. The site distrowatch.com just switched from Debian to FreeBSD and their argumentation do sound very reasonable. Especially the switch to systemd does make most major Linux distros only a second choice for some use cases and BSD might be preferable.
But those reasons should, aside from the reason to use only free software, only be technical. Out-of-date arguments, like that "BSD is the complete system and Linux only the kernel" or that "Linux is driven by profit and BSD by compassion" are not really valid (any more).
Unix Sheikh has written a response. I want to answer that response.
The response comes down to this argument:
Linux is fragmented because the kernel, the GNU tools, the libraries, and all the other parts are completely independent projects. The BSD's are not fragmented at all, they are each complete operating systems and independent projects, they all have a kernel, base tools, and all the rest.
The X, OpenSMTPd, httpd, and other applications in OpenBSD, has nothing to do with the operating system itself. lf. Whether you choose to put these into the base system or leave these applications outside, doesn't affect the fact that OpenBSD is still a complete operating system even without these parts.
So, according to this argument BSD is a "complete argument operating system" because it has a "kernel, base tools, and all the rest". It is still unclear what is meant by "the rest". What is an operating system anyway?
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
And Enzyclopaedia Britannica:
program that manages a computer’s resources, especially the allocation of those resources among other programs. Unlike most programs, which complete a task and terminate, an operating system runs indefinitely and terminates only when the computer is turned off.
According to this definition, the operating system consists only of the kernel. ("terminates only when the computer is turned off."). By this definition all other programs, be it base tools or C library, are not part of the operating system.
But let's say, for the sake of argument, that a "complete operating system" must not only include the kernel, but also base tools and a C library. So, if the Linux kernel developers would introduce this or would adopt existing projects, for example musl libc and busybox, maintain and deliver it together with the kernel, would this be a complete operating system?
Some people are saying, that a C compiler should also be a mandatory part of a complete operating system. BSD is using either clang or GCC as default base compile in the base system. Both are not native parts of BSD, they have been imported from other projects, in case of GCC from GNU.
GNU also maintains the GNU C library and the GNU tools. Therefore GNU has all components of a complete operating system, maintained under one project, with the exception of the kernel (GNU Hurd should be ready next year :-)).
BSD has also all components (kernel, C library, tools) under the same hood, expect the C compiler. So, if you define a complete operating system as a system which includes a C compiler (which makes sense, because without a compiler you won't be able to build the operating system or any other tools), BSD isn't complete either. Because the BSD base system does include a compiler, but it is not an integrated part, is has been imported from other projects and it isn't maintained by the BSD teams.
In the end it comes down how you define "complete operating system". Frankly, I don't see what difference it makes, if C compiler, C library and basic tools are under the same hood, using a third-party-kernel, or the kernel, C library and basic tools are from the same team, using the C compiler from other people.
January 20, 2020 18:57
@harryruhr good article!
January 21, 2020 10:05
January 21, 2020 21:57
This is a very good read and response to the argument posed.