The following is a piece from my previous blog. I had written it in one of my diaries and since that blog of mine is no more, I would like to publish it here. My views on Linux/GNU and why it is one of the most amazing thing you will ever learn. Here it goes...
What is Linux?
In the early 1990s, Finnish computer science student Linus Torvalds began hacking on Minix, a small Unix-like operating system for PC then used in college OS courses. He decided to improve the main software component underlying Minix, called the kernel, by writing his own.
In late 1991, Torvalds published the first version of this kernel on the Internet and called it Linux, a mix of his own name and Minix.
When Torvalds published Linux, he used the GNU's General Public License which made the software free to use, copy and modify by anyone provided that the copies and any variations are kept equally free. Torvalds also invited contributions from other programmers. Though these contributions came slowly at first, as Internet evolved, thousands of hackers and programmers from around the globe contributed to his free software project.
The Linux software developed so quickly that today, Linux is a complete modern OS, which can be used by programmers and non-programmers alike.
What makes Linux so special?
The building blocks of Linux OS are the 'tools'. If you ask for a rough definition, 'A tool is a small piece of code that is designed to perform one and only one task with great precision'.That's it.
The entire Linux concept is based on thiese little pieces of code. Most operating systems (like Microsoft Windows) have large utilities called applications. These applications can perform a large number of functions or tasks, for example word processors, presentation designers or a web browser. Along with their main tasks, this applications also perform some side tasks like search, replace, spelling checks often found in all applications. The source code for these applications is stored separately (or each binary has a separate set of these instructions) for each application, hence taking up more space on disk as well in memory.
These applications are often closed source, meaning it will do your job like magic, but you will never understand what is happening in the background (like what methods are implemented to search, can it be revised to make it more efficient and such). Hence programmers can never learn, use or build anything from it. The end result of this approach is that the same functions inside all these different applications must be built by programmers from scratch, separately and independently each time - a set back to the progress of the society as a whole and waste of countless man hours and energy that programmers use to code the same thing again and again.
This is where Linux is special. Most of the tools (or all, for that matter) are open sourced, programmers can integrate them straight away without much effort to build something that takes the community as a whole ahead at a faster pace. Also, you don't have to spend any time debugging the tools most of the time because it is almost always that someone has used it in production before and rectified the bugs, as they are always there. Saves a lot of time for us, as developers.
There is also this interesting functionality called 'pipes'. Pipes behave as one would expect from the name. It 'pipes' the output of one tool to the input of another. If you didn't think about it already, you can create powerful tool chains that do multiple tasks in co-ordination giving the expected result, and using individual tools in sequence would have. Just as the tensile strength of steel is greater than the added strengths of its components nickel, cadmium and iron - multiple tools could be combined to some unpredictable results than that of the individual tools, called as the concept of 'synergy', basic philosophy of all GNU/Linux tools.
These basic tools which have been improved over these decades are crafted to do a particular task to perfection, and even if it doesn't fit your requirement, you can always grab the source, edit it accordingly and use it. If you want to keep up with the open source spirit, post it online so it will save some time of someone with the same problem. These small tools can be a power weapon in the hands of a Linux expert, or Wizard as we call them.
Note that when I use the term 'Linux, I mean GNU/Linux. The entire thing wouldn't be possible with either one. Linux is the kernel and rest of the OS is GNU. More information here: https://www.gnu.org/gnu/linux-and-gnu.html