[2011-05-24] Is the book available as a PDF or in e-book format?
Yes. You can purchase the book as a PDF
from Lulu, or as a MOBI
[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
[2011-05-25] So can I buy the book from Amazon.com 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
[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
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
Carpentry into a book (which is taking longer than
[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
[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
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
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.