Projects/Kerberos Documentation
Contents
Purpose
The goal of the project is to create an infrastructure and process for the future development of the extensive Kerberos documentation. The documentation should be useful and correct; it must be detailed, but optimized -- do not be too verbose.
The documentation will be built incrementally. We will analyze what works and what doesn't and correct the course of action as needed. Part of the criteria for "what works" is that the documentation should be easy to maintain.
The actualized documentation will be useful for developers and administrators, both for experienced ones and newcomers. It will address the following topics:
- Complete reference - API, internal functions, data types, macros
- Tutorial for application developers - description on various tasks such as working with credentials, topics on how to write plugins, etc
- Cookbook for administrators - Installation, configuration, troubleshooting.
Documentation for application developers
Generally any topic in the Kerberos documentation can cross-reference with function documentation and each other.
Details of source documentation
Documenting functions
The following fields must be included in the function documentation and should reside in the source code :
- Function signature
- Brief function description
- Arguments - [in/out] with description
- Return value description
- Detailed description (optional)
/** Some brief description * * Optional detailed description * * @param[in] arg1 Description of arg1 * * @return Something useful */ char * KRB5_CALLCONV krb5_X(type arg1)
The optional fields may include:
- See also section to refer to the related functions,
- Note section to highlight the specifics of the behaivor
- Examples of the usage
- Snap-shot of the real code involving this function
- Links to KRB5 Wiki Project page, krbdev discussion, RFC document or its section etc
- Version of Kerberos when fuction was introduced or became obsolete
Workflow
- Configure Doxygen to generate output both in xml and html formats. Run Doxygen.
- For each function and data type generate document in ReST format. For the function krb5_X() lets call it krb5_X_p1.
- File krb5_X.rst can be used as input for Sphinx
Documenting data types and macros
Similar to documenting functions.
How to contribute
- The core team - the administrator - posts the initial list of the tasks (such as API, admin tasks, "How to"-s etc) and further supports it. See Projects/Documentation Tasks for more detailed information.
- Community can suggest new tasks
- The core team provides templates that, if helpful, may be used by the documentation writers. The most desirable format for the contributed documents is ReST as the easiest to integrate with the mainstream documentation.
- Community can provide the feedback on the documented tasks.
Tools
- Doxygen 1.7.2 <http://www.stack.nl/~dimitri/doxygen/index.html>
- Sphinx 1.0.4 <http://sphinx.pocoo.org>
- Python 2.5+ (with lxml extension)
- Cheetah 2.4.4 <http://www.cheetahtemplate.org>
- Restructured Text markup <http://docutils.sourceforge.net/docs/user/rst/quickstart.html>