2021/06/08 An Introduction To GNU/Linux

An Introduction To GNU/Linux

In this guide I will be giving a basic introduction to GNU/Linux for new adopters of GNU/Linux. This guide is for users looking to make the switch from Windows or Mac to a GNU/Linux distribution or current GNU/Linux users looking for another avenue of software to recommend, helpful tips, a quick reference to introduce new users as well.

A Disclaimer

I will be taking a small collection of my other GNU/Linux articles and using them in this introduction as a combined effort to make a streamline and easy to read introduction and is not intended to self-plagiarize. This this will mainly be a series of my personal recommendations and is not to be taken as a final say on the "Best" or "Worst" software as Linux is a world of preferences and philosophies, due to this range in types of GNU/Linux users I would like to make note to find your own way using Linux. If something does not work for your own personal use case, feel free to try something different. Also for brevity you will see GNU/Linux and Linux being used interchangeably, these terms are both correct when referring to Linux as a whole, but GNU/Linux is often considered "More correct" than just Linux.

What is GNU/Linux?

Linux or GNU/Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds and The GNU Project, started in 1983 by Richard Stallman who had the goal of creating a complete Unix-compatible software system composed entirely of free software. Linux at its core is just the Linux kernel and Linux, along with the GNU system, make up a complete operating system.

Together releases of GNU/Linux are often dubbed Distributions or Distros, which include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Commonly mentioned Linux distributions include Debian, Fedora, and Arch. Desktop Linux distributions include a windowing system such as X11 or Wayland, and a desktop environment such as GNOME or KDE. Because Linux is freely re-distributed, anyone may create a distribution for any purpose, you too may be so compelled to do so.

The Philosophy Of GNU/Linux And Why Use GNU/Linux

This is often a highly debated topic in regards to how users of GNU/Linux believe GNU/Linux should be used based on personal preference, aesthetic, politics, and more. The basis of most of the following philosophies however is The Free Software philosophy, FOSS, or the GNU Philosophy, which is a focus of an open and shared operating system which is not only free as in money, often dubbed as "Gratis", but free as in freedom, dubbed as "Libre". The GNU/Linux system gives users more control over their computing experience than competing operating systems such as Windows, which could contain malicious features without the user's knowledge. Further reading on the many philosophical movements surrounding GNU/Linux can be found in the links below.

While I do recommend reading more about the movements behind GNU/Linux, do not force yourself to follow the tenants of these philosophies if it is against your own personal use case. Remember to find your own way using Linux. If something does not work for your own personal use case, feel free to try something different.

Finding A Distribution

Picking your first Linux distribution can be challenging for those who may not be too sure what they are actually looking for. In this section I will be giving a brief introduction to the main branches of Linux and the steps to take to pick your own Linux distribution that meets your needs. Often when looking into the history of Linux distributions they are often shown something like a large tree forking into smaller and smaller branches. This is often overwhelming to New and Old users alike due to the sheer scope and branches Linux has had over it's generations. To simplify this tree I will be breaking it down to the Main Branches which a majority of Linux Distributions are forked which is as follows...

These are the foundation of most if not all other GNU/Linux distributions. When looking for a Linux distribution to use I often use these as a reference point and recommend staying as close to these main branches as possible when choosing a distribution. Doing do will often give you as a user a longer lifespan in your chosen distribution, more stability over all, and more support as a user when troubleshooting issues. Further reading about distributions, to take a look of the distributions I have used in the past, and along with my thoughts on them. Feel free to check below.

Making a boot-able USB in order to use GNU/Linux a often a simple task of finding a 3rd party tool and following the instructions if provides. Some recommended methods are as follows...

While many forms of Disk Imaging Tools exist, for those unsure about using or making a boot-able USB I will refer you to Unebootin to get you started since it is available for Windows, Linux, and Mac.

What Is Systemd? And Why Systemd Matters

Systemd is a software suite that provides a collection of system components for the GNU/Linux operating system. The primary purpose of Systemd is to script and organize boot functions for GNU/Linux using a system and service manager, which is an init system. An init is a initialization program, which is the first process started during booting of the computer system. The init process is directly started by the kernel, in this case, the Linux kernel, and will continue running until the computer is shut down. Systemd used this init system to bootstrap user space and manage user processes. It also provides replacements for various daemons and utilities, including device management, login management, network connection management, and event logging. Systemd is often criticized, with arguments that Systemd suffers from function creep and being bloated. Systemd also has faced criticism over other software adding dependencies on Systemd, such as the GNOME desktop, which can cause a compatibility issue with other GNU/Linux and Unix like systems. But regardless of these issues, as of right now, the majority of GNU/Linux distributions have adopted Systemd as their primary init system, having replaced other systems such as SystemV and BSD init systems. This topic is often polarizing in the Linux community and if you use GNU/Linux for long enough, will eventually run into this topic. You can read more about my thoughts on Systemd below.

What Is A Desktop Environment? And Finding A Desktop Environment

A Desktop Environment is a graphical user interface or GUI commonly mimicking a physical desktop that you would see in a traditional office on your computer screen. A Desktop Environment also encompasses a lot of other tools to assist the user in graphical computing. Further more a Desktop Environment utilizes a widget toolkit, which provides a set of controls that display information to the user. Currently there are two big tool-kits, GTK (The Gimp Toolkit) and Qt (pronounced "cute").

Also I would like to point out something that is often conflated in the GNU/Linux community and would like to clear this up for New and Old users alike. A Window Manager is an implementation of a graphical user interface with a primary goal of managing the location and positioning of application windows on your screen, that is all. A Window Manager is not a Desktop Environment, and a Desktop Environment is not a Window Manager. However, a Desktop Environment does contain a Window Manager in its suite of tools.

A brief breakdown of the most popular and commonly used Desktop Environments. Categorized by date of release and resource usage along with additional details. In this list used a base install of Debian for each installation with the Desktop Environment, then wiping and re-installing for the next Desktop Environments. The only active window was the default terminal installed to minimize skewed results due to poor program optimization. These results are rounded to the nearest 10 MiB since on most machines these changes are admissible.

Starting with Enlightenment, XFCE, and LXQT being in the lower end of the specs, at or around 100 MiB of usage. I noticed with these Desktop Environments that boot up was very snappy, ranging from 5-10 seconds from boot to terminal. These lower spec Desktop Environments also have a common focus on a Mouse Centered work-flow. In this category based on resources, ease of use, and aesthetics, I would recommend XFCE to start. If you need to keep the looks of a proper desktop but also desire to squeak out a bit more power from you system, Enlightenment is a great option. And for those moving from Windows and need a familiar space I would look into using LXQt.

Following with Mate, Cinnamon, Gnome, and KDE these are our heavier usage Desktop Environments, these often show RAM spikes at about 150 - 300 MiB. Boot times vary, ranging from 20-45 seconds to terminal. I noticed a trend with these Desktop Environments as well, that they follow a more Keyboard Centered design for easier work-flow and Touch-Screen functionality. All are clean and look like a modern desktop I would recommend either KDE if you are coming from Windows and need a familiar space. Or for those wanting to feel what modern GNU/Linux is like, I recommend Gnome.

Free Open-Source Software Alternatives

When switching to GNU/Linux it can be difficult to find helpful and functional alternatives to common software while also maintaining your freedom. Using FOSS (Free and Open Source Software) can be liberating and allow you to work in a well maintained environment. To find GNU/Linux based alternatives to popular software you can explore here https://alternativeto.net/platform/linux/

Software Minimalism

This is a quick description of Software Minimalism and philosophy as well as the overarching ideals of the philosophies that branch off from it. Software Minimalism is a philosophy inherent to many GNU/Linux distributions and other Unix like operating systems, a common talking point among software enthusiasts. Software Minimalism encompasses the Unix Philosophy. You can read more here as I will be going over most if not all mentioned in the following...

Unix Philosophy

The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Unix developers brought their main focus to software, which was to be modular and reusable. This spawned the "software tools" movement. Over time, the leading developers of Unix established a set of cultural norms for developing software, these norms became as important and influential as the technology of Unix itself, this has been termed the Unix philosophy.

The Unix Philosophy is often summarized as...

These both lead us the to the Suckless Software Project, suckless.org is a community of programmers working on minimalist free software projects with a focus on simplicity, clarity, and frugality. The group developed dwm and wmii window managers, surf, tabbed, and other programs that are said to adhere strictly to the UNIX philosophy of "doing one thing and doing it well." The suckless community was founded by Anselm R. Garbe from Germany in 2002. He became a vocal proponent of the suckless philosophy, saying that "a lot went wrong in the IT industry recently ... be recognized in order to rethink the common practice, and perhaps to think about the time when Moores law stops being a valid assumption." The suckless manifesto deplores the common tendency for "complex, error prone and slow software that seems to be prevalent in the present day software industry", and argues that a programmers performance should not be measured by the number of lines of code he writes. The development team follows the New Jersey style of "Worse is better" and adheres to the KISS principle, Keep It Simple Stupid.

Justification For Minimalism

By Following the Unix Philosophy we can...

A system cannot be minimal if it uses Poettering made software or any free-desktop maintained software, this includes...

Minimal Operating Systems

While most modern GNU/Linux Distributions begin to stray from the Unix Philosophy, there are few that adhere to it more so than others. Though this section could be rendered as irrelevant for those who are knowledgeable in GNU/Linux and Unix like operating systems, all can customized and changed to meet the Suckless Software Minimalism standards.

I would also like to mention that in regards to Net Installs or other Minimalist Linux distributions that use the GNU userland and systemd are to be considered not minimal systems but you can also include...

Window Managers

Currently most GNU/Linux and BSD distributions use the X Window System for drawing the desktop, while the X System does not manage the windows, instead it depends on a special client application called a window manager. The window manager moves and sizes windows in response to user input. Window managers can be divided into these three categories...

Full Featured Window Managers

Full Dynamic Window Managers

Full Stacking Window Managers

Full Compositing Window Managers

Minimal Window Managers

Minimal Dynamic Window Managers

Minimal Tiling Window Managers

Minimal Stacking Window Managers

Any configuration of Operating System and Window Manager would suffice as long as used with Suckless or similar software. While Software Minimalism can be an extreme approach to computing, it can be extremely helpful in learning about and appreciating GNU/Linux. I would implore you do take some time and read more about the previous software and test out some the Linux and BSD distributions to see if you find any you fancy. Remember however that GNU/Linux is fun to use and a exploratory process. Do not worry about abiding by this philosophy if your personal needs are not met.