Most discussion about Druid happens over email, github, and IRC.
Druid is a community-led project and we are delighted to receive contributions
of anything from minor fixes to big new features.
What to work on
If you have an itch to scratch, then by all means do that! Fixing bugs you run
into, or adding features you need, are both immensely helpful.
If you're looking for some starter projects, we maintain a list of issues suitable
for new developers.
There are plenty of ways to help outside writing Druid code. Code review of pull requests
(even if you are not a committer), feature suggestions, reporting bugs, documentation
and usability feedback all matter immensely. Another big way to help is
through client libraries, which are
avaialble in a variety of languages. If you develop a new one, we'll be happy
to include it in the list.
Getting your changes accepted
Patches to Druid are done through GitHub pull requests.
Pull requests require one approval (+1) from an established committer on code and text (for documentation) levels. The
exception is major architectural changes or API changes, and/or changes to
- HTTP requests and responses (e. g. a new HTTP endpoint)
- Interfaces for extensions
- Server configuration (e. g. altering the behavior of a config property)
- Emitted metrics
- Other major changes, judged by the discretion of Druid committers
warrant additional design and compatibility review. Such pull requests require design approvals from three different
committers (one of them could also be the author of the pull request). For those, it can help to discuss things
on the druid-development list or a github issue beforehand.
In general please follow the contributing guidelines
when sending in pull requests. This will help review proceed as quickly as
For code contributions, we require that you agree to a Contributor License
Agreement (CLA) before we can accept your code. You can find our CLA on and
sign it directly on our CLA page
Committers are collectively responsible for Druid's technical management. This involves
setting the direction of the project, contributing code, and reviewing code contributed
You don't need to be a committer to contribute- pull requests are welcome from anyone.
Becoming a committer
If you'd like to become a committer, that's great! Please contact one of the
existing committers for a walk through the process. Basically, what we're
looking for is an interest in ongoing contributions to Druid.
General committer guidelines
If you are an official Druid committer then congratulations! You are part of a fantastic group of people. Here are some guidelines to follow to help ensure the Druid project continues to grow and improve:
- You can merge your own pull request if it fits the rest of the criteria. A common thing to see is "+1 after travis" from other committers.
- A pull request should have at least one +1 from a committer who is not the author, on the "code/textual" level of review.
- Pull requests which have just one +1 from a committer couldn't be merged earlier than after 3 working days since PR submission.
- A pull request with just one +1 could be merged only by (or in coordination with) the committer who provided the review. Because the reviewer may think that the PR is complex or risky enough that needs another pair of eyes to look at it. If this is the case, the first reviewer should indicate this in the PR approval message.
- If a pull request has two or more +1's from committers who are not the author, it could be merged immediately and by any committer. But still, enough time since the PR submission should pass to give folks a reasonable chance to indicate a desire to comment on the pull request. AKA: don't merge a pull request that was submitted Friday evening until at least 1~2 regular work days have passed. Use good judgement here.
- Major architectural and backwards incompatible changes, or changes which have long-term maintainance consequences (see examples in the "Getting your changes accepted" section above), should have at least three +1's from committers, on the "design" level of review. One approval could be from the author of the PR. The first committer who indicates that a PR needs design review should add the
Design Review tag to such a pull request.
- Travis-CI should pass or have some very good reason why it won't pass for a pull request.
- You reasonably believe that all comments have been addressed.
- You are expected to be the champion for your own pull requests.
- Being a champion on a pull request can be a significant undertaking depending on the size of the code change and what parts of the code it touches. It may require communicating with other developers, reconciling differences, organizing community feedback, and/or following up with people who have commented in a pull request to ensure comments have been addressed.
- Sometimes code is presented as a work-in-progress or as a point of discussion. Use the
Discuss tags on a pull request in such a case.
- If a pull request you are championing is taking longer than expected to merge, be sure to raise the issue in the developer sync.
- Limit the number of pull requests you are championing at the same time.
- Prioritize code reviews to look at pull requests that are blockers for the next release (see the Milestone marker on the pull request)
- Help serve as champion for pull requests that originate from new committers.
- If you feel a pull request is required for the next release, mark it as such in the Milestone of the pull request.
- Do not comment on a pull request unless you are willing to follow up on the edits.
- Give priority to getting older pull requests merged. (Either as their champion or as an active commenter)
- And most importantly.. the PMC desires to ensure a positive and effective developer experience! If you find that things are not functioning to your expectations, pleaes raise the issue.
Remember, we all want to see this project thrive!
The PMC (Project Management Committee) is responsible for the administrative
aspects of the Druid project. The responsibilities of the PMC include:
- Approving releases
- Nominating new committers
- Maintaining the project's shared resources, including the github account,
mailing lists, websites, social media channels, etc.
- Maintaining guidelines for the project