Uploaded image for project: 'C Driver'
  1. C Driver
  2. CDRIVER-1979

Port docs from Mallard XML to RST

    • Type: Icon: Improvement Improvement
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 1.6.0
    • Affects Version/s: None
    • Component/s: Docs
    • None

      We currently write our docs in Mallard XML and generate HTML from it with yelp-build, and man pages with a homemade Python script. This has disadvantages:

      • Ungainly and verbose format to write
      • Restrictive: documents must link to each other in a certain way
      • Hard to customize or extend, even if you know XSLT
      • We must convert to man pages with our own very buggy script
      • Tiny community, little documentation, no ecosystem

      Let's switch to something easy to write, flexible, customizable, and extensible, with a big community. Our new documentation format of choice should officially support both HTML and man page output.

      Jesse evaluated MkDocs, ASCIIDoc, Doxygen, and Sphinx, and settled on Sphinx. Sphinx is a Python package that renders ReStructured Text (RST) to a number of formats including HTML and man. It's one of the most widely-used documentation generators, and it has a huge ecosystem of documentation, examples, themes, and extensions.

      Steps:

      • Write a script to bulk-convert XML to RST for Sphinx.
      • Check the generated RST and fix up by hand.
      • Extend Sphinx to style links to C symbols with fixed-width font.
      • Choose an HTML theme and customize it for the C Driver.
      • Use Intersphinx to link from libmongoc's docs to libbson's.
      • Update the libbson and mongo-c-driver Autotools build scripts to use Sphinx instead of yelp-build.
      • Update Evergreen configuration.

            Assignee:
            jesse@mongodb.com A. Jesse Jiryu Davis
            Reporter:
            jesse@mongodb.com A. Jesse Jiryu Davis
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: