I found this book enjoyable, but it is difficult to classify its purpose. According to the author, communities for whom it’s intended include my own: Unix programmers with some experience who are educating novices, as well as other groups from various backgrounds who would profit from learning Unix history, philosophy, and style. The place of the book is somewhere in the convex hull of the related references Raymond cites [1,2,3,4]. Note their wide range! I would say [1], while different from this book, is maybe its nearest neighbor in the set.
The book is a mix of history, culture, philosophy, and technical material. There are appropriately positive descriptions and support for open source software and portability. There is, by design, no detailed code (in stark contrast with The Unix programming environment [2] and with The art of computer programming [3], which influenced the name of the present book), but there are meta-level descriptions of important programs and links to code.
The top two levels of the table of contents aren’t terribly helpful in reflecting the material that they contain. There are four main units: “Context,” “Design,” “Implementation,” and “Community.” The chapters in the “Context” unit are “Philosophy,” “History,” and “Contrasts.” The first four chapters in “Design,” for example, are “Modularity,” “Textuality,” “Transparency,” and “Multiprogramming.” Fortunately, the table goes down another couple of levels, providing more assistance to the reader regarding what she or he should expect. For example, Emacs can be found as a topic by browsing those lower levels of the table. In fact, it appears in some form in several different chapters. The difficulty in finding specific topics is exacerbated by the lack of an index. Admittedly, I am reviewing a prepublication draft of the book, but the presence of some appendices (including a useful Glossary of Abbreviations) leads me to conclude that no index is planned.
The historical accounts are interesting, the illustrations of the ongoing influence of Unix (even in the Windows generation) are impressive, the pitch for open source is appropriate, and some of the plain fun of Unix is captured. Further, there are several entertaining quotations.
I hope that some of the typos will be spotted and fixed, and the bibliographic entries formatted consistently by publication time. Besides the lack of an index, some other shortcomings, in my opinion, are the absence of a timeline in the otherwise good historical account, and the book’s size. Exceeding 500 pages may not be excessive these days, but The Unix programming environment [2], which Raymond correctly characterizes as “a classic [that] shows its age a bit,” managed to provide nontrivial code, pose challenging and instructive exercises, and convey the aesthetic beauty of the Unix environment, all in 357 pages.