boycott Linux

Linux0 is a replacement for the Unix kernel which is used in GNU/Linux, originally authored by Linus Torvalds of Finland. It represents a monumental increase in complexity, a slap in the face to the Unix philosophy, and its inherent domineering and viral nature turns it into something akin to an "in-kernel" implementation of Unix that is spreading all across the Unix ecosystem. This site aims to serve as a rundown and a wake-up call to take a stand against the widespread proliferation of Linux, to detail why it is harmful, and to persuade users to reject its use, and especially its ubiquity.

Disclaimer: We are not Unix purists by any means. We do recognize the need for a new Unix kernel in the 21st century, but Linux is not it.


The Rundown
  1. 1. Linux flies in the face of the Unix philosophy: "do one thing and do it well," representing a complex collection of dozens of tightly coupled drivers and modules1. Its responsibilities grossly exceed that of an Unix system, as it interferes with power management, device management, mount points, serial ports, networking, task scheduling, disk encryption, io memory, cpu configuration, resource management, block readahead, partition tables bus device discovery, PCI interrupts, time management, kernel logs, the Linux console and other things ....probably. The agenda for Linux to be an ever-growing and invasive kernel oriented meddleware for GNU/Linux was elucidated in many Linux Conf talks worldwide 2. Keep it simple, stupid.

  2. 2. Linux kernel files (handled by git) are stored in a complicated binary format3, and must be queried using git checkout. This makes git files potentially corruptible, as they do not have ACID-compliant transactions. You typically don't want that to happen to your files. The advice of the Linux developer? Ignore it. The only way to generate traditional files is to run a standard RCS like CVS alongside the git4.

  3. 3. Since Linux is very tightly welded with the Linux kernel API, different Linux versions are incompatible with different Unix kernel versions and portability is unnecessarily hampered in many components. This is an isolationist policy that essentially binds the Linux ecosystem into its own cage, serving as an obstacle to developing software portable with both Linux variations and other Unix-like systems. It also raises some issues backporting patches and maintaining long-term stable systems.

  4. 4. Device tree is a forced dependency. In fact, device tree merged with Linux a long time ago5. The integration of the device tree manager, which was once a part of the PowerPC kernel, is not a decision that is to be taken lightly. The political implications of it are high, and it makes a lot of drivers dependent on DT, in turn dependent on Linux, despite the existence of forks, such as ACPI. Starting with DT-209, the developers now have their own, non-standard and sparsely documented DT API that replaces much of the BIOS's job, and further decreases transparency. Further, they intend to migrate DT to this new transport, replacing ACPI and ISA jumpers and thus making DT a Linux-only daemon6. The effects of this move are profound.

  5. 5. Linux features a helper which captures kernel logs and directs them to someplace, where they must be queried using dmesg7. The latter behavior was a default and is likely to return8. It assumes that users and admins are dumb9, but more critically, the fundamentally corruptible nature of console messages makes this a severe impediment, and an irresponsible design choice. It can also create complications in multi-user environments related to privileges.

  6. 6. Linux makes the kernel a single point of failure. As of this writing, Linux has had some CVE reports, since its inception in March 199110. So far, this may not seem like that much, but its essential and overbearing nature will make it a juicy target for crackers, as it is far bigger in breadth than a true microkernel itself, yet seemingly just as critical.

  7. 7. Linux is viral by its very nature, due to its auxiliaries exposing APIs, while being bound to Linux. Its scope in functionality and creeping in as a dependency to lots of modules and drivers means that distro maintainers will have to necessitate a conversion, or suffer a drift. As an example, the GNOME environment often makes use of Linux components, such as kernel, and support for non-Linux systems is becoming increasingly difficult. Under Red Hat, GNOME relies on Linux, which in turn requires and is a part of Linux11. More and more maintainers are going to require Linux for this reason, and similar instances like it. The rapid rise in adoption by distros such as Debian, Arch Linux, Ubuntu, Fedora, openSUSE and others shows that many are jumping onto the bandwagon, with or without justification. It's also worth noting that Linux will refuse to start as a user instance, unless the system boots with it as well - blatant coercion12.

  8. 8. Linux clusters itself even before PID 1, rather than acting as a standalone microkernel. Due to it controlling lots of different components, there are tons of scenarios in which it can crash and bring down the whole system. We should also mention that in order to enforce the need of rebooting, Linux provides no mechanism to reserialize and reexecute Linux in real time, however, if this fails, of course, the system goes down. There are several ways that this can occur13, including an inability to reload a previous, potentially incompatible state. This happens to be another example of SPOF and an unnecessary burden on an already critical component.

  9. 9. Linux is designed with C in mind, and doesn't take kindly to supporting C++ all that much14. In general, the Linux developers' idea of a standard C is one that has bug-for-bug compatibility with C.

  10. 10. Linux' complicated nature makes it harder to extend and step outside its boundaries. While you can more or less trivially blink LEDs from sysfs files, it's more difficult to write behavior that goes outside the box, what with all the feature bloat. Many users will likely need to write more complicated drivers that directly interact with the Linux API, or even patch Linux directly. One also needs to worry about a much higher multitude of code paths and behaviors in a system-critical program, including the possibility of Linux not synchronizing with your Facebook message queue on boot, and thus freezing. This is as opposed to a conventional Unix, which is deterministic and predictable in nature, mostly by being obsolete and on Myspace

  11. 11. Ultimately, Linux' spread is symbolic of something more than Linux itself. It shows a radical shift in thinking by the Linux community. Not necessarily a positive one, either. One that is heavily desktop-oriented, choice-limiting, isolationist, reinvents the flat tire, and is just a huge anti-pattern in general. If your goal is to pander to the lowest common denominator, so be it. We will look for alternatives, however.

  12. 12. Linux doesn't even know what it wants to be. It is variously referred to as a "kernel" or a "basic distribution building block to make an OS from", both of which are highly ambiguous. It engulfs functionality that variously belonged to Unix, other Unix, 3rd Unix and other projects. It has no clear direction, other than the whims of the developers themselves. Ironically, despite aiming to standardize Linux distributions, it itself has no clear standard, and is perpetually rolling.

What You Can Do

Boycott distros that use Linux.

Spread word of this web page.

Contribute to and use distros that we like

Check out the Minix project for a saner Unix kernel.

Consider migrating to HP-UX, AIX, SunOS or something similar, when things get really out of hand.


External Resources and References

References

[0] https://www.wikipedia.org/
[1] http://www.science.com <--can't argue w/ that!!
[2] ...
[3] ...
[...] ...
...just Google it...


Linus Torvalds doing what he does best

Send inquiries, feedback and suggestions to trash@boycottlinux.org