7/12/25, 3:50 PM The Architecture of Open Source Applications
The Architecture of Open Source
Applications
If you enjoy these books, you may also enjoy Software Design by Example in Python and
Software Design by Example in JavaScript.
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.
Our goal is to change that. In these two books, the authors of four dozen 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 these books provide
unique insights into how they think.
If you are a junior developer, and want to learn how your more experienced colleagues
think, these books are the place to start. If you are an intermediate or senior developer,
and want to see how your peers have solved hard design problems, these books can help
you too.
AOSA Volume 1
https://aosabook.org/en/index.html 1/6
7/12/25, 3:50 PM The Architecture of Open Source Applications
Introduction Amy Brown and Greg Wilson
1. Asterisk Russell Bryant
2. Audacity James Crook
3. The Bourne- Chet Ramey
Again Shell
4. Berkeley DB Margo Seltzer and Keith Bostic
5. CMake Bill Hoffman and Kenneth
Martin
6. Eclipse Kim Moir
7. Graphite Chris Davis
8. The Hadoop Robert Chansler, Hairong
Distributed File Kuang, Sanjay Radia,
System Konstantin Shvachko, and
Suresh Srinivas
9. Continuous C. Titus Brown and Rosangela
Integration Canino-Koning
Buy Volume I 10. Jitsi Emil Ivov
11. LLVM Chris Lattner
12. Mercurial Dirkjan Ochtman
13. The NoSQL Adam Marcus
Ecosystem
14. Python Packaging Tarek Ziadé
15. Riak and Francesco Cesarini, Andy
Erlang/OTP Gross, and Justin Sheehy
16. Selenium Simon Stewart
WebDriver
17. Sendmail Eric Allman
18. SnowFlock Roy Bryant and Andrés Lagar-
Cavilla
19. SocialCalc Audrey Tang
20. Telepathy Danielle Madeley
21. Thousand Parsec Alan Laudicina and Aaron
Mavrinac
22. Violet Cay Horstmann
23. VisTrails Juliana Freire, David Koop,
Emanuele Santos, Carlos
https://aosabook.org/en/index.html 2/6
7/12/25, 3:50 PM The Architecture of Open Source Applications
Scheidegger, Claudio Silva, and
Huy T. Vo
24. VTK Berk Geveci and Will Schroeder
25. Battle For Richard Shimooka and David
Wesnoth White
Bibliography
AOSA Volume 2
Introduction Amy Brown and Greg
Wilson
1. Scalable Web Kate Matsudaira
Architecture and
Distributed Systems
2. Firefox Release Chris AtLee, Lukas Blakk,
Engineering John O'Duinn, and Armen
Zambrano Gasparnian
3. FreeRTOS Christopher Svec
4. GDB Stan Shebs
5. The Glasgow Haskell Simon Marlow and Simon
Compiler Peyton-Jones
6. Git Susan Potter
7. GPSD Eric Raymond
8. The Dynamic Jeff Hardy
Language Runtime
Buy Volume II and the Iron
Languages
9. ITK Luis Ibanez and Brad King
10. GNU Mailman Barry Warsaw
11. matplotlib John Hunter and Michael
Droettboom
12. MediaWiki Sumana Harihareswara
and Guillaume Paumier
13. Moodle Tim Hunt
14. nginx Andrey Alexeev
15. Open MPI Jeff Squyres
16. OSCAR Jennifer Ruttan
https://aosabook.org/en/index.html 3/6
7/12/25, 3:50 PM The Architecture of Open Source Applications
17. Processing.js Mike Kamermans
18. Puppet Luke Kanies
19. PyPy Benjamin Peterson
20. SQLAlchemy Michael Bayer
21. Twisted Jessica McKellar
22. Yesod Michael Snoyman
23. Yocto Elizabeth Flanagan
24. ZeroMQ Martin Sústrik
Bibliography
The Performance of Open Source Applications
Introduction Tavish Armstrong
1 High Performance Ilya Grigorik
Networking in Chrome
2 From SocialCalc to Audrey Tang
EtherCalc
3 Ninja Evan Martin
4 Parsing XML at the Speed of Arseny Kapoulkine
Light
5 MemShrink Kyle Huey
6 Applying Optimization Doug C. Schmidt,
Principle Patterns to William R. Otte, and
Component Deployment and Aniruddha Gokhale
Configuration Tools
7 Infinispan Manik Surtani
8 Talos Clint Talbert and Joel
Maher
Buy POSA 9 Zotonic Arjan Scherpenisse
and Marc Worrell
10 Secrets of Mobile Network Bryce Howard
Performance
11 Warp Kazu Yamamoto,
Michael Snoyman,
and Andreas Voellmy
https://aosabook.org/en/index.html 4/6
7/12/25, 3:50 PM The Architecture of Open Source Applications
12 Working with Big Data in Eric McDonald and C.
Bioinformatics Titus Brown
500 Lines or Less
Introduction Michael DiBernardo
1 Blockcode: A visual Dethe Elza
programming toolkit
2 A Continuous Malini Das
Integration System
3 Clustering by Dustin J. Mitchell
Consensus
4 Contingent: A Fully Brandon Rhodes and
Dynamic Build System Daniel Rocco
5 A Web Crawler With A. Jesse Jiryu Davis and
asyncio Coroutines Guido van Rossum
6 Dagoba: an in-memory Dann Toliver
graph database
7 DBDB: Dog Bed Taavi Burns
Database
8 An Event-Driven Web Leo Zovic
Buy 500 Lines Framework
9 A Flow Shop Dr. Christian Muise
Scheduler
10 An Archaeology- Yoav Rubin
Inspired Database
11 Making Your Own Cate Huston
Image Filters
12 A Python Interpreter Allison Kaptur
Written in Python
13 A 3D Modeller Erick Dransch
14 A Simple Object Carl Friedrich Bolz
Model
15 Optical Character Marina Samuel
Recognition (OCR)
16 A Pedometer in the Dessy Daskalov
Real World
https://aosabook.org/en/index.html 5/6
7/12/25, 3:50 PM The Architecture of Open Source Applications
17 The Same-Origin Eunsuk Kang, Santiago
Policy Perez De Rosso, and
Daniel Jackson
18 A Rejection Sampler Jessica B. Hamrick
19 Web Spreadsheet Audrey Tang
20 Static Analysis Leah Hanson
21 A Template Engine Ned Batchelder
22 A Simple Web Server Greg Wilson
License and Royalties
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
these books will be donated to Amnesty International.
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 gvwilson@third-
bit.com if you would like to start a new translation or write a chapter yourself.
https://aosabook.org/en/index.html 6/6