This article answers one of the most asked questions, “Is Linux an operating system?”. Most of it is discussed in the history of Linux and UNIX, where I explained how UNIX was developed, how it got propagated and ultimately why and how Linux was developed.
Before reading further, take a moment and try to think about the answers to this question based on your existing knowledge or by reading the UNIX vs Linux story, and seriously, this is very important for you as a reader. The question is:
Is Linux an operating system, a kernel or is it both? Or should we call it GNU/Linux?
After you’ve got an idea about this question, let’s try to make some conclusion out of it.
I want to tackle this in two ways, first we’d look at the English language, by how we use the English language and then look at some of the technical things to do with Linux and the GNU project and so on.
One of the strengths or weaknesses of the English language is that you can turn nouns into verbs. For example, you might say, “I’m going to Google something.” and here “to Google” is a verb. But we all know that actually Google is a company, it’s a noun. What we really mean is, “I’m going to search for something using Google’s search engine.”
English professors probably hate this kind of thing, but we use it all the time. One more example, you might say, “I’m going to Xerox this page.”, but actually you mean to say that you’re going to photocopy this page using the photocopy machine by the company Xerox. There are lot more examples of this and you must already be aware of this.
Can Linux be called an operating system?
We’re so used to taking names and making the meaning more than what they really mean. And this is also true with Linux. We have extended the name of Linux, the kernel that was originally written by Linus Torvalds and we’ve used it to incorporate a whole bunch of Linux distributions that includes various components that includes various components including the Linux kernel.
That’s what most of the people love about the English language that it is so flexible. The reason is because it’s spoken in so many nations across the world, including, United Kingdom, United States of America, Australia, Canada and so on.. that actually we get to different versions and variations coming up and this makes the language relevant in today’s world.
Therefore to call the operating system Linux, not GNU/Linux is acceptable and there’s not a problem with it.
Now that is the language side of it, what about its technical side?
Let’s try to understand that using a few questions.
What is an operating system?
Major sources define operating system as:
1. The low-level software that supports a computer’s basic functions, such as scheduling tasks and controlling peripherals.
2. A system software that manages computer hardware, software resources, and provides common services for computer programs.
3. A set of software products that jointly control the system resources and the processes using these resources on a computer system.
If you take any of these definitions, then the Linux kernel is an operating system. Therefore, it is completely acceptable to say that you’re using the Linux operating system according to these resources.
Now as a programmer, should we make a decision according to these resources?
Operating System and Design Principles: William Stallings
Maybe we shouldn’t be looking to dictionaries to define an operating system without getting enough information about it. But here’s a book, which really is one of the most important books about operating system design called Operating Systems and Design Principles by William Stallings.
If you do any kind of computer science course at University or online, this is a must read.
In this book, Stallings defines an operating system like this:
An operating system(OS) uses the hardware resources of one or more processors to provide a set of services to system users. The OS also manages memory and I/O devices on behalf of its users.
This is the first time where we get the definition according to the users of an operating system. The operating system is the software and there are people who use the operating system to perform certain tasks.
That implies a user interface, a way the user interacts with the hardware.
Stallings goes on further to say that there are three ways you should look at an operating system:
1. User’s point of view.
2. The operating system’s point of view.
3. Upgrade point of view.
Now, when you look at it from a user’s point of view, there has to be a set of services and programs provided to the user that implies a user interface. Whether that is a command line, or something with a mouse or a button that you press on some kind of embedded system, there has to be a way of interacting with the users.
The second thing is the OS is responsible for all those resource allocations. It’s main job is to ensure that everything can happen, by making sure that there’s enough space, memory and scheduling time to do all those things.
Third key characteristic of an operating system is that it can be upgraded to support new hardware, services and of course to fix bugs.
Is Linux an operating system according to William Stallings?
Is it an operating system in terms of resource management? Yes, it is. In fact it does that very effectively.
Is it and operating system from the upgrade point of view? Yes it is. It gets updated very often.
Is it an operating system in terms of providing a native user interface? No, it isn’t.
So out of the three definitions given by Stallings, two of them are fulfilled by the Linux kernel. That leads us to the idea of user interface or user space tools.
This is where the GNU project comes in. It provides some tools so that there can be some interaction between the users and the kernel.
Is Linux nothing without GNU?
For example, you get the GCC, which is the compiler for C that has these C runtime library provided by the GNU and most popular or most visible is the bash shell. Bash shell is what you get when you open up a command line window on most of the Linux distributions.
It’s okay to say that without those tools, interacting with the Linux kernel would be very difficult.
But here’s the point you see, there are lots and lots of ways of doing the same things without using GNU tools. For example, if you don’t want to use Gnome, you can use KDE. That’s a completely different project that isn’t provided by the GNU foundation. If you don’t want to use gcc, there is another popular one today, the LLVM or the Clang compiler, which is a completely separate thing to GCC.
Even the kernel itself has a different runtime library, it doesn’t uses the GNU runtime library. That is only used when you use user land/space programs. For example if you install Alpine Linux, which is a Linux distribution designed for embedded system, you won’t find any GNU tools whatsoever, it uses BusyBox as its shell and OpenRC as its init process, and these doesn’t come from GNU.
Now specifically it is designed for embedded systems, but it is a fully working Linux distribution using a Linux kernel for embedded systems. The point here is that it doesn’t use GNU, so you can’t call it GNU/Linux. It’s LINUX, using tools from all over the place.
Why GNU/Linux?– The Linux naming controversy
On expanding the sphere of what is an operating system, even wider to include web servers and databases, then again Apache’s web server, PHP and MySQL come from the GNU foundation.
You can look at Android provided by Google, Chrome, Firefox and all these tools that we use everyday, the make-up part of a modern operating system to be fully usage on a desktop of laptop. They don’t use very many GNU tools, they might use some but saying that its exclusively a GNU thing, is just a full misinformation.
Where does this idea of GNU/Linux come from?
Yeah, right. It comes from the GNU project itself, because they are the ones who want to try to push this idea.
GNU foundation is doing this for two main reasons:
1. The GNU project has actually taken all the ideas from the UNIX philosophy and made them their own. Therefore they say that any system that’s using their tools with a kernel LIKE the Linux kernel is a GNU system. It’s not really a UNIX like system.
But the thing is, it’s not fair that the GNU project can steal everything to say, “If it looks like UNIX, it must be GNU” and just depends on what kernel you’re using. That’s absolutely not true.
2. This is another argument used by the GNU that if you use the word GNU/Linux, then you’re reminding people about free software. That’s slightly a valid point because Linux is itself licensed under the GNU Public License(GPL). Basically that’s just free advertising. They want everybody to advertise their project and their foundation by using their name every time they use the word Linux.
Here’s a quote from Linux Torvalds himself about his opinion on the GNU/Linux rather than just Linux:
Well, I think it’s justified, but it’s justified if you actually make a GNU distribution of Linux… the same way that I think that “Red Hat Linux” is fine, or “SUSE Linux” or “Debian Linux”, because if you actually make your own distribution of Linux, you get to name the thing, but calling Linux in general “GNU Linux” I think is just ridiculous.
He had already commented on the naming controversy:
Umm, this discussion has gone on quite long enough, thank you very much. It doesn’t really matter what people call Linux, as long as credit is given where credit is due (on both sides). Personally, I’ll very much continue to call it “Linux”,…
The GNU people tried calling it GNU/Linux, and that’s ok. It’s certainly no worse a name than “Linux Pro” or “Red Hat Linux” or “Slackware Linux”…
Linux is just a punny name—I think Linux/GNU or GNU/Linux is a bit more “professional”..
One of the best comments that I found on Gary’s video, from where I’ve taken the idea is:
“Gary! I LOVE THIS VIDEO! What about the GNU tools now available in Windows 10? Why don’t we see the FSF pushing an agenda to start calling it GNU/Windows?”
Comment by Richard Stallman:
So if you were going to pick a name for the system based on who wrote the programs in the system, the most appropriate single choice would be GNU. But we don’t think that is the right way to consider the question. The GNU Project was not, is not, a project to develop specific software packages. […] Many people have made major contributions to the free software in the system, and they all deserve credit. But the reason it is an integrated system—and not just a collection of useful programs—is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically wrote, or found people to write, everything on the list.– Richard Stallman
The GNU foundation
The most important organization for open source!
While discussing about all this Linux naming controversy, we must never forget the contribution of GNU foundation in the open source space. One can say that GNU is mostly responsible for what we have today as the Linux community, it’s just that people like to call it just Linux, and not GNU/Linux.
Linux is a kernel, but it’s also an operating system in the sense that it’s a kernel that ships on everything from raspberry pi, desktop PCs to right up to mainframe servers used in supercomputers. It’s the same source code that’s used in all those kernels. Build around that kernel, there are a set of tools that you need to interact with that kernel. Some of those tools come from the GNU, while some come from completely other places.
So you don’t have to just give all the credits to GNU, but to everybody who has contributed to this whole great system in any way. And as a universal name for that whole system, we call it Linux. It’s as simple as that and this is not a problem.
So is Linux an operating system or not? Should we call it GNU/Linux or just Linux? Share what you think in the comments ❤.