The Architecture of Open Source Applications

Frequently Asked Questions

[2011-05-24] Is the book available as a PDF or in e-book format?
Yes. You can purchase the book as a PDF or epub from Lulu, or as a MOBI from Amazon.
[2011-05-25] Why won't Lulu ship to a post office box?
They say that the shipping company they use won't do it. We'd appreciate it if you would complain.
[2011-05-25] So can I buy the book from instead? They'll ship anywhere.
Yes, as soon as it's listed there (which they say will take a couple of weeks). Amnesty International will get less money, but they'll still get something.
[2011-05-24] Is the book available in other languages?
Not yet, but several translations are underway. If you would like to help with translation, please get in touch.
[2011-05-25] Can I publish a translation commercially?
All of the book's content is freely available under the Creative Commons – Attribution license; you may re-use it however you want, so long as you cite the original source and author(s). We would like translations (or other editions in English) to be CC-A licensed, and for some or all of the royalties from their sales to be donated to Amnesty International, but do not insist on either condition.
[2011-05-24] Why did you include XYZ? It's awful!
Our goal was to describe real architectures, not tidied-up fairy tales. We think there is a lot to learn from things that aren't elegant: in many cases, what may at first appear to be poor code is in fact the least offensive responsible possible to forces that aren't immediately obvious, or made sense years ago when the application was first created.
[2011-05-24] Why didn't you include XYZ? It's the best software ever!
We probably couldn't find a volunteer to write about it. If you would like to do so, please contact us: we would like to do an expanded edition, or even a second volume, some time in 2012.
[2011-05-24] Why did you use the CC-A license?
For both idealistic and pragmatic reasons. On the idealistic side, our aim is to help developers learn from each other, and we would like to put as few barriers in the way of that as possible. Pragmatically, it's impossible to lock down digital content anyway—the first torrents for an earlier book, Beautiful Code, appeared within an hour of its publication—so we think it's time people stopped trying.
[2011-05-24] How much are you making from this book?
Nothing—all of the royalties are going directly to Amnesty International.
[2011-05-25] Will you help me write/publish my book?
Amy Brown is a professional copy editor; this is her fourth print-on-demand book, and she is always happy to discuss other projects. Greg Wilson isn't allowed to take on any new projects until he finishes turning on Software Carpentry into a book (which is taking longer than expected).
[2011-05-24] Would you like a chapter on XYZ?
We would welcome essay-length descriptions of the architectures of other applications, as long as they are open source (so that people can see the source code if they want), reasonably large (i.e., big enough to actually have an "architecture"), and reasonably well known. We can take either LaTeX or HTML (please contact us for information about markup and formatting), and will convert to other formats as necessary, but must require all contributions to be CC-A licensed to avoid headaches.
[2011-05-25] What should go into such a chapter?
Imagine that you are giving a new developer on your project a one-hour introduction to how its code is put together. What would you tell her? You'd probably skip over the details of particular struct declarations, unless there was something unusual or surprising hidden there; instead, you would probably concentrate on what the high-level modules in the application are, how they communicate and coordinate with each other, and most importantly, why it all works that way. Sometimes the answer is historical ("It made sense at the time, and changing it would be too costly"). In other cases, the answer may depend on forces or constraints that aren't immediately obvious, such as the need to run on low-power or small-memory devices, or to be extensible by non-programmers. Whatever you include in your description, please also include your thoughts on what you have learned that others might learn from as well.
[2011-05-25] Why did you create this book?
The short answer is, "Because we wanted to read it ourselves." The longer answer is that Greg Wilson became very frustrated while teaching a course called "CSC407: Software Architecture" at the University of Toronto—frustrated enough to recommend that the course be cancelled. The problem was that all of textbooks with the words "software architecture" in their titles talked about how to describe architectures and how important architectures are, but didn't actually present any real architectures beyond pipe-and-filter, client/server, and model-view-controller. His first attempt to crowd-source a solution led to the collection Beautiful Code, in which leading developers describe the most beautiful piece of software they've ever seen. It was a lot of fun to put together, but still wasn't what the students of that long-gone course needed.

Have a question? Please mail us and we'll answer as quickly as we can.