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.
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.
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.
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.
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."
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?
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.
blog comments powered by Disqus