Just Linux Things

chillin_penguins

As a follow-up to my previous post, I noticed that a lot of the recent open-source technologies are extremely Linux-centric. It all started around the time GNOME3 and systemd were introduced. Both heavily rely on facilities present in Linux-based operating systems, making them difficult to port to other Unix platforms like the BSDs. These technologies are also strongly promoted to entice prospective developers. While I understand the need for platform-centric efficiency inherently tied to Linux-specific features (cgroups, etc.), it is also important not to ignore the rest of the IT ecosphere. Yes, I mean even Windows, which is normally not considered on equal terms as Unix, but is relevant when talking about C# or .NET applications.

A recent example of this trend is Docker. Containers are now the new pink and everyone wants to get a piece of the pie. Docker barely reached release 1.x, yet some companies already make claims about “widespread adoption”. I thought industries prefer stable and tested-for-years solutions. I find this new craze odd the least. As expected, Docker is a Linux thing. While the containers are indeed OS-level on GNU/Linux systems, much like LXC (Linux Containers), they’re not on Windows and neither on MacOS X. Oddly enough, the latter uses a Unix virtual machine manager xhyve (based on FreeBSD’s bhyve). Therefore, despite the fact that developer interfaces are similar or even identical, the engines running underneath will have a substantial overhead on non-Linux systems. At that point one might consider whether native and more established solutions are not already available and more suitable for multi-container setups. On FreeBSD we have Jails and a ton of Jail managers to make one’s life easier. I have a feeling that Jails on FreeBSD would do a lot better than Docker containers on GNU/Linux. Not to mention that a FreeBSD base system is a lot slimmer than whatever one could consider a base system in GNU/Linux world. “Widespread adoption” seems to be lacking, because most of world’s servers run GNU/Linux.

Another weird trend I notice is identifying everything Linux-related with Ubuntu, as if Ubuntu was the only True Linux Distribution. I often read articles that claim to touch on Linux, but in reality discuss Ubuntu. A square is a rectangle, but not all rectangles are squares! That’s so obvious, no? This “Linux = Ubuntu” assumption hurts the whole ecosystem quite a lot. People learn how to use Ubuntu, think they’ve mastered Linux. Then, they’re dropped into a den full of Gentoos and CentOS’, and they end up suffering. Ouch! A fallout of this worrying trend is the fact that people deploy Ubuntu in places where a more lightweight GNU/Linux distribution would be a lot more suitable. That’s one of the reasons why Docker switched from Ubuntu to Alpine Linux eventually. With the wealth and diversity of the GNU/Linux ecosystem, one doesn’t even need to go far.

The LTS Conundrum

During my time with openSUSE Tumbleweed I noticed that this specific ecosystem moves faster than Fedora, Arch Linux and sometimes even light itself. It stands to reason, as Tumbleweed (TW) is the testing ground for future Leap 42.x service packs and openSUSE software in general. Despite this, TW is surprisingly stable and reliable. Alas, the same cannot be said about the most recent Ubuntu LTS (Long Term Support) releases. I believe the below cartoon is more than appropriate.

computer_error_rage

‘LTS’ is a bit of a magical term in software development. It marks an operating system or piece of software as inherently stable and meant to be supported for years. For instance, all Windows releases thus far were LTS, because their support cycle extended for years. Yet, they would get regular and security updates nevertheless. In the Linux-verse LTS means ‘more stable, less updates’ and in the case of Debian’s regular releases, only security updates are pushed to the audience. I’ve used Ubuntu since version 12.04 LTS and all of the XX.04 releases were rather solid. Of course, minor bugs happened from time to time, though nothing game-breaking. Until 16.04 LTS hit…

Ubuntu 16.04 LTS is a bug-fest across all main flavors – Kubuntu, Xubuntu, Lubuntu, etc. Recently, when setting up a Dell Latitude D820 for a colleague I chose Lubuntu 16.04 LTS, believing that it’s going to work out-of-the-box and that all I need to do is just install the additional software. First, in stark contrast to previous Lubuntu releases, the installer in this one did not do the standard Internet connection/power supply/disk space check. Huge minus already. Then, it suggested I install extra proprietary software, yet failed to provide the firmware for the Broadcom BCM4311 chip. When I somehow managed to complete the install, booting stopped on the ext4 fsck (file system check), because the Intel driver package xserver-xorg-video-intel was missing entirely and X11 could not load. What sort of shoddy work is this? I am amazed that this sort of bug was not caught prior to the release.

To me LTS means that I can safely rely on the software. I can install it, configure and Get The Job Done. Imagine a company that is in the process of transiting to 16.04 LTS. Absolute nightmare! All Hell breaking loose! That’s part of the reason I moved to openSUSE for good. If I want breakage, I choose Tumbleweed. Should I feel the need for a stable environment, Leap 42.1 is within hands reach. As a teaser, Leap 42.2 Alpha 3 is already there for the taking. Guess what – thanks to the SUSE base it’s solid even before release!

Simplicity Is the Ultimate Sophistication

Originally coined by Leonardo da Vinci, later accepted and implemented by Steven Paul Jobs as part of the Mac OS X credo. In the advent of Ubuntu’s shoddy release called Xenial Xerus and its heavy repercussions on Linux Mint 17.3, I decided to revisit this beautiful maxim. I do not intend to go on another rant, yet the need and willingness are definitely there.

The new Ubuntu 16.04 LTS breaks many things, as have observed Roger from Dedoimedo and my father (both highly influential figures to me). The problem though is not that it breaks things. Rather, that the things broken severely cripple user-experience and Long Term Support releases should display improved reliability from the get-go. I was honestly looking forward to 16.04, since 14.04 had been a decently solid release. Now, I have no intention to even touch (as in, the ‘touch’ Unix command) Xenial Xerus. Ubuntu’s new release painfully shows a couple of things that are wrong with Ubuntu and potentially with the whole of the GNU/Linux ecosystem:

  1. Catering to too broad an audience makes the operating system unsuitable for any single individual. This is one of the major problems with Windows and seeing it happen to a GNU/Linux distribution pains me.
  2. Diminishing quality of the base installation. I agree it’s completely impossible to please everyone (see, point 1.) and I am not expecting every piece of software in the repositories to work flawlessly. However, if parts of the base install don’t work as intended, although they clearly did in past releases, one really starts to wonder about quality assurance…
  3. Lack of consistency between flavors of Ubuntu. The point was originally made by Roger from Dedoimedo. Until personally tested, it is not clear whether each flavor of Ubuntu will support our hardware equally well. In former times I used to think that the major difference between flavors was merely the selection of apps and the desktop environment. Guess I was wrong. This is slightly off-putting, because it means there may be a lack of sync between developer groups responsible for each flavor.

Point 1. is a philosophical issue and cannot be treated in terms of good and bad. Unfortunately, the mythical End User, much like Big Foot has never shown itself, so an educated guess is all we can bargain for. Points 2. and 3. display symptoms of improper management. I myself had problems with Lubuntu 16.04 shortly after release. Some directory paths were already restructured for the upcoming move to LXQT, though PCManFM was still looking for the wallpaper in the defunct LXDE directory. Amending the issue took me approximately 5 minutes. In all seriousness, how difficult can it be to configure the wallpaper properly out-of-the-box…?

The beauty of an operating system is defined in two things – A) it looks just about right (clean, clear and non-intrusive design) and B) things just work (minimal, yet functional setup). Ubuntu would have far less problems if the developers focused more on getting a small subset of simple apps and scripts to work and NOT change them for the sake of change. Building up from a solid base is much easier to carry out afterwards. Many other GNU/Linux distributions suffer from similar problems, though not all of them. Somehow I never had issues with Manjaro XFCE, even when using development snapshots. I reckon keeping it simple at the core eventually pays off.

The Easy and the Lightweight

Recently, I switched from Manjaro Linux to Arch Linux to get closer to the heart of my GNU/Linux operating system again. It’s pleasant to be in full control of what’s going on under the hood. However, often there are those small things. How do I know which packages are required for handling the multitude of archive formats (tar.gz, .zip, .7zip, etc.)? Why does the file manager not automatically link images to the only image viewing app I have on my system? We all suffer from similar problems and in some way it doesn’t have to be all on the user to figure things out. However, as with great power comes great responsibility, easy to use GNU/Linux distributions typically come with lots of unwanted software that only overburdens our precious machines. Thus, I asked myself – can I get some but not all?

Not entirely surprisingly, Yes. GNU/Linux is flexible enough that many lightweight distributions were born to cater to users with minimal needs. Below, a short round-up:

Bodhi Linux – based on the current Ubuntu LTS branch, it was one of my first GNU/Linux distributions. Although Enlightenment was substituted with its fork, Moksha, it is still equally lightweight. Bodhi will perfectly suit those of us who prefer simplicity and don’t want to be overwhelmed by software choice. The one application per task rule stands strong.

Peppermint OS – also based on the current Ubuntu LTS branch. Peppermint OS makes great use of web-based applications through its Ice web-app creator/linker. Favorite services like Facebook or YouTube can be locally linked in a browser window to mimic software installed on the hard drive. The desktop environment is a mix of LXDE and Xfce.

BunsenLabs Linux – successor to the Debian Stable-based Crunchbang Linux. It’s a community project that intends to continue Crunchbang’s legacy as a fuss-free Debian Stable distribution. It utilizes Openbox with components from Xfce as its desktop environment. A fantastic alternative to those who don’t like installing Debian from scratch.

AntiX – also based on Debian Stable, though with an option of switching to Testing or Unstable at install time. Out-of-the-box it offers numerous applications for typical daily tasks, still staying true to its lightweight nature. The developers push really hard to make AntiX run smoothly on low-end computers. Granted, it was the only complete distribution that worked smoothly on my ancient Intel Pentium M EeePC.

All of the above distributions do great deeds in terms of resource usage and can be installed even on antiquated PIII machines. Their main strength is that they offer the same base functionalities as full-blown distributions, still requiring barely any CPU and RAM. Every single one of them is worth at least trying out!

Autumn Linux Round-up!

linux_distrosSummer is leaving, fall is just ’round the corner and the harvests are approaching with their pumpkin-headed harbinger in the vanguard. For me the season of orange-brown kaleidoscopes and falling leaves is always a time of recollection and deep melancholy. However, still holding onto the sunny mood, like the last warm gust, I decided to devote this entry to a round-up of several Linux distributions I found most worthwhile for both greenhorns and veterans alike. There will be numbers, but they mean completely nothing.

  1. Debian. The father, mother and grandparent of most Linux distributions, the oldest in this round-up. Debian can be literally anything. It can be an ultra-stable, unbreakable server (Debian Stable), an all-around desktop operating system (Debian Testing) or a developer’s ‘playground’ (Debian Unstable). There are very few things which Debian does not do well. Unfortunately for me, one of them is dependency resolution. In its attempt to be helpful, Debian sometimes links too many packages in a dependency net, causing artificial conflicts. This happens very rarely, though, and is swiftly resolved by package maintainers.
  2. Ubuntu family. ‘Descendant’ of Debian. A distribution created to show people that Linux can be attractive, fully functional and extremely capable at the same time. Also, that it is most likely the operating system model of the future. Thanks to its many flavors, Ubuntu is suited for most hardware, even rather dated.
  3. Arch Linux. The Linux of the people. Debian gives choice, Arch Linux means choice. It is the very essence of Linux (plus, a package manager!). It gives the user basic tools to create his/her perfect operating system and thorough guidelines how to do it. There are completely no limits to how far one go with it.
  4. Manjaro. The first-born of Arch. If Arch Linux seems too daunting, there is Manjaro. Many aspects of Arch Linux have been optimized and streamlined to provide top-notch out-of-the-box experience. There are kinks and rough edges sometimes, however this should come to no surprise, since it’s very difficult to build on something as do-it-yourself as Arch Linux.
  5. Fedora. The grand innovator. Entirely driven by its vast community of dedicated users, designers and programmers. It’s more streamlined than Arch and has its base in the legendary Red Hat. Truly, while Arch is geared towards tinkerers, Fedora seems to be the distribution of serious creators. Again, sky is the limit…but it’s always blue.

Finally, I have to make a sad yet necessary announcement.  I will be temporarily closing this journal in favor of a goal I set myself regarding Unix development. More on that in the opening entry of my new blog…on Python!

Linux-do – The Path to Linux

For some people Linux is merely an operating system, an inexpensive alternative to Windows or Mac. For me and many others Linux represents a path – ‘Linux-do’ as the Japanese would probably put it (Bushido or Bushi-do – ‘the way of the warrior’). My main goal when using various distributions was always broadening my understanding of mechanics underlying operating systems – how the kernel software lets the user communicate with hardware, how to compile software, etc. Due to its intrinsic flexibility, Linux offers quite a lot.

images.duckduckgo.comDisciples of ‘Linux-do’ such as I typically follow a stepwise progression towards enlightenment – becoming one with the operating system. Beginners usually start with the more user-friendly distributions, for example Ubuntu, OpenSUSE or Mageia/OpenMandriva Lx. The majority of them are content with that level of understanding, however, many want to know Linux better and continue their exploration (‘distro-hopping’). The next step is often Debian – the predecessor of Ubuntu. Many aspects of Ubuntu were already present in its ‘father’, hence the advancement is rather smooth. I believe Debian is so powerful and flexible that it is very much worth to use it for longer. Especially, because it allows for quite minimalistic setups. The almost final destination in ‘Linux-do’ is one of the ‘hardcore’ distributionsGentoo, Slackware, CRUX or Arch Linux. Most of them require half-manual installations (specifically Arch Linux and Gentoo) and rely on or even request compilation of software. I believe Gentoo deserves to be highlighted at this point, due to its immense educational value. As the proverb goes – ‘if you learn Gentoo, you have learned Linux’.

Now, I mentioned the ‘almost final destination’ in the previous paragraph. What is the FINAL destination, then? The answer is of philosophical nature – an educated choice. Simply put, a distribution which we accept to use, fully aware of its advantages (those we utilize to their full potency) and disadvantages (those we accept or amend).

All Roads Lead to Debian…

I am sure every geek out there has heard / read of Debian, at least as a base for Ubuntu (possibly the most popular Linux distribution). For me Debian was always the ‘origin’, the one from which all other distributions sprouted. Like an old, majestic tree with many offshoots…

Fantasy_Tree_Tree_Drawing_45991_detail_thumb

The very first Linux distribution I tried was Bodhi Linux 2.4. It was built on Ubuntu 12.04 LTS, ergo had its roots in Debian. While venturing through the Lands of Linux I stumbled upon multiple other distributions based on Debian, such as Trisquel, Crunchbang or Sparky Linux. There are many, many more, all with a common source – Debian. Seeing how inevitably I kept drifting towards the more demanding distributions, somehow matching my increasing experience, I decided to take a road to Debian proper…

As I read more I learnt that Debian is less of a tree and more of an orchard in which software packages are grown and cultivated. This orchard has in essence four branches:

Experimental: Here software packages are built and undergo initial tests conducted by developers and package maintainers. So far, I have not encountered any distributions based on the Experimental branch of Debian. 

Unstable (always Sid)Here software packages are further tested to remove release critical bugs. However, the packages are stable enough to be admitted for common use. Often, experienced Linux users choose Debian Unstable to gain access to most recent packages. Although a matter of dispute, Sid is thought to follow a rolling-release model due to its dynamic nature. A number of distributions are based on Debian Sid: Semplice Linux, Siduction, Aptosid, Ubuntu X.10 versions.

Testing (currently Jessie): Here software packages are polished and rid of any remaining bugs. Typically Jessie is a bit behind Sid, but only by a margin. A number of distributions are based on Debian Jessie: Sparky Linux, AntiX, Makulu Linux, SolydX/SolydK, Ubuntu X.04 LTS versions.

– Stable (currently 7.0 Wheezy): Consists of only fully tested and perfectly stable software packages. Alas, due to the lengthy testing process, the packages are rather outdated and suitable mostly for running servers, older computers or simply as a low-maintenance distribution. A number of distributions are based on Debian Wheezy: Crunchbang, AntiX MX, Tails, SteamOS, Robolinux. 

The package development process in Debian is extremely intriguing and probably unique for this distribution. After packages are built and tested in the Experimental branch, they proceed to the Unstable branch for further testing. In turn, Jessie receives packages for which no release critical bugs have been reported. Stable is a frozen snapshot of Testing and receives only security updates. While Sid could be considered a rolling-release distribution, Jessie is a hybrid. When a new Stable version is being prepared for release, Testing has to be frozen and in such state will not receive any new packages from Sid. After all of the packages in frozen Testing are bug-free and of supreme quality, they are released as Stable, which then inherits a name and Testing receives a new one. Currently, Jessie is the Testing branch. However, Debian developers are working hard on a new Stable release, which will be called Jessie (now, it is Wheezy). After the new Jessie is released, Testing ‘thaws’ and gains a new identity.

Debian’s developmental model might sound quite confusing, but in essence it greatly resembles a typical production process in industries. Therefore, it shows a clear focus on quality, rather than quantity.

I started my adventure with Debian from a minimal Testing LiveCD. The initial experience was quite smooth and the installation process concluded without major problems. However, due to my mistake I had to properly configure the repositories’ mirrors list. Unfortunately, some issues arose later on. I could connect to the Internet only via an Ethernet cable, because the WiFi adapter drivers were not installed at all. Surprisingly, sound also did not work. On a positive note though, I installed several desktop environments and all of them had a clean Debian theme and were well configured. Maybe next time I will start from a derivative distribution as it is potentially less troublesome to set up.

Actually, the real beauty of Debian shows in its smooth progression. While theoretically there are several branches of Debian, one can seamlessly move from one to another by upgrading to a more recent one. For instance, I was not a 100% satisfied with Debian Testing, because the repositories lacked several packages I always use (like the Midori web browser). Therefore, I quickly updated my mirrors list and swiftly became a Debian Unstable user. It is actually that simple! Even Debian derivatives can be quickly transformed into fully-fledged Debian without major set-backs! The reason why people don’t do it so often is that they are satisfied with the Debian branch they have chosen and sometimes already installed packages can break when making the transition (as was frequently reported for Libre Office in Crunchbang).

With its utmost flexibility and reliability Debian is definitely something I can suggest to anyone!