Recently I authored a book about software . My company self-published the book. I chose to self-publish the book rather than shop the book around to professional publishing companies for a number of reasons:
1) Control. The book contains the entirety of the documentation for a piece of open source software . In my mind, this documentation must always be freely available; otherwise the platform isn't truly open source. I neither wanted to offer another for-profit company a copyright on the material, nor did I want to lose any future flexibility, such as the ability to grant copyright to a foundation during a code transfer, etc. Retaining maximum control was a non-negotiable requirement.
2) Simplicity. I didn't need to talk to anyone, or negotiate with anyone, or rationalize choices with anyone in order to get this book published. I could just do it.
3) Quality. I have heard some horror stories about publishers having low quality standards when it comes to layout and organization. I felt I could do as good a job, if not a better one, than many publishers with respect to book quality and layout.
Now that the book has been published, I think I think the choice to self-publish was a good one, and I'm extremely comfortable with the result.
I've never published a book through a traditional publishing house. But I know a good number of people who have. Although self-publishing a book is a pain, from what I hear from other authors who did not self-publish, it's not that much more of a pain than publishing a book via a professional publishing company.
I chose to use Createspace to help me with self-publishing. Createspace has a really good system for document review and publication. Basically you fill in a bunch of book info, provide them two PDFs (one for the cover and one for the actual book content), and they guide you through the process of publication. You receive a proof copy of the printed book before you need to make the book available to the world. Their proof and author copy prices are excellent, their integration with Amazon and other book outlets is very good, they provide an "eStore" presence for you, they handle payment processing, and they give generous royalties.
I chose Createspace over Lulu solely because I thought Createspace would have better Amazon.com integration than Lulu; Createspace is an Amazon subsidiary. I have no way of actually knowing this for a fact, because I've never used Lulu; they may have Amazon.com integration that is just as good. Subsidiary relationships can be poor indicators: large company organization often means that subsidiaries are effectively separate companies. But the book showed up on Amazon.com fairly quickly, and without any effort on my part, so it appears that Createspace and Amazon.com at least don't have an adversarial relationship.
After being available for a week, the book has sold exactly 24 copies. Most of the sales were via the eStore provided by Createspace, presumably due to my own marketing efforts. This is obviously a modest number, but because we kept overhead reasonably low, we've almost broken even on the hard cost of its publication already. Book sales alone will never recompense the time that went into writing it, but of course I never expected them to. Its availability is more of a "presence" thing, and as long as we lose no money on it, and people find the book worth its price, I'm happy.
One thing I didn't expect: it was extremely fun to be able to send out gift copies of the book to major project contributors (internal and upstream). Although it's a poor gift in comparison to the time these folks have spent making things that are useful to me, being able to send some physical thing to people you usually communicate almost purely electronically with is a novelty. We should all do that more often.
Some suggestions to potential technical book authors (the "if I had it to do all over again" list):
While I wouldn't trade away the flexibility of self-publishing just in order to avoid doing my own typesetting, it is an extremely time-consuming, tedious effort.
I used Sphinx to generate LaTeX source. I had to make a number of local modifications to Sphinx (which I later "contributed upstream" minimally via a maillist post) to make it write LaTeX suitable for a book. This worked extremely well. On the other hand, I became more familiar with LaTeX than I ever wanted to become while doing typestting for the book. This was no fun, but I'm certain it would have been worse if I had used, say, OpenOffice, or Word or something.
I didn't really know how this worked when I published my book. I knew enough that I made sure it would get an Amazon.com listing, but I really didn't understand that this didn't really mean reduced shipping rates for people in Europe. I just sort of assumed it would show up in Amazon's localized sites (like Amazon.co.uk, Amazon.fr, etc). But in order for the book to show up in country-specific sites, you need to take explicit steps; it doesn't just happen. When people from Europe buy from Amazon.com as opposed to their localized Amazon site, shipping can cost $50, and understandably, as great as your book may be, most reasonable people just won't pay this much extra. It will also take a long time to arrive.
I have since taken steps to make sure that the book will show up on Amazon's localized sites eventually (it still doesn't yet), but I didn't find any way to make sure it all happened as a "big bang" where it was available everywhere all at once. I don't really mind that it didn't happen as a big bang, but I would have preferred to know this beforehand, so I had a better response than "homina homina" when responding to complaints from people about localized availability and shipping rates. My answer is now still lame ("please wait"), but at least I have one.
I wanted this book to come out before PyCon . By the time I had finalized the book copy and done the typesetting, I was in a place where giving reviewers a reasonable amount of time to review would have delayed the book publication beyond that time. Andrew Sawyers bailed me out by reviewing much of the book before publication, but if I hadn't had his help, I would have been out of luck.
On finding reviewers. Although I did send out a general request for reviewers to a related maillist, I wasn't brave enough to email individuals asking each if they would do technical book review. I get requests every so often to do technical book review, and I almost always have to decline, because the compensation (usually a free book) usually can't justify the amount of work to do a good review unless the book topic aligns very closely with my own work. Due to my own reluctance to review tangential books, and because the topic is tangential to most (BFG isn't topping the popularity charts yet), I didn't want to put other folks in a place where they felt boxed in by such a request. I also didn't really have a budget to offer potential reviewers anything beyond a free book. I'm not sure how I'd do this differently in the future, but the book would only have been better with more reviewers.
I'd definitely recommend that potential technical book authors consider self-publishing rather than licensing their work to a professional publisher. There are tradeoffs, of course; if you go with a publishing house, more copies of your book are likely to be sold than if you self-publish and therefore also self-market. But often it just doesn't matter ; it certainly doesn't to me, anyway.
The availability of good physical-medium self-publishing facilities like Createspace is maybe a bellwether for the future of book publishing. I suspect professional book publishers will need to specialize even further, and offer better service, licensing terms, and royalty structures. I think this will be an overall improvement for writers and consumers, although it may imply an extremely painful adjustment for book publishing companies.