diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ca9119c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,85 @@ + + +# Contributing to Nix Weather + +Nix Weather is a NixOs adjacent project, and expects contributors to have **at least** a local installation of `Nix` or `Lix` on their development machine. + +## DevShell + +Currently, `nix-weather` is developed against Lix main branch. We also make use +of experimental features, including ones still in RFC stage, such as [RFC 0148: +`pipe-operators`](https://github.com/NixOS/rfcs/pull/148). + +The `devShell` in the flake takes care of setting this up for you, so as long as +you can run that, you shouldn't have to worry. + +Further, the devShell includes formatting through `nix fmt`, and testing through +`nix flake check`, as well as pre-commit-hooks, that ensure any PR is up to +standard before being submitted. + +We stronly advice working and commiting from inside the devShell. To make this +easier, use the provided [direnv](https://direnv.net/) configuration by +installing direnv and running `direnv allow` in the repository root. + +## Code Standards + +We make use of several standards, including: +- [Semantic Versioning](https://semver.org/) for version bumps. +- [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit summaries. +- [REUSE](https://reuse.software/) for license complicance. + +We also make use of code formatters, as well as rust related tooling for +auditing dependencies have licenses that are compliant with the +[EUPL-1.2](https://commission.europa.eu/content/european-union-public-licence_en). + +Take note that contributions will be legally considered under the EUPL-1.2 +Article 6 "Chain of Authorship" section, essentially a developer certificate of +origin. + +> 6.Chain of Authorship +> +> The original Licensor warrants that the copyright in the Original Work granted +> hereunder is owned by him/her or licensed to him/her and that he/she has the +> power and authority to grant the Licence. +> +> Each Contributor warrants that the copyright in the modifications he/she +> brings to the Work are owned by him/her or licensed to him/her and that he/she +> has the power and authority to grant the Licence. +> +> Each time You accept the Licence, the original Licensor and subsequent +> Contributors grant You a licence to their contributions to the Work, under the +> terms of this Licence. + +### Pull-Requests + +We currently expect that all commits are functional against `nix flake check` +and don't introduce any regressions. Further we prohibit merge branch updates, +and expect all pull requests to have been rebased against the `main` branch +before being merged. + +Long chains of commits should be divided into separate PRs, specially if +introducing multiple features that will all need separate review. Ideally, a +stacked workflow is preferred. + +Formatting changes of code created in the PR should be rebased into the commit +introducing the codebase, **not** be it's own separate commit. + +Treewide changes should be added to a `.git-blame-ignore-revs`. + +## Code of Conduct + +The project is moderated according to the [Contributor Covenant Code of +Conduct](CODE_OF_CONDUCT.md). We expect all contributions, issues, and other +project communications made in spaces related to the project to live up to the +standards set in the code of conduct, and it will be enforced according to the +`Enforcement Guidelines` it describes. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at: + +matrix: @cafkafk:gitter.im diff --git a/README.md b/README.md index 823c16e..696f9de 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,7 @@ Caching the requisites is a future goal, so that we only have to build the down the nix part of the runtime by ~80%. + +## Contributing + +For information on contributing, please see [CONTRIBUTING.md](CONTRIBUTING.md).