Open Source for Open Minds - Free Lunch? (
Page 2 of 3 )
Maybe there's no free lunch, but thanks to the efforts of thousands of
programmers and the Internet, there's more great software such as Linux and
Netscape freely available today than ever before.
Free software is also
called Open Source software, a newer and generally more acceptable label. You've
probably heard both of these terms, but like many, you may not be fully aware of
what Open Source software is and its potential benefits to career programmers.
In this article, I'll explain and comment about the Open Source movement, and
also add my two cents about how Open Source is affecting my career as a computer
book author.
{mospagebreak title=Rebirth of
the Hacker} The concept of Open Source software goes back to the early days of
programming when most computers were either in universities or in large company
research facilities. This was the age of the "real programmer" who, in the
tongue-in-cheek lore of the time, did not use Pascal. A real programmer was a
scientist, and as such freely shared his or her work with other programmers. A
real programmer was a "hacker," which at the time was a compliment; like calling
a chef a great cook.
Tracing today's Open Source movement leads back to
the early 1970s, when the military's ARPAnet connected programmers around the
country, and which eventually led to today's Internet. It was around this time
that Ken Thompson invented UNIX at Bell Laboratories. Another programmer, Dennis
Ritchie, created a programming language called C.
There's no question of
the tremendous impact that these two humble beginnings have had on operating
systems, programming technique, and application software. But along the way, the
explosive growth of the computer industry attracted the attention of big
business, and created a deepening conflict over the ownership of software and
the needs of computer users. Who would have guessed at the time that William
Gates, starting out with a cassette-distributed version of Basic, would one day
become the world's richest man? Many, however, correctly predicted that big
businesses such as Microsoft would have a dampening effect on the growth and
quality of computer software. Windows, and its many well-known bugs, is
proof.
Frustrated by this conflict, Richard Stallman in the mid 1980s
created GNU (a recursive acronym for GNU is not UNIX), an effort to provide a
freely distributed version of UNIX and related tools, applications, games, and
other software. The GNU project continues to thrive today, due in large part to
the efforts of another Open Source pioneer, Linus Torvalds, inventor of Linux.
Based on GNU, the original Linux kernel actually didn't work very well. This was
to change, however, when the growing Internet attracted the attention of
hundreds of top programmers. Through their efforts, Linux is now one of the
most, if not the most, stable PC operating systems in existence.
I don't
mean to provide here a comprehensive chronology of the Open Source movement, but
to make a simple observation from the foregoing overview. Open Source is
refocusing software development by providing access to source code for the
world's top computer scientists. Rather than lock out programmers, as big
business seems to prefer, Open Source invites all to participate. With Open
Source, real programmers are back in business.
{mospagebreak title=Is Free
Software Really Free?} Free software isn't necessarily free of cost. Instead,
free, Open Source software is free in the sense that anyone who acquires it, by
any means, is free to use and redistribute that software. For example, you are
free to sell or give away your copy of Linux, provided you include the GPL (GNU
General Public License), and nobody can prevent you from doing so.
You
are also free to modify Open Source software, extract portions of the source
code for your own use, and put that software to work in any way you wish. An
Open Source distributor cannot restrict you from using the software in, say,
genetic research, or in some other controversial field. It is up to you how to
use Open Source software.
That fact remains true even if you sell Open
Source software on a CD-ROM, or perhaps on the Internet. The software is still
unencumbered because your customers may give it away or resell it themselves.
But you are free to charge whatever you want for the program or operating
system. The only limitation is that you may not restrict how your customers use
or distribute the software—their rights are the same as yours, and must remain
so. In addition, in order to be considered true Open Source software, it must be
distributed with all of its source code, or that source code must be freely
available over the Internet.
These facts lead to one key advantage that
commercial software can never match. Because many programmers work on Open
Source software, it evolves naturally according to the needs of its users. What
a concept! Contrast this with the typical commercial program that spouts
features dictated by management's view of the marketplace, causing programmers
to waste time creating whiz-bang elements that nobody wants or is likely to use.
The fear that developers will lose control over their programs if distributed as
Open Source is overwhelmed by the real benefit of having teams of programmers
operate on the code. The original developer still owns the rights to the
software and is in charge of accepting or denying proposed
modifications.
None of this is mere conjecture. Real Open Source projects
are making real success stories. Linux is, of course, one of Open Source's great
masterpieces. The Internet is another. Without the cooperation of Open Source
programmers, who have contributed the protocols and core programming that keeps
the Internet alive, the Internet and World Wide Web would simply not exist. Many
major Web sites are powered by the Open Source Apache Web server. Another good
example is the multi-billion-dollar corporation, Netscape, which evolved from
the Open Source Mosaic Web browser.
{mospagebreak title=In The
Public Eye} The term "free software" has caused a lot of confusion in the
software marketplace. Free software is, as I've said, not necessarily free of
charge, but is free of restrictions placed on the use and distribution of the
software. But despite tons of articles on the subject, many people still confuse
free software with public domain software, one reason the term Open Source
software has come into vogue.
Public domain software is owned by the
general public. Its copyright is in the public domain, and therefore, anyone has
the right to copy the software and use it as they wish. In that sense, public
domain software is similar to Open Source software. The two concepts are similar
also in that anyone may collect public domain software and sell it, for example,
on a CD-ROM. However, public domain software doesn't always come with source
code.
Unlike public domain software, Open Source software is usually
copyrighted by a company or an individual who retains the rights to that
software. How that software is distributed, not the issue of ownership, is what
gives the software its Open Source status.
{mospagebreak title=A Case in
Point} Bruce E. Wampler's V class library for Linux and Windows is a good
example of how Open Source software benefits from the participation of its
users, and how other programmers might find new opportunities by participating
in the Open Source movement. (I based the final chapters of GNU C++ for Linux on
V as an example of object-oriented C++ programming for the X window system. The
book includes the entire V library on CD-ROM.) Recently, I asked Bruce a few
questions via email. His comments offer some intriguing insights into the value
of Open Source software:
What do you see as the main benefits from the
Open Source movement, especially to software consumers?"The main
advantage to consumers is variety. Without Open Source, there are many excellent
programs they would never see. Most of these programs are quite specialized, and
may be difficult to find, but they give choices that wouldn't exist
otherwise.
"At a bigger scale (Linux for example), there are great
programs that commercial companies are trying to exploit by giving everyone a
choice. How many Linux companies are there? Five or six? All are selling
versions of Linux, all based on the original Open Source. As an end user, I
don't mind paying $30 or $50 for a complete ready-to-run Linux package. I don't
think any of this would have happened without Open Source.
"In the end,
it is choice that wins. Choice to use new, innovative programs, and a choice of
packagers for mainstream applications like Linux."
Do you see Open
Source software being popular mainly in scientific circles, or will it become a
viable alternative to commercially sold programs? Is the popularity of Linux a
fluke, or an indicator of a new future for software distribution? "I think
Open Source will help to keep small, innovative developers alive. Although the
prospect of revealing your crown jewels to the world may be frightening, I don't
think it really matters. Other than a few exceptions such as Linux, we don't
have several companies trying to sell support for the same Open Source product.
GPL practically guarantees this.
"Take V, for example. My distribution
remains the only source. I've gotten lots of feedback on bugs and features, but
no one has tried to release an alternate version. Because V is Open Source,
users feel more confident because they know at least they will have access to
the source code to protect themselves.
"So in the long term, I believe
successful, small, innovative software companies will survive by adopting the
Open Source model. There is a level of comfort knowing the source is available
if necessary, and this will make customers prefer Open Source."
Why
did you decide to release V as free Open Source software?"V has
grown beyond my original intent. It was first supposed to be an academic
tool--used to teach introductory programming. And in a university environment,
nothing other than Open Source makes any sense. But in the long run, it has been
a win for everyone. Programmers use it knowing the source will always be
available. I receive outside help on keeping V going that I wouldn't have if it
were closed. And I get a good feeling that I'm helping people produce better
software."
Finally, in what ways might software developers join the
Open Source movement and still make a living at their craft? Or is Open Source
at odds with programmers being paid fairly for their work?"That is a
complicated question. I've figured out only two ways to make a living with Open
Source software--with a company, and as an individual.
"Companies do it
by providing support and packaging. They hire programmers to develop new
software under Open Source, or to maintain and improve existing Open Source
software.
"To make a living as an individual is harder, I think, and
requires patience. Creating Open Source software as an individual probably won't
have an immediate payback. But over time, good software will lead to new
opportunities.
"A truly great program, for instance, might lead to [the
programmer] forming a successful company to support it. The software may also
attract the attention of big companies, leading to new opportunities there. It
can also lead to an impressive resume for advancing a career. "My own case is
probably not typical. I once co-founded a very successful commercial software
company, which was sold. I've seen V and VIDE as a way of giving something back
to the software community. So far, I've not made a cent from these V projects,
and in fact have spent considerable money maintaining the V web site. "However,
I have had other opportunities. For instance, I received a lucrative offer to
direct a software project for a large computer company, mostly based on the work
I'd done with V. And there have been other opportunities that I've chosen not to
take. I don't think these opportunities would have materialized without the work
I've done with V. Some of the opportunities came early in the V project, while
others are still developing after several years. I am fortunate to have the
means to allow this. Others might have to do this as a second "job", or as a
hobby. There is some element of risk--all the work might never pay off with real
money. But for a software developer like me who generally shies from the
corporate world, Open Source is the way to go."
{mospagebreak title=A Case in
Print} My own experience with Open Source as a computer book author is a little
different. While writing
GNU C++ for Linux, I had the uneasy thought that
I would be called on the carpet for selling a $50 book of "free software." Of
course, publishers have been pulling this same trick for years with cover copy
in a starburst that states something like "Free CD-ROM Included!" Since you
still have to pay for the book to get the disk, isn't this just a marketing
gimmick? Perhaps not. In years long past, prior to the Internet explosion, and
before printing companies figured out how to package disks and CD-ROMs in book
covers, I used to sell diskettes of the programs in my books. Later, when books
started to include "free" disks, I realized it was time to change how I
distributed electronic copies of the program listings in my
books.
Scrapping my disk sale business, I reasoned, would not necessarily
mean a loss of revenue. On the contrary, not following the trend to include a
"free" disk in every book might soon put me out of business entirely. Readers
faced with a decision of choosing between two books on the same subject, one
with a disk and one without, would naturally take home the one with the extra
goodies. As it turned out, after including the listings on disk inside the back
cover, I began to sell more books than ever before.
Publishing tutorial
listings, I realize, is not on the same level as publishing the source code to a
freely distributed UNIX kernel such as Linux. But there is a connection,
especially in the publishing of algorithmic implementations—a specific sorting
subroutine, for example, that has some unique operational feature. These
tidbits, which I try to include in my books, lend extra value to the text, and I
have always believed that readers who have purchased the book, or checked it out
from a library, should be free to use my code in any way they choose.
But
now a new thought has begun to nag me, and I am today faced with another
business decision raised directly by the Internet and the Open Source movement.
The question is, should I, and other authors, publish books in full on the
Internet? What would that do to book sales, and hence to an author's ability to
earn a living? Frankly, I don't know the answers to those questions (neither do
my publishers), but meanwhile, I have agreed to compromise in two
ways:
But now a new thought has begun to nag me, and I am today faced
with another business decision raised directly by the Internet and the Open
Source movement. The question is, should I and other authors publish books in
full on the Internet? What would that do to book sales, and hence to an author's
ability to earn a living? Frankly, I don't know the answers to those questions
(neither do my publishers), but meanwhile, I have agreed to compromise in two
ways:
1. By making sample chapters from
GNU C++ for Linux
available online (which will be posted in the coming weeks). I'll look into
doing the same for other books.
2. By making all source code listings
freely available on my Web site,
http://www.tomswan.com, along with updates and
corrections. I also plan to add source code files from some of my out of print
books.
I would like to hear from readers on the question of online book
publishing. While I do not have any objection to publishing online material and
making it freely available, my fear is that authors will be forced to evolve
from writers to advertising agents. Must authors derive an income from yet
another Web site full of advertising banners and affiliate-program icons? I'm
interested in your thoughts on this question: Would you still buy a book if it
were available online?
{mospagebreak title=Open Source
and You} For many programmers, the debate about Open Source software boils down
to a simple question. Can a working programmer make money developing free
software? The answer is yes, maybe even a lot of money, but you must be a clever
go-getter to find an income-producing method that works for you.
But
remember, competition among Open Source developers may be even more fierce than
among commercial vendors. Perhaps that competition, which can only result in
better software, will ultimately be the real benefit of Open Source. If you
decide to join the Open Source movement, be ready to take advantage of offers
that may come from surprising sources. Just keep an open mind and the
opportunities will come.