2021-02-10 09:41:55 +03:00
# Contributing to Zellij
2021-01-25 20:36:24 +03:00
2021-02-10 09:41:55 +03:00
Thanks for considering to contribute to Zellij!
2021-01-25 20:36:24 +03:00
2021-02-04 12:21:11 +03:00
**First**: if you're unsure or afraid of anything, just ask on our
2021-02-04 16:18:47 +03:00
[Discord server][discord-invite-link] or submit the issue or pull request anyway.
2021-02-04 12:21:11 +03:00
You won't be yelled at for giving it your best effort. The worst that can happen
is that you'll be politely asked to change something. We appreciate any sort
of contributions, and don't want a wall of rules to get in the way of that.
# Code of Conduct
2021-01-25 20:36:24 +03:00
Before contributing please read our [Code of Conduct ](CODE_OF_CONDUCT.md ) which
all contributors are expected to adhere to.
2021-02-16 21:40:20 +03:00
## Building
2021-05-05 13:05:05 +03:00
To build Zellij, we're using cargo-make – you can install it by running `cargo install --force cargo-make` . To edit a manpage mandown crate (`cargo install mandown`) is used and the work is done on a markdown file in docs/MANPAGE.md.
2021-04-13 18:06:04 +03:00
2021-05-02 17:14:27 +03:00
Zellij has a hard dependency on a package from `x11` most likely called `libX11` , or similarly on your system.
2021-04-13 18:06:04 +03:00
Here are some of the commands currently supported by the build system:
2021-02-16 21:40:20 +03:00
```sh
2021-04-13 20:14:13 +03:00
# Format code, build, then run tests and clippy
2021-04-13 18:06:04 +03:00
cargo make
# You can also perform these actions individually
cargo make format
cargo make build
cargo make test
2021-04-14 21:11:24 +03:00
# Run Zellij (optionally with additional arguments)
2021-04-13 18:06:04 +03:00
cargo make run
2021-04-14 21:11:24 +03:00
cargo make run -- -l strider
2021-04-13 18:06:04 +03:00
# Run Clippy (potentially with additional options)
cargo make clippy
cargo make clippy -W clippy::pedantic
# Install Zellij to some directory
cargo make install /path/of/zellij/binary
# Publish the zellij and zellij-tile crates
cargo make publish
2021-05-05 13:05:05 +03:00
# Update manpage
cargo make manpage
2021-02-16 21:40:20 +03:00
```
2021-04-13 18:06:04 +03:00
To run `install` or `publish` , you'll need `binaryen --version` > 97, for it's command `wasm-opt` .
2021-02-24 19:05:19 +03:00
2021-02-04 12:21:11 +03:00
## Looking for something to work on?
2021-01-25 20:36:24 +03:00
2021-02-10 09:41:55 +03:00
If you are new contributor to `Zellij` going through [beginners][good-first-issue]
2021-02-04 12:21:11 +03:00
should be a good start or you can join our public
2021-02-04 16:18:47 +03:00
[Discord server][discord-invite-link], we would be happy to help
2021-02-04 12:21:11 +03:00
finding something interesting to work on and guide through.
2021-01-25 20:36:24 +03:00
2021-02-04 12:21:11 +03:00
[discord-invite-link]: https://discord.gg/feHDHahHCz
2021-02-10 09:41:55 +03:00
[good-first-issue]: https://github.com/zellij-org/zellij/labels/good%20first%20issue
2021-01-25 20:36:24 +03:00
2021-02-04 12:21:11 +03:00
## Filing Issues
2021-01-25 20:36:24 +03:00
2021-02-04 12:21:11 +03:00
Bugs and enhancement suggestions are tracked as GitHub issues.
2021-02-10 09:41:55 +03:00
### Lacking API for plugin in Zellij?
2021-01-25 20:36:24 +03:00
2021-02-10 09:41:55 +03:00
If you have a plugin idea, but Zellij still doesn't have API required to make
2021-02-04 12:21:11 +03:00
the plugin consider opening [an issue][plugin-issue] and describing your requirements.
2021-01-25 20:36:24 +03:00
2021-02-10 09:41:55 +03:00
[plugin-issue]: https://github.com/zellij-org/zellij/issues/new?assignees=& labels=plugin%20system
2021-02-04 12:21:11 +03:00
2021-02-04 16:21:00 +03:00
### How Do I Submit A (Good) Bug Report?
2021-02-04 12:21:11 +03:00
After you've determined which repository your bug is related to and that the
issue is still present in the latest version of the master branch, create an
issue on that repository and provide the following information:
- Use a **clear and descriptive title** for the issue to identify the problem.
- Explain which **behavior you expected** to see instead and why.
- Describe the exact **steps to reproduce the problem** in as many details as necessary.
2021-02-04 16:18:47 +03:00
- When providing code samples, please use [code blocks][code-blocks].
2021-02-04 12:21:11 +03:00
2021-02-04 16:21:00 +03:00
### How Do I Submit A (Good) Enhancement Suggestion?
2021-02-04 12:21:11 +03:00
Instructions are similar to those for bug reports. Please provide the following
information:
- Use a **clear and descriptive title** for the issue to identify the suggestion.
- Provide a **description of the suggested enhancement** in as many details as necessary.
2021-02-04 16:18:47 +03:00
- When providing code samples, please use [code blocks][code-blocks].
2021-02-04 12:21:11 +03:00
[code-blocks]: https://help.github.com/articles/creating-and-highlighting-code-blocks/
## Submitting Pull Requests
Instructions are similar to those for bug reports. Please provide the following information:
- If this is not a trivial fix, consider **creating an issue to discuss first** and **later link to it from the PR** .
- Use a **clear and descriptive title** for the pull request.
2021-02-05 18:33:24 +03:00
- Follow [Conventional Commit specification ](https://www.conventionalcommits.org/en/v1.0.0/ )
where sufficiently large or impactful change is made.
2021-02-04 12:21:11 +03:00
- Provide a **description of the changes** in as many details as necessary.
Before submitting your pull request, also make sure that the following conditions are met:
- Your new code **adheres to the code style** through running `cargo fmt` .
- Your new code **passes all existing and new tests** through running `cargo test` .