Contribution Process#

  • Fork the xNVMe repository on GitHUB

  • Make your changes, push them to your fork and create a pull-request

    • The pull-request should target the next branch

    • For feedback/RFC then set up the pull-request as a Draft

  • The CI will trigger as you create the PR and re-triggered upon update

    • The default CI-jobs consists of running style/linters and building xNVMe

    • Average time for a full functional verification run is about 40min

    • One manual CI-job is triggered via the label bench

  • Go over the Pull-Request Checklist and re-iterate on your pull-request / changes

Pull-Request Checklist#

Please check your pull-request for the following:

  • The pull-request itself has a message describing the goal of the pull-request

  • Commits are squashed such that each commit is an incremental step towards the goal

  • All commits must have their commit messages formatted according to Commit Messages

  • Commits are rebased on top of next

  • New functionality is accompanied by tests verifying it

  • The tests are passing

  • All review feedback is addressed

Commit Messages#

Messages must follow the Conventional Commits specification. And in addition, for readability:

  1. The first line is subject/title

    • Keep it at a max. of 72 chars, if possible

    • Lower-case is preferred

    • Do not end with a punctuation

    • Use the imperative mood e.g. add rather than added/adds

    • A couple of examples:

    • feat(be/ramdisk): add support for compare

    • feat(build): bump libvfn to v4.0.1

    • refactor(docs): move toolchain section down after troubleshooting

  2. Then an empty line.

  3. Then a description (may be omitted for truly trivial changes).

    • Should motivate the change and explain what and why, not how

  4. Then an empty line again (if it has a description).

  5. Then a Signed-off-by tag with your real name and email.

    • For example: Signed-off-by: Foo Bar <foo.bar@example.com>

    • Use git commit -s ... to add the sign-off automatically

    • By adding Signed-off-by, you indicate that you agree to the DCO

Take a look at the commit history (git log --follow <files>), for the files you are changing, that should give you an idea of the “component” as well as the other items on the list above.