Archive for developers

Why Linux Desktops Haven’t Taken Over the World

KDE Plasma Splash Screen

There’s no doubt that Linux has taken over the datacenter. Walk into any major datacenter in the world and there will be racks of Linux servers with only a handful of Windows Servers. Most cloud services are based on Linux as well. Some big banks still have ancient mainframes but many of those are using Linux. Even Microsoft has embraced Linux! To older technologists that’s like hearing the Pope has embraced Satanism. What began as a hobby more than 25 years ago is now the dominant server operating system. So why then do we see so few Linux desktops?

To answer that question, some myths need to be dispensed with immediately. They are:

  • Linux Desktops are Hard to Use. Not at all. Sure, 25 years ago when Linux was a DYI sort of operating system and everything had to be configured by hand it was damn hard to install and maintain. Now? Not so much. Linux desktops have a host of utilities that make installation, maintenance, updates, and acquiring new software easy. Snap and Flatpak are making the bundling and installation of software, well, a snap. Most major distributions* have, for years, come with utilities to find and install third party software in an application store. This was long before the Microsoft Store and Android application stores existed.
  • Linux Desktops Are Primitive and Ugly. Right away, we need to get something out of the way – aesthetics matter. If someone is going to stare at a desktop for hours on end it had better be decent enough to look at. Functionality is important too. A clunky user experience (UX) becomes a drag on productivity over time. This is why Microsoft has put so much effort into the Windows 10 UX and aesthetics over the past few years and why Apple’s macOS is still around at all.
    This criticism of the Linux desktop UX is outdated. Distributions such as Ubuntu by Canonical, Elementary OS, and Linux Mint have complete and rich user experiences. Most use a variation of Gnome or KDE Plasma desktops but, as is the beauty of Linux, they can be replaced with something that suits individual styles. Gnome appeals to a more minimalist approach, while KDE Plasma is fond of Widgets. Elementary OS uses its own variation on Gnome that makes it much more macOS-like. All use modern motifs that are instantly recognizable to the average consumer.
  • Nothing Runs on Linux. Actually, a lot of software runs on Linux, most importantly browsers. As more software is consumed through the browser, it has become the single most important piece of software for any computer to have. The two most common browsers, Mozilla’s Firefox and Google Chrome, run on Linux. In addition, there are many other browsers, such as Midori, that run on Linux including some specialized browsers that only run on Linux. A lot of software common on Windows or macOS desktops is also available for Linux including Spotify and Skype. Most open source software, such as LibreOffice and GIMP, have their roots in Linux and are also cross-platform.

Linux desktops have two obvious advantages. First, they tend to have lower resource needs. There are distributions that can run on computers with as low as 256MB of RAM, although they are very limited in what they can do. Linux can run comfortably on a computer with only 2GB of RAM and a rather tiny hard drive. A Linux desktop can run on a single board computer such as a Raspberry PI. This is why modern Linux desktops are a great way to keep using an old computer that can’t upgrade to new versions Windows anymore.

The second advantage is that it is often free. Most major Linux desktops can be downloaded and installed for free. There are also thousands of useful applications that are equally free. Unlike software from individuals which can get old and stale if the author gets bored or distracted, most free Linux software is supported by open source communities and foundations that work to keep the software fresh and modern.

Given the advantages of Linux and having debunked the myths, here are five reasons why Linux has not taken over the desktop as it has the server:

  • Free Software Comes at A Price – Support Is Not Included. Yes, there is support from the “community” but that is different than having someone to call and get guided assistance. There are paid support plans for many distributions and, while it’s still not very expensive for commercial users, paid support is relatively expensive for consumers. This is especially the case when a paid operating system, such as Windows or macOS, comes pre-installed on a computer and includes support.
  • Old Software. Everyone has legacy software. For a consumer, it might mean an old game that they love or that greeting card builder from 2001. Companies have lots of homegrown or purchased software that only run on Windows or macOS. In either case, this software is too expensive or difficult to replace even if it is only used occasionally.
  • Inertia. Whether it’s companies or individuals, it’s often easier to stick with the familiar. Investments in knowledge and support, not to mention software, are preserved. This dynamic can change when the familiar OS changes radically, such as the case of moving from Windows 7 to Window 8.
  • It’s Not What Is Used at Work. What is used at work often dictates what happens in the home. Early in personal computing, Microsoft was able to get a foothold in the workplace while Apple was looking to win over the consumer. Look how that turned out. It’s much easier to know one operating system for both work and home.
  • Microsoft Office. All of the other reasons for the lack of traction of Linux desktops can be overcome in a number of ways. One can use a switch to Linux as an opportunity to upgrade other software, learn new things, or come to the realization what home and work are different spheres of life. The one thing that Linux desktops cannot overcome on its own is that Microsoft Office for Linux simply doesn’t exist and everyone uses Microsoft Office. The open source community can push LibreOffice or any other alternatives until the Sun burns out, but it won’t change the fact that the mass of companies and individual consumers use Microsoft Office. The browser version of Office is okay, but everyone needs a desktop version either for the features or because they don’t have a decent Internet connection. Using a Linux desktop laptop on an airplane means not using Microsoft Office and having to rely on software that has a different user experience and imperfect compatibility.

There will always be individuals and companies that will adopt Linux desktops for philosophical or cost reasons. Linux is great for reviving an old computer that would otherwise be useless. It is also possible to use only Free and Open Source (FOSS) software with a Linux computer, which some people value. The same cannot be said for Microsoft Windows or macOS from Apple. Developers also adopt Linux desktops since they sync up well with the server environments they are working with. The masses of computer users, on the other hand, are unlikely to switch until Microsoft Office is available for Linux and there is a decent Windows compatibility layer. Until then Windows owns the desktop, with macOs the alternative for Microsoft haters.

* A Linux Distribution is a bundle of software that runs on top of the basic Linux system. desktop distributions include a desktop environment and a series of free applications including a browser and usually the LibreOffice office productivity suite.

Monitoring Containers: Do you know what happening inside your cluster?

container with a spherical object in it

This was originally published on May 18th on the Amalgam Insights. For reasons I can’t fathom, I forgot to push the publish button.


It’s not news that there is a lot of buzz around containers. As companies begin to widely deploy microservices architectures, containers are the obvious choice with which to implement them. As companies deploy container clusters into production, however, an issue has to be dealt with immediately:
container architectures have a lot of moving parts. The whole point of microservices is to break apart monolithic components into smaller services. This means that what was once a big process running on a resource rich server is now multiple processes spread across one or many servers. On top of the architecture change, a container cluster usually encompasses a variety of containers that are not application code. These include security, load balancing, network management, web servers, etc. Entire frameworks, such as NGINX Unit 1.0, may be deployed as infrastructure for the cluster. Services that used to be centralized in a network are now incorporated into the application itself as part of the container network.

Because an “application” is now really a collection of smaller services running in a virtual network, there’s a lot more that can go wrong. The more containers, the more opportunities for misbehaving components. For example:

  • Network issues. No matter how the network is actually implemented, there are opportunities for typical network problems to emerge including deadlocked communication and slow connections. Instead of these being part of monolithic network appliances, they are distributed throughout a number of local container clusters.
  • Apps that are slow and make everything else slower. Poor performance of a critical component in the cluster can drag down overall performance. With microservices, the entire app can be waiting on a service that is not responding quickly.
  • Containers that are dying and respawning. A container can crash which may cause an orchestrator such as Kubernetes to respawn the container. A badly behaving container may do this multiple times.

These are just a few examples of the types of problems that a container cluster can have that negatively affect a production system. None of these are new to applications in general. Applications and service can fail, lock up, or slow down in other architectures. There are just a lot more parts in a container cluster creating more opportunities for problems to occur. In addition, typical application monitoring tools aren’t necessarily designed for container clusters. There are events that traditional application monitoring will miss especially issues with containers and Kubernetes themselves.

To combat these issues, a generation of products and open source projects are emerging that are retrofit or purpose built for container clusters. In come cases, app monitoring has been extended to include containers (New Relic comes to mind). New companies, such as LightStep, have also entered the market for application monitoring but with containers in mind from the onset. Just as exciting are the open source projects that are gaining steam. Prometheus (for application monitoring), OpenTracing (network tracing), and Jaeger (transaction tracing), are some of the open source projects that are help gather data about the functioning of a cluster.

What makes these projects and products interesting is that they place monitoring components in the clusters, close to the applications components, and take advantage of container and Kubernetes APIs. This helps sysops to have a more complete view of all the parts and interactions of the container cluster. Information that is unique to containers and Kubernetes are available alongside traditional application and network monitoring data.

As IT departments start to roll scalable container clusters into production, knowing what is happening within is essential. Thankfully, the ecosystem for monitoring is evolving quickly, driven equally but companies and open source communities.