Files
komorebi/docs/recorder/CONTRIBUTING.md
T

85 lines
3.8 KiB
Markdown

# Contributing to komorebi-recorder
The project is a collection of contributions from both the project leaders and
community members. There are many ways to contribute, this can include content
in the project repositories, as well as contributing in public and private
conversation, assisting users, writing blog posts, and many other ways.
## How contributions are made
Contributions to the project primarily happen in the project source
repositories, but may also occur in other places, such as discussion forums and
public and private discourse.
## Contributing content to the Project
In order for the project leaders to manage sustained progress toward the
project goals and maintain project velocity, focus and quality, the project may
adjust the license terms over time.
Content contributed to the project must therefore be provided under
sufficiently liberal terms to allow these operations to proceed unimpeded. As
such contributions are accepted with the following understanding:
* Contributed content is licensed under the terms of the 0-BSD license
* Contributors accept the terms of the project license at the time of
contribution
By making a contribution, you accept both the current project license terms,
and that all contributions that you have made are provided under the terms of
the 0-BSD license.
## Zero-Clause BSD
```
Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```
## Development environment
The recorder is built in the komorebi repository, with Nix. `nix develop` provides the Rust toolchain with
nightly `rustfmt`, `cargo-deny`, `cargo-nextest`, `ffmpeg`, `jq`, `just`, `resvg` and `ripgrep`, and on Linux the
GStreamer libraries. The recorder indexes the log statements of the komorebi source around it
(`komorebi-recorder/build.rs`), so the tests that read it need no setting: `KOMOREBI_SRC` and
`KOMOREBI_COMMIT` are only for a build outside a checkout (nix).
The default `nix develop` shell cross-compiles for `x86_64-pc-windows-msvc`, which type-checks the Windows code
from a Mac or Linux machine (`just` drops that target for the native recipes). `nix develop .#native` leaves the
target out. Nothing there runs the Windows code: a change to a `cfg(windows)` line is first run by the
Windows workflow in CI.
On a Windows machine, the steps in [windows-checkpoints.md](dev/windows-checkpoints.md)
say what to run and what to look for.
The icon is `komorebi-recorder/assets/watermelon.svg`. After changing it, run `just icon` to render the PNG that
the windows set and the ICO that Windows embeds, and commit the three together.
## Checks
Before pushing, run
```sh
just fmt
just lint
nix build -L .#checkSets.recorder-lint .#checkSets.recorder-test .#checkSets.fmt .#checkSets.deny
```
which formats, runs the macros the codebase does not allow, and runs clippy and the tests of the recorder, the
format checks and `cargo deny` of the workspace. `just --list` shows the other recipes.
## Commits
Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/), as the pull request
template asks: the release notes are generated from them.
A change that alters what the documentation says (the rustdoc, the README, `docs/`) updates the
documentation in the same commit, so that the documentation never describes code that is not there.