Linux is a mixture, windows is a compound.

The differences between Linux and windows are chalk and cheese in respect to how the two operating systems are put together. While the end result of putting together these operating systems are pretty much the same functionality. It is the way they are put together which ultimately determines the true underlying nature of these layers between man and machine.

As I stated in the title. If you consider an operating system in chemistry terms you could say that every operating system can be broken down into discrete elements. Those elements, ie kernel, io subsystem, file system, windowing system, etc, etc, are combined to work together to form a whole.

Diverging, I wrote that word whole and was reminded of a joke. There was a man in jail and he wanted to escape. So he rubbed himself against the wall until he was sore. He took that saw and cut the table in half. Then he put the two halves together to make a whole. The man then put the hole against the wall and ran outside. Finally he shouted himself hoarse then jumped on the horse and rode away. Back to the main topic.

Linux is formed as a mixture. All of those discrete elements are combined together to form an operating system. Some examples of mixtures are, cake, chalk, metal alloys, concrete. Mixtures can be very strong, just think of the skyscrapers we love to build or the engine block of your car. They are also very flexible. You can change your mixture to have specific properties for particular tasks.

Windows is formed as a compound. Some examples of compounds are, water, cheese, sugar, salt, acid, rust and plastics. Like windows you see these compounds everywhere you look. According to some people, windows, like these mentioned compounds, are essential to life :) However compounds, unlike mixtures, are inflexible. You cannot break a compound down and reassemble it with different properties. This is because compounds do not keep the original properties of their elements.

As Linux is a mixture, you can very easily configure it to fill different roles. If you want to change the roles of Linux you can easily do that too. You also have a choice of several different elements for a particular role. For example, there are a number of file systems that can be used, or several at once. There are a number of windowing managers that can be used, etc. etc. I believe that this is the main reason why Linux is so strong and stable. Any problem effecting one element of the Linux mixture does not seriously effect the whole operating system.

On the other side of the fence. Due to windows being a compound it cannot be changed. One version of windows is only suitable for a single role. You have no choice in the choosing of elements in windows. You cannot have it work under several different file systems. You cannot replace the windowing manager etc. etc. If you did want to do something like have a different window manager or internet browser then all you can do is layer those programs on top of the windows operating system. You cannot remove the original programs or replace them and the layered programs will never be as integrated as in a Linux system. Like many compounds, windows is also very reactive. Any problems or corrosive substances (virus, spyware) coming into contact with a windows compound effects the whole system.

So while the differences in construction between Linux and windows are like chalk and cheese all I can say is that there are cliffs of chalk. I don't know of any cliffs made of cheese :) Seriously, the strongest structures in both the man made and natural world are mixtures and not compounds. This is another reason why I believe that Linux is the best thing since sliced bread (another mixture :)

12 Comments

Nope, this is not a well thought out analogy at all. For one, it makes assumptions about Windows and GNU/Linux that are totally false.

1) Explorer and Internet Explorer can be totally ignored and third party replacements used. The third party replacements may choose to use GDI, WPF, GTK+, Java Swing or any other windowing system they desire. The KDE folks are working on a pure replacement for Explorer that'll make Window's GUI behave just like KDE running on GNU/Linux, or FreeBSD or any other operating system supported by KDE. Thus, Windows is a Mixture, just like GNU/Linux.

2) Explorer and Internet Explorer and all applications are bound to Win32/Win64 (for x64 Windows) which is the exactly the same way every application on GNU/Linux is bound to glibc. Why? Because glibc cannot be removed from GNU/Linux and all application IO is handled through glibc, not direct calls to the kernel. GNU/Linux is thus a Compound, just like Windows. If you remove glibc, what do you have? You have a Linux kernel, not an operating system.

The fact is that misinformation about Windows is a disservice to your readers and a yourself as it makes you look either uninformed or deceitful.

@Payton
Ignoring explorer and such does not change the fact that they are still there and can't be removed as I stated in my article. You just verified in your first point what I wrote here

If you did want to do something like have a different window manager or internet browser then all you can do is layer those programs on top of the windows operating system.

For your second point glibc is not the be all and end all of Linux. There are other libraries out there, dietlibc is one of them. You can replace glibc with dietlibc if you so wish. There are a few distributions that use dietlibc. That is the advantage of the Linux mixture.

Before trying to call me out on what I do or don't know about windows please get your own facts straight first. The only person who calls me uninformed and deceitful is you. That doesn't hold much water with me.

Because *libc cannot be removed from GNU/Linux and all application IO is handled through *libc, not direct calls to the kernel. GNU/Linux is thus a Compound, just like Windows. If you remove *libc, what do you have? You have a Linux kernel, not an operating system.

Have a good think about what you just paraphrased. Glibc and dietlibc are two different programs that can do the same job. You are saying to remove something and not have a replacement. The idea of changing a mixture is to have different ingredients. In Linux you can have different *libc's which makes it a mixture. In windows you cannot have different win?? which makes it a compound.

Because all application IO is handled through a link library, not direct calls to the kernel. GNU/Linux is thus a Compound, just like Windows. If you remove the link library, what do you have? You have a Linux kernel, not an operating system.

Now how does windows handle it's I/O? Could that same statement be applied to windows?

Having done kernel programing for specialised devices (ok, one specialised device :) I can pretty much say I have some knowledge of what I write about.

Lets just say that what you wrote is true and all application I/O is handled through a link library. That link Library can be changed to use a different one which still means that Linux is a mixture. For example when making concrete. You can use different sand for your mixture but you must still have sand to make concrete.

It seems to me that people don't understand exactly what a mixture is and what a compound is. Wikipedia can tell you.

I was speaking in what if terms there in my last comment to try and illustrate the difference between a Linux mixture and windows compound. When I wrote the words "Lets just say that what you wrote is true" you should have figured I was writing figuratively.

@Locutus
Believe it or not I am not stirring here. I am not talking from a 'Windows is better than Linux' stance, I'm asking you questions to establish just how things work. Never having been a Linux user means that I cannot argue against things as deep as this. You don't need to take on a defensive attitude I am just fact finding.

For instance, if you choose to use dietlibc instead of glibc and you develop a programme while you are using it, do you need to distribute it with your programme or will every user already have it or are they interchangeable?

As you are aware, one of the horrors of distributing Windows programmes is the gigs of extra files you need to send to make sure it will work on the users computer and, I have heard that you don't need to do that with Linux.

I was assuming that your 'compound/mixture' analogy was referring to Linux os being fully contained with no need for these extra files in your programme's distribution which, to me, would make Linux the compound and Windows the infernal mixture that it is.

All the *libc are just standard C libraries which are used in writing and compiling programs. Of course there are some differences in them but as long as your programs stick to the standard stuff then you can use any one of them.

You can can develop a program with glibc and compile under dietlibc or ulibc. Depending on how your programs are compiled then you may not even need the *libc installed anymore. If you require more information then give google a go. That can tell you much more than I possibly can.

In short, yes you can interchange them. If you write your program and package it for any particular Linux distribution then the packaging system takes care of any extra requirements at the user end. All you would need to do is distribute the binary, and make sure that you packaged it properly.

"You can can develop a program with glibc and compile under dietlibc or ulibc"

Thank you! You just proved my point. GNU/Linux is the Linux kernel + glibc. This is what 99.99% of people call "Linux". As has been pointed out before by myself and others such as Richard Stallman, the actual operating system is GNU/Linux. Ubuntu is a distribution of GNU/Linux. Suse is a distribution of GNU/Linux. If you replace glibc with ulibc or some other variant it is no longer GNU/Linux. An application that is thus compiled for GNU/Linux will not work on an operating system that is built on the alternative to glibc.

So, are you advocating an operating system or a kernel? If you're advocating the Linux kernel then your analogy holds no water at all as there is nothing more tightly coupled in the world than a monolithic kernel. When you have to recompile the whole and every module that uses it to change one line of code, that's the epitome of a compound in computer terms.

If you are advocating an operating system, then please specify which one. Linux is not an operating system, and GNU/Linux is tightly coupled to glibc.

Disclaimer: Blog contents express the viewpoints of their independent authors and
are not reviewed for correctness or accuracy by
Toolbox for IT. Any opinions, comments, solutions or other commentary
expressed by blog authors are not endorsed or recommended by
Toolbox for IT
or any vendor. If you feel a blog entry is inappropriate,
click here to notify
Toolbox for IT.