Contributing Guide

How can I help?

We are always happy to help you in contributing to Watermill. If you have any ideas, please let us know on our Discord server .

There are multiple ways in which you can help us.

Existing issues

You can pick one of the existing issues. Most of the issues should have an estimation (S - small, M - medium, L - large).

New Pub/Sub implementations

If you have an idea to create a Pub/Sub based on some technology and it is not listed yet in our issues (because we don’t know it, or it is just some crazy idea, like physical mail based Pub/Sub), feel free to add your own implementation.

You can do it in your private repository and later, if you want, we can move it to ThreeDotsLabs/watermill-[name]. You will keep the maintainer permissions to the repository, and we’ll invite you to a maintainers-only discord channel.

When adding a new Pub/Sub implementation, you should start with Implementing a new Pub/Sub .

New ideas

If you have any idea that is not covered in the issues list, please post a new issue describing it. It’s recommended to discuss your idea on Discord /GitHub before creating production-ready implementation - in some situations, it may save a lot of your time before implementing something that can be simplified or done more easily. :)

In general, it’s helpful to discuss a Proof of Concept to align with the idea.

Local development

Makefile and docker-compose (for Pub/Subs) are your friends. You can run all tests locally (they are running in CI in the same way).

Useful commands:

  • make up - docker-compose up
  • make test - tests
  • make test_short - run short tests (useful to perform a very fast check after changes)
  • make fmt - do goimports

Code standards


Check our online hands-on training