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