Architecture of Open Source Applications cover The Architecture of Open Source Applications
Amy Brown and Greg Wilson (eds.)
Lulu.com, 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

Contents

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
111
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
377
24. VTK Berk Geveci and Will Schroeder 395
25. Battle For Wesnoth Richard Shimooka and David White 411
Bibliography
Making Software

Follow us at http://third-bit.com/blog/archives/category/aosa or search for #aosa on Twitter.

License

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.

Purchasing

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

Paperback epub
Buy on Lulu Buy on Amazon Buy on Lulu Buy from
other retailer
You pay: $35.00 $35.00 $10.00 $10.00
Lulu gets: $3.74 $0.94 $2.79 n/a
Amazon gets: $17.50
Amnesty gets: $14.98 $3.78 $7.21 $5.60

The book is also available for Kindle on Amazon for US$9.99. (Amnesty International will get $6.66 of each sale).

News

2012-01-24 We have finalized the chapters that will appear in Volume 2, which we hope will be available in March 2012.
2011-09-07 The Architecture of Open Source Applications is now available in epub format from Lulu.
2011-06-11: The book is now available for Kindle on Amazon. Thanks to Ian McDowall for doing the conversion.
2011-05-27: We have added a recommended reading page.
2011-05-25: Several people have reported that Lulu.com 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).

Contributing

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 aosa@aosabook.org if you would like to start a new translation or write a chapter yourself.

Translations      
Bulgarian Georgi Kremenliev
Chinese (Simplified) Liu Jiang
Chinese (Traditional) Kenneth Ho
French Kamon Ayeva and Julien Lamandé
Japanese Takagi Masahiro
Portuguese (Brazilian) Rogerio Atem de Carvalho
Portuguese (European) António Melo
Russian Nikita Pchelin
Spanish Jesus Sayar Celestino
Ukrainian Andrij Kovalchuk

The Architecture of Open Source Applications, Volume 2
Distributed Systems Kate Matsudaira
Firefox Release Engineering Chris AtLee, Lukas Blakk, John O'Duinn, and Armen Zambrano Gasparnian
FreeRTOS Christopher Svec
GDB Stan Shebs
The Glasgow Haskell Compiler Simon Peyton-Jones and Simon Marlow
Git Susan Potter
GPSD Eric Raymond
Iron Languages Jeff Hardy
ITK Luis Ibanez and Brad King
Mailman Barry Warsaw
matplotlib John Hunter and Michael Droettboom
MediaWiki Guillaume Paumier and Sumana Harihareswara
Moodle Tim Hunt
nginx Andrey Alexeev
Open MPI Jeff Squyres
OSCAR Jennifer Ruttan
OpenStreetMap Harry Wood
Processing.js Mike Kamermans
Puppet Luke Kanies
PyPy Benjamin Peterson
SQLAlchemy Michael Bayer
Twisted Jessica McKellar
Yesod Michael Snoyman
Yocto Elizabeth Flanagan
ZeroMQ Martin Sustrik