[rust-dev] Documentation

Graydon Hoare graydon at mozilla.com
Wed Jan 4 11:05:50 PST 2012


I started a conversation on IRC which I'd like to make a little more 
formal here, concerning documentation formats. It's a subtle question 
because we are generating increasing quantities of information -- and 
will keep generating more -- and I'd like to bring a degree of 
systematicity to it if possible.

We currently have the following docs:

  - A wiki on github, written in github-ese markdown
  - A tutorial written in hand-extended markdown and processed
    by hand-written javascript
  - A manual written in texinfo that generates PDF and HTML trees
  - A man page written by hand in groff
  - An API documentation tree generated by NaturalDocs, from comments
    in our library code.
  - A new 'rustdoc' tool that consumes attribute-docs and emits,
    for the moment, markdown (though it might emit something else)

This is unsatisfying in a few ways:

  - The output looks inconsistent.
  - Cross references between pieces of the docs are random, dubious.
  - There is no central index, TOC; navigation aids are disjoint.
  - There is no way to acquire a bundle of "all the docs" easily.
  - Reading formats are inconsistent; some parts can be printed or
    viewed in a terminal easily, some cannot.
  - "Building" the docs is arduous and requires almost as many tools
    as building the rest of the system.

So! I would like to come up with a "strategy" (loosely stated) that 
begins to reduce these sources of dissatisfaction. This is tricky. There 
are a bunch of technologies-for-docs and they all provide some, but not 
all, nice things we might want. I'd like to at least start by gathering 
beliefs about the importance of those things. Specifically, these are my 
concerns; how important are these concerns to the rest of you?

  - Generating single-bundle "print-like" documentation artifacts
    (pdf and epub), including internal-hyperlinks or references
    when in a non-link rendering ("see page 12").

  - Inline-editing of docs in a browser "by everyone", wiki-style.

  - Viewing in a terminal (man pages, info nodes, plaintext, querying
    the API docs via a command like "rustdoc -q foo::bar")

  - Having a very-much-like-plaintext editing format.

  - Using "the same" format for API docs and hand-written manual,
    tutorial, rationale, etc.

  - Having a simple "build" process for the docs that uses as few
    tools as possible.

I've looked at a variety of tools and to my understanding, few-to-none 
of them do all this. The *closest* I can see is 
texinfo-and-some-glue-code, but I'm amenable to argument on this. 
Markdown is a popular contender, but it seems like it's heavily slanted 
towards HTML output (and possibly wikis). Maybe that's ok? Maybe PDFs 
and "printed manuals" and such are vestigial nonsense we can consign to 

Opinions welcome,


More information about the Rust-dev mailing list