INTRODUCTION
Open Source software development and
distribution is fundamentally different
from that of traditional proprietary
software. This paper will answer the
following questions:
- What is Open Source software?
- How is Open Source different from
proprietary software?
- How does the Open Source
development process work?
- How is Linux developed,
distributed, and supported?
1. WHAT IS OPEN SOURCE
SOFTWARE?
Open Source refers to software distributed
under a legal license, such as the GNU
General Public License (GPL), that permits
free distribution and requires open
availability of the source code. All the
essential portions of the Linux operating
system--its heart, or kernel, and most of
the utilities that make up the operating
system--are published under the GPL.
- Open Source licenses, such as the
GPL, guarantee anyone the right to
read, redistribute, modify, and use the
software freely.
- Under many Open Source licenses,
including the GPL, modifications of
existing software must be distributed
under the same license as the original
software. The source code to any
changes or improvements must be made
available to the public.
- Most Open Source software is not
developed by one single vendor, but by
a distributed group of programmers.
Typically, Open Source software
development is guided by project
maintainers who address technical or
end-user requirements rather than
vendor agendas.
- Nobody "owns" Open Source software,
which is freely available for download
over the Internet. Linux distribution
vendors such as Red Hat, Caldera, SuSE,
and others package existing Open Source
software and provide a more convenient
way for their customers to obtain the
software.
- The GPL is one example of an Open
Source license. Other examples include
the BSD license, the MIT X License, the
Artistic License, and the IBM Public
License. All accomplish the same basic
objectives: free distribution and
openly available source code. All Open
Source licenses meet the Open Source
Definition, which is described at
http://opensource.org/osd.html.
What are some examples of Open
Source software?
Many of the leading Internet and
networking software programs are Open
Source software:
- Linux, the Web's leading operating
system (running 31% of Web servers,
versus 24% for Windows and 17% for
Solaris)(1)
- Apache, the leading Web server
(running 55% of the Web sites on the
Internet)(2)
- Sendmail, the leading Internet mail
server(running more than 75% of email
servers on the Internet)(3)
- BIND, the leading Domain Name
Server (DNS) platform
- Samba, a cross-platform networking
server
- Perl, a scripting language
- Mozilla, the browser from
Netscape/AOL
- MySQL, a database
The Open Source model unties the knot
between the product vendor and support
services. Because source code is available
to all, vendors are able to focus on a
part of the value chain and build
competitive services without fear of
proprietary lock-outs.
2. HOW IS OPEN SOURCE DIFFERENT FROM
PROPRIETARY SOFTWARE?
With traditional proprietary software, the
purchaser obtains only executable
code--the ones and zeros that computers
understand, but that are unreadable by
humans. The company that develops the
software holds the worldwide monopoly on
its source code, and becomes the only
place where the code can be modified,
updated, or fixed. With Open Source
software, the source code is freely
available, giving developers the ability
to isolate and fix bugs and to customize
the software to their needs.
A common illustration equates using
proprietary software with driving a car
with the hood permanently welded shut.
Under this scenario, if the engine were to
break down, the owner would have to return
the car to the manufacturer for repair.
Without access to the engine, neither the
owner nor the car dealer would be able to
fix the problem. Open Source software is
like a car with a hood that opens. Car
owners can fix problems themselves, or
choose a repair service that best fits
their needs. In the proprietary software
model, the best company to provide support
is the company that manufactures the
software. The manufacturer is the only
company that truly understands the source
code, has access to it, and can modify or
fix it when it breaks.
In the Open Source software model,
there is no single manufacturer. Open
Source software is developed by
distributed teams of programmers around
the world. So there is no exclusive source
for expertise, modifications, or bug
fixes. Distribution vendors such as
Caldera, Red Hat, SuSE, and TurboLinux are
not primarily manufacturers, but rather
packagers and distributors of free
software developed by others.
The Open Source model unties the knot
between the product vendor and support
services. Because source code is available
to all, vendors are able to focus on a
part of the value chain and build
competitive services without fear of
proprietary lock-outs. Therefore, the best
provider of shrink-wrapped Linux products
is the vendor that best understands
packaging, distribution, point-of-sale
promotion, and branding. The best provider
of Linux customer services is the vendor
that specializes in service, building deep
technical expertise and superior service
delivery systems.
The bottom line is that the Open Source
software development model, by
creating--and protecting--an open playing
field, encourages vendor specialization
and fosters honest competition, ultimately
giving the customer more choice,
flexibility, and control.
What are the advantages of Open
Source software versus proprietary
software?
- Stability. Open Source software is
often more reliable and stable than
proprietary software. This is because
Open Source projects have large numbers
of contributors and follow an iterative
development, debugging, and testing
cycle. The best known Open Source
projects such as Linux have more
contributors and testers than a
traditional software company could
afford to deploy on a project.
- Cost. Open Source software is free.
This results in immediate savings on
licensing fees and upgrading costs. And
the larger the project, the greater the
savings--for example, there is no
charge for additional client
connections to an Open Source
database.
- Security. In the proprietary
software model, developers compete to
discover and exploit or publicize
security holes. The Open Source peer
review process redirects developer
competition toward preventing security
breaches in the first place.
Additionally, there are no hidden APIs
that can be exploited.
- Flexibility. Open Source code can
be modified to fit customer
requirements. Drivers can be developed
or modified without reverse-engineering
unpublished APIs.
- Choice of vendors. In the Open
Source model, vendors compete purely on
the basis of their ability to add value
to a shared platform, not on the basis
of proprietary secrets.
- Reduced risk. The Open Source
development model effectively spreads
risks over a large pool of programming
talent. And it provides a hedge against
obsolescence--for example, if a company
that develops Open Source software goes
out of business, the code could
thereafter be maintained in perpetuity
by other developers. Cisco Systems
recently decided to release print
spooler software under an Open Source
license to reduce its dependency on
in-house programming staff.4
3. HOW DOES THE OPEN SOURCE
DEVELOPMENT PROCESS WORK?
To understand the Open Source software
development process it is important to
acknowledge the roles of the various
participants who take part in creating the
code.
Project Maintainer/Developer
- Has a personal need or "itch" for
which there is no working code
available
- Determines the software
license
- Writes the first code release and
puts it up on the Internet
- Sets up a Web site, mailing lists,
and version control services (e.g.
VCS)
- Builds and leads the development
team, usually from volunteers
- Approves official releases
Development Team
- Adds features, fixes bugs, creates
patches, writes documentation
Users/Debuggers
- Find bugs, point out design flaws,
and request new features
After the project maintainer puts up
the first release, both users and the
development team submit ideas to the
project mailing lists. Patches come in
from developers to the project maintainer.
The maintainer incorporates improvements
and releases a new version to the
development team and users. As momentum
builds, more people get involved, and the
software evolves. Developers are rewarded
by the immediately visible recognition of
their contributions to the product.
Linux is probably the best-known
example of a successful Open Source
development project.
Improvements and bug fixes developed
and submitted by companies such as
Linuxcare are included in Linux releases
based on technical merit alone.
Continued in next
column
|
|
|
4. HOW IS LINUX DEVELOPED, DISTRIBUTED, AND
supportED?
What is Linux?
Linux typically refers to the operating system
built around the Linux kernel, a wide variety of
GNU libraries and utilities, and many different
Open Source projects. The Linux kernel is a small,
though central, part of the overall operating
system. The overall operating system comprises:
- The Linux kernel, which handles process
scheduling, memory management, symmetric
multi-processing (SMP), device drivers,
etc.
- GNU C libraries (libc5, glibc6), the base
API for the GNU system
- GNU utilities, the shells, file utilities,
compilers, linkers, etc.
- X Windows, which handles graphical
display
- GNOME or KDE, which handles graphical user
interface
- Many other programs and utilities
AN OVERVIEW OF LINUX
Who owns Linux?
No one person or corporation owns Linux. It is
created and distributed by a community of highly
technical and committed contributors all over the
world. Each of the components of Linux is an Open
Source project that is managed by a different
project maintainer.
How is the Linux kernel developed and
updated?
The Linux kernel is developed and updated following
the Open Source development model discussed
previously. Linus Torvalds is the project
maintainer, with final authority over what goes
into the kernel. Because of the complexity of the
project, he is aided by a group of appointed
project maintainers who are responsible for various
components of the code.
A large number of developers worldwide
contribute to improvements to Linux. Any developer
can submit a patch that includes source code
changes to the kernel mailing list. The patch is
reviewed by Linus and his project maintainers. They
decide whether or not to include it in the next
release based on technical merit, not commercial
reasons. Thus, there is no single company directing
the development path of the Linux kernel.
What is the difference between the
development and stable release?
There are two separate code trees for Linux: the
stable version and the development version. The
stable version, which gets updated every few
months, only includes code that is time-tested and
proven. This is what is released to end users and
businesses. Production releases have even version
numbers, e.g., 2.0, 2.2, 2.4, etc. The development
version is where developers can experiment with
advanced technology and try new ideas. When there
is a lot of activity, a new development kernel
release can come out as often as three times a day.
The Open Source philosophy is "release early and
release often." This has proven to be an efficient
way to discover and eliminate problems before they
become deeply rooted. New features are worked out
in the development kernel first and then are
included in the stable kernel. Development releases
have odd version numbers, e.g., 2.1, 2.3.x, etc.
What does a Linux distribution vendor
do?
A Linux distribution includes the Linux kernel plus
utilities, programming tools, window managers, and
other software that make up a full operating
system. Distribution companies, such as Caldera,
Red Hat, SuSE, TurboLinux, and nonprofit
organizations such as Debian, download the latest
Open Source packages from the Internet, QA them,
add utilities such as installation programs, and
package them on a CD-ROM with a manual. The
underlying code in each distribution is exactly the
same. Slight differences may occur in the
following:
- hardware installation programs
- default X-windows configuration
- graphical systems management tools
- proprietary software packages (very
few)
In the vast majority of cases, Linux
applications are compatible with all distributions
of Linux, which accounts for the aphorism "Linux is
Linux is Linux." When a new Linux kernel is
released, it is put up on the main Linux kernel
site, www.kernel.org. The distribution companies
then package it and provide it as an update on
their Web sites. Distribution vendors take the
kernel as is, with all changes and fixes that are
contributed by members of the development
community. Each distribution company releases new
distributions about twice a year. The Open Source
development model discourages distribution vendors
from forking the Linux code base into incompatible
code streams. The GPL specifies that additions,
modifications, and extensions to Linux are
distributed in source code form whenever
executables are made available. If a distribution
company were to acquire development expertise and
attempt to build unique features into Linux, its
innovations would be released back to the
development community. Truly valuable changes would
then be included in the next release of Linux
and/or freely adopted by other distribution
vendors, eliminating any competitive advantage.
Currently, the vast majority of fixes, patches, and
additions to Linux are contributed by independent
developers. Each one of these modifications
improves the stability and functionality of Linux.
Competitive pressures mean that Linux distribution
vendors really have no choice as to which patches
and fixes are included in their upcoming versions.
Rather, the decision is made for them by the Linux
project maintainers, who have final say over what
goes into a new Linux release. Therefore,
improvements and bug fixes developed and submitted
by companies such as Linuxcare are included in
Linux releases based on technical merit alone.
How does the Linux industry work?
The Linux industry consists of software developers,
distribution vendors, application vendors (ISVs),
hardware vendors, and services vendors.
Who develops Linux code?
Tens of thousands of independent programmers
contribute code to project maintainers for
inclusion in Linux.
Who packages Linux software and sells
it?
Distribution companies such as Caldera, Red Hat,
SuSE, and TurboLinux, as well as nonprofit
organizations such as Debian, package Linux on a
CD-ROM with a manual and sell it via retail, VAR,
and direct channels.
Who develops applications for Linux?
Software development firms such as Corel, Sun
(StarOffice), Oracle, SAP, and many others, as well
as independent programmers, develop applications
that run on Linux.
Who bundles Linux with their
hardware?
Companies such as Dell, IBM, and VA Linux Systems
sell Linux pre-installed on their computer systems.
Who provides support, service and training
for Linux?
Linuxcare is the only company dedicated exclusively
to providing enterprise-class technical support,
training, certification, and professional services
for the Linux platform. Linuxcare provides these
services to companies across the Linux industry:
developers, software vendors, distribution
companies, hardware OEMs, and enterprise customers.
It should be noted that while distribution
companies offer support options exclusively for
their Linux distribution, most outsource support.
For example, Red Hat outsources support to
Collective Technologies and The Sutherland Group;
Caldera outsources support to Multi-User Solutions;
TurboLinux outsources support to Linuxcare.
THE LINUX INDUSTRY AND ADDITIONAL
RESOURCES
- The Open
Source Definition,
- The Cathedral
and the Bazaar, an examination of the Open
Source development process,
- The Magic
Cauldron, a discussion of Open Source
business models,
- a compilation of Open
Source resources,
- A Revolution from Within: Open Source
Business Models in Infrastructure Software,
Industry Report by Christopher J. Galvin,
Hambrecht & Quist Equity Research, April 23,
1999.
|