Dot Rose

Appendix C


Why Write Free Software?

On January 12, 1988, Larry Wall, the author of the Perl programming language wrote the following response to the question, "what motivates a programmer to develop a large complex software system, perhaps requiring many weeks (or even years) of development effort, which is then posted for the world to use, for free?"

I suppose I can use myself for an example.

All of the reasons mentioned above (the challenge of solving a puzzle; the desire to be famous; and probably most important, a neurotic need to prove myself) play a part, but I feel like they all miss the point slightly.

At the start of any project, I'm programming primarily to please myself. (The two chief virtues in a programmer are laziness and impatience.) After a while somebody looks over my shoulder and says, "That's neat. It'd be neater if it did such-and-so." So the thing gets neater. Pretty soon (a year or two) I have an rn, a warp, a patch, or a perl. One of these years I'll have a metaconfig.

I then say to myself, "I don't want my life's work to die when this computer is scrapped, so I should let some other people use this. If I ask my company to sell this, it'll never see the light of day, and nobody would pay much for it anyway. If I sell it myself, I'll be in trouble with my company, to whom I signed my life away when I was hired. If I give it away, I can pretend it was worthless in the first place, so my company won't care. In any event, it's easier to ask forgiveness than permission."

So a freely distributable program is born.

At this point I'm no longer working for a company that makes me sign my life away, but by now I'm in the habit. Besides, I still harbor the deep-down suspicion that nobody would pay money for what I write, since most of it just helps you do something better that you could already do some other way. How much money would you personally pay to upgrade from readnews to rn? How much money would you pay for the patch program? As for warp, it's a mere game. And anything you can do with perl you can eventually do with an amazing and totally unreadable conglomeration of awk, sed, sh and C.

It's not so much that people don't value the programs after they have them--they do value them. But they're not the sort of thing that would ever catch on if they had to overcome the marketing barrier. (I don't yet know if perl will catch on at all--I'm worried enough about it that I specifically included an awk-to-perl translator just to help it catch on.) Maybe it's all just an inferiority complex. Or maybe I don't like to be mercenary.

So I guess I'd say that the reason some software comes free is that the mechanism for selling it is missing, either from the work environment, or from the heart of the programmer.

What programmers like me need is a benefactor, like the old composers and artists used to have. Anybody want to support me while I make beautiful things? My hope is that some billionaire who reads the net for pleasure(?) will someday say "I'd like to pay you for all the people who have used rn over the years..." and drop $1,000,000 or so on me so I could live off the interest and finish the new rn. :-)

If you are a benefactor, my address is 9132 Kester Ave, Panorama City, CA 91402, and my phone number is (818) 893-8182. Only 1/2 :-)

If you aren't a benefactor, that's ok, I really expect my rewards in heaven.

Larry Wall
lwall@jpl-devvax.jpl.nasa.gov

Six days later he wrote the following description of the language and why he wrote it:

As to what it is, here's the hype paragraph from the manual page:

Perl is a interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal). It combines (in the author's opinion, anyway) some of the best features of C, sed, awk, and sh, so people familiar with those languages should have little difficulty with it. (Language historians will also note some vestiges of csh, Pascal, and even BASIC-PLUS.) Expression syntax corresponds quite closely to C expression syntax. If you have a problem that would ordinarily use sed or awk or sh, but it exceeds their capabilities or must run a little faster, and you don't want to write the silly thing in C, then perl may be for you. There are also translators to turn your sed and awk scripts into perl scripts.

That's all I wanted to put in the manual page, but I could tell you a little more. First of all, why I wrote it: I wanted to set up a distributed configuration control system based on the news system, and I had to be able to print reports based on scanning a bunch of articles. Awk and sed didn't permit me to navigate around the news system like I wanted to do (following embedded references to other articles). The shells can navigate, but you can't do anything efficiently when you have to start up a new process every time you turn around. I could have done it in C, of course, but text processing in C is an ungainly proposition at best. On top of which, C didn't have the picture-style report formats I wanted. And I didn't want to do a make every time I tweaked the program.

Somewhat later I realized that many systems programming problems deal with text--the situation arises frequently that you want to take the output of various status programs (either directly via a pipe or indirectly from a log file) and massage the data to show you just what you want to know, or pick out various bits of information to drive some other operation. In the first category is a set of LAN-wide status reporting scripts that deliver a report to me each morning concerning anomalous conditions on any of the machines I'm responsible for. In the second category are programs like gsh and gcp, which are just like rsh and rcp except that they work globally on some set of machines defined in a system file.



Continue to Appendix D1: Secretaries use Linux, taxpayers save millions

Return to Appendix B: Consulting Services Available to the School
Return to Table of Contents


Copyright © 2004 Henry Hartley - GNU Free Documentation License