Skip to content

Latest commit

 

History

History
59 lines (43 loc) · 2.22 KB

CONTRIBUTING.md

File metadata and controls

59 lines (43 loc) · 2.22 KB

Contributing Guidelines

Of course, we love our contributors. Thanks for spending time on making maddy better.

Reporting bugs

Issue tracker is meant to be used only if you have a problem or a feature request. If you just have some questions about maddy - prefer to use the IRC channel.

  • Provide log files, preferably with 'debug' directive set.
  • Provide the exact steps to reproduce the issue.
  • Provide the example message that causes the error, if applicable.
  • "Too much information is better than not enough information".

Issues without enough information will be ignored and possibly closed. Take some time to be more useful.

See SECURITY.md for information on how to report vulnerabilities.

Contributing Code

  1. Use common sense.
  2. Learn Git. Especially, what is git rebase. We may ask you to use it if needed.
  3. Tell us that you are willing to work on an issue.
  4. Fork the repo. Create a new branch based on dev, write your code. Open a PR.

Ask for advice if you are not sure. We don't bite.

maddy design summary and some recommendations are provided in HACKING.md file.

Commits

  1. Prefix commit message with a package path if it affects only a single package. Omit internal/ for brevity.
  2. Provide reasoning for details in the source code itself (via comments), provide reasoning for high-level decisions in the commit message.
  3. Make sure every commit builds & passes tests. Otherwise git bisect becomes unusable.

Git workflow

dev branch includes the in-development version for the next feature release. It is based on commit of the latest stable release and is merged into master on release via fast-forward. Unlike master, dev is not a protected branch and may get force-pushes.

master branch contains the latest stable release and is frozen between releases.

fix-X.Y are temporary branches containing backported security fixes. They are based on the commit of the corresponding stable release and exist while the corresponding release is maintained. A fix-* branch is not created for the latest release. Changes are added to these branches by cherry-picking needed commits from the dev branch.