Free Books, Why Not?by Allen B. Downey
In 1998 I wrote a short textbook for one of my classes and released it under a free license; that is, I gave readers permission to copy, modify and redistribute the book in any format, with only two restrictions: derivative works have to acknowledge the original and, if distributed, have to be under the same license.
I had in mind that other professors might want the ability to choose chapters from several books or customize a book for a particular class. I imagined that some of them might add material, and I hoped that readers would help me find the errors.
I didn't have any profound ideas about free books at the time. When other writers asked me about doing the same thing, I couldn't make much of a case; to me, it just seemed like a good idea.
Eight years later, some less obvious benefits are becoming apparent, and that's what this article is about.
At the risk of spoiling it, here is the two-bullet version of what it took me eight years to figure out:
And now, if you're interested, here's how I came to that conclusion:
Release early and often
I wrote the first 13 chapters of How to Think Like a Computer Scientist in 14 days. I wrote one 10-page chapter a day for 13 straight days, edited for a day, and then sent it to a short run printer who promised to get it back to me before the first day of classes. A friend, the artist Scott Reed, let me scan one of his prints for the cover.
When I gave the book to the students, I explained that they would be reading one chapter per week, so they would be reading it seven times slower than I wrote it. If we had a race, I explained, and they started reading when I started writing, I would win by 11 weeks. They were not amused.
So one advantage of free books is turnaround time. Another is low activation energy; I didn't have time to write a conventional textbook. I probably never will. But I had time to write a free textbook (barely), and that was the beginning of a process that turned out to be surprisingly cumulative.
The next semester I wrote six more chapters about data structures. Then I signed up to help grade the Computer Science AP exam, where I met some of the wonderful people who teach computer science at the high school level. I thought my book might be useful, but at the time the AP exam was in C++, so I wrote a C++ version tailored to the AP curriculum. It never caught on, though, especially after the AP exam switched to Java.
But at that point I had two versions of a 200-page book, each of which had gone through several editions.
Give up controlFor me the first real surprise came in April 1999, when I heard from Jeff Elkner. Jeff had been talking to Richard Stallman, who passed along a flyer I gave him about my project.
Jeff and I started collaborating, and Jeff started translating How to Think into Python. At the same time, one of his students was translating the Java version into Spanish.
I quickly realized that with multiple programming languages and multiple natural languages, the number of translations was already out of control.
Since then, I have been contacted by people interested in writing adaptations for Ruby and Eiffel, and translations into French, German, Dutch, Indonesian, Mandarin, and more. Some of these projects are substantially finished and available on the web; others seem to have fizzled.
When potential translators write to me, I encourage them to make their work available and keep me posted. Some do, some don't. I would love to maintain the array of versions, but I've learned that I can't centralize this process.
When Jeff sent me the first Python version, I had never worked with Python, so I had the odd experience of learning a new language by reading my own book. I came to love the language, but I had mixed feeling about the book. Jeff's style is different from mine, and as these things go, I like mine better!
I felt obligated to make a substantial revision of the book. I didn't have time to do a thorough job, but I made another 14-day pass and sent it back to Jeff.
I am happy with the result, but now I think my reaction was a mistake. I am a ham-fisted editor, and Jeff was not thrilled. By taking back control of the project, I erased too much of what he had contributed.
Fortunately, Jeff is more generous than I deserve and he still collaborates with me, but my blunder could just as easily have killed the project.
If your book is your baby, it's hard to let strangers have their way with it. But if you want creative people to work with your material, you have to allow them to take ownership.
You might have to be a policeman
In November 2000, I heard from Gerard Swinnen, a high school teacher in Belgium who had translated the Python book into French. He asked for my permission to distribute his translation as a free book. Since I had already given this permission in my license, I said yes.
I read French and speak it badly, so it was fun to read my book in French, and to learn some technical vocabulary, like "debogguer", which means "debug".
I forgot about this project until July 2005, when I Googled it and discovered that O'Reilly France had published the book under the title Apprendre à programmer avec Python.
I was excited, but concerned that O'Reilly's web page didn't say anything about the original book, or about the license of the translation.
I ordered a copy from Amazon.fr, and was disappointed to see that the book is under a conventional copyright, which denies readers the right to copy, modify or redistribute the text.
My feelings were mixed. It was clear that the book had evolved since I had seen it last. Some of the remaining chapters are similar to the original, but many of them are almost entirely new.
I exchanged email with Mr. Swinnen and came to understand that he had started with a translation of our book, and gradually adapted it until most of the original material was gone.
On one hand, I was delighted, because this was a way of using a free book that I hadn't anticipated. I didn't want to obstruct Mr. Swinnen's work or deny him credit, but in addition to my personal annoyance I also felt an obligation to enforce my license.
I sent a series of emails to Mr. Swinnen's editor, the chief editor of O'Reilly France, and finally to Tim O'Reilly himself. As I wrote to Mr. O'Reilly:
"I don't think Jeff [Elkner] and Chris [Meyers] would have written a book without starting with mine, and I don't think Mr. Swinnen would have written his without starting with ours. This demonstrates of the power of Free Books, but it also demonstrates the importance of addressing violations of the FDL.
To his credit, Mr. O'Reilly instructed the French office to add a link from the French book's web page to ours, and they agreed to bring the book into compliance if it is reprinted. I haven't heard from them since, so to the best of my knowledge they are still selling the version of the book I think is in violation.
I wish this was the only non-compliant use of my book, but there are others. In this case I was able to get some satisfaction, but for the most part I don't have time to be a policeman. Besides, I only read English, French and (a little) German, so writers in other languages are relatively safe from my scrutiny.
Keep a contributor listOn a more positive note, I get several emails a week from readers. Most of them have compliments about the book, which are nice to hear (although the sample of people who bother to write may be biased in my favor).
Niceties aside, many correspondents also point out errors and make suggestions, and many are genuinely helpful. My second free book, The Little Book of Semaphores, was particularly riddled with errors. It has fewer now, but the nature of synchronization problems is that it's hard to be sure.
Early on, Jeff Elkner suggested that we keep a list of people who made contributions and include it in the book, which was so obviously a good idea that I felt bad for omitting it in the first few editions. Now all my books have a contributor list.
Hard copy?Most publishers aren't interested in free books, so if you want to sell hard copies, you will have to find a free-book-friendly publisher or do it yourself.
In 2001 Jeff was approached by the Center for the Public Domain, which was launching a publisher to be called Lulu Press. They were interested in publishing the Python version of How to Think.
We signed a contract, they set us up with an editor and a cover designer, and we got to work getting the book ready for the big league.
In November 2001, Lulu pulled the plug on the project, but they agreed to let us use the cover they had designed.
At that point we were a print run away from publication, so my now-wife and I created a partnership called Green Tea Press and sent the book to a short-run printer.
By this time electronic versions of the book were available and well known on the web, so we listed the book on Amazon, added links from all of our pages, and waited for orders.
Within a week, we had two modest orders from Amazon, for a total of 12 copies. At that rate we would sell the first run (100 copies) in two months, so we pulled the trigger on a bigger run.
I asked Lulu how many copies of the book they had planned to print, and they said 2000, so that's what we did.
A few weeks went by. A few quiet weeks. A few weeks without orders. Then I got a call from my mother, who was delighted to report that the copies she had ordered from Amazon had arrived.
All ten of them.
Good news: we had sold two copies to people unrelated to me. Bad news: we had 2088 more copies to sell.
Four years later, we have sold about 1000 copies, so the break-even point is behind us. But if you decide to publish yourself, you might want to start with a smaller print run.
Beware working titlesIt's not easy to come up with a good title, so a lot of people leave it to the end and use a working title until something official happens. Sometimes the working title is something facetious and grandiose like How to Think Like a Computer Scientist.
Well, working titles have a tendency to stick. Don't let this happen to you.
Great book. Just imagine if it were free.This semester I am teaching a mini-course on Godel's Incompleteness Theorems. In my preparations, I found one more case for free books.
The first edition of Nagel and Newman's Godel's Proof came out in 1958. The blurb on the back cover calls it "a little masterpiece of exegesis." I agree, and so did Douglas Hofstadter when he read it, at the age of 14, in 1959.
Godel's Proof was one of the "parents" of Hofstadter's enormously popular book, Godel, Escher, Bach: an Eternal Golden Braid, which he started in 1972 and published in 1979.
Looking back at Godel's Proof, Hofstadter "stumbled over certain passages...and realized, after a while, that the stumbling was not entirely [his] own fault." Hofstadter writes, "It made me sad to realize that this beloved book had a few blemishes, but there was obviously nothing I could do about it."
It makes me sad that people think it is "obvious" that there is nothing they can do to remove the blemishes from an otherwise great book.
But at least in this case Hofstadter turned out to be wrong; New York University Press asked him to edit the revised edition of Godel's Proof, which was published in 2001.
The result is astonishing. Without sacrificing the conciseness of the first edition, Hofstadter clarifies the few instances of murky presentation, cleans up the examples that didn't quite work, and makes the fuzzy spots more precise. It's hard to argue with this success; this example shows that even in conventional publishing, one book can beget another, and readers can contribute improvements.
Now just imagine what would happen if the cycle time was less than forty years, and if people could modify, adapt, and improve on prior work without the prerequisites of earning a Ph.D. and writing a record-breaking bestseller.
Why free books?A free book is the root of a tree of potential adaptations, translations, and entirely new books that branch out from the original. Free books transform readers into proof-readers, editors, anthologists, correspondents, contributors, collaborators, writers and authors.
If you are thinking about writing a book, start soon, release early and often, give up control but do a little policing, keep a contributor list, and make it free.