Issue #15 January 2006

Book review:
Producing Open Source Software

by Paul W. Frields


Although open source development is, by and large, a cooperative environment thriving with volunteers and the sharing of code, it is also mercilessly evolutionary. The tendency of humans is to strive for improvement, and this push for achievement results in a free software landscape littered with the dessicated corpses of dead or abandoned projects. A project might be doomed from conception because its motivating concept does not fill a real need in the community, or because it is poorly planned. If it survives birth, it might lose the struggle to attract enough developers to help it grow and stay vital. If it manages to evolve into a solid, stable release, it then needs to defend its place in the product space, possibly facing off against leaner, faster, or more feature-rich competitors for users' and developers' attention. How, in this unforgiving and constantly shifting ecosphere, can you guarantee your project's success if you're just getting started in open source?

After reading Producing Open Source Software by Karl Fogel (O'Reilly, 2005; 260 pp.), my answer to this is that although there are no true guarantees, this book is your best bet. Producing OSS is not a very imposing volume (at least not to the extent of the books I last reviewed here), but it is packed to the brim with useful information about how to manage, and equally importantly how not to manage, a free software project.

Producing OSS is really the first book of its kind: a briefing manual that clearly explains virtually every concept, technology, and piece of jargon commonly bandied about in free software developer circles, all without assuming any familiarity on the part of the reader. Finally, all of this well understood but less than well documented information is codified in a single reference. What's more, it's concise enough to fit in a slim carry-on bag, and requires less than a week of after-dinner reading by even the most deliberate greenhorn. It's also worth mentioning that the book itself is open source, available through a Creative Commons license. To ensure the proper maintenance of this very worthy volume, though, I would encourage you to buy a copy if at all possible.

Although the book asks its readers to be familiar with very general software concepts such as source code, compiling, and patching, I would hazard a guess that even this low bar may be overstated. This book would also serve well as a primer for journalists, corporate personnel, and anyone else who interfaces with the free software world. Experts, on the other hand, will find that Producing OSS also contains information useful in dealing with the project management aspects of free software development. It offers not just advice to those starting new projects, but a chance for managers of existing OSS projects to compare lessons learned with the best practices laid out in the book.

Producing OSS is divided into nine chapters covering history; basic guidelines; technical, social and political infrastructure; commercial interests; communications; release and packaging guidelines; managing volunteers; and licenses, copyrights, and patents. Several appendices follow, which provide software resources and other supplementary information.

Although organizing the free software development world's oeuvre was undoubtedly difficult, there is only occasional need for cross-referencing in the book. In any work that targets novices, organization is of paramount importance, and here the book has succeeded admirably. The content is even summarized in the preface, much like any good technical reference, allowing readers to concentrate on relevant chapters. Each chapter is written straightforwardly, and does a superb job defining terms of art and jargon that may be well known to experienced open source developers, but less so to novices. A rare lapse from time to time can be forgiven, since often I felt the surrounding context was sufficient to clarify jargon. This is another feature of the book that makes it so readable by a lay audience, despite the lack of any graphical elements. The clear, concise style Fogel uses is sufficient to establish and describe concepts and practices.

Producing OSS also manages to avoid the gaping pitfall of becoming a "cookbook" for the command line. It would have been easy for a less talented writer to fall back on the ease of providing detailed technical procedures for setting up infrastructure such as version control repositories or web servers. Instead, Fogel concentrates on the primary success strategy of free software, which is the efficient marshaling and organization of limited, geographically and culturally diverse resources to achieve concrete goals. This approach implies just as many anthropological and sociological concerns as it does technological ones.

Fortunately, Fogel treats these human resource issues with just as much gravity as the technical ones. In a sense, Producing OSS is almost like exceptional API documentation; in particular, it documents the "human API" of open source collaboration. Just as a programmer who reads API documentation for a particular library of functions can make effective use of it in his programs, a new open source volunteer who reads and processes this book will be more effective participating in free software projects. To this end, there is a whole chapter devoted to recognizing, combating, and overcoming the difficulties of conducting human interaction online, in the context of OSS development.

Fogel is very forthcoming about the origins of this book, which arose from his several years of experience first as a maintainer of CVS, the ubiquitous open source version control system, and then as a project manager for one of its would-be successors, Subversion. It's a fair guess that the visibility of these projects, with a robust stream of both users and developers, made them ideal for feeding the development of this book.

His background as a commercial, paid developer of OSS also informs the chapter entitled "Money," which describes possible conflicts that can arise during interaction between those paid to develop and influence OSS and those who do it to scratch their itch. Fortunately, Fogel delves into this subject without being judgmental, paranoid, or dismissive about either side of that particular equation. Neither does he dwell on the negative, however: a substantial part of the chapter is devoted to balancing customer needs with the social forces of momentum and inertia. The book might have benefited somewhat from examples drawn from formal interviews with other highly visible OSS projects, since the emphasis on the author's personal experience tends to undermine the book as an authoritative work. But as the examples are, overall, both relevant and concise, this also is a minor quibble.

The picture of the OSS community Fogel draws is broad enough to encompass many aspects, not just that dealing with programming the software itself. In my own experience on the Fedora Documentation Project, I found several instances where I could recognize situations Fogel outlines, especially in his chapter on "Managing Volunteers." I saw how some of my activity early in the project, for instance, was prompted and nurtured by communications with the project leaders; how consciously increasing delegation and follow-up in the project is improving some of our products; and how important it is to prevent territorial instincts from interfering with progress. By taking a broader picture of life in the OSS community, Fogel has produced a truly worth while volume for anyone conducting, managing, or interacting with OSS development circles. For managers, novices at either development of project management, or anyone else interested in the process, philosophy, and social and organizational aspects of OSS development, Producing Open Source Software is a gold mine of wisdom and information, and very highly recommended.

About the author

Paul W. Frields is an engineer with a background in digital forensics and investigation who has taught Linux to hundreds of technical and law enforcement professionals. He spends part of his spare time working on odds and ends for the Fedora Project, especially documentation. The other part is devoted to his wife and children, and his part-time work as a professional musician.