On Oct 7, 2014, at 2:58 PM, Jon Sime <js...@omniti.com> wrote: > Per the Documentation Roadmap, I've been putting together notes for a > new style guide. The primary goals being improvements to consistency, > quality, and readability for the docs. I've included, after receiving > some initial feedback, the updated version of those notes below for > criticism, discussion, and refinement. I've also been working through > the Admin guide and a few referenced sections elsewhere to apply these > proposed standards as a showcase (diffs to follow in a few days).
This looks great Jon. > Section Naming and Section Reference Markup > - All documents should begin with a named local reference definition. > - To avoid conflicts and ambiguity, all document and section name > references should begin with 'admin', 'sdk', 'reference', or 'arch' > followed by a dash and then the section > - Section name references should be all lowercase and use only > single dashes to separate words > - Reference name should match the document or section title > - Abbreviation is acceptable in reference names, but not rendered names > .. _admin-arch-and-hacking: > > Architecture and Hacking > ************************ > - Examples: > Balancer plugin reference page becomes "_reference-balancer-plugin:" > Session protocol admin guide becomes "_admin-session-protocol:" > - Grammatical forms that emphasize the function or feature first > are preferred: > - Improves consistency and readability > - Eases scanning table of contents lists > - Preserves logical function grouping in automatically generated > indices > - E.g. "Logging API Guide" is preferred over "Guide to the Logging API" > > Markup used to refer to a plugin by name > - Standardize on reference markup (:ref: prefix preferred over suffix) > :ref:`<section>-<plugin-name>` > - Source document will begin with > .. _<section>-<plugin-name>: > - Title of source document being referenced should be as below, > with no definite article > <Plugin-Name> Plugin > ******************** > > Markup used for plugin parameters > - Plugin configuration example should be set within a blockquote > (indented in RST with no preceding markup) > - Plugin parameters should be listed one per line with newline escape: > map http://foo.com http://foo.com \ > @plugin=balancer.so \ > @pparam=--policy=hash,url \ > @pparam=one.bar.com \ > @pparam=two.bar.com > - Makes individual parameters easier to distinguish from each other > - Additional markup cannot be used within the markup to highlight > parameter names or values > > Markup used for program command line options > - Each program's reference documentation should contain a section > 'Options' detailing all available comment line arguments > - The Options section should begin with the program name > .. program:: binary_name > - Followed by each option with a brief description of the > argument's function and possible values > .. option:: -F, --foo > > Lorem ipsum dolor amet. > - Variations of the argument name (short/long versions, etc.) > should be shown together as a comma separated list, in order of > shortest to longest variations > - If the option accepts an arbitrary value of a particular type, > that should be expressed as the all uppercase type name (e.g. REGEX, > VAR, VALUE, etc.) > - If the option accepts as a value a choice from an enumeration, > that should be expressed as a list of the acceptable values, separated > by ' | ' and enclosed in square brackets > > Markup used for installation paths (/etc/trafficserver) > - All filesystem paths should be marked up as inline literals > ``/usr/local/lib`` > - Base installation paths should always begin with / > - Relative paths should include the appropriate configuration prefix name > ``$PREFIX/bin`` > > Markup used for configuration variables > - All configuration variables mentioned in documentation should be > enclosed in the following markup, automating links to the > documentation for that variable: > :ts:cv:`proxy.config.cache.ram_cache.size` > - Values for variables should be marked up as inline literals when > part of a paragraph body. > The default value of ``-1`` means ... > - For configuration variables with an enumerated list of possible > values, those values should be provided in a simple table, with the > default noted: > ======= ========================== > Value Meaning > ======= ========================== > 0 No compression (*default*) > 1 *fastlz* compression > 2 *libz* compression > ======= ========================== > - All variables should be documented in the reference docs in the > following manner, using the ts:cv syntax: > .. ts:cv:: <context> <variable name> <type> <default value> > > <Description of variable's function and use.> > - If a configuration example is being provided with specific > values to enable/disable/modify a feature, it should: > - Be provided, for purposes of clarity, as a fully formed > configuration line, within a literal block. > - Be preceded in the body text with a :ts:cv: reference to > that configuration variable's documentation, as a workaround to RST's > lack of support for nesting reference markup within blockquotes. > To remove the limit on size of objects which may be > cached, adjust :ts:cv:`proxy.config.cache.max_doc_size` in > :file:`admin-records.conf`:: > > CONFIG proxy.config.cache.max_doc_size INT 0 > > Markup used for footnotes > - All footnotes should be autonumbered > [#] Lorem ipsum dolor amet. > - All footnotes should use labels, instead of depending on > ordering in the document > Fidgeting with the discombobulator sprockets[#sprockets]_ is > rarely necessary. > .. [#sprockets] Lorem ipsum dolor amet. > - Symbolic footnotes should not be used > > Markup for formatting blocks of code > - The code-block blockstyle markup should be used, including the > language to be used for syntax highlighting when possible: > .. code-block:: c > > TSVIO TSVConnWrite (...) > > Markup for function references > - Source documentation for the C/C++ functions should contain a > local reference definition with the function signature: > .. c:function:: TSReturnCode TSMutexLockTry(TSMutex mutexp) > - All references to this function should be made via :c:func: markup: > :c:ref:`TSMutexLockTry` > > Markup used for URLs > - All URLs within regular body text and footnotes should use the > standard embedded URI reference markup. > - All URLs not being used as a literal example (e.g. a curl > command line) or as a configuration parameter (e.g. remap > configurations) should be named, e.g.: > Refer to Example Corp's `Foo product page > <http://example.com/foo>`_ for more details. > - URL references should always avoid the use of filler phrases > such as "Click here" and instead should always use a meaningful, short > name for the page which is being referenced. > > Markup used for referring to arguments of a command line utility from > within descriptive paragraphs: > - Use the :option: reference syntax to automatically link to > program documentation, anchored at the relevant argument's > explanation, e.g.: > Use the command :option:`traffic_line -x` to reload the > running configuration of Traffic Server. > - Use simple emphasis when describing the utility or purpose of an > argument, or a plugin option, by anything other than its actual name, > e.g. the second argument to a map rule is referred to as the > "Replacement URL" even though that phrase appears nowhere in the > configuration statements themselves (it is just the terminology used > to determine the second argument's utility from that of the first > argument's): > When configuring the :ref:`balancer-plugin`, the *replacement > URL* in the ``map`` rule is not used. > > General Guidelines: > - Always specify the (default) units when referencing data > sizes/lengths for the first time within a documentation section, or > when documenting configuration options with accept sizes as values, > even if the unit may be commonly understood or expressed as part of > the variable/option name, e.g.: > The response length (in bytes) from origin server ... > - Numbered lists should use auto-numbering whenever possible, with > the exception of cases in which list entries must refer to each other. > #. First entry. > #. Second. > #. And so on. > - Individual words or phrases should only be placed in emphasis > (single asterisks) according to the common practices of > Chicago-Turabian/NY Times/AP style guides: > - Keywords, or "words described as words"/"letters as letters" > should be emphasized for their first use, but not thereafter. E.g. > The term *cluster* refers to a collection of servers. > Clusters may consist of anywhere from a single server to many > thousands or more. > - Untranslated non-English phrases not in common use in English speech. > - Publication and article titles, for every use. > - The use of "scare quotes" should be avoided. > - Individual word emphasis on negations should be used sparingly, > and only when clarity requires such in text that contrasts the > positive and negative options/outcomes; e.g.: > - "Suchandsuch should *not* be frobulated." should omit the > emphasis as there is no contrasting phrase for which clarity demands > the emphasis. > - Emphasis can be used in a construction such as: "Increasing > your cache partition size will *not* delete the contents of your > cache. However, decreasing the partition size *will* empty the cache > contents for that partition." > - Definition lists and glossaries should provide a named reference > declaration for each entry if their defined items are referred to > elsewhere, to permit direct linking from other areas of documentation. > - For readability and ease of reference, tables which display > mappings between two sets of related values (e.g. Squid logging fields > to ATS logging fields) should: > - Avoid the use of inline literal markup around the pairs of values. > - Use reference markup for the ATS values, linking to the > corresponding value documentation (when it exists). > ============== ============== > Squid Traffic Server > ============== ============== > time `cqts`_ > elapsed `ttms`_ > ============== ==============