Strictly speaking, Linux is the kernel of an operating system. This operating system is composed of this kernel, as well as various libraries, utilities, and programs that use the kernel to function.
In the early days of Linux, there weren’t many applications or programs. These largely were contributed by the GNU project. GNU (a recursive acronym for “GNU’s Not Unix”) was developed by Richard M Stallman (RMS) and others.
Because a kernel by itself is essentially useless, and because GNU contributed so heavily, Stallman reasonably argued that the combined system should be called GNU/Linux.
Although some authors did follow this request, it was largely ignored. Now that other projects have also contributed to Linux, this request has lost some credibility. In general the complete operating system, including GNU software and all the rest, is simply called Linux. This is what I will do, with apologies to RMS. It is unfair, but it also no longer relevant.
Linux began when a computer science student named Linus Torvalds wanted to develop a toy operating system that could run on his 386 computer. He posted his ideas in 1991, explaining that it would only be a small project that would not be portable. To quote Torvalds:
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.
As it turned out, it got a bit bigger than he expected.
There were several unique features about Linux which helped contribute to its success. First, it was open source, and free as in speech. That meant that anyone could obtain the source code and do whatever he wanted with it. It also meant that anyone who wanted to could contribute to the project.
As the kernel was developed, necessary software was taken from the GNU project. GNU software was released under a permissive license called the GNU General Public License (GPL). This basically says you can do what you want with the software, except that you must not restrict what others can do with it, should you use it. So you couldn’t prohibit users from modifying your software, or from distributing it as they wished.
Linux also adopted the GNU GPL. This had far-reaching consequences.
As the Linux project grew, it began to be apparent that now there was a Unix-like operating system that could be had for free – at no cost. It was also unencumbered by restrictive licenses, so it was also free as in speech.
At the time, software was in an unsettled state. Large companies such as Microsoft had strict licenses that restricted what you could do with their software. It remained their software – you licensed it, but you did not own it. You could use it on a single machine, for a single user. If you had other computers, you needed to purchase licenses for each of them. You had to have a license for each user. You could not do anything to modify the software. If there were bugs (and there are always bugs), you were not permitted to fix them. You’d get a bug fix if and when the company decided to do it. Often the company would publish the bug fixes as a new version of the software, requiring you to purchase more licenses. Microsoft got a lot of the hate, but many companies had similar restrictions. It was something of an industry standard.
Between Linux and GNU the whole world of software changed. Suddenly people could afford excellent software on their computers, without having to pay large license fees and without being prohibited from sharing, installing on multiple machines, or modifying the software.
Because of all the sharing, there was less reinventing the wheel. Instead of having to write, say, a file handling program, you could simply use what was already out there. You could focus on things that were more useful, with the basics already taken care of.
Microsoft needn’t have worried. Even now, almost all computer users use Windows. A small fraction use Apple’s OSX. And then there are the Linux fanbois.
But Linux is more popular among the guys in the background, the IT professionals who have to keep servers running. For these people the convenience offered by Windows is not as important as stability and availability. You could set up your entire IT department on Linux, without worrying about licensing – a real problem in larger companies with hundreds of computers.
One often overlooked benefit of the Linux and GNU effort is that the quality of software in general is better. Companies know that they can’t get away with providing poor-quality software. If it’s too buggy, or if they charge more than is reasonable, people know they have alternatives. It’s competition, and it helps.
Ultimately, even those who don’t use Linux benefit.