When Dr Kalam took Bill Gates for a walk in the Mughal garden,
they talked about challenges for tech, including software security. Kalam told
Gates that we look for open source code so that we can easily introduce
user-built security algorithms.
"Our discussions became difficult as our views were
different," Dr Kalam said later, calling it "unfortunate" that
India still believes in proprietary solutions. "In India, open source
software will have to come and stay in a big way for the benefit of our billion
people," President Kalam said.
The Open Source OS
Who built the Internet? Who made the Web work? What is Open Source?
Over 2,500 years ago, the Greeks developed an architecture that
was passed along to the Romans via the 'open source' route . In 1675, Newton
said he saw further because he "stood upon the shoulders of giants,"
and he invented the calculus. A hundred years later, William Blake saw, through
his verse, the world in a grain of sand and found eternity.
|
Since then, via 'open source' and modern physics, space has
become time, time has become space, and Blake's grain of sand has become a
silicon chip that holds not just the worlds but also all of the art, music, and
poetry ever created. And these vast open-source riches, from condensed matter
physics, to the complete works of Shakespeare, are free to all. Thus it is that
those who open books or log on are granted an inheritance as never before.
The operating systems (OS) story starts in the 1950s, with
simple schemes for running batch programs efficiently. In the 1960s, interactive
began to gain ground, as did multi-user systems. The innovative MULTICS
developed a hierarchical file system, something taken for granted today. But
MULTICS did not progress very well. It took years longer to complete than
anticipated and didn't make a dent in the OS market. One of the participants,
Bell Labs, withdrew from the project and made its own OS, and called it Unix.
That was, if you like, the mother of all OSs.
By 1990, Unix had a strong position in the server market and
especially so in universities. But it had become commercial and expensive. About
the only cheap option was Minix, a limited Unix-like system written by Andrew
Tanenbaum for teaching with. There was also 386BSD, a precursor to NetBSD,
FreeBSD, and OpenBSD, but that wasn't mature and required big hardware.
Enter the Fin
Into this scene came Linux in October 1991, at Helsinki University. Linus
Torvalds wanted something similar to Unix on his PC at home. He started out with
Minix, but wanted something better--and started to write his own OS. His baby,
Linux, initially was not really useful, but it soon gathered enough features,
provided by other 'hackers' across the world, to be interesting even for
people uninterested in OS development.
Indeed, Linux itself is only the kernel ("core") of an
operating system. Everything else runs around it. It implements multi-tasking,
manages hardware devices, and generally allows the apps to do their thing. The
programs you actually interact with are run on top of the kernel.
By 1993, the Linux kernel gathered all the necessary features it
required to work as a replacement for Unix workstations, including TCP/IP and
(graphical) windowing. Linux also received plenty of industry attention, small
companies emerged to develop and distribute Linux. Dozens of user groups were
founded, and Linux Journal magazine started to appear in early 1994 as Version
1.0 of the Linux kernel was released.
In February 1988, the identity of "open source" first
overcame the hacker stigma when the Netscape web browser was released as free
software. This was the occasion that first invited the attention of the whole
computing world for the first time. It has taken years of work since then, but
free software (and open source) has become not only generally accepted but also
the preferred choice for many applications.
The Power of Numbers
Apart from being a technological feat, open source is a social phenomenon.
It is baffling to many outsiders that something as successful as open source
could be developed by a bunch of unorganized "scruffy-haired hackers"
in their free time. The major factor here is the availability of all the source
code that allows modifications to be made and distributed.
When the system has many programmers among its users-if they
find a problem, they can fairly easily fix it. And if they think a feature is
missing, they can add it. For some reason, that is something programmers like to
do, even if they're not paid for it: they have an itch so they scratch. They
write missing code to fill their needs.
For OS development specifically, this large group of
programmer-users results in two major improvements: bug fixes, device drivers.
OS code often has bugs that trigger intermittently, and it can be difficult for
developers to reproduce them. With thousands or more programmers among the user
base-well, that makes a very effective testing and debugging army.
Most of the code volume in open source is device drivers. The
core code (multi-tasking and multi-user functionality) is small in comparison.
Most device drivers are independent from each other, and only interact with the
OS core via well defined interfaces. Thus, it is fairly easy to write a new
device driver without having to understand the complexity of the OS.
This also allows the main developers to concentrate on core
functionality, and they can let those people write the device drivers who
actually have the devices. It would be difficult even to store the thousands of
different sound cards, Ethernet cards, IDE controllers, motherboards, digital
cameras, printers, and so on that an open source OS, such as Linux, supports.
The development model is distributed, and spreads the work effectively.
However, the open source OS is not without problems. When a new
device gets onto the market, it can take a few months before a programmer is
interested enough to write a device driver.
Beyond the Kernel
To work on an open source OS, you have to choose a distribution system. For
example: the Linux kernel, plus an installation program, plus some set of apps
on top of it. There are hundreds of Linux distributions, serving different
needs. The three biggest general purpose ones are Red Hat, SuSE, and Debian. The
Red Hat and SuSE distributions are produced by companies of the same name;
Debian is produced by a volunteer organization.
Open source doesn't just mean access to the source code. It
lays down certain conditions about the distribution of such software: such as an
insistence on not restricting any party from selling or giving away the
software. And the program must include source code, and must allow distribution
in source code as well as compiled form.
Where some form of a product is not distributed with source
code, there must be a well-publicized means of obtaining the source code for no
more than a reasonable reproduction cost--preferably, downloading via the
Internet without charge. The source code must be the preferred form in which a
programmer would modify the program. Deliberately obfuscating source code is not
allowed. The crux of the matter is that once software is made open source,
modifications and derived work is allowed and solicited.
Who are these open source developers? Is there an archetype?
That's for next the issue, but meanwhile, this bit of Zen nicely fits the open
source developer.
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.