Here's an excerpt from the book on which I'm working (thanks to Clem for
proofreading) that is my take on how things got to be the way that they
are today. BTW, I was coming into work one evening when Ken was heading
out the door for his sabbatical. I remember him just waltzing past the
security guard with an armload of mag tapes and thinking wow, there aren't
that many people who could get away with that.
Jon
A long time ago people made money selling computers. Software was written
and given away in order to help sell computers. There was a culture of
sharing and working together to improve software. More and more people
wrote and shared software as computers became more accessible.
The Multics operating system was collaboratively developed in the 1960s
by Bell Telephone Laboratories, General Electric, and the Massachusetts
Institute of Technology. Bell pulled out of the project, and some of
the people (most notably Ken Thompson and Dennis Ritchie) there who had
worked on it decided to make a more practical version that ran on the
smaller minicomputers produced by the Digital Equipment Corporation (DEC).
It was the first portable operating system which means that it could run on
more than one type of computer. This innovative operating system, UNIX,
embodied a new minimalist and modular philosophy for software that we'll
discuss shortly.
Ken Thompson took a copy of UNIX with him in 1975 when he took a sabbatical
year to teach at the University of California, Berkeley. This had a huge
effect that still reverberates today. Students had access to a real
working system. They could examine the code to see how things worked,
and they could make changes. Not only that, but they were exposed to the
philosophy. Berkeley produced its own version of UNIX, BSD for Berkeley
SPoftware Distribution.
Students added many new important features to the system. The networking
code that is the foundation of the Internet was written for UNIX at Berkeley.
Berkeley graduates started companies such as Sun Microsystems that made
commercial UNIX-based systems.
Personal computers changed this. All of a sudden the people writing
software weren't the people selling computers, so they needed to charge
for it. But there was still an attitude of ``it's great that we make
a living doing this cool stuff''. This changed dramatically when Bill
Gates came on the scene. As is evident from numerous court depositions,
his focus was on making money. If he had to do something cool to make money
he would, but his priorities were opposite those of others in the industry.
How did this change things?
Software development began to be driven more by politics, lawyers, and
underhanded behavior than engineers. Much of this focused on suppressing
innovation that competed with existing products. For example, Microsoft
started with MS-DOS, a program that they bought from its developer Tim
Paterson. Microsoft let it languish as they were making plenty of money
from it. A company called Digital Research came out with an improved
version called DR-DOS. When Microsoft came out with Windows, the original
version of which ran on top of DOS, they included a hidden, encrypted piece
of code that checked to see if the system was running MS-DOS or DR-DOS, and
generated phony errors if it found DR-DOS. This made DR-DOS unsuccessful in
the marketplace even though it was a arguably better product for the money.
It wasn't just Microsoft. Apple also sued Digital Research for copying their
user interface in a product called GEM. Digital Research would probably
have prevailed eventually, but would have gone bankrupt in the process
because Apple had much deeper pockets. Somewhat absurd when you realize
that the Apple user interface was substantially copied from the Xerox Alto.
Unfortunately, this mindset continues today with threatened big players
resorting to the courts instead of innovating their way out of their
difficulties. Examples abound such as SCO versus IBM, Oracle versus Google,
Apple versus Samsung, Samsung versus Apple, Intellectual Ventures shell
companies versus the world, etc.
Personal computers started becoming popular in the mid-1980s. It wasn't
practical to run UNIX on them because the hardware lacked a memory management
unit although there was a variant called Xenix that did run on PCs.
Colleges starting using personal computers to teach computer science because
they were cheaper. However, unlike the UNIX-era graduates from Berkeley,
students did not have the ability to look at the code of the system that
they were using. And the system with which they became familiar was
considerably less advanced than UNIX. As a result graduates from this
era were not generally of the same quality.
In part as a reaction to this, Richard Stallman started the GNU (Gnu's Not
Unix) project in 1983. Among other things, the goal was to create a free,
open-source version of UNIX. Stallman created the copyleft, a variant
of the copyright used by others to protect their software. The copyleft
essentially said that others were free to use and modify the code as long
as they made their modifications available under the same terms. In other
words, we'll share our code with you if you share yours with everyone else.
The GNU project did a great job of recreating the UNIX utilities such as cp.
But it was slow to create the operating system itself.
Linus Torvaldis began work on what is now known as the Linux operating
system in 1991 because there was no GNU operating system. To a large degree
this work was made possible by the existence of the GNU tools such as the
C compiler. Linux has become extremely popular. It's used heavily in
data centers (the cloud), it's the underlying software in Android devices,
it's in many appliances. This book was written on a Linux system.
Large companies were originally skeptical about using open source software.
Who would fix the bugs? Somewhat ludicrous; if you've ever reported a
bug to Microsoft, Apple, or any other large company you know how much
attention it gets. In 1989, John Gilmore, David Henkel-Wallace, and
Michael Tiemann founded Cygnus Support to provide commercial support for
open source software. It's existence greatly increased the willingness
of companies to use open source software.
In many ways Linux and GNU have brought us a new golden era similar to the
Berkeley UNIX days. It's not quite as shiny because some of the people from
the PC era are making changes without really understanding the philosophy.