Coming Up Next (We Hope)
The Architecture of Open Source Applications was always meant to be the start of something, not the end. We’d really like to collect more descriptions of complex systems’ architectures and the lessons to be learned from them, but to do that, we need your help. If you are, or know, the key designers or developers associated with the projects listed below, please let them know that we’d like to hear from them. Where we don’t have an application, just a category, please suggest a particular project and make an introduction, and if there’s something missing that you think would teach people a lesson that would otherwise go untaught, please let us know that too.
- GDB (or any other industrial-strength debugger).
- Gecko, WebKit, or another HTML rendering engine.
- A JITting JavaScript implementation.
- BZFlag or some other real-time multiplayer game (we have two turn-based games in vol 1).
- The Thunderbird desktop email client.
- Moodle.
- Inkscape and/or The Gimp.
- OpenOffice Calc or Gnumeric (i.e., a spreadsheet).
- Vim or Emacs (old-school text editor).
- The Arduino IDE (which is written in Processing).
- Something (anything) for small-memory/small-power devices.
- Puppet.
- A penetration testing toolkit.
- OpenSSH (please please please oh please).
- OpenStreetMap.
- GnuPlot or matplotlib.
- nginx (or another modern lightweight web server).
What are we missing? What would be an opportunity to describe and explain design principles that we haven’t already covered? Remember, it doesn’t have to be a beautiful architecture to be instructive… But please note, we’re looking for things whose designs can be described in essays—there are entire books on the Linux kernel.
Later: as per another post, the best way to get something included in volume 2 is to offer to write a chapter yourself. If you don’t know enough to do that, please take a few moments to collect the names and email addresses of people who could and forward them to me.
Perhaps Dave Humphrey might know someone who could do a chapter on the Audio API in Firefox… I know I saw a few blog posts, and heard a couple of stories from him about it.
Perhaps Eric S. Raymond (or someone else) could write chapter on GPSd. I think it might at least partially fit “Something (anything) for small-memory/small-power devices.”
I know that there is chapter on Mercurial (distributed version control system), but it would be nice to have chapter on Git, which made some different choices wrt. design descisions and goals.
Here are a few suggestions :
11. : dalvik
13. : nmap, Nessus or Sleuthkit
14. : other security oriented designs like postfix, dovecot, vsftpd
18. : ffmpeg
19. : qemu or Xen
I would suggest:
- Squeak
- Lively Kernel
- Maxine VM
- Ian Piumarta’s COLA
- L4
- Haiku OS
How About
A Relational Database such as MySQL or Postgresql
A compiler (GCC)
A web server (Apache or Nginx)
Some popular CMS’s (WordPress or Drupal)
Thanks for the suggestions: as per the footnote to the article, the best way to make this happen is to volunteer to write it yourself, or introduce me to specific people who could.
zeroMQ is quite an interesting architecture: take a message queuing middleware, remove the constraint of the central broker server, and put this behind a BSD sockets API so that it can be integrate in an OS kernel and you already have something interesting from the outside. Now, make it multithreaded, lock-free and multi-transport, and you have quite some challenge from the inside too. More than that, the guys there has already some very well written and entertaining(!) whitepapers on the subject so that writing a chapter would be more an editing job than anything else.
I also really love to see something on ffmpeg which was a pleasure to work with and extending it compared to other media libraries I work with in the past.
Thanks for the suggestion, Fabien — as per the footnote in the article, and previous replies to comments, the best way to make this happen is to volunteer to write the chapter yourself, or introduce me to someone who can.