Thank you for considering contributing! I write libraries in my free time and contributions from others help me make great tools.

Following these guidelines helps to communicate that you respect my time, as the developer managing and developing this open source project. In return, I should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.

Questions and pull requests are more than welcome. I follow Elixir's tenet of bad documentation being a bug, so if anything is unclear, please file an issue! Ideally, my answer to your question will be in an update to the docs.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub.

Ground Rules

  • Follow the Code of Conduct.
  • Keep your commits clear and your pull requests small. This isn't a big library.
  • Run mix format on your files before committing them. I like clean diffs.
  • Run mix credo and resolve anything of yours that comes up.
  • No dependencies.

Your First Contribution

  • Ask questions! I like writing good documentation, and questions make that work more meaningful. Use the issue tracker for questions. There's a questions tag on the issue tracker for that reason.
  • Tests are always welcome! If you've got some edge case you're worried about, help me test for it!
  • Searching issues or pull requests tagged "help wanted" or "good first issue" are great places to get started.

Getting Started

GitHub makes it really easy to submit pull requests. Just:

  1. Create your own fork of the code
  2. Do the changes in your fork
  3. Submit a pull request

I don't require a CLA or anything like that.

How report a bug

If you find a security vulnerability, do NOT open an issue. Contact Rosa on instead!

In order to determine whether you are dealing with a security issue, ask yourself these two questions:

  • Can I access something that's not mine, or something I shouldn't have access to?
  • Can I disable something for other people?

If the answer to either of those two questions are "yes", then you're probably dealing with a security issue. Note that even if you answer "no" to both questions, you may still be dealing with a security issue, so if you're unsure, message me directly.

Please open an issue and follow the directions in the issue template.

How to suggest a feature or enhancement

The philosopy of this project is to create a small, sharp tool that takes some burden off of the shoulders of developers. Feature requests and enhancements should stick to this philosophy. Help me do anything that lets developers do more with their valuable time.

Feature requests give meaning to my work. Open an issue that decribes the feature you'd like to see, why you need it, and how you'd like it to work.

Code review process

As the primary developer, I will be the one reviewing all pull requests. I check GitHub almost every day, so you should be able to hear back from me quickly. However, I only do this in my free time, so please allow me flexibility.

If you like this contribution guide, please give a star to Nadia Eghbal's contributing-template project on GitHub. It was a great help.