Architecture of Open Source Applications cover The Architecture of Open Source Applications
Amy Brown and Greg Wilson (eds.), 2011, 978-1-257-63801-7
License / Buy / News / Contribute / FAQ

Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.

This book's goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.

If you are a junior developer, and want to learn how your more experienced colleagues think, this book is the place to start. If you are an intermediate or senior developer, and want to see how your peers have solved hard design problems, this book can help you too.

…a wonderful book and a wonderful contribution to the industry.
Grady Booch


Introduction Amy Brown and Greg Wilson ix
1. Asterisk Russell Bryant 1
2. Audacity James Crook 15
3. The Bourne-Again Shell Chet Ramey 29
4. Berkeley DB Margo Seltzer and Keith Bostic 45
5. CMake Bill Hoffman and Kenneth Martin 67
6. Eclipse Kim Moir 77
7. Graphite Chris Davis 101
8. The Hadoop Distributed
File System
Robert Chansler, Hairong Kuang, Sanjay Radia,
Konstantin Shvachko, and Suresh Srinivas
9. Continuous Integration C. Titus Brown and Rosangela Canino-Koning 125
10. Jitsi Emil Ivov 139
11. LLVM Chris Lattner 155
12. Mercurial Dirkjan Ochtman 171
13. The NoSQL Ecosystem Adam Marcus 185
14. Python Packaging Tarek Ziadé 205
15. Riak and Erlang/OTP Francesco Cesarini, Andy Gross, and Justin Sheehy 229
16. Selenium WebDriver Simon Stewart 245
17. Sendmail Eric Allman 271
18. SnowFlock Roy Bryant and Andrés Lagar-Cavilla 291
19. SocialCalc Audrey Tang 303
20. Telepathy Danielle Madeley 325
21. Thousand Parsec Alan Laudicina and Aaron Mavrinac 345
22. Violet Cay Horstmann 361
23. VisTrails Juliana Freire, David Koop, Emanuele Santos,
Carlos Scheidegger, Claudio Silva, and Huy T. Vo
24. VTK Berk Geveci and Will Schroeder 395
25. Battle For Wesnoth Richard Shimooka and David White 411
Making Software

Follow us at or search for #aosa on Twitter.


This work is made available under the Creative Commons Attribution 3.0 Unported license. Please see the full description of the license for details.

All royalties from sales of this book will be donated to Amnesty International.


Paperback and PDF copies of this book may be purchased from and other online booksellers. All royalties from these sales will be donated to Amnesty International. If you do buy a copy, please do so directly from Lulu:

Paperback PDF
Lulu Amazon Lulu
You pay: $35.00 $35.00 $10.00
Lulu gets: $3.74 $0.94 $2.79
Amazon gets: $17.50
Amnesty gets: $14.98 $3.78 $7.21


2011-06-02: A chapter on PyPy is now being written.
2011-05-31: A Russian translation is now under way.
2011-05-30: A Japanese translation is now under way.
2011-05-29: People are now writing chapters on Mailman, and SQLAlchemy. We would like lots more: please check out (and add to) our wish list.
2011-05-27: Chinese, Portuguese, and Spanish translations are now under way; please contact the coordinators if you would like to help.
2011-05-27: We have added a recommended reading page.
2011-05-25: Several people have reported that will not ship to a PO box in some countries, only to a street address. There does not appear to be much we can do about this (but please contact Lulu support and let them know you would like this fixed).
2011-05-23: We are working to produce various e-book formats, and will upload them to as soon as they are available. (It turns out to be a lot harder to produce good-looking e-books from LaTeX than it ought to be in the early 21st Century.)


Dozens of volunteers worked hard to create this book, but there is still lots to do. You can help by reporting errors, by helping to translate the content into other languages and formats, or by describing the architecture of other open source projects. Please contact us the coordinators for various translations listed below, or mail us directly at if you would like to start a new translation or write a chapter yourself.

Chinese (Simplified) Liu Jiang
Chinese (Traditional) Kenneth Ho
Japanese Takagi Masahiro
Portuguese (Brazilian) Rogerio Atem de Carvalho
Portuguese (European) António Melo
Russian Nikita Pchelin
Spanish Sebastian Kreft and Diego Bravo Estrada
New Chapters
Mailman Barry Warsaw
PyPy Benjamin Peterson
SQLAlchemy Michael Bayer