Thank you for considering contributing to unimarkup-rs
, it means a lot to us!
Below are the most important topics to get you started.
We use GitHub Discussions for exchanges with the community. It is a good place to start if you have any questions.
There are two labels to help possible contributors to get involved:
- good-first-issue ... This label is used to mark issues that should be easy to implement without extensive understanding of the project
- help-needed ... This label is used to mark issues, where project members need help to resolve it
For better asynchronous communication, we use the following labels:
- waiting-on-assignee ... This label is used to indicate that the author or reviewer is awaiting response from the assignee
- waiting-on-author ... This label is used to indicate that the assignee or reviewer is awaiting response from the author
- waiting-on-reviewer ... This label is used to indicate that the assignee or author is awaiting response from the reviewer
To keep track of feature requests, we use the following labels:
- declined ... This label is used to mark issues/PRs that they won't be considered/implemented further
- req-ready ... This label is used to mark
[REQ]
issues that they have enough information to be implemented
We use the following tools for development:
- rustup to install the Rust toolchain (cargo, clippy, rustc, rustfmt etc)
- rust-analyzer as a Language Server to be used with LSP
clippy
as linter. i.e. for VS Code this setting is in therust-analyzer
extension settings (Changecargo check
command toclippy
)- Optional: Enable auto-formatting of the code, by using
rustfmt
default settings
Add-ons for testing:
We have our own convention for git commit messages that are inspired by conventional commits.
This leads to more readable messages that are easy to follow when looking through the project's history.
In addition, we use git commit messages to automatically generate a change log using release-please from Google.
As a result, commit messages not following our convention won't appear in the generated change log.
Note: We use squash merging
for pull requests, so we are able to correct your commit messages, but please try to stick to the convention to make merging easier for us.
Each commit message consists of a header, a body, and a footer.
The header itself consists of a type and a subject:
<type>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
Note: Any line of the commit message must not be longer than 72 characters, and the header should not be longer than 50 characters. This makes messages more readable on GitHub and in various git tools.
The commit type must be one of the following:
- feat ... Added a new feature
- fix ... Fixed a bug of any kind
- arch ... Neither adds features nor fixes bugs (e.g. renaming or restructuring)
- chore ... Made other changes (should only be used for automatically generated commits)
The subject should contain a succinct description of the change:
- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize the first letter
- do not add a dot
.
at the end
Note: It helps to write the subject in a way that continues the phrase This commit will ...
.
To mark a commit as breaking change, add an exclamation mark after the commit type, i.e. feat!: introduce some new feature
.
Another option would be to start the footer with BREAKING CHANGE:
, but prefer to use the exclamation mark as it is directly visible in the project's history.
The body should include the motivation for the change, and contrast this with previous behavior.
Note: Just as in the subject, use the imperative, present tense: "change" not "changed" nor "changes".
The footer may contain information about Breaking Changes, or reference GitHub issues that this commit Closes.
Note: The footer should be used rarely, because breaking changes should be marked by an exclamation mark, and issues should be closed by PRs.
feat: add support to parse headings
fix: fix parsing of headings
Heading levels were parsed incorrectly with an off-by-one error.
We provide our own git hooks in the .hooks directory to help write commit messages according to our convention.
To use our commit-msg
git hook, copy the commit-msg file into your .git/hooks/
directory.
Alternatively set our .hooks directory as your global git hooks directory with the following shell command:
git config core.hooksPath ./.hooks
Create a pull request (PR) if you want to integrate your changes.
In most cases you want to set main
as the target branch.
The title of the PR must be written like a commit message. The section commit message convention above describes how these messages should be written.