Is Linux for you?

I see a lot of articles about Linux on the Internet. Mostly written by experienced users, they, almost as a rule, either oversimplify things (so people get disappointed) or include too many details (so new users get overwhelmed). I will try to write something here that is not necessarily aimed at new users, but will certainly try to clarify certain details that are good to know.

 Tux is a friendly penguin, Linux' mascot.
Tux: the Linux Mascot: Tux is a friendly penguin, Linux' mascot.

Linux is is usually pronounced as lee-nucks, but people all over the planet pronounce it differently. Some say lee-nooks, for instance. Anyway, it is not so important.

One of the problems new Linux users face is that they are used to commercial products like MacOS or Windows which integrate all components of an operating system into a single package. Since the separation of different components is not evident, user get confused when they sit in front of a Linux system which encourages separation of components and in which components all come from different vendors. Because of this, I will try to 'explain' Linux component by component, to let you have a quick overview of what Linux is, what it is made of, and how it all works together.

What is Linux anyway?

Before we delve further, you have to know one thing. Linux is an operating system kernel. A kernel is something that makes everything work, but does nothing useful on its own. By useful I mean "something that is meaningful to end users", which is again a poor definition, but when I say "browse the Internet", or "view your digicam images", that's what most people on their desktops think is "meaningful and useful". So kernel won't let you browse the Internet or view digicam images, but it will allow software that do to use the network interface (a piece of hardware that will allow your computer to connect to any network including Internet), or detect and make available you digicam when you plug it in.

Okay, so we have "Linux the kernel". Although Linux is formally just the kernel, we also call an operating system running on Linux a "Linux operating system", or a "Linux distribution". There are people (quite many, actually), who call Linux a "GNU/Linux system" or "GNU/Linux distribution", but that distinction is purely philosophical and I will not go into that here. Important thing is we can differentiate between the kernel as a operating system component, and the system as a whole.

So what software do we need to make your PC (or Mac) useful "useful"?

Graphical and text interfaces

A user interface (graphical or otherwise) is the software component (part of a system or application) that allows a human to do something to the PC. (In that respect, a sledgehammer is a hardware user interface as opposed to software user interface we are going to discuss below.)

In Windows, the user interface seems to be the system itself, because it is tightly integrated into it. You can see the separation when a component called "Explorer" dies on you. You are left with an empty desktop with no icons or the "Start" button. The operating system kernel is still running, but you don't have an interface, so you can't do anything with your PC. You usually bring up a task manager and restart "Explorer" or you reboot your machine at which time Explorer is restarted. The user interface component of Windows is, therefore, Explorer.

This interface is also called "shell", because it envelops the underlying system like an egg shell. In Linux, there are many many many different shells, and all of them fall under two categories (by the way they present themselves to the user):

  • text (command line) shell
  • graphical shell

Both are perfectly usable and you can do pretty much whatever you want in either of them, but all shells exist to fulfill different needs. This is why you can usually choose a shell that suits your needs. But in order for you to find a shell that suits your needs, you have to try all of them (or at least a couple) on, before you know what different shells to, and what you get out of them. (If this seems like too big a hustle to you, most Linux systems offer a default shell you can stick to if you don't like to dive too deeply into this topic.)

Major text shells include bash, zsh, and many others. Most Linux systems will have bash on them and will allow you to access it either directly, or through specialized software (terminal emulators, or consoles) from within a graphical shell. But if you don't know if that's useful to you, chances are you won't be using them.

 The simple text inteface is a heaven for advanced Linux users, and offers many features for making repetitive tasks easy to accomplish. (Image taken from Wikipedia)
Bash shell: The simple text inteface is a heaven for advanced Linux users, and offers many features for making repetitive tasks easy to accomplish. (Image taken from Wikipedia)

Text shells are very powerful and efficient, but they require you to know shell commands, and forget about the mice. They don't have icons, and they won't present you with dialogs with check boxes and all the familiar gadgets. But some people still use them because of the increased speed and precision of what they do.

Graphical shells are what most of you are familiar from Windows and MacOS. It's the buttons, windows, taskbars, system trays, whatever you use daily to tell your PC what you need or receive response from it. Major graphical shells on Linux systems include KDE, GNOME, Xfce, Fluxbox, Enlightenment (sometimes called E16 or E17 depending on version number), and more exotic ones like dwm, and so on, and so forth.

Apart from being more or less familiar to newcomers from Windows and MacOS, all those graphicall shells are aimed at achieving different goals. Those goals may be offering more tools for system administration, offering a complete set of productivity and entertainment tools, offering just a minimal graphical shell over the text shell without sacrificing the usefulness of the latter interface, adhering to standards, etc. You may or may not share those same goals, so it all boils down to what your own goals are. I myself took about three years of trying out and using different graphical shells, and ended up settling for the minimalistic awesome which offers a very simple and thin layer over bash (or whatever text shell you choose). One mistake people make is divide all those graphical shells into crude and sophisticated ones. There are no such categories. Each graphical shell serves some purpose, and usually serves it well, too.

Here is a comparison of what a graphical shell and text shell look like doing exactly the same things:

 Konqueror is a file manager (like Windows explorer) created for the KDE graphical interface.
Konqueror, file manager of KDE graphical shell: Konqueror is a file manager (like Windows explorer) created for the KDE graphical interface.

 Regardless of how it looks on the surface, MC is one of the highest-rated file managers on Linux.
Midnight Commander, a text mode file manager: Regardless of how it looks on the surface, MC is one of the highest-rated file managers on Linux.

 Pidgin is a familiar graphical application for instant messaging.
Pidgin, instant messenger for GNOME graphical interface: Pidgin is a familiar graphical application for instant messaging.

 Mcabber doesn't seem too difficult to use, does it? It really isn't.
Mcabber is a text mode instant messenger: Mcabber doesn't seem too difficult to use, does it? It really isn't.

 Here's an example of a graphical web browser
Firefox, a familiar face on any OS: Here's an example of a graphical web browser

 I know you might be thinking something like "Who uses THIS?!", but I do use it, and find it far more usable in some situations.
Lynx: text mode browser: I know you might be thinking something like "Who uses THIS?!", but I do use it, and find it far more usable in some situations.

As you can see above, there are many tasks that can be done in both text and graphical shells. The way you do those things is fundamentally different (not better or worse, sometimes not even comparable in any way), and your preference is usually dictated by the level of knowledge you have and by your specific needs.

Applications

You saw some of the applications in above screenshots, but there are many many more. Applications are the software that get the job done. Those are the things that get the tasks completed. Music players, word processing applications, image viewers, web browsers. All those are there to serve your needs.

However, this is Linux, so forget about Windows and Mac software. Linux has its own versions of those. Well, not quite true. You can indeed run some Windows applications on Liunx using Wine. And then you have many native Linux applications (applications that were developed specifically for Linux). And then you have those that have no equivalent on Linux.

Listing all Windows and Mac applications and their Linux counterparts is not my job (I would do it poorly anyway because I no longer use Windows). But Google is your friend there (as with most things Linux) so search for those lists (there are a couple around).

What I will talk about, though, is the way applications are installed in Linux. There are many versions of Linux available, called "distributions", or "distros", and each distro has its own way of organizing folders, they run different versions of Linux kernel and basically work a bit differently. The same thing we said about goals and different shells apply to distros as well — different goals produce different distros.

So, each distro has software that was specifically modified for it. You have Firefox on Mandriva Linux, Ubuntu, or OpenSuse, but they are not exactly the same. They work the same way, the look the same, but internally, they were tweaked to run on the distros that have packaged them. I say "packaged", because that's the term Linux users use to describe the process of modifying a piece of software to run on a specific distro. The "package" itself is also a self-contained file that can be downloaded and installed on your system. It's similar to an "installer" on Windows, only it doesn't do the actual installation.

So, how do you find, download, and install a "package"? It depends on a distro, but a vast majority of distros have specialized application that comes with the system, which handles all three of the mentioned tasks. Such applications are called package managers. A package manager will usually connect to an online site which hosts packages (called "pacakge repository"), download a list of packages on that site, and allow you to browse or search through the list using a simple or complex keyword search. You can select packages based on the list and ask the package manager to download and install it. Yes, that's right, you ask the package manager to do it for you. You don't search for applications on the Internet (although you can do that, too, in most cases). You just look at the list, and say: "Give me this, this, and that package." On some distros, though, you don't get a full description of a package, so you need to look it up. There are many websites for finding packages and/or related information, but you can usually get the info using Google.

 Synaptic is widely considered one of the most complete and easiest package managers. Most distros have their own, however.
Synaptic: one of the most popular graphical package managers: Synaptic is widely considered one of the most complete and easiest package managers. Most distros have their own, however.

The above image shows the Synaptic package manager in action. It is the default package manager on Ubuntu. (I hear someone say: "Default?! You mean there are MORE?!".) Almost all distros that have package management software have at least the text interface package manager. Most od those distros also have a graphical package manager (like Synaptic). Again, we have the different goals thing here. Some people like to use text interface package managers, some like to use graphical package managers. There are even those who use text interface package managers even though they are using only graphical applications otherwise.

 Pacman is one of the cleanest and most efficient text interface package managers. Even new users sometimes prefer it over graphical package managers.
Pacman: text mode package manager from Arch Linux: Pacman is one of the cleanest and most efficient text interface package managers. Even new users sometimes prefer it over graphical package managers.

Now is a good time as any to demonstrate the difference between package management in graphical and text interface managers. In Synaptic (see image above), you do this:

Click on the "Search" button near the top. The type in the name of the software or some keyword to search the descriptions. The list on the right is updated with search results. You pick a package you want, right-click on it, and click on "Install". Let's say we want a package "9wm". Then you click on "Apply" button to the left of "Search", and confirm in a dialog (maybe enter a password if you haven't done so when you opened Synaptic; I'll explain password later), and the package is installed.

From text shell, using pacman, all of the above is done using a simple command: "pacman -S 9wm". I mean, ALL of the above clicking.

If you compare the two methods, you can clearly see why some people may prefer the latter, even though it may look a bit cryptic and mysterious at first.

Now, when you install a package, you will usually notice that more than your package is installed. Those other packages that are installed automatically are called "dependencies". In open-source world, it is customary to reuse other person's work if it does what you need. So, instead of creating a downloader for his brand new torrent program, a programmer may reuse aria downloader in his project. The result is the new XYtorrent application requires you to install both itself and aria. But, it is not such a problem. Why? Because XYtorrent doesn't include aria, so it is that much lighter.

Miscellanea

Done already? Well, pretty much. There are some issues I need to cover before I wrap this up, though.

Games. Yes, we all love them (well, I don't really, but I know you do :P) and we all play them. How's Linux in that respect? Well, not too good, I'm afraid. Most commercial titles are never released for Linux, and there's usually no way they can be convinced to do so. I guess this can only be changed by a lot of people requesting games to be developed for Linux, but I also guess most people won't.

Drivers and hardware Linux handles most devices surprisingly well. In a typical desktop PC, there will usually be only one or two devices a Linux will not support out-of-the-box. One in two of such devices will work after installing appropriate drivers, and the other one will simply whine. The whining hardware's vendor should be proper hanged, but that's only my opinion. The fact is, most hardware vendors still don't develop drivers for Linux. The amount of hardware that works on Linux is a result of purely volunteer work done by many thousands of skillful hackers that produce drivers without ever getting paid by hardware manufacturers. Can you believe that? Well, you'd better.

Multimedia codecs Linux will play most anything you throw at it, provided you don't live in a country that believes in software patents (like the United States). This is no longer a technical issue, but an issue of Linux distros not wanting to be sued for shipping codecs with their system. It's a war of intellectual property rights, and nothing to do with Linux. If you live in a software-patent-free country (in EU, for example), you can watch anything on Linux.

What is expected of you Most new users don't realize that Linux and Linux systems are result of many volunteer hours put in by people who care about software freedom. The first part of the last statement (volunteer) means vendors of open-source software usually don't get paid, don't give you technical support, and don't expect you to be either happy or sad that the software does or doesn't do what you expect. This means that you have to be willing to offer help or find help on your own when you need it. From my personal experience, I can tell you that most hackers and other community members will gladly help you out when you are in trouble, but you usually have to show that you care, and that you understand "the way things work" in the open-source world. The second part of the above statement "care about software freedom" means that community members are usually highly political about such issues as software patents, open-source development model, etc. You will do yourself a huge favor by getting yourself familiarized with such concepts. Read such articles like Wikipedia's "Free Software", "Open source", "Software license, or, if you are not into reading, watch a movie like "Revolution OS".

I know it's a lot to read

Yes, I know this is a longish article, but I think there isn't a shorter way to introduce people to Linux. Perhaps this is even shorter than absolute minimum... I hope you understood at least a little bit about Linux by reading this, though. And I hoe you use Linux some day soon. ;)

If you have any questions, you have a contact form on this website.

Reply

The content of this field is kept private and will not be shown publicly.

Powered by Drupal - Design by artinet