Contributing

Thank you for your interest in zen-mapper! Here are a couple of notes on how to contribute.

Something seems wrong

If something seems wrong please do not hesitate to open up an issue here on github. Issues are also the best way to ask questions about zen-mapper. All we ask is before doing so check to make sure that your questions is not covered by our incredibly sparse documentation.

Contributing code

The general pipeline for getting code added to zen-mapper is as follows:

  1. fork zen-mapper

  2. create a branch

  3. write your code

  4. open a pull request

Before submitting a new feature it is wise to open an issue discussing the proposed feature to make sure that there is interest first. Beyond that we can hash everything out during the review process. What follows are tips on how to develop code for zen-mapper and requirements for getting a change merged. Don’t worry too much about following these to the letter, that’s what the review process is for.

Developer Environment

If you already use nix the easiest way to get up and running is to run nix develop which will drop you into a shell with everything you need. We use just as our task runner, running just will list all the tasks you can run.

If you don’t use nix, we provide files for using uv to manage your environment. Instructions on how to do that can be found here.

Architectural Design Decisions

If your change includes a design choice which addresses a requirement which is architecturally significant a brief description of why your choice was made will need to be added to the decision log in docs/source/decisions. These descriptions should follow the MADR 4.0.0 spec. There are templates in docs/source/decisions for you to use. Do not worry about this too much if opening a PR, if one is needed it will be mentioned before merging and it will probably encode whatever discussion in the issues or pull request led to the decision being made.

The Changelog

We keep a changelog in CHANGELOG.md following the keep a changelog specification. When submitting a change add a short description of the change to the top of the changelog under the [Unreleased] section.