This section of the chapter does not deal with the specifics of
organizing documentation in the peardoc standard,
but instead with how to organize documentation logically.
First, every package solves a problem. What is this problem?
Try to figure out what assumptions your end-users might not have
about the problem (they may not realize that this is a problem
that needs solving). For instance, a template package solves the
problem of both separating design from code, and separating
business logic from display logic. If possible, explain the
problem in terms that even a novice programmer can understand.
Next, how does the package uniquely solve the problem? This is
something that most documentation lacks. For example, there are
many template engines. All of them solve the same problem, but
none of them do it in the same way. A block-based template
engine does not have any logic at all, whereas a template like
Smarty defines a whole new template language. Some template
engines compile their templates, others don't. What is unique
about your package? Can someone who has never seen the code get
a good idea of how it solves the problem?
Provide examples! Start right away with simple examples that
shows the basic feature set -- they will show users how to
quickly start using the package. More complex examples will help
the users in understanding advanced ways of using the package.
If your package exposes complex interfaces or multiple constants
that can't be fully explained in one or two examples (which is
very likely), do not miss to explain them thoroughly in the
documentation. Document any interfaces that users must use, such
as a database DSN, command-line arguments for applications,
configuration file contents, or any other non-code element.
Last, proofread your documentation. If possible, have someone
else who is not as familiar with your project take a look at the
documentation. They will catch assumptions that you have missed.