70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
# Overview
|
|
|
|
GRM is still in very early development. I started GRM mainly to scratch my own
|
|
itches (and am heavily dogfooding it). If you have a new use case for GRM, go
|
|
for it!
|
|
|
|
## Contributing
|
|
|
|
To contribute, just fork the repo and create a pull request against `develop`.
|
|
If you plan bigger changes, please consider opening an issue first, so we can
|
|
discuss it.
|
|
|
|
If you want, add yourself to the `CONTRIBUTORS` file in your pull request.
|
|
|
|
## Branching strategy
|
|
|
|
The branching strategy is a simplified
|
|
[git-flow](https://nvie.com/posts/a-successful-git-branching-model/).
|
|
|
|
* `master` is the "production" branch. Each commit is a new release.
|
|
* `develop` is the branch where new stuff is coming in.
|
|
* feature branches branch off of `develop` and merge back into it.
|
|
|
|
Feature branches are not required, there are also changes happening directly on
|
|
`develop`.
|
|
|
|
## Required tooling
|
|
|
|
You will need the following tools:
|
|
|
|
* Rust (obviously) (easiest via `rustup`), with the nightly toolchain
|
|
* Python3
|
|
* [`just`](https://github.com/casey/just), a command runner like `make`. See
|
|
[here](https://github.com/casey/just#installation) for installation
|
|
instructions (it's most likely just a simple `cargo install just`).
|
|
* Docker & docker-compose for the e2e tests
|
|
* `isort`, `black` and `shfmt` for formatting.
|
|
* `ruff` and `shellcheck` for linting.
|
|
* `mdbook` for the documentation
|
|
|
|
Here are the tools:
|
|
|
|
| Distribution | Command |
|
|
| ------------- | --------------------------------------------------------------------------------------------------- |
|
|
| Arch Linux | `pacman -S --needed python3 rustup just docker docker-compose python-black shfmt shellcheck mdbook` |
|
|
| Ubuntu/Debian | `apt-get install --no-install-recommends python3 docker.io docker-compose black shellcheck` |
|
|
|
|
Note that you will have to install `just` and `mdbook` manually on Ubuntu (e.g.
|
|
via `cargo install just mdbook` if your rust build environment is set up
|
|
correctly). Same for `shfmt`, which may just be a `go install
|
|
mvdan.cc/sh/v3/cmd/shfmt@latest`, depending on your go build environment.
|
|
|
|
For details about rustup and the toolchains, see [the installation
|
|
section](./installation.md).
|
|
|
|
## FAQ
|
|
|
|
### Why nightly?
|
|
|
|
For now, GRM requires the nightly toolchain for two reasons:
|
|
|
|
* [`io_error_more`](https://github.com/rust-lang/rust/issues/86442) to get
|
|
better error messages on IO errors
|
|
* [`const_option_ext`](https://github.com/rust-lang/rust/issues/91930) to have
|
|
static variables read from the environment that fall back to hard coded
|
|
defaults
|
|
|
|
Honestly, both of those are not really necessary or can be handled without
|
|
nightly. It's just that I'm using nightly anyway.
|