Documentation ============= This documentation is generated using `Sphinx `_ and `Doxygen `_ The two softwares are bridged by means of the `Breathe extension `_ The online version of this documentation is built and served by `Read The Docs `_. The webpage http://mrchem.readthedocs.io/ is updated on each push to the public GitHub repository. How and what to document ------------------------ Doxygen enables documenting the code in the source code files thus removing a "barrier" for developers. To avoid that the code degenerates into a Big Ball of Mud, it is mandatory to document directly within the source code classes and functions. To document general programming principles, design choices, maintenance etc. you can create a .rst file in the ``doc`` directory. Remember to refer the new file inside the ``index.rst`` file (it won't be parsed otherwise). Sphing uses `reStructuredText `_ and `Markdown `_. Support for Markdown is not as extensive as for reStructuredText, see `these comments `_ Follow the guidelines in :cite:`Wilson2014` regarding what to document. Documeting methods in derived classes ------------------------------------- Virtual methods should only be documented in the base classes. This avoids unnecessary verbosity and conforms to the principle: "Document _what_, not _how_" :cite:`Wilson2014` If you feel the _how_ needs to be explicitly documented, add some notes in the appropriate ``.rst`` file. How does this work? ------------------- To have an offline version of the documentation just issue ``make doc`` in the build directory. The HTML will be stored in ``doc/html``. Open the ``doc/html/index.html`` file with your browser to see and browse the documentation. .. warning:: Building the documentation requires Doxygen, Sphinx, Perl and the Python modules PyYAML, Breathe and Matplotlib.