The idea here is that the source code embodies everything so a manual is unnecessary. Users should just be given the source code. Assuming this isn't some attempt at sarcasm, it's important not to confuse 1. How the software works with the user; and 1. How the users work with the software Source code describes the former, the manual describes the latter. No one document should attempt to address both. ''The source code can be the manual, if the program will only be used by programmers. Non-programmers (or even programmers who don't understand the source language) will not understand it. To go even further, it is not practical to use the source code as the manual unless the user is expected to combine his code with the source in some manner (e.g. a UnitTestFramework).'' Oh, really? When was the last time you bought a commercial library that ''didn't'' have at least an online version of a manual describing the API? I wouldn't buy such a thing. If a library vendor tried to sell me a library and told me to "look at the source" to figure out how to use it I'd jam the blankety-blank thing down his throat before kicking him out the nearest door. ---- Although TheSourceCodeIsTheManual makes little sense to me, there's a related concept that I think IS valuable. TheManualHasSourceCode points out that (for some projects anyhow) it is useful to maintain the manual under source code control, just like the code. When a feature is changed in the code, the change is immediately documented in the manual. This approach usually makes sense when the "manual" is actually quite technical (for example, man pages) and is handled by the regular developers, not by someone separate hired for their skill at exposition. -- MichaelChermside LineByLineReview is a pattern that keeps the manual in-sync with the source code. ---- I agree with MichaelChermside that it's important to keep the manual under source code control, so each version of the program is associated with the corresponding version of the [manual]. One method of doing that is to paste the entire text of the manual into the source code file(s), then use LiterateProgramming software to generate 2 completely different things from that source file: (1) the executable of course, and (2) the manual. -- DavidCary ---- See: DocumentationPatterns