Apache 2.0 is using ScanDoc to document the API's and global variables in the code. This will explain the basics of how to document using Scandoc. To start a scandoc block, use /** To end a scandoc block, use */ In the middle of the block, there are multiple tags we can use: Description of this functions purpose @param parameter_name description @tip Any information the programmer should know @deffunc function prototype. The deffunc is not always necessary. ScanDoc does not have a full parser in it, so any prototype that use a macro in the return type declaration is too complex for scandoc. Those functions require a deffunc. An example: /** * return the final element of the pathname * @param pathname The path to get the final element of * @return the final element of the path * @tip Examples: *
 *                 "/foo/bar/gum"   -> "gum"
 *                 "/foo/bar/gum/"  -> ""
 *                 "gum"            -> "gum"
 *                 "wi\\n32\\stuff" -> "stuff"
 * 
* @deffunc const char * ap_filename_of_pathname(const char *pathname) */ At the top of the header file, we always include /** * @package Name of library header */ ScanDoc uses a new html file for each package. The html files are named: Name of library header.html, so try to be concise with your names