Before I mention the titles we've thought about, it's worth mentioning that a couple of possibly useful titles are already taken (since otherwise people might suggest them to me): Advanced Linux Programming (Mitchell et al., 2001, Sams) and Linux System Programming (Love, 2007, O’Reilly).
When thinking of the titles below, I try to keep in mind two important aspects to the title of a book (which are not always in perfect harmony):
- Is the title an accurate reflection of the subject of the book?
- Does the title help sell the book? For example, does it help the book get found in online searches? Is it memorable? Does it get good shelf placement in bookshops? And so on.
This has been my working title for the book since its inception, and captures two points that are important for marketing:
- The focus on Linux.
- The inclusion of a significant section on network programming. This is important because there are whole books devoted to network programming (most obviously, the books of W. Richard Stevens) so there is an obvious market. Although the material that is purely about network programming is only about 10% of the book (i.e., 150 pages), the fact that a lot of related topics are covered (e.g., process creation, program execution, secure programming, I/O multiplexing, threaded programming) means that the book's coverage of network programming is in effect quite substantial.
- It doesn't capture an important aspect of the book: the book focuses heavily on portability, and clearly delineates Linux extensions from "standard" Unix. This means the book really can be used by system programmers on other Unix systems. (The current version of the preface makes this point strongly.)
- It could be confusing if I one day write a book whose subject is more purely "Linux Network Programming" (which is something I might one day do).
- It could be considered a little prosaic.
This title attempts to keep "Network" while trying also to address the portable focus of the book. But is it a little clunky as a title?
3. Linux and UNIX System Programming
This title captures the book's focus on both Linux specifically and Unix generally: on the one hand, the book constantly drills down into the specifics of Linux, while on the other hand, it keeps a close eye on Unix standards and portability (and occasionally drills down into details about other Unix systems). (Again, see the preface.)
This title is more concise than Linux/UNIX System and Network Programming, but, conversely, it omits mention of the network programming component of the book. The question is, if we're going for a shorter title, is it more important from a marketing point of view to mention Unix or to mention networking?
Like Linux System and Network Programming, this title might be considered prosaic. On the other hand, it's solid, and could be a title that has a good shelf life.
4. The Craft of Linux Programming
I like this title quite a lot. It has a few resonances. One is the comparison of "craft" with "art", which carries over quite happily into computing. For example, Knuth’s The Art of Computer Programming is exactly that: a (magnificent) work of art about the fundamentals of computing. By contrast, my book is about a lot of the everyday tools that are required for the craft of system programming. In addition, the English word craft derives from the German Kraft (I'm not German, but I live in Germany). Kraft can be translated as power, which seems a reasonable summary of a goal of the book: to provide its readers with the power to write effective system programs.
The title is quirky, and maybe less searchable than others. On the other hand, it has the virtue of being distinctive. Stevens' classic had a somewhat quirky and distinctive title as well, one that distinguished it from the pack: Advanced Programming in the Unix Environment. So, in the end, I'm undecided about whether quirkiness is a marketing plus or minus.
5. Advanced Programming in the Linux Environment
Because of its resonance with another title, inevitably, I have to preface discussion of this title with a couple of remarks. First, it was not my idea (it was someone else's suggestion), and I was initially rather against it. Second, to my surprise, informal canvassing of some of my technical reviewers showed that several of them were quite warm to the title (and none of them disliked it), even though most (probably all) of them are well aware of the other book.
Of course, the title is a play on Stevens' Advanced Programming in the Unix Environment (which was in turn a play on an earlier quirkily titled classic, Kernighan & Pike, The Unix Programming Environment).
Against this title:
- Maybe it looks presumptuous and/or cheeky to choose such an obviously close title.
- It doesn't mention Unix or Network (see my comments on the other titles above).
- In terms of Linux titles, it's reasonably distinctive.
- The flip side of cheeky and presumptuous is that the title is also a homage and conveys something of my intent in writing the book. Any book that tries to seriously cover the area of system programming on Unix-type systems owes a debt to Stevens' work, both in terms of the rich technical resources that his books provide, and in terms of the wonderful clarity of his writing. As a system programming text, my book certainly aims at something like the technical depth of Stevens (while at the same time: broadening the range of topics covered, addressing the latest standards, and providing in-depth specifics of the most widely-used Unix-type system). And I continue to be amazed by the clarity of his writing, and attempt to get somewhere close to that clarity (inevitably, it's hard for me to judge how well I've done on that score, since I'm too close to my own writing and ideas to be a good judge).
In summary, the titles that we're so far considering are the following:
- Linux System and Network Programming
- Linux/UNIX System and Network Programming
- Linux and UNIX System Programming
- The Craft of Linux Programming
- Advanced Programming in the Linux Environment
- Something else?
Update: if you do email a vote to me, it would also be interesting to hear the reasons why you prefer or dislike certain titles. Thanks!