History of Unix

XIn the stone age of computers (1950-60s) computer systems were big (size of a living room, weighing over 20 tons), cumbersome to use: every program was able to perform limited tasks - one at a time - only, written for a specific computer, manually typed in via the engineering control panel in that computer’s assembly language; if a business upgraded to a bigger, better computer the old OS wouldn’t work on the new one and every data had to be entered into the new machine again.

In 1965 Bell Laboratories joined with MIT and General Electric in the development effort for a new operating system, called Multics (Multiplexed Information and Computing Service), which would have provided multi-user, multi-processor environment with hierarchical file system. In 1969 Bell Laboratories became extremely unhappy and dropped out of the project. Some of the Bell Labs’ programmers who had worked on this project, Ken Thompson, Dennis Ritchie, Rudd Canaday, and Doug McIlroy kept working on and designed and implemented the first version of the Unix File System on a PDP-7 computer along with a few utilities. It was given the name UNIX (first UNICS) by Brian Kernighan as a pun on Multics. Jan 1st 1970:  official birthday of UNIX. Also, zero point of UNIX time (EPOCH). On UNIX systems time is measured in seconds since 01/01/1970.

It is a common misconception that Linux - as we know it today - is the brainchild of one Linus Benedict Torvalds, conceived in 1991. Well, that is not entirely true. History of Linux goes back all the way to 1985.

By 1985, UNIX became a financially successful OS and in order to defend their big income, businesses guarded their software source codes and charged really a lot for those programs. A brilliant programmer from MIT called Richard Stallman started a project called GNU (which is a recursive acronym: GNU stands for “Gnu is Not Unix”) to provide free and quality software for UNIX. The project was backed by thousands of UNIX developers which resulted in a large number of programs. Yet they lacked the essential core of the operating system: the kernel.

Fast forward to 1991. Commercial UNIX OSs are very expensive, are closely guarded, there are as many variations as stars on a clear night sky, Stallman’s GNU project is still lacking a working kernel (codename HURD). The only UNIX-like OS with freely available source code is called MINIX. It was developed for purely educational purposes so it did not do a very good job in a commercial environment. An enthusiastic Finnish university student Linus Torvalds was looking for an operating system that could meet the demands of the professional programmers. He knew about Stallman’s GNU project so he started to put together something of an OS for Intel architecture. On August 25 1991 Linux kernel 0.0.1 had been announced. His ideas attracted hundreds later thousands of experienced programmers so before long it was combined with the already existing GNU tools, thus Linux was born. All the rest is history.

 Philosophy and features of UNIX

UNIX has been designed and written by programmers to develop a system that would suit their needs. Originally it was meant to be and remain FREE for everyone with no limitations of use or code modification and certainly it wasn’t meant to be a commercial tool.

UNIX philosophy is summarized by one of its creators:

  • Write programs that do only one thing and do it well
  • Write programs to work together.
  • Write programs to handle text streams, because that is a universal interface.

It can be translated into: every program is limited on its own; but thanks to a brilliant feature called  output redirection (a.k.a. piping “|”) it is possible to link programs one after another to achieve results otherwise unreachable. It is like playing with LEGO: you have your basic bricks and you build whatever you want out of it. UNIX really got caught on by programmers and developers because it was designed with these features:

  • programmer’s environment
  • simple user interface (text based, tty)
  • simple utilities that can be combined to perform powerful functions
  • hierarchical file system
  • simple interface to devices consistent to the user
  • multi-user, multi process system
  • architecture independent and transparent to the user