-
Notifications
You must be signed in to change notification settings - Fork 78
Closed
Labels
Description
@jsquyres and I had a design conversation last week about how to handle documenting prterun vs mpirun with Open MPI personality vs mpirun with MPICH personality vs ...
The goal was to create documentation without introducing too much redundancy. For example, there are some common CLI behaviors between the three man pages (such as mapping/ranking/binding).
Additionally, we need a solution where the need for the documentation building tools (i.e., pandoc or sphinx) is optional. And the documentation building tools are not needed for anyone building from the release tarballs.
We sketched this solution:
- Move from
pandocwith Markdown to Sphinx with reStructuredText- This provides us a means of using Python to do things like search-and-replace. Specifically could be useful to search and replace
prterunwithmpirun (Open MPI personality)or something like that in man pages. - reStructuredText also allows for including other 'pages' into each other. This may help with controlling common language.
- This provides us a means of using Python to do things like search-and-replace. Specifically could be useful to search and replace
- Create a
docssubdirectory. Each branch will have its own versioned form of the docsdocssubdirectory will contain broad documentation for that release to be rendered in static HTMLdocssubdirectory will contain the individual man pages written in reStructuredText then rendered into nroff.
mpirundocumentation- PRRTE owns the personalities for different launchers so it is the correct place to also have the versioned documentation for that version of the launcher.
mpirunwith Open MPI personality will be different thanmpirunwith MPICH personality. So we need to have two differentmpirunman pages and Open MPI and MPICH can pick up the 'right' one.- Suffix each man page with their schizo component name. Have PRRTE generate a
mpirun-ompifor the Open MPI personality, and ampirun-mpichfor the MPICH personality. - Install the core PRRTE launchers (
prunandprterun) in the default search path:prte-install/share/man - Install other launcher personalities in a non default search path:
prte-install/share/man-extra - Open MPI will copy their
prte-install/share/man-extra/mpirun-ompifrom PRRTE toompi-install/share/man/mpirun. This means that if the user installs Open MPI with an external PRRTE they can copy the man page and put it in a search location specific to Open MPI, and 'man mpirun' does what the user expects.
- Create a
make docstarget that regenerates the docs that is not triggered bymake. When creating the distribution tarball we would include themake docsso that the tarball has the rendered documentation, and thus the end-user doesn't need the documentation build tools.- Include man pages and the HTML documentation in the tarball. Note that the HTML is static, so it can be rendered without a webserver - you only need a browser.
- Consider moving to Read the Docs for documentation, similar to the Open MPI effort described in Start using readthedocs.io open-mpi/ompi#8329 since we will have most of the documentation in that form anyway.
- Consider moving some of the man page documentation (e.g., map/bind/rank) to the HTML version and just reference it from the man pages. That should help keep the man pages smaller