Description
[Edited version of a comment originally posted in #7005]
My opinion (and I do by no means claim to be authoritative on this, just my own thoughts):
- Users new to verification and with a focus on the overall process start with https://model-checking.github.io/cbmc-training/.
- If you know what verification is about, but you better want to understand the workflow with and use of CBMC, https://model-checking.github.io/cbmc-training/ has some information, but https://www.cprover.org/cprover-manual/ is likely the right place. Note that, as far as I understand, any files newly added to
doc/cprover-manual
still require manual intervention by @kroening. - If you know what tools you need to use, but need to understand all the options available with each tool, look at each tool's
man
page. (This is no longer an overview across tools, it's now very specific to a single tool.) Theman
page should be a place to document all command-line options (indeed my various recent PRs are an effort to ensure this is the case). The exception shall be options that we intentionally exclude from any kind of documentation (including--help
output). That said, theman
pages still are in need of love, and a lot more text is yet to be written. Only very few of them are in a shape that perhaps I'd like them to be in (Add crangler man page #6938 is somewhat close to that, as is thegoto-analyzer
man
page that's already merged). - If you want to contribute to the development or understand some internals, go to http://cprover.diffblue.com/. We, however, need to fix whatever job there is to actually keep this up to date with respect to the repository (@peterschrammel ?)
The first two items might be consider a "User's Manual". Item three is a "Reference Manual." Item four would then be seen as a "Developer's Manual."
@NlightNFotis said: However, in that case, guidance should be given on where pieces of documentation like the one that we are adding now should go, given that the other folders under
doc/
seem less appropriate for this piece of documentation (say,ADR/
which is for Architectural Decision Records, not user documentation, orarchitectural/
which is describing CBMC internals). It seems that the only other appropriate place is a new folder, which doesn't seem ideal.
I don't want us to start the discussion from where in the source tree a piece of documentation will go. I expect that discussion to start from the potential consumer of such documentation. When that is determined, we can find a suitable place in the source tree. If the audience (as I think is the case here) is a CBMC user (as opposed to a contributor/developer), then it needs to fit with the level of abstraction that is covered by a particular (collection of) document(s). If there is no so suitable collection, then perhaps we need to create a new one. But I want to make sure we don't just end up dumping text in the repository: we have a lot of documentation across the code base, but largely lack consistency. And we should aim to improve on this, not make it even worse just so that we can tick some "documentation" checkbox.