Open Source and Your Business
Executive Summary
Open Source software puts a new marketing face on a long tradition
of enterprise-class free software. Unlike closed source, packaged
applications, when you use Open Source software, you get the
source code, which you can modify to fit your needs. You can
incorporate Open Source code into commercial products without
restriction. Some of the benefits of Open Source software include
high quality, stable code, and frequent incremental releases.
Disadvantages include uncertain release schedules and dependence
on the continued interest of a large community of volunteers.
Open Source solutions are available for almost any conceivable
application, and some of the world’s largest companies, as well
as the Internet itself, depend on Open Source for enterprise
applications.
Introduction
Apple, HP, Sun, IBM – what do these computing giants have in
common? Well, perhaps many things – obviously they all make
hardware, their stock has seen better days, and they have a
history of innovation. But did you know that each has also released
or supported free software as part of the Open Source movement?
Other companies such as AOL/Netscape, Corel, Ars Digita, and
the numerous Linux vendors such as Red Hat, Caldera, and VA
Linux also have embraced this movement. What’s going on here?
How can it be a good idea to give away software? And more importantly,
how can it be a good idea to use free software for mission-critical
applications?
Open Source? You’re Soaking In It!
To a person used to buying software either by the box or by
the custom project, the idea that rational people would adopt
and use free software supported only by hordes of anonymous
programmers may seem ludicrous. But you are an Open Source software
user, without even knowing it. Have you sent an email over the
Internet this week? Chances are excellent (75 percent) it was
handled by Open Source mail programs. Did you browse some Web
sites today? It’s almost certain that some or all of them were
run by Open Source Web server programs or hosted on computers
running an Open Source operating system. And if you’ve ever
done file transfers using FTP or messaged another user using
Internet Relay Chat, you’ve used Open Source software without
giving it a second thought.
The fact is, the Internet, and the World Wide Web, were built
using Open Source software. The term, coined in 1998, may not
have been around then, but the basic guts that run the Internet
were all engineered using the Open Source idea.
Open Source and Other Free Software
It is important to contrast Open Source with various other
“free” software concepts it resembles. Open Source, for example,
does not mean that a program is placed in the public domain.
According to the book, Open Sources: Voices from the Open
Source Revolution, by Open Source pioneerBruce Perens, “A
public-domain program is one upon which the author has deliberately
surrendered his copyright rights. It can't really be said to
come with a license; it's your personal property to use as you
see fit. Because you can treat it as your personal property,
you can do what you want with a public-domain program. You can
even re-license a public-domain program, removing that version
from the public domain, or you can remove the author's name
and treat it as your own work.”
The author of an Open Source program does not surrender his
or her copyright. Such a program does come with a license that
specifies a set of restrictions on use that must be agreed to.
Briefly, these restrictions include:
- Free Redistribution
You cannot restrict any party from selling or giving away
the software, nor can you require a royalty or other fee for
such sale.
- Source Code
The program must include source code, and must allow distribution
in source code as well as compiled form.
- Derived Works
The license must allow modifications and derived works, and
must allow them to be distributed under the same terms as
the license of the original software.
- Integrity of The Author's Source Code
You can keep people from modifying your source code, but only
if the license allows the distribution of "patch files"
with the source code for the purpose of modifying the program
at build time.
- No Discrimination Against Persons, Groups, or Fields
of Endeavor
You must make the software available to all comers. You cannot
discriminate against any person or group of persons or restrict
usage in a specific field of endeavor. For example, you may
not restrict the program from being used in business, or from
being used for genetic research.
- Distribution of License
The rights attached to the program must apply to all to whom
the program is redistributed without the need for execution
of an additional license by those parties.
- License Must Not Be Specific to a Product
The rights attached to the program must not depend on the
program's being part of a particular software distribution.
- License Must Not Contaminate Other Software
The license must not place restrictions on other software
that is distributed along with the licensed software. For
example, the license must not insist that all other programs
distributed on the same medium must be Open Source software.
Another popular free software license, the GNU General Public
License (GPL), differs in several material ways from the Open
Source license, most notably in its requirement that any modifications
you make to the program must be contributed to the public via
the GPL. Other free software licenses such as the Apache, X,
and BSD UNIX licenses are quite similar to Open Software’s.
Open Source Quality
The main thing to understand about the Open Source Initiative
(OSI) is that it primarily concerns a software marketing methodology.
The code for Open Source programs is typically written the same
way using the same languages and tools as packaged software.
Also, Open Source programmers are easily as talented and as
experienced as commercial development teams. Open Source advocates
argue that mature OSI applications are much more stable and
feature-rich than comparable commercial software. This is mainly
because of the OSI culture of meritocracy, which rewards bug
identification and patching. Additionally, having the source
for a program enables any interested programmer to seek out
and fix the offending code. Try that with Office 2000.
But perhaps the biggest reason Open Source software can achieve
more stability and reliability than closed source is Linus’
Law, named by Open Source advocate Eric Raymond for Linux developer
Linus Torvalds: “Given enough eyeballs, all bugs are shallow.”
In others words, the more smart people who are exposed to your
code, the more likely one of them will find something wrong
with it or some way to improve it. The reason that hugely complex
packaged applications have many bugs is because, no matter how
many paid programmers a software company assigns, there are
still a small number of experts working on the code. Linux,
in contrast, has benefited from the contributions of thousands
of highly competitive co-developers. Eric Raymond described
the difference between traditional closed source development,
which he calls the cathedral style, and Open Source (the bazaar
method) this way:
In the cathedral-builder view
of programming, bugs and development problems are tricky, insidious,
deep phenomena. It takes months of scrutiny by a dedicated few
to develop confidence that you’ve winkled them all out. Thus
the long release intervals, and the inevitable disappointment
when long-awaited releases are not perfect.
In the bazaar view, on the
other hand, you assume that bugs are generally shallow phenomena
– or, at least, that they turn shallow pretty quickly when exposed
to a thousand eager co-developers pounding on every single new
release. Accordingly you release often in order to get more
corrections, and as a beneficial side effect you have less to
lose if an occasional botch gets out the door.
Open Source Runs Enterprises
If you still don’t believe that Open Source software can be
reliable, consider the World Wide Web. According to the automated
Netcraft web server survey (www.netcraft.co.uk/survey),
almost 60 percent of all visible web sites are served by the
open-source Apache Web server, the adoption of which is still
growing at more than 1 percent a year. According to book publisher
O’Reilly, open-source scripting languages such as Perl, Python,
and Tcl generate the majority of Web-based dynamic content.
Megaportal Yahoo, one of the busiest sites on the Web, was built
on a foundation of Open Source programs: the FreeBSD operating
system, Apache, and Perl. Yahoo relies on Perl scripts to sift
through Web sites and aggregate the content Yahoo serves. In
fact, the Domain Name System (DNS) that lets your computer find
Yahoo in the first place is based on Open Source software, and
it is arguably the most mission-critical piece of software on
the Internet.
As you can see, it’s obvious that
some pretty heavy-duty software can be and has been built on
Open Source components. Reliability is only one of the advantages
of Open Source software. Another advantage is cost. Not only
is Open Source software cheaper because it’s free, it’s also
a cheaper approach to bug fixing and software maintenance. Fred
Brooks, author of “The Mythical Man-Month” asserts, “The total
cost of maintaining a widely used program is typically 40 percent
or more of the cost of developing it. Surprisingly this cost
is strongly affected by the number of users. More users find
more bugs.” When those users are also empowered to find the
bugs in the source code and propose fixes, for free, it’s obvious
that maintaining an Open Source application is much cheaper
than the closed source alternative.
Open Source Problems
Open Source is reliable, stable,
more bug-free, and cheaper. Is there anything it doesn’t do?
Isn’t there a down side?
Of course, the answers to these
questions are yes and yes. Yes, Open Source is not a panacea
for every computing problem. And yes, there are some things
that Open Source won’t do.
Open Source is not, for example,
a good way to originate code. It is pretty good at refining
and debugging existing code, as well as adding new features,
but it’s very difficult to actually architect and design from
the ground up using the collective method. To have an Open Source
project, you need to have code that runs, and then unleash your
developer community on it.
By the same token, a candidate
for Open Source must represent a solution that will fire the
imagination of a developer community. If you’re planning to
create a boring, imitative, or otherwise uninspiring application,
good programmers won’t enhance their mojo by being involved,
and thus an Open Source effort could fail. Additionally, if
the base software design is overly complex on the one hand,
or naïve on the other, good programmers won’t bother contributing.
It is also critical that whoever
is running your Open Source project be able to recognize good
ideas contributed by others. Any organization infected with
the NIH (Not Invented Here) virus should not consider an Open
Source project.
Finally, Open Source projects don’t
usually respond well to stake-in-the-ground deadlines. By its
very nature, such an effort has an unpredictable finish point;
how do you know when you’ve found every bug? There have been
examples of Open Source projects that were rushed under deadline
pressure and that exhibited a lot of the same problems closed
source projects do under similar conditions. Using Open Source,
your software will get better. There’s just no telling exactly
when.
Using Open Source
So far we’ve been talking about
starting an Open Source project from scratch. But there’s another
way you can use the Open Source approach in your enterprise:
by using Open Source code in your own custom projects. There
are several good Open Source code bases that can be helpful
in custom development efforts. The Web site FreshMeat (http://www.freshmeat.net/)
posts daily lists of Open Source efforts of every conceivable
class of software.
One interesting effort is Ars Digita’s
Open Source enterprise software platform, the ArsDigita Community
System (ACS). ACS is one of several Open Source application
server platforms available (another notable one is Enhydra).
The ACS platform features built-in administration and collaboration
features such as user permissions, project management and site
templating. Due to its integrated data model, ACS also enables
robust user tracking across the various services integrated
on the platform.
More than 20,000 copies of the
software have been downloaded by organizations such as Siemens,
America Online, Deutsche Bank, Oracle, The World Bank and Away.com.
Ars Digita reported record revenues of $25 million last year,
proving that Open Source companies can make money. The primary
revenue generator for the company, however, is professional
services offered to clients of the ACS platform. Linux vendors
such as Red Hat as well as other Open Source companies have
adopted this same model, giving away the software and making
money on the associated services.
So you may be wary of using Open
Source for fear of ultimately paying consulting and support
fees. However, when you take into account the lack of up front
licensing and ongoing maintenance fees, as well as the various
other advantages of Open Source software, you could easily end
up ahead of the game. In any event, it is likely you will want
a development partner that is experienced in the use of Open
Source software, such as Geneer, to assist in implementation.
All in all, Open Source is worth
consideration for your next project.
Resources
Apple’s Darwin Project
http://www.apple.com/macosx/tour/darwin.html
HP’s Open Source Library
http://devresource.hp.com/OpenSource/Tools/OpenSourceLib.html
Sun’s Open Office effort
http://www.openoffice.org/
IBM’s Journaled File System Technology
for Linux
http://oss.software.ibm.com/developerworks/opensource/jfs/index.html
Eric Raymond’s The Cathedral and the Bazaar
http://www.tuxedo.org/~esr/writings/cathedral-bazaar/
The Open Source Initiative
http://opensource.org/
Open Source Zone
http://opensource.devx.com/
O’Reilly’s Open Source site
http://opensource.oreilly.com/
Apache
http://apache.org
Ars Digita
http://www.arsdigita.com
Enhydra
http://enhydra.org/