Skip to content

[RFC] High-level plan for documentation #7006

Closed
@tautschnig

Description

@tautschnig

[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):

  1. Users new to verification and with a focus on the overall process start with https://model-checking.github.io/cbmc-training/.
  2. 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.
  3. 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.) The man 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, the man 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 the goto-analyzer man page that's already merged).
  4. 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, or architectural/ 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFCRequest for commentawsBugs or features of importance to AWS CBMC usersaws-mediumdocumentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions