Home | Blog | Videos |
Posted: Fri, 06 May 2022 12:33
Last edited: Sat, 07 May 2022 12:37
Tags: free-software software
I had this thought today when I thought about all the small programs I make in order to acomplish some simple task. One example is the temporary file hosting service that I made this week. How does small programs play in the GNU/Linux sphere?
The way that GNU/Linux systems are built is by using a lot of small programs that work together. The UNIX philosophy, which the OS is based on, is that one program should only perform one task and then you chain or combine different programs in order to perform the desiered task. If we take my temporary file host as an example. It uses five different programs in total. These are Python, Nginx, find, rm and crontab. These programs in turn use even more programs under them. Nginx uses open-ssl for https connections for example.
By separating programs in this way we can easily pick and choose what we want to use in order to perform our desiered task. It makes it very easy to build custom solutions as long as you know how all the different parts work. Of course this is a double edged sword. While the small programs are easy to learn and understand, you have to learn a lot of them before you will be able to do things with them. Some of them can also be very complicated to use. Take sed for example. There are simple things you can do like string substitution, or more complicated operations which I am not even aware of. The same applies to the text editor vim. I only do basic insert, yank paste, string substitution, but there are tons of stuff you can do with it.
If we go back to the small programs. GNU/Linux is made up of small programs, and a lot of them are made by different people. My temporary file host program was made by me, and only supposed to solve one task for me. I just decided I would share the source and allow others to use it. The UI of the program was only made with me in mind and not for anyone else to use. I think this could be a reason why people think GNU/Linux is difficult to use. A lot of the different programs you need to use where made by a person or group that just needed to solve their own issue, and then decided to share their program. It was not made to get people to use their software, but to help themselves in their daily lives.
If you think in this way it is not hard to see why people are being put off by the using the OS. Every program is different because they where made by different people who only wanted to solve their own problem and later share their solution. Nothing more. If you compare it to a Windows OS, most programs are made in the same way in order to make a more consistent and smooth experience. Just a simple thing as the file explorer being part of the main OS. In GNU/Linux you can pick from a lot of file explorers because there is no default.
This is where we enter the realm of distributions. A GNU/Linux distribution is a pre-packaged collection of programs that make up your user experience. Some distributions will focus on simplicity, only selecting lightweight and minimalistic programs. Some may try to be a more complete OS, adding on media players, editors and collaborative software in order to make the experience more complete. Some may want you to pick out every single program yourself. No matter what you choose you will need to learn the distributions way of doint things, and everyone does something different. There is no default or standard on how things are to be done.
Now why is GNU/Linux difficult? Lets go through the steps.
First you need to pick your distribution. What is the difference between them? What is best for me? Usually people ask me what distribution to use, and I always ask: What do you want to do on your computer? Is it browsing the web? Is it writing documents? Is it playing games? Maybe all of them. The simple answer is that you have to try a bunch to find the one that suits you. A suggestion is to begin with the more established distributions like Linux Mint or Fedora. Remember, all distributions are just collections of programs and any distribution can do what any other can do if you just know how to do it. If you wanted to you could convert one distribution into another.
Secondly you have to familiarise yourself with the new way of doing things. GNU/Linux is not Windows or MacOS and things will be done differently. Again, most programs and tools you will use are just some program someone or some group made in order to make their life easier. If there is no program to perform a task you have to make it yourself or pay someone to make it for you. A common thing I often hear is that "you go through great lengths to acomplish something that is so simple to do in Windows". And this is usually because nobody has made it before on GNU/Linux. We may look at others who have invented the wheel, but we still have to construct it ourselves before we can use it. Their wheels do not fit on our cart.
Finally I want to address the usage of cross-platform software, or software that is not native to run on Linux. The most common example here are games. If you install Steam on GNU/Linux you will notice that most games do not run. At least not by themselves. This again is because their wheels do not fit on our cart. Not without a special adapter in between. You may have heard of Wine or Proton. These are programs that translates program instructions that are made for Windows to be able to run on Linux. As you may expect it works sometimes. And most times not very well. If you try to put a four bolt tire on a car with five bolt it will not fit. Sadly most people in this case will blame the car and not accept that the tire don't fit.
Lets summarize a bit.
Operating systems like Windows and MacOS are complete operating systems by themselves and developed by a central group. This makes them have a consistent UI and way of doing things across different programs. Unlike GNU/Linux, which is built of programs made by different people, that all work together to make the operating system complete. The very nature of how GNU/Linux is made makes it difficult to create concistency in the experience across different programs. You just have to learn and live with it if you want to use it.
If a program should run well on Linux it needs to be built for it. Running Windows programs using a mid-layer like Wine or Proton will at times make the experience unplesant or not work at all. Do not expect it to work if it is not Linux native.
A final note on distributions and specifically Arch Linux like distributions. Arch Linux is a particular type of distribution in the way that it will not select programs for you like most other distributions. You will get a very barebone selection of programs that will just make the operating system run. If you want any desktop environment or programs to run like web browsers or media players you need to install and configure them yourself. People who use GNU/Linux for a while usually want to eventually try out Arch Linux, Gentoo or some equivilant. And all the steps required to make this operating system usable to the point where you can actually get work done can be very overwhelming.
It took me almost ten years of using different distibutions of GNU/Linux to get to level of knowledge and trial and error to get to an experience that was right for me. I have probably tried out tens of distributions and reinstalled Arch Linux the same amount of times in order to be happy with what I wanted. Do I think it was a waste of time? Not at all. I have a system that I enjoy using, that never tells me to do anything and that is personalized just for me.
Discovering GNU/Linux is not an easy task I have to say. But it is fun and once you find what works for you, you will be more productive than using any other operating system. I am sure of it.