Can Tux Go Mobile?

tuxontuxonlaptop

As some people sardonically claim, the year of the Linux desktop is drawing near. However, when analyzing the current ecosystem I noticed that the near is an asymptote, not a fixed destination. I tried to draft a few priorities I think GNU/Linux needs to cover before becoming truly popular on mobile devices (laptops, notebooks, etc.).

1. Hardware support:

More and more hardware vendors openly support GNU/Linux as a platform and offer compatible drivers. However:

  • The only efficient solution for nVidia graphics is the closed-source driver, which is not fully open-source and does not support kernel mode-setting and other Unix-specific features
  • AMD and Intel GPUs have compatible drivers, but their performance is not on par with Windows and Mac OS X drivers
  • Intel, Atheros, Realtek and some other companies provide drivers for wireless network chips, though the coverage is far from complete
  • Features like brightness adjustment, suspend/wake up, fingerprint readers, etc. depend on so many interlaced components that their functionality is mostly down to sheer luck

Granted, most of the above works to a certain degree, though simply not to the same extent as with Windows or Mac OS X. It would really help if computer producers and vendors were to list the hardware components shipped inside their devices. Usually, that’s a tiny piece of information, though for us open-source people makes choosing well-supported hardware substantially easier.

2. Common software standards:

As it stands now, there are too many GNU/Linux distributions (Ubuntu flavor-of-the-week anyone?) with too many applications fulfilling common tasks. The variation in command-line network management tools comes to mind, though by no means is it the only such case. Don’t get me wrong, I adore choice. However, for vendors and third-party software developers too much variety makes understanding GNU/Linux the more confusing. A good idea would be to collaboratively decide on a set of low-level tools common to all distributions to unify at least the Linux base system more.

3. Emphasis on uniqueness:
GNU/Linux is viable as long as it’s an alternative to MacOS X and Windows. The more it mimics, the more it becomes a mere copy. However, mimicry may in many cases prove successful. For instance, KDE managed to expand on Windows’ standard desktop look, emphasizing functionality and ease of use. GNOME3, shunned by many for its bugs (now mostly resolved) and feature obfuscation is in fact a more approachable adaptation of Apple’s Aqua GUI. Many of us are so-called Unix veterans and we don’t care for user-friendliness much. However, end-users and vendors do and we die-hards should at least respect that. I think GNU/Linux, but also other Unices, has enough unique features to be considered an alternative to Windows or Mac OS X for many computing tasks.

To recapitulate, I think the year of the Linux desktop is not so far ahead anymore. In fact, it’s almost here! However, for the world to fully embrace it, open-source developers and hardware vendors should collaborate more. Both sides will surely profit from greater openness and trust.

Beyond Linux – FreeBSD Part 1

My drift towards the very origins of Unix was certain to bring me to the Berkeley Software Distribution (BSD) at some point. Linux was built on Unix principles, but it isn’t Unix in the genetic sense. On the other hand, as rightfully stated on Wikipedia, BSD is Unix, but can only call itself Unix-like due to licensing of the original AT&T UNIX operating system (notice the upper case). Regardless, I decided to make the plunge and embrace the true Unix ecosystem.

Much like there are multiple Linux distributions, BSD also has its derivatives – FreeBSD, PC-BSD, GhostBSD, OpenBSD, NetBSD, DragonflyBSD, etc. The major difference between Linux and BSD is the organization of the OS. Linux is just the kernel with loosely attached userland (apps), defined by individual distributions. BSD is a complete operating system (kernel + core userland to cover basic functionalities). On the FreeBSD website this comparison is nicely outlined as order (BSD) vs chaos (Linux). I myself prefer order!

The other major distinction is package management, however some Linux distributions follow the BSD-like package management concept closely (Gentoo, Void Linux, CRUX, Slackware, etc.) as BSD operating systems were their source of inspiration. Since the basic functionalities are covered by the OS, the user has full control over installed software. On FreeBSD apps can be either compiled from source using the now almost legendary ports collection with flexible YES/NO options (additional features, removal of redundant features, etc.) or installed as binaries, much like it is done on most Linux distributions. Due to the simplicity of configuration files for individual packages, binaries and apps built from source can be handled together by the package manager, pkg. Quite astonishingly, combining the two installation methods does not cause any breakage, though sometimes packages need to be reinstalled to match the sane defaults in binaries provided by pkg.

The main source of information on FreeBSD is the famous FreeBSD Handbook. Perhaps only the Arch Linux and Gentoo wikis can somewhat compare to the completeness of the Handbook, which easily covers >90% of FreeBSD knowledge. I think this is important, because sometimes one might lose internet connection or even worse and having the Handbook directly accessible on the drive is a life-saver!

One last important thing to remember is that while both Linux and FreeBSD are Unix-like operating systems, FreeBSD is NOT Linux. That sounds absurdly obvious, but it means that many terminal commands native to Linux may not work on FreeBSD. BSDs require a different, more organized mindset and the knowledge of their quirks. However, since FreeBSD uses a lot of GNU components, one can expect all of the major desktop environments and apps to be readily available through pkg or the ports collection. After all, the repositories contain over 24000 packages, easily outshining smaller Linux projects.

The Lands Beyond Systemd…

As my last entry had been outright pessimistic, I tried with a more positive tone in this one. In recent months Debian was debating whether to make systemd the default init system in their new release Debian 8 Jessie. It turns out that the debate wasn’t completely one-sided in favor of systemd and many reasonable points were raised in respect to all available init systems (sysvinit, systemd, upstart, openRC, etc.):

https://wiki.debian.org/Debate/initsystem/sysvinit

Although systemd has become the new default, nothing and no one is stopping Debian users from installing and using a different init system, for instance sysvinit, the previous default in Debian 7 Wheezy. Many people running Debian or its derivatives made the switch. It’s fairly doable and doesn’t require extensive programming knowledge. Some BunsenLabs Linux users (descendant of Crunchbang Linux) even suggested that BL should be init agnostic due to its minimal approach and reliance on portable components, such as Openbox. The obvious irony in this was that it is systemd which should be agnostic and portable, not individual distributions! As the saying goes, if you let a stray cat into your apartment, it will soil your carpet. The concluding remark among BL users was that people who are aware of alternative init systems, are more than capable of handling them themselves. Fair enough.

Moving on, a multitude of Debian developers and users made an important observation on systemd: The problem is not its init functionality, but the fact that it wants to be everything and everywhere in the operating system. Hence, the only way around that without severe limitations is to entirely eliminate systemd as the core system component. Debian’s fork Devuan was born with such a premise. The job is hard and it is not going to happen without blood, sweat and tears (and balls, of course). Without a doubt, people behind Devuan have the needed qualities to make their noble goal reality.

On the less user-friendly side of the Linux spectrum, a new distribution was born over a year ago – Void Linux. Many people criticized it for not being unique enough. Perhaps on the day of its inception that was the case. Not anymore, though! Currently, Void Linux pioneers a novel init system called runit (http://smarden.org/runit/). It is modular, compliant with UNIX principles and extremely snappy. Void Linux also offers a new package manager – xbps. It does its job, handles configurations, etc. For instance, I have a dual GPU Geforce GTX 295 graphics card. xbps downloaded dkms, the nVidia driver sources and prepared the kernel module without a hitch. Installed fonts also get added to the required config files automatically. The most enjoyable experience to me was that Void Linux feels like Arch Linux before it went crazy over systemd. It’s simple, sane and very much KISS!

To sum up, there are non-systemd Linux alternatives in sufficient abundance. One just needs to use them and show others that systemd is not mandatory and never should be. After all, Linux is defined by choice!

The Sickness Called ‘User-friendliness’

Originally, the Linux kernel was forged single-handedly by Linus Torvalds, because he didn’t like MS-DOS (yes, that long ago!). Later, operating systems based on the Linux kernel began to appear and their main targets were servers, workstations and mainframes. The point of pride was stability, transparency (lacking then in MS-DOS) and code-correctness. After all, Linux was raised on the UNIX philosophy of sane programming and system design.

Then, something happened. A number of Linux developers and distribution maintainers noticed that MacOS and Windows are popular on the consumer market, because they’re user-friendly. This was the same degree of observation that Adam and Eve made in the biblical Paradise when they tasted a fruit from the Tree of Knowledge of Good and Evil and discovered they are absolutely naked. Then, Linux was not user-friendly at all! They [developers and maintainers] got together and said Hey, we want Linux to be popular among average Joes as well! It deserves it!. Thus, the long trip down the rabbit hole began. Unfortunately, it didn’t lead to Wonderland…

Distributions began to swap tried and tested solutions for design atrocities. Gnome Network Manager (GUI) on top of wpa_supplicant (which has its own GUI!) on top of dhpcd. Pulseaudio on top of ALSA. GRUB2 with its ‘modern’ syntax, ridiculous to the point that it was easier to just auto-configure and forget what the bootloader even does (honestly, a very bad attitude). There are tons of examples. Sadly, user-friendliness is merely a bait. Linux will never in all eternity be as user-friendly as MacOS X…without sacrificing traits valuable to many: flexibility, freedom of choice, PC usage footprint, etc. Is that path really worth going down?

The sickness is spreading. For the proponents of user-friendliness it’s not enough to take the Linux kernel and build user-friendly operating systems on it (that’s how it’s done in the BSD world, more or less). In order to matter, one has to change the upstream. Instead of creating, they want to alter, to mold the whole Linux ecosystem to their vision.

I sincerely hope this will never happen. We have what we value most in Linux as long people don’t try to butcher it with their MacOS X/Windows standards. If we sack the UNIX philosophy, Linux as we remember it will be no more….

The GNU/Linux Revolution…

linux_revolution

Beginning of 2016. A major storm is brewing over the GNU/Linux landscape. Winter is coming and things are starting to change. For the much worse. Thanks to this article: http://slated.org/the_poetterisation_of_gnu_linux it became very clear to me what Red Hat is all about. For years I have respected Red Hat as a major player in the GNU/Linux ecosystem and a supporter of open-source software. I believed they genuinely cared and wanted to prove the world that the open-source development model IS the model of the future. I was wrong.

Red Hat never cared. That’s quite apparent when looking at some of the developer comments on the bug tracker: https://bugzilla.redhat.com/show_bug.cgi?id=534047#c9. They simply wanted a new operating system to sell their software products. Furthermore, the way they organized the coup on GNU/Linux was quite devious. First, through Fedora they allowed the development of modern, streamlined apps. That produced a lot of hype and cheering for open-source software. Alas, steadily, tried and tested UNIX solutions, which worked for years, started to become obsolete, because they were too old and not modern enough. udev and a couple of other projects were created to address this. Next, came systemd, which took over the init process and gradually started to absorb all of the mentioned minor projects. You want to boot your system – you need systemd. You want to run X11 – you need udev which is now part of systemd. You want to mount devices – you need dbus, which is also part of systemd. To be specific, you don’t actually need systemd for all of this to work, but that has become the new default. Somewhere in-between came the GNOME3 project, which massacred the positive vibe left after GNOME2 and quickly linked itself to systemd. It was simple and easy to use, as the proponents claimed. Frankly, it was oversimplified, obfuscated and completely useless, much like the Metro UI of Windows 8, which appeared later.

The overall fuss over Red Hat’s agenda was and still is enormous. However, it really boils down to a single statement – GNU/Linux operating systems are not Windows, nor Mac OS X. The moment this is forgotten and/or forsaken, the GNU/Linux ecosystem will become yet another streamlined, commercial product.

Fortunately, there are options! FreeBSD has set itself apart from the mainstream long ago and will not participate in Red Hat’s machinations. Moreover, it follows the original, true UNIX philosophy. In the Linuxverse there is the OpenRC based version of Manjaro and a relatively new, but greatly promising project – Devuan.

Feature Creep – Unwanted Gifts from Developers?

unwanted_gifts

The open-source community likes software freedom (the ability to choose) and gifts (new software features). However, sometimes there are gifts/features that we don’t need, yet we still get them and they cannot be returned. Unfortunately, the open-source community is recently overflowing with such gratifications. I believe the trend is greatly troubling, because many such giveaways are not discussed in the community properly and imposed by minorities.

One of the most common proceedings is that a new piece of software or feature appears and suddenly a very vocal minority explodes with Oh wow, shiz, this is so cool, we need this on every computer! Alas, such occurrences lack a cool-headed member of the crowd, who should instantly retort with Why exactly do we need this? How does this help the community?  etc. One of such vocal minorities (which in fact is not so small) is the Fedora community.

Fedora, a fantastic Linux distribution, is sadly often treated as a test-bed for innovations and has a bad track record of pushing forward features that are not ready for prime-time. Many such innovations have a small scope and I often welcome them with a faint smile and a thought – Oh? that’s quite interesting. However, from time to time comes a gigantic train engine with sufficient force to distort the Linux landscape. I will mention 3 of the most disturbing train wrecks.

GNOME3 was supposed to be a continuation of the GNOME2 project. Yet things went wrong and the designers responsible for the GUI decided that it needs a complete rework. The new version became oversimplified, heavier on resources and with all relevant features hidden away. Many critics claimed that such a move would alienate many users (which happened) and GNOME3 would eventually die. Surprisingly, Fedora picked it up and said it was cool. Next up was openSUSE and Debian (?!). Now, GNOME3 is the official desktop environment for Fedora and despite being very troublesome to work with, it is considered suitable for a serious workstation class operating system. Who would have thought…

Pulseaudio is another such unwanted gift. I don’t intend to go on a rant and complain about how it destroys everything. The Internet is already overflowing with such rants. Also, it is not completely useless as it makes switching between sound devices marginally easier. Regardless, its features are useful only to a small group of Linux users, who deal with sound production and management to a greater extent. For normal users and non-sound proficient developers who just want to listen to some music it’s troublesome, because it hijacks all sound controls, yet still fully relies on ALSA. The drivers and controls are already there – no need for another abstraction layer.

Finally, there is systemd. Lots of fuss, tears and turd thrown around. Even to the point that Debian was forked as Devuan (a bittersweet incident). Unsurprisingly, systemd comes from the creator of Pulseaudio. Just like Pulseaudio, it violates the very one tool per job UNIX paradigm and doesn’t do anything new and revolutionary.

Unwanted gifts can be monetized, returned or given away to others. We have the freedom to get rid of them. Mentioned software features were pushed down users’ throats the same way one fattens ducks before they are killed for meat. In a commercial ecosystem GNOME3, Pulseaudio and systemd would die painfully as they hinder productivity and stomp over established standards. What pains me the most is that they follow the same top-to-bottom approach of imposing features by developers that is prominent in Windows. Have the users suddenly become irrelevant?