Linux was started by Linus Torvalds as a pet project at the University of Helsinki, with its main intention being to provide a free and open source alternative to the academic MINIX operating system (which was created by OS guru Andrew Tanenbaum). The latter, while providing the source code for free, placed various restrictions on its modification and distribution, which was inconvenient for hackers who wanted to hack on and distribute improved versions of the OS. The name “Linux” itself is a take on Linus and MINIX.
The genesis of the project has some memorable quotes associated with it. This one, taken from the comp.os.minix newsgroups, is especially fun:
Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers? Are you without a project and just dying to cut your teeth on an OS you can try to modify for your needs? Are you finding it frustrating when everything works on Minix? No more all-nighters to get a nifty program working? Then this post might be just for you.
“This post” was the one where he announced he was working on the Linux kernel, and he had a number of frustrated hackers respond to start helping out. The project grew pretty fast from here on, to reach various milestones in the next few years. (A kernel, incidentally, refers to the core of a piece of software such as an operating system, and provides the basic functionality needed to run on a computer. Various “features” like graphical user interfaces and other “user” utilities run on a layer that sits on top of the kernel.)
Over the years, various contributors committed pieces of code — called patches — to the linux kernel in order to address a growing list of incomplete features and bugs. Some of these people became very high profile and were taken on-board a team to help maintain the kernel — actively debating issues and tasks on the Linux kernel mailing lists, as well as approving and rejecting patches. Torvalds of course played (and still plays) an important role in this process.
It is interesting to note that for the longest time, patches to the linux kernel were very free-form (there was no distributed source control management tool to help coordinate these activities) largely because of Torvalds’ dislike of centralized SCM systems. Everything was emailed as attachments to the mailing list, and it’s a surprise that things didn’t break.
Over the years, various projects sprung up around the linux kernel that aimed to provide a comprehensive “linux distribution” — a set of software that bundled together graphical interfaces, media players, productivity software and others along with commonly used utilities, tools and libraries that would allow an end user to actually use the operating system for something productive. Each of these utilities themselves have communities behind them, contributing features and bug-fixes. RedHat and Ubuntu are probably the two most famous distributions out there today.
Today, the system looks like something like this,
- The core “vanilla” kernel is developed and maintained by a number of volunteers, including Torvalds.
- Various other versions of the kernel are available for various kinds of processors and other requirements, that are based on the vanilla kernel. These may have been modified for reasons specific to a community of hardware or software users.
- Other communities work on building software that sits on top of the kernel — such as drivers for various kinds of hardware, productivity tools, etc.
- Communities of volunteers integrate the kernel into distributions like Ubuntu, and package together various other projects in order to present the user with a cohesive system.
- Various corporations develop features and drivers for the kernel and other utilities, a lot of which are contributed back to the community.
End result? Publicly available, free to use and own, well engineered and well tested distributions of Linux that can be downloaded off various servers on the web, and installed by anyone.