Comparison for current Tools

CharacteristicProposed for ONAPExample from OPNFVCurrent ONAP & ExamplesOther Option or Examples
Documentation Source Repo Hostgerrit.onap.orggerrit.openfv.orgAll documentation is on the
wiki.onap.org as pages or
attached reference documents
in PDF form.  Wiki contains more
than release documentation

github.org

also could be sourced by gerrit or other git tools

Maybe we could create a onap.github.org

Documentation Source Repo Structure

/docs - Top level documentation index &
          select cross project content

/<any other project repo>/docs - documentation
           source created/maintained by a project
           that is integrated into the top level
           index and documentation for  release

sub-directories of both of the above reflect the
          documentation index hierarchy

Top Level


Example of one "other project"




Top level structure (sub-directories) include
templates, release, development, testing. 

Example other project provides (in sub-directories)
material for integration into "release" and "development"

Subset of the links on wiki.onap.org
eg. Using ONAP


Same
Source Format

Restructured Text

Comments (Gregory Glover)

Pros

  • More Features (e.g. footnotes, tables, citations, tables of contents)
  • Standardized & Uniform spec
  • Fully extensible
  • Good for more robust documentation

Cons

  • Complexity = tougher to enforce adoption and consistency with developers? (Comment: Matthew Harffy - I think the structure is actually there to make it more consistent and enforcable)


Comments on editing tools: (Matthew Harffy)

Some example editors here: https://wiki.typo3.org/Editors_(reST)

I have looked at http://rst.ninjs.org/ - it is simple, but validates semantics on the fly and makes for quick editing. As an online tool, I could see issues with not having the content stored in a repository at the editing stage, or on a local machine.

The comments on https://notex.ch/ seem very positive, but I can't access it.

Top Level Index PageMultiple Requiring Commercial Software

Markdown

Comments (Gregory Glover)

Pros

  • Well-known by Developers (e.g. Github / Stackoverflow)
  • Easy to learn, fewer features
  • Simplicity = easier to enforce consistency with developers?
    (Comment: Matthew Harffy - the simplicity could be a considered a con, as it makes it more difficult to enforce structure and consistency.)
  • Good for html on a single page (e.g. blogs, github descriptions,  comment boards, etc.)

Cons

  • Basic features may not be adequate for large scale projects
  • Not extensible, multiple "flavors" of Markdown in marketplace
  • No Semantic meaning - requires embedded HTML markup
Published DocumentationHTML, PDF, Epub for all documentation at
onap.readthedocs.io/en/latest/

http://opnfv.readthedocs.io/en/latest/

HTML or PDF depending on the
document or topic

HTML at github.org(no need to build)

other documentation by jekyll.

CI/CD FlowCommitter approved change merged to
doc or other project/doc repository branch
triggers a verify & build of published documentation.
Top level index reference to other project release notes
and creation of a composite source document set
Manually updated for a release
by collecting information from projects
eg. Release Notes 1.0.0 draft

For Markdown.

Committer approved change merged to doc or other project/doc repository branch, no building progres,

the webpage will be refreshed in seconds

For PDF or other form, same with RST.

CI/CD ToolsGerrit, Jira, Tox, Jenkins, Sphinx

Gerrit,Jira,

Jekyll.

No need any CI tools, just use the github.org to gerenrate a webpage.

Option SummaryOption 1Option 2
LanguageReStructured TextMarkdown



Site GeneratorSphinxJekyll
PublishReadTheDocsGitHub

Comparison for more Opensource Documentation Projects

Company   NameDocument ProjectProject TypeOpen Source LicenseDocument Library   ManagementSCMDevelop LanguageLanguage Style
   
ReviewBug TrackingCompile ToolTranslation ProcessRelease MethodCI ToolRelease CycleRelease FormOther Supporting ToolsSearch Implementation
NASA   And RackspaceopenstackOpen source projectApache 2.0Open libraryGitrst--PR/Review   meeting/Docking internal bug tracking systemissues/JIRASphinxIndependent branchOffline CIwww-generator.py
    publishdocs.sh
Released with product   releaseWebsite/pdf    R & D document generation tool?contains terminology tools?
   
?
MicrosoftMicrosoft AzureOpen source projectMITOpen library +   Private libraryGit/GithubMarkdownDFMPRPR/Labels
    Automation bot tracking building and Bug
DocFXIndependent branchOffline CIDocFXEvery dayWebsiteDocFX?
GoogleGoogle-TensorflowOpen source projectApache License 2.0Open library + Private   libraryGit/GithubMarkdownGFMissuesissuesWebsite   generator+doxygen?Offline CIg3doc
    website generator
?WebsiteAPI automatic   generation tool, gen_docs.sh, text processing toolsBorrow Google website   search
Google-KubernetesOpen source projectApache License 2.0
    Creative Commons Attribution 4.0
Open library +   Private libraryGit/GithubMarkdownGFMPR/issuesissuesJekyll?OnlineJekyll?websites??
Google-GCPClosed source project?Private libraryInternal gitmarkdown???g3doc?Offline??website??
senchaExtjsClosed source project?Private   libraryGit/GithubMarkdown???JsDuck?Offline??website??
StackExchangeStackoverflowClosed source project??Git/GithubMarkdown?????Online??website??
AmazonAWSClosed source project?All open(only   Developer guide)Git/Githubrst???Sphinx?Offline CIbuild_docs.py?website??
Labs126Closed source project??Git/GithubMarkdownGFM??Jekyll?Offline CI??website??
DockerdockerOpen source project?Open library +   Private libraryGithubMarkdownGFM??hugo????website??
?
Project of document tool
SphinxSphinxOpen   source projectBSD??rst/markdown?????Offlinesphinx cli?website/Apple Help/ePub/LaTex/text/manual page   (unix)/Textinfo/linkcheck builder/c++ domain??
GithubGitbookOpen source projectApache 2.0??md/ascii textGFM????Offlinegitbook cli?website/pdf/epub/mobi??
GithubClosed   source project?All openGit/Github??PR/issues?Jekyll?OnlineJekyll??Jekyll-Auth?


Recommendation

Based on the comparisons above, a discussion with Sofia Wallin on experience with Documentation in OPNFV, and two examples A Sample about how to develop documents by Markdown and An Example of Creating Documents with ReStructured Text-Sphinx-Readthedocs we recommend:

  • ReStructured Text-Sphinx-Readthedocs as the way to organize and publish ONAP documentation. 
  • Where there are existing source documents in other formats or ReStructured Text is hard to use for new content, we will identify options to support these on a case by case basis (eg. Templates for ReStructured Text, Extensions for Sphinx, Converters, etc).
  • No labels

5 Comments

  1. I'm a developer/technical writer who worked on the DCAE team within AT&T last year. I redesigned a documentation system that produces the DCAE Deployment Guide that we're hoping to open source soon. The team faced several challenges that the documentation system – tentatively called "MkTechDocs" – solved.

    1. I was the only technical writer on the project. DCAE is a very complex system, composed of many different moving parts. Our documentation system allows developers to contribute documentation in support of their components via Git pull requests, which I then proof/change and merge into the documentation repo. It scales well and makes it easy to keep documentation up to date since the developers only need to make incremental changes in Git, which they're all using anyway. (As opposed to editing Wikis, which, in my experience, go stale often.)
    2. Parts of the documentation used live Java code that was part of DCAE to produce documentation, so MkTechDocs contains Java hooks via Groovy to allow for using pre-existing Java libraries. Groovy's template system is also quite powerful, as it allows us to do things like iterate through configuration files for the purpose of documentation. Python is also supported, as are Python templates via Jinja2. These are baked into the core of the system, so using them is as easy as creating a correctly named file (e.g. mycomplexdoc.gt, mycomplexdoc.py).
    3. Support for PlantUML diagrams.
    4. The DCAE Deployment Guide has historically been a PDF, but the documentation system needed to be able to easily produce different formats. Ours currently does markdown, PDF, Word, single-page CSS-styled HTML, multi-page CSS-styled HTML, and potentially many other formats.

    MkTechDocs is 100% open source. It's standardized around GNU Make, Markdown (because most developers already know it), and pandoc. At its heart is a small set of document transformation pandoc "filters," which manipulate pandoc AST in order to maintain consistent heading levels across multiple markdown documents, fix internal document links, allow for infinite recursive includes, syntax highlighting, UML diagrams (via PlantUML). It could also fit nicely into a CI toolchain since builds can be triggered.

    We're hoping to release it as open source soon, at which time the documentation (created with the system, naturally) will be available to check out.

    I think it might be worth considering given that it's been used now by the DCAE team for a year or so.

    1. Hi Spencer, I am James, also a TW from huawei. I am very exciaty that you'v shared your experience to us. If I don'e misunderstand, you have design a documentation system basic on MD file, right?

      My team study MD as a basic documentation developing tools since last year, and the story happens to us as your team. Now we make very big step on Conversion and styles. Like you have down, we increased the ability of jekyll and MD. Actualy I need to have a conversation with you to share the fuctions we've done and the more useful feature to be done.

      BTW, I am the guy who made the comparison for those tables above.


  2. Hi James  --

    Yes, MkTechDocs uses Markdown. However, the system is flexible enough that it can use other formatting syntax that pandoc can understand. What's interesting is that using my system, a team who has already standardized on Textile, for example, could use that if they wanted. It was designed from the ground up to be as flexible as possible since we thought that was the best way to encourage busy developers to actually document their code (smile), by making it super easy to do so. Then, we technical writers can edit and proof it for consistency and grammar, etc.

    I have also worked with another team at AT&T for a while, RCloud, who also uses Markdown and make. I have concluded that many people use a similar technique to build their documentation. The difference with my system is that I've completely abstracted the build system away from the project so that it is easily distributed. I.e. it is project agnostic and easily configured for basic setups.

    I will post a link to the repo whenever it goes public.

    Spence


  3. I'm a developer on the DCAE team and for the DCAE platform documentation, we used Mkdocs and published on Github pages. Good documentation is very important but is always been a hassle for developers to maintain and keep up-to-date. Keeping the documentation easy by using tools that developers are already familiar with is important to lower the obstacle. For me Mkdocs provided the best, easiest experience compared to Hugo and to Jekyll particularly the integration with Github pages. Mkdocs focus is on building documentation websites unlike Jekyll and Hugo.

    I would also advocate for Sphinx and rst because of its wide adoption with the Python community and because of its focus on building documentation sites.

  4. What is the recommendation for Restructured text editor? Thank you.