Help other users and developers with good documentation#
Writing good user documentation to help others get started with your code is more useful than writing lots of comments in your code.
READMEs#
If you are publishing your code on an internal or public Git repository, you should always include a README document with at least the following information:
A brief (one sentence) description of what the code does
A list of the code author(s)
An email address for someone who is currently responsible for the code (maintainer)
What dependencies the code has (python libraries, conda, abaqus, gcc etc.)
A ‘Quickstart’ guide for how to get the code running on a simple example
Additional information that is good to include:
Which operating systems are supported (Windows, Linux)
References to relevant academic papers (if any)
Detail on any user inputs (input files, material card etc.)
Project status
Alpha - core functionality not yet completed
Beta - feature-complete (core functionality), still undergoing testing and documentation
Released, active development - feature-complete, stable interface, new features in development
Released, maintenance only - no new features in development, a maintainer is contactable for support and bug fixes
Archived/legacy - not under active development and no maintainer available to contact
User Documentation#
For larger projects with multiple users, it is recommended to write dedicated user documentation in a separate place to the main README file. In this case it is better to keep the README short and instead add links to key parts of the separate user documentation.
Recommendation
We recommend using the Sphinx generator to write dedicated user documentation.
See the Abaci online documentation for an example of documentation generated with Sphinx.
When writing dedicated user documentation, it is recommended to have the following:
Quickstart tutorial: a tutorial covering how to get started from scratch, including installing, configuring and running the code
How-to guides: dedicated guides, with examples, for how to perform specific tasks
Reference documentation: complete and detailed documentation for all user inputs such as input files and command-line flags