Last night I spent a few hours browsing through source code and documentation for a number of projects: Gaim, POV-Ray, Angband, and Freeside. While I didn’t see any documentation in those projects representative of the examples shown in the text, I did see one similarity in all of them. The major pieces of documentation were all well-targetted at a specific audience.

  • Gaim included mostly a FAQ useful to read before downloading the source code: What did the project do? Who should be interested in the source code, and why? What is the process or point-of-contact for getting involved in the project?
  • POV-RAY included tons of documentation directed towards the end-user. While they aren’t a substitute for developer documentation, the entire architecture of POV-Ray is based around parsing inputs and geometric rendering of outputs, so many of the architectural decisions will be essentially “guessable” by examining the user interface.

The list goes on, but I think the general story in these cases is that these applications are all small enough to get by without formal architecture documents. It’s possibly also because some of those applications fit into reference architectures. Gaim, Trillium, Adium, AOL Instant Messenger, MSN Messenger, and Yahoo Messenger will all follow a very similar architecture (the only exception possibly being how Gaim manages IRC, because most other IRC applications have a noticably different UI and interaction patterns). POV-Ray, Mental Ray, Pixie, PRMan also follow a reference architecture for scene-description renderers (though really there’s fundamentally different algorithms between any RenderMan-based renderer and a raytracer, I think a single reference architecture still fits them all).

What about the reconstruction process?

All of chapter 10 reminded me of taking a course in Scientific Visualization. While the problem is effectively visually searching a network isn’t really solved (moreso there are multiple methods available), it is certainly something that has been addressed in the scientific community. The entire chapter seems to focus too much on the “filter and zoom” process and the tool they used. I would rather they refer me to a more complete source on information visualization, and instead spend their time describing how to effectively identify architectural patterns.