Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

document the duvet usage in h3 #131

Merged
merged 6 commits into from
Dec 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Thank you for the interest in contributing to `h3`. All important information are below.

# Duvet
The [`duvet`][] crate is used in `h3` to track [spec][] compliance.
`duvet` does that via spec citations in the code, as customized comments.
The comments should be kept up-to-date with the code.

[duvet]: https://crates.io/crates/duvet

## General
Duvet tracks all keywords (MUST, MUST NOT, SHOULD, SHOULD NOT and MAY) from an RFC.
You can see those in the [report][] on the menu on the left side. There are all sections of the [spec][]. On each section the paragraphs with the keywords are highlighted.

Duvet sees all citations of each of these paragraphs and their status. At the bottom of each section there is a summary of all the keywords with their status.


[spec]: https://www.rfc-editor.org/rfc/rfc9114
[report]: https://hyper.rs/h3/ci/compliance/report.html#/

## Citations

There are three ways to keep track of all the requirements:

1. In line citations as comments in the source code
2. Citations in .toml files
3. Issues in the repository


The citations can be created with a click on the highlighted sections in the sections.
There are different citation types with different meanings.
### Citation
Standard citation in the source code where the requirement is implemented.

### Implication
Citation where the related code is self-evident. This means no Test is required.

### Test
Indicates that the related code is a test for the requirement.

### Exception
Is the marker that the requirement is not applied to the crate. For example those which are applied to IANA registration.

### Todo
Is the marker that the requirement still needs to be fulfilled.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,17 @@ The eventual goal is to use `h3` as an internal dependency of [hyper][].

[hyper]: https://hyper.rs

### Duvet
This create uses the [duvet crate][] to check compliance of the [spec][].
The generated [report][] displays the current status of the requirements of the spec.

Get more information about this tool in the [contributing][] document.

[duvet crate]: https://crates.io/crates/duvet
[spec]: https://www.rfc-editor.org/rfc/rfc9114
[report]: https://hyper.rs/h3/ci/compliance/report.html#/
[contributing]: CONTRIBUTING.md

## Features

* HTTP/3 client and server implementation
Expand Down