Often Linux is called an operating system which contains of the Linux Kernel, the GNU Userland and third party open source software. This definition is not completely wrong but it is not exact enough. I want to describe Linux from the user perspective, that means which kind of tasks a Linux system is used for.
It might be a look surprising, but the FreeDOS website can help to explain what Linux is. FreeDOS comes with some tools for connecting computers together, this is called “Networking”. It is only one feature in FreeDOS but it might be interesting to focus on it. Here http://wiki.freedos.org/wiki/index.php/Networking_FreeDOS is the official documentation given. On the first look, this has nothing to do with Linux. Because the FreeDOS kernel works different, and Linux doesn’t have programs like mTCP. But reading the documentation makes sense, because it makes clear what the usage scenario is.
In the first chapter it is explained how to install the networking tools. This is made with a GUI based package manager who provides a dedicated networking section. The user can select some or all tools from that category. After pressing the Install button important software like FDNET, mTCP and wget is installed. The funny thing happens if the FreeDOS system reboots. It looks very similar to a LInux bootscreen. Not on the first look, because the output is different and the reason is that FreeDOS and LInux are different systems. But the ideology behind is equal. What FreeDOS is doing after reboot is loading first the FreeDOS kernel and then loading some networking drivers for LAN card and he is trying to set up the DHCP connection.
I want to describe the situation from a more abstract level. If FreeDOS reboots with networking capabilities the idea is, that the PC is foremost part of a larger computer network. That means, the PC is not seen as a standalone PC which boots up the himem.sys file and loads the command prompt, but the idea is, that the computer has a lan card, is connected to a router, is able to ping other computers and that the kernel is using device drivers to speak with the ethernet devices. That is the same ideology known from Linux. The surprising information is, that it is possible to see FreeDOS from the same perspective.
In most cases, Linux is compared against Windows or FreeDOS. The better approach is to compare FreeDOS with FreeDOS, or to be more explicit, to compare a FreeDOS which is used for playing games, with a FreeDOS used for networking purposes. In such a comparison, Linux is out of the loop. That means nobody is interested in the software developed by Red Hat and GNU, instead it is a FreeDOS only show. The normal way of using FreeDOS is with the purpose of a standalone PC. That means, the computer has a floppy drive and a harddrive and the user starts from the command prompt games and a wordprocessor. This use case is the scenario most people are familiar with it.
But what happens, if we use FreeDOS for networking? At first it is necessary to install dedicated networking hardware which is a ethernet card, a modem and a wifi card. Then we need device drivers which have to be loaded by the FreeDOS kernel. And then the overall system has to be configured. That means, we have to define, that the localhost is equal to 192.168.1.1 and that for testing purposes a router in the same network provides the DHCP address. This use-case is from a technical point of view possible, but most users are not familiar with it. They never heard of ethernet or IPv4.
From a technical point of view, a networking ready FreeDOS installation can’t be called Linux. Because the system is not able to execute ELF binary files, it has not a bash but a prompt, and the device drivers are not open source. But from the use case itself, it looks very similar to a linux box. Because the idea is the same: to connect a standalone PC with other computers over the Internet. The question is: does the ordinary user need such networking capabilities in FreeDOS?
I wouldn’t call Linux an operating system. It is more a behavior pattern which is equal to networking. Any PC which is connected to the Internet and uses kernel drivers for accessing ethernet hardware can be called a Linux box. Or to be more specific: the user is trying to use the computer like a Linux box.
Let us try to reduce Linux to it’s core feature. What is not important for a Linux operating system? Everthing which has nothing do with networking or software development. That means, things like a GUI, computergames or the ability to play sounds and videos are obsolete. In it’s core feature, Linux boots up the kernel, detects network devices and connects to other computers. Does this description fits to what is known about Linux in the mainstream? Yes, very well. All the other features Linux has to offer can be seen as additionally. In it’s core philosophy Linux has it’s strength in the use case networking and software developing. Such a feature is not part of the system itself, it is more the use case what people are doing with Linux.
The use case of MS-DOS and Windows is different. Here is the idea, that the computer is first a standalone PC which has applications. For example a game or a spreadsheet while the ability to connect the computer to a network has a lower priority. Is that the reason, why Microsoft Windows based smartphones were never a success? Because a smartphone is according to the definition a networking device. And features like a GUI or the ability to play games are created on top of this layer.
Let us explain under which conditions, Linux will work without major problems. Suppose, the graphic subsystem in Linux is broken, because the latest nvidia driver isn’t working well together with the X-Window system. The surprising information is, that the user will not recognize the bug, or if he is aware of it the priority is low. But what will happen if the networking subsystem of a Linux system is broken? That is a major incident. The user will try to fix the problem as fast as he can because he is using LInux primarily as a networking device.
In MS-DOS and Windows environments the situation is the other way around. If the network card of a WIndows PC isn’t recognized, no major bug report will created. The problem can be ignored, because all the games and desktop applications are running great. The network device is a less important aspect of the overall system, comparable to the C compiler. Most people are not aware that such a feature exists. That means, if the admin of a Windows PC will deinstall the C compiler, most user will not recognize the missing software, because they never used the program in the past. In contrast, a Linux user will recognize the missing GCC compiler after a day, because he want’s to compile the LInux kernel or his own application.
The main difference between Linux and Windows is not the software itself (open source vs. proprietary) and it is not the kernel (Microsoft kernel vs Unix like Kernel). The main difference is the use case: networking/softwaredevelopment vs. desktop applications/games. Migrating to Linux doesn’t mean to install the Linux operating system instead of Windows, but migrating means to switch the use case into the direction of networking and software development. This can be done also in Windows. There is no need to switch to Linux physically. If a user is compiling c programs within WIndows, and is installing a fileserver too, he changed his behavior.
Networking in WIndows
Suppose we don’t Linux very much and want to make a bit advertisement for Microsoft Windows. How would look a book like, which is about networking and software development in Windows? It would contain perhaps chapters about the TCP/IP stack, about network cards, about IPv6, about the C standard library and so forth. The most interesting aspect of this book is perhaps, that even it is dedicated to the Windows operating system it will look like a Linux bible. And even if the author avoids to reference to Linux, there is a need to explain the situation in both worlds. That means, at the end the title would be similar to “networking and software programming in Linux and WIndows”. That means, there is no real difference in the operating systems, the task is in both worlds the same.
The book “Gilbert Held: Windows Networking Tools: The Complete Guide to Management” is a good example for this dilemma. Suppose the user doesn’t like Linux very much and is not motivated to use the shell for configuring network cards, tracing TCP/IP packets or using snort for protecting the network. The problem is, that the user will confronted in the book with all these evil things which are usually located in the Linux domain. According to the title, the book is about Windows networking, but the book has the same language style used in the Linux community. That means, if the user hates Linux, he will hate this book as well.
On the first pages, the book starts harmless. There are some screenshots given which shows the MS-Outlook application which contains E-Mails. The idea is, to introduce the reader into what is possible with a networked computer. But in the following pages the difficulty is increasing rapidly. The user becomes screenshots of a command prompt, and diagrams with abstract networking charts. In chapter 8 the user has to memorize commandline switches for the snort tool for example the “-A switch”, “-b switch” and so on. That means, even in the title the Windows term was used, the book doesn’t feel like windows. It looks similar to a hardcore networking bible for Linux experts.