The Architecture of Open Source Applications
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.
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. All these books are free to read over the web.
500 Lines or Less
500 Lines or Less focuses on the design decisions that programmers make in the small when they are building something new.
The programs you will read about in this book were all written from scratch for this purpose (although several of them were inspired by larger projects that the authors had worked on previously).
The Performance of Open Source Applications
It’s commonplace to say that computer hardware is now so fast that most developers don’t have to worry about performance. But between mobile devices with limited power and memory, and data analysis projects that need to process terabytes, a growing number of developers do need to make their code faster, their data structures smaller, and their response times shorter.
However, while hundreds of textbooks explain the basics of operating systems, networks, computer graphics, and databases, few (if any) explain how to find and fix things in real applications that are simply too damn slow.This collection of case studies is an attempt to fill that gap.
The Architecture of Open Source Applications Volume I
Each chapter in this book describes the architecture of an open source application: how it is structured, how its parts interact, why it’s built that way, and what lessons have been learned that can be applied to other big design problems. The descriptions are written by the people who know the software best, people with years or decades of experience designing and re-designing complex applications.
The applications themselves range in scale from simple drawing programs and web-based spreadsheets to compiler toolkits and multi-million line visualization packages. Some are only a few years old, while others are approaching their thirtieth anniversary. What they have in common is that their creators have thought long and hard about their design, and are willing to share those thoughts with you.
The Architecture of Open Source Applications Volume II
Software design can and should be taught by example—that the best way to learn how think like an expert is to study how experts think.
From web servers and compilers through health record management systems to the infrastructure that Mozilla uses to get Firefox out the door, there are lessons all around us. This book collects some of that wisdom and will help you become a better developer.
-John C Maxwell