# Contributing

We respect our community, all contributions must adhere to our [Code Of Conduct](CODE_OF_CONDUCT.md).

## The Very First Contribution

Thank you for wanting to contribute to WaloViz!  
There is one way in which you can contribute that takes only one second:  
:star2: **Please consider giving WaloViz a GitHub star** :star2:

Even if you do not give us a star, you are the best!  
Using WaloViz, telling a friend about it or making contributions are all amazing ways in which WaloViz can become more useful for more people.  
For that - **we are grateful :heart:**

## What is a Good First Contribution?

The best place to start contributing to WaloViz is always the [Good First Issues](https://github.com/AlonKellner/waloviz/issues?q=is%3Aissue+is%3Aopen+%3Agood-first-issue)!  
These are issues tagged with the `good-first-issue` tag, and you should be able to tackle them without any prior knowledge.

But before you go ahead and start working on a PR you should finish this guide, and also read our [Developer Guide](DEVELOPER-GUIDE.md).

## PR Checklist

Before starting to work on any PR go through this checklist, and once more before submitting.

- [ ] **Is there an Issue corresponding to my PR?** - If not, [Create an Issue](https://github.com/AlonKellner/waloviz/issues/new).
- [ ] **Does any maintainer know I'm working on this?** - If not, [LET THEM KNOW](https://github.com/AlonKellner/waloviz/issues)!
- [ ] **Did my suggestion got rejected?** - If so, it's nothing personal, we still appreciate you :) Try finding something else to contribute, perhaps [an already open Issue](https://github.com/AlonKellner/waloviz/issues) that was accepted but not solved.
- [ ] **Are there any difficult decisions I need to make?** - Talk about them in your [corresponding Issue](https://github.com/AlonKellner/waloviz/issues).
- [ ] **Did I add my changes to the next release in the [`doc/releases.md`](doc/releases.md)?** - If not, add them.
- [ ] **Should my changes be documented in the website?** - If so, document it in the `doc/`.
- [ ] **Should my changes have any tests?** - If so, write them in `tests/`.
- [ ] **Do all modified functions have an up to date inline documentation?** - If not, create or update the inline documentation.
- [ ] **Does `pre-commit run` passes?** - If not, try to run it again and see if it passes now.
- [ ] **Does `pytest tests/ui --browser chromium` - passes?** If not, make those tests pass before submitting.
- [ ] **Did anyone respond to my PR or Issue?** - If not, don't worry, we probably missed it by mistake, sorry... Just write another comment and mention a maintainer.

## Can I Contribute more?

**YES!**  
WaloViz is early on its path, and there are lots of ways in which it can become better.  
Here is a not comprehensive list of possible Contributions:

- **Read the Vision & Roadmap** - find them in the [Readme](README.md), you might be able to help in ways that we didn't even realize!
- **Improve the Documentation** - It is the highest priority
- **Write Tests** - Second only to Documentation
- **Automate processes** - Anything from bots to github actions, your knowledge can help WaloViz save precious time
- **Create an Issue** - before jumping straight into creating PRs, create an Issue that explains your reasoning\problem to the community
- **Comment\Upvote an Issue** - We'd love to hear your opinion on open Issues! We will listen
- **Solve an Issue with a PR** - after you actively engaged with the Issue in the comments and were given the PR responsibility
- **Talk with the community** - your engagement **is** the community, as long as it adheres to our [Code Of Conduct](CODE_OF_CONDUCT.md)
