https://aosabook.org/en/index.html#500lines The Architecture of Open Source Applications Software Design by Example in Python is now in beta. All the material is free to read and re-use under open licenses, and we would be very grateful for feedback and corrections. If you enjoy these books, you may also enjoy Software Design by Example in JavaScript, Research Software Engineering with Python, JavaScript for Data Science, Teaching Tech Together, and It Will Never Work in Theory. 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. 500 Lines or Less 500Lines Cover Buy 500 Lines Introduction Michael DiBernardo 1 Blockcode: A visual Dethe Elza programming toolkit 2 A Continuous Integration Malini Das System 3 Clustering by Consensus Dustin J. Mitchell 4 Contingent: A Fully Dynamic Brandon Rhodes and Daniel Rocco Build System 5 A Web Crawler With asyncio A. Jesse Jiryu Davis and Guido van Coroutines Rossum 6 Dagoba: an in-memory graph Dann Toliver database 7 DBDB: Dog Bed Database Taavi Burns 8 An Event-Driven Web Leo Zovic Framework 9 A Flow Shop Scheduler Dr. Christian Muise 10 An Archaeology-Inspired Yoav Rubin Database 11 Making Your Own Image Cate Huston Filters 12 A Python Interpreter Allison Kaptur Written in Python 13 A 3D Modeller Erick Dransch 14 A Simple Object Model Carl Friedrich Bolz 15 Optical Character Marina Samuel Recognition (OCR) 16 A Pedometer in the Real Dessy Daskalov World 17 The Same-Origin Policy Eunsuk Kang, Santiago 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 The Performance of Open Source Applications POSA Cover Buy POSA Introduction Tavish Armstrong 1 High Performance Networking in Chrome Ilya Grigorik 2 From SocialCalc to EtherCalc Audrey Tang 3 Ninja Evan Martin 4 Parsing XML at the Speed of Light Arseny Kapoulkine 5 MemShrink Kyle Huey Applying Optimization Principle Patterns Doug C. Schmidt, William 6 to Component Deployment and R. Otte, and Aniruddha Configuration Tools Gokhale 7 Infinispan Manik Surtani 8 Talos Clint Talbert and Joel Maher 9 Zotonic Arjan Scherpenisse and Marc Worrell 10 Secrets of Mobile Network Performance Bryce Howard Kazu Yamamoto, Michael 11 Warp Snoyman, and Andreas Voellmy 12 Working with Big Data in Bioinformatics Eric McDonald and C. Titus Brown AOSA Volume 2 Volume 2 cover Buy Volume II Introduction Amy Brown and Greg Wilson 1. Scalable Web Architecture Kate Matsudaira and Distributed Systems Chris AtLee, Lukas Blakk, John 2. Firefox Release Engineering O'Duinn, and Armen Zambrano Gasparnian 3. FreeRTOS Christopher Svec 4. GDB Stan Shebs 5. The Glasgow Haskell Simon Marlow and Simon Peyton-Jones Compiler 6. Git Susan Potter 7. GPSD Eric Raymond The Dynamic Language 8. Runtime and the Iron Jeff Hardy 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 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 Sustrik Bibliography AOSA Volume 1 Volume 1 cover Buy Volume I Introduction Amy Brown and Greg Wilson 1. Asterisk Russell Bryant 2. Audacity James Crook 3. The Bourne-Again Chet Ramey Shell 4. Berkeley DB Margo Seltzer and Keith Bostic 5. CMake Bill Hoffman and Kenneth Martin 6. Eclipse Kim Moir 7. Graphite Chris Davis The Hadoop Robert Chansler, Hairong Kuang, Sanjay Radia, 8. Distributed File Konstantin Shvachko, and Suresh Srinivas System 9. Continuous C. Titus Brown and Rosangela Canino-Koning Integration 10. Jitsi Emil Ivov 11. LLVM Chris Lattner 12. Mercurial Dirkjan Ochtman 13. The NoSQL Adam Marcus Ecosystem 14. Python Packaging Tarek Ziade 15. Riak and Erlang/ Francesco Cesarini, Andy Gross, and Justin OTP Sheehy 16. Selenium WebDriver Simon Stewart 17. Sendmail Eric Allman 18. SnowFlock Roy Bryant and Andres Lagar-Cavilla 19. SocialCalc Audrey Tang 20. Telepathy Danielle Madeley 21. Thousand Parsec Alan Laudicina and Aaron Mavrinac 22. Violet Cay Horstmann Juliana Freire, David Koop, Emanuele Santos, 23. VisTrails Carlos Scheidegger, Claudio Silva, and Huy T. Vo 24. VTK Berk Geveci and Will Schroeder 25. Battle For Wesnoth Richard Shimooka and David White Bibliography 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.