Powered By Blogger

Thursday, 28 November 2013

History of Open Source

In the beginning computers were more related to hardware than software. Today we have clear distinction between hardware and software. Hardware understands only binary, combination of zeros and ones. The early computers were very expensive and not easy to use. Owning aside, just to lease a machine would cost thousands of dollars. Mostly big businesses leased these machines. As these machines did not come with “software”, the buyer or leaser should have the skill to write instructions to use the machine efficiently. During those days there were no compilers or tools to help with the writing of instructions. Therefore, the user (can be used as synonym for programmer in those days) had to write instructions from scratch. This made it more difficult when different manufacturers supplied different instructions for the hardware. Therefore, programmers from different companies came together to build a complier. The Project for Advancement and coding Techniques (PACT) brought together programmers to build tools. These programmers understood the only way to success is to “share”.

Budding ground

The trend of sharing source code was not a fashion but rather became a necessity. Most of the technology what we use today were developed by academic institutes or corporate research facilities. Source code sharing among programmers within different organizations or departments within an academic institute was very common.  Labs within an academic institute frequently used a piece of code developed by other department labs, enhanced or adopted and shared it.  This nature of sharing helped in developing software which was robust and efficient.  Importantly, it had a widely dispersed band of experts across different labs which had contributed towards its development who understood the functioning of the program profoundly.

Days of Sharing

During the early days, it was not uncommon to receive printed copies of programs along with the hardware. In the 1960’s IBM distributed the source code of mainframe operating system, Airline Control Program (ACP). All the software available was usually supplied by IBM without additional charge. Users who developed software often made it available, without charge. During that time, there were multiple user groups who exchanged the source code for the software, namely, IBM SHARE and Digital Equipment corporation(DEC)’s DECUS. These groups helped developers to enhance the code or modify and to exchange them with other users. Groups like these had a greater influence on Open source distributed development model.

Rise of Proprietary software

During the late 1960’s change was inevitable as the effort required to develop software was substantial. Many hardware vendors were bundling hardware with software. The cost of software was included in the hardware cost. Many customers did not want the software to be bundled.

Due to legal challenges IBM "unbundled" software and services from hardware sales. This bifurcation was a major driver that enabled the creation of software industry. From then on, Businesses paid for the software that are restricted by the number of users who could use the software, type of operating system that can be installed and the location where the software could be used. Vendors provided maintenance of software for a recurring free.

  Evolution of UNIX


Early computers were big and used by few privileged having money to buy/lease them. This had to change so that computers were commoditized. For this to happen, there had to be massive decline in cost of computers. Mainframe had a whooping cost of approx. $200,000. Digital Equipment Corporation (DEC) designed computers which occupied less space and costed less. DEC delivered PDP-1 for $120,000. But real impact was made when DEC delivered PDP-8 minicomputer for about $18,000. PDP-8 soon started being sold in huge numbers to market niches, labs, railways, and all sorts of industrial applications. Riding on this success of PDP-8, DEC furthered there innovation to develop PDP-11. It cost about $12,000. It had good computing power for lower cost.

As the cost of computers went southwards, there were interoperability issues as they did not talk to each other. In addition, operating system performed very basic jobs on these machines. Customers who bought these machines did not like to keep their machines idle. Operating system were machine specific, any upgrade of the computers resulted in the programmers having to rewrite operating system for the upgraded machine. Things were more complex than bringing down the hardware cost of computers. At this point computers were more bane than boon.

Multics

In 1965, computer scientist and researchers from MIT, Bell Labs and General Electric congregated to develop a system which is convenient, interactive and multi-user called Multics (Multiplexed Information and Computing Service) mainframe timesharing system. This ambitious project ran into many problems due to various reasons, with complex decision-making structure, individuals with different goals, failed to produce economically viable system. Therefore, the team disbanded but a small team with Bell Labs -- Ken Thompson, Dennis Ritchie, Doug McIlroy, and J. F. Ossanna – pursued to work to develop an operating system from the lesson learnt from Multics.

Meanwhile, Ken Thompson used his spare time to develop a computer game called “Space Travel”. The game was first written on Multics and then changed to run on GE 635 computer. It cost dearer to run on GE 635. Thompson found a used PDP-7 computer with excellent display. He and Ritchie rewrote “space Travel” to run on the PDP-7 machine. But they did not have an operating system.



UNICS to UNIX

During the summer of 1969, Ken Thompson was alone while his family was away visiting grandparents. He allocated one week each to writing an operating system kernel, a shell, an editor and an assembler. By the end of 4 weeks he developed a single user operating system and he called it UNICS (uniplexed information and computing services). When multiprocessing functionality was added a short time later, the name was changed to "Unix".

With the new found success of UNIX, Thompson and Ritchie were able to convince Bell Labs to buy PDP-11, a more powerful minicomputer. Later they transferred UNIX from PDP-7 to PDP-11. In continuation of their development, newer version of UNIX was being released. By 1975, sixth version of Unix was released. For the first time, it was made available outside AT&T to research and educational institutes at no cost. The influence of UNIX was very profound in academic circles leading to the development of multiple versions of UNIX. Notable ones are HP-UX (HP), Solaris (Sun Microsystems) and AIX (IBM).


   GNU General Public License


Even though AT&T owned the original Unix Implementation, they were legally barred from selling the product. Instead, they were allowed to sell it to academic institutes at a nominal price. AT&T UNIX was developed on PDP-11 hardware which was commercially viable hardware; therefore, academic institutes adopted UNIX swiftly.

U.S Government had filed antitrust suit on AT&T, Western electric and Bell Telephone labs. This ended up in disbanding the 3 entities. Later AT&T created a separate division called UNIX system Laboratory, which sold UNIX licenses as high as $250,000. This was one of a major driver for BSD.

Ken Thompson, author of UNIX, after the initial UNIX development returned to University of California, Berkeley (UCB). He started developing a version of UNIX called, Berkeley Standard Distribution (BSD) which is a derivative of original AT&T UNIX. He did several enhancement like, 32-bits, virtual memory..etc. The important enhancement was adding TCP/IP stack, which gave UNIX the networking capability. BSD licenses were very permissive and had led to the software released under them being used by commercial organizations for their gain. This was against the purpose of sharing the source code. Therefore, the software developed by academic institutes was more open source-like and the software developed by commercial organizations was more closed source-like. The exploitation by commercial organizations was legitimate and they adhered to liberal license agreement without any glitches.

Meanwhile, a graduate student turned programmer at MIT Artificial Intelligence had trouble printing to the office Xerox laser printer. He was getting more frustrated waiting near the Xerox printer to collect printed document, but it never came. He turned his frustration into curiosity. This printer was donated by Xerox and was a cutting edge printer derived from Xerox photocopier. He identified the problem and suggested the remedy to Xerox from his previous experience in fixing a problem while working with PDP-11 and a different printer. But he couldn’t eliminate the paper jam but inserted a software command which will periodically check for printer status and notify every user. This smart fix saved users time in running back and forth to check the printer. But during his course of investigation on Xerox printer he made a startling discovery that the source code was not available. Until then, most hardware vendors had made source-code available which described machine instructions. Xerox, had provided software in precompiled or binary format. When he requested Xerox to obtain source code, to his dismay his request was rejected. This encounter made him work towards bringing freedom back to software. This software freedom activist is called, Richard Stallman.

      Genesis of GNU


In 1984, Stallman resigned from his position in MIT to pursue to create what he called “Free Software”.  Stallman began by outlining the objective and goals for his endeavor in providing free software. This was called GNU Manifesto. GNU is a free operating system more like UNIX but not UNIX. (more on this see http://www.gnu.org/gnu/manifesto.html). This motivated him to start a non-profitable corporation called “Fee software foundation”. He emphasized time and again free does not and never mean, “No price”. It is libre, not gratis (as discussed in chapter 1).

Stallman specified four freedoms

Freedom 0:   To use program for any purpose
Freedom 1:   To study how the program works and to modify it to suit your needs
Freedom 2:   To redistribute copies, either gratis or for a monetary fee.
Freedom 3:   To change and improve the program and to redistribute modified versions
                        of the program to the public so others can benefit from your
                      improvements.



      Copyleft – All Rights Reserved


The “Freedom” definition by Stallman helped in source code sharing, modifying and redistributing but there were no bounds to this Freedom. It was exposed to corporates lurking for business who could reuse these source codes with few modifications and sell them for a price without sharing the modified source code. Stallman was early to note this loophole and wrote General Public License (GPL) for free (libre) software license. He defined something called “copyleft”, which is everything copyright is not. Copyleft is more an extension to copyright to include above mentioned 4 freedoms. Software that is licensed under GPL cannot be made proprietary. It is not allowed to use the code which is licensed under GPL in any proprietary code. This can be done if and only if the proprietary code is licensed under GPL, meaning the proprietary code should be made available publicly. This was also called “viral licensing” because it was contagious. It is called so because if any code wholly or partially is used in a program then that program is bound to be under GPL license. This encouraged programmer to develop programs and share without doubting that their program will be reused and sold for gain.


No comments:

Post a Comment