<!DOCTYPE html>
<html lang="en">
  <head>	
    <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Apache Druid">
<meta name="keywords" content="druid,kafka,database,analytics,streaming,real-time,real time,apache,open source">
<meta name="author" content="Apache Software Foundation">

<title>Druid | Apache Druid Community</title>
<link rel="canonical" href="https://druid.apache.org/community/" />
<link rel="alternate" type="application/atom+xml" href="/feed">
<link rel="shortcut icon" href="/img/favicon.png">

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">

<link href='//fonts.googleapis.com/css?family=Open+Sans+Condensed:300,700,300italic|Open+Sans:300italic,400italic,600italic,400,300,600,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" href="/css/bootstrap-pure.css?v=1.1">
<link rel="stylesheet" href="/css/base.css?v=1.1">
<link rel="stylesheet" href="/css/header.css?v=1.1">
<link rel="stylesheet" href="/css/footer.css?v=1.1">
<link rel="stylesheet" href="/css/syntax.css?v=1.1">
<link rel="stylesheet" href="/css/docs.css?v=1.1">

<script>
  (function() {
    var cx = '000162378814775985090:molvbm0vggm';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>


  </head>
  <body>	
    <!-- Start page_header include -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<div class="top-navigator">
  <div class="container">
    <div class="left-cont">
      <a class="logo" href="/"><span class="druid-logo"></span></a>
    </div>
    <div class="right-cont">
      <ul class="links">
        <li class=""><a href="/technology">Technology</a></li>
        <li class=""><a href="/use-cases">Use Cases</a></li>
        <li class=""><a href="/druid-powered">Powered By</a></li>
        <li class=""><a href="/docs/latest/design/">Docs</a></li>
        <li class=" active"><a href="/community/">Community</a></li>
        <li class="header-dropdown">
          <a>Apache</a>
          <div class="header-dropdown-menu">
            <a href="https://www.apache.org/" target="_blank">Foundation</a>
            <a href="https://www.apache.org/events/current-event" target="_blank">Events</a>
            <a href="https://www.apache.org/licenses/" target="_blank">License</a>
            <a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a>
            <a href="https://www.apache.org/security/" target="_blank">Security</a>
            <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a>
          </div>
        </li>
        <li class=" button-link"><a href="/downloads.html">Download</a></li>
      </ul>
    </div>
  </div>
  <div class="action-button menu-icon">
    <span class="fa fa-bars"></span> MENU
  </div>
  <div class="action-button menu-icon-close">
    <span class="fa fa-times"></span> MENU
  </div>
</div>

<script type="text/javascript">
  var $menu = $('.right-cont');
  var $menuIcon = $('.menu-icon');
  var $menuIconClose = $('.menu-icon-close');

  function showMenu() {
    $menu.fadeIn(100);
    $menuIcon.fadeOut(100);
    $menuIconClose.fadeIn(100);
  }

  $menuIcon.click(showMenu);

  function hideMenu() {
    $menu.fadeOut(100);
    $menuIconClose.fadeOut(100);
    $menuIcon.fadeIn(100);
  }

  $menuIconClose.click(hideMenu);

  $(window).resize(function() {
    if ($(window).width() >= 840) {
      $menu.fadeIn(100);
      $menuIcon.fadeOut(100);
      $menuIconClose.fadeOut(100);
    }
    else {
      $menu.fadeOut(100);
      $menuIcon.fadeIn(100);
      $menuIconClose.fadeOut(100);
    }
  });
</script>

<!-- Stop page_header include -->


    <div class="druid-header">
  <div class="container">
    <h1>Apache Druid Community</h1>
    <h4></h4>
  </div>
</div>

<div class="container">
  <div class="row">
    <div class="col-md-10 col-md-offset-1">
      <h2 id="community">Community</h2>

<p>Most discussion about Druid happens over email and GitHub, but those aren&#39;t the only way to interact with the Druid
community. We also do chat, meetups, and more. Check out the following resources if you&#39;re looking for help, to discuss
Druid development, or just stay up to date:</p>

<ul>
<li><strong>User mailing list:</strong> <a href="https://groups.google.com/forum/#!forum/druid-user">druid-user@googlegroups.com</a> for general
discussion, questions, and announcements. This is the perfect place to ask for help if you need it!</li>
<li><strong>Development mailing list:</strong> <a href="https://lists.apache.org/list.html?dev@druid.apache.org">dev@druid.apache.org</a> for
discussion about project development.</li>
<li><strong>GitHub:</strong> Star us at <a href="https://github.com/apache/druid">apache/druid</a> and use this to follow Druid development, raise
issues, or contribute pull requests. If you&#39;re interested in development, please see the <a href="#contributing">Contributing</a>
section below for details on our development process.</li>
<li><strong>Meetups:</strong> Check out <a href="https://www.meetup.com/topics/apache-druid/">Apache Druid on meetup.com</a> for links to regular
meetups in cities all over the world.</li>
<li><strong>Slack:</strong> Some committers and users are present in the channel <code>#druid</code> on the Apache Slack team. Please use our
<a href="https://s.apache.org/slack-invite">invitation link to join</a>, and once you join, add the <code>#druid</code> channel.</li>
<li><strong>Twitter:</strong> Follow us on Twitter at <a href="https://twitter.com/druidio">@druidio</a>.</li>
<li><strong>StackOverflow:</strong> While the user mailing list is the primary resource for asking questions, if you prefer
StackOverflow, make sure to tag your question with <code>druid</code> or <code>apache-druid</code>.</li>
</ul>

<h2 id="getting-help">Getting help</h2>

<p>The best place to get a wide variety of help about Druid is on the Druid user
group <a href="https://groups.google.com/forum/#!forum/druid-user">druid-user@googlegroups.com</a>. You can also report issues and problems, or suggest
new features, on <a href="https://github.com/apache/druid">GitHub</a>.</p>

<p>Third party companies also provide commercial support and services for Druid, including:</p>

<ul>
<li><a href="https://www.cloudera.com/">Cloudera</a></li>
<li><a href="https://datumo.io/">Datumo</a></li>
<li><a href="https://www.deep.bi/solutions/apache-druid">Deep.BI</a></li>
<li><a href="https://imply.io/">Imply</a></li>
</ul>

<h2 id="contributing">Contributing</h2>

<p>Druid is a community-led project and we are delighted to receive contributions
of anything from minor fixes to big new features.</p>

<h3 id="what-to-work-on">What to work on</h3>

<p>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.</p>

<p>If you&#39;re looking for some starter projects, we maintain a <a href="https://github.com/apache/incubator-druid/issues?q=is%3Aopen+is%3Aissue+label%3AStarter">list of issues</a> suitable
for new developers.</p>

<p>There are plenty of ways to help outside writing Druid code. <em>Code review of pull requests</em>
(even if you are not a committer), feature suggestions, reporting bugs, <a href="/docs//">documentation</a>
and usability feedback all matter immensely. Another big way to help is
through <a href="/docs/latest/development/libraries.html">client libraries</a>, which are
avaialble in a variety of languages. If you develop a new one, we&#39;ll be happy
to include it in the list.</p>

<h3 id="getting-your-changes-accepted">Getting your changes accepted</h3>

<p>Patches to Druid are done through GitHub pull requests.</p>

<p>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</p>

<ul>
<li>HTTP requests and responses (e. g. a new HTTP endpoint)</li>
<li><a href="/docs/latest/development/modules.html">Interfaces for extensions</a></li>
<li>Server configuration (e. g. altering the behavior of a config property)</li>
<li>Emitted metrics</li>
<li>Other major changes, judged by the discretion of Druid committers</li>
</ul>

<p>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 <a href="https://lists.apache.org/list.html?dev@druid.apache.org">dev@druid.apache.org</a> or a github issue beforehand.</p>

<p>In general please follow the <a href="https://github.com/apache/incubator-druid/blob/master/CONTRIBUTING.md">contributing guidelines</a>
when sending in pull requests. This will help review proceed as quickly as
possible.</p>

<h3 id="committers">Committers</h3>

<p>Committers are collectively responsible for Druid&#39;s technical management. This involves
setting the direction of the project, contributing code, and reviewing code contributed
by others.</p>

<p>You don&#39;t need to be a committer to contribute- pull requests are welcome from anyone.</p>

<table><thead>
<tr>
<th>Name</th>
<th>Organization</th>
</tr>
</thead><tbody>
<tr>
<td><a href="https://github.com/AlexanderSaydakov">Alexander Saydakov</a></td>
<td><a href="https://www.oath.com/">Oath</a></td>
</tr>
<tr>
<td><a href="https://github.com/asdf2014">Benedict Jin</a></td>
<td><a href="https://www.alibaba.com/">Alibaba</a></td>
</tr>
<tr>
<td><a href="https://github.com/drcrallen">Charles Allen</a></td>
<td><a href="https://www.snap.com/en-US/">Snap</a></td>
</tr>
<tr>
<td><a href="https://github.com/ccaominh">Chi Cao Minh</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/clintropolis">Clint Wylie</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/dclim">David Lim</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/gaodayue">Daoyue Gao</a></td>
<td><a href="http://www.meituan.com/">Meituan</a></td>
</tr>
<tr>
<td><a href="https://github.com/Dylan1312">Dylan Wylie</a></td>
<td><a href="https://www.spotx.tv/">SpotX</a></td>
</tr>
<tr>
<td><a href="https://github.com/egor-ryashin">Egor Rashin</a></td>
<td><a href="https://www.snap.com/en-US/">Snap</a></td>
</tr>
<tr>
<td><a href="https://github.com/cheddar">Eric Tschetter</a></td>
<td><a href="https://www.splunk.com/">Splunk</a></td>
</tr>
<tr>
<td><a href="https://github.com/fjy">Fangjin Yang</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/Fokko">Fokko Driesprong</a></td>
<td><a href="https://godatadriven.com/">GoDataDriven</a></td>
</tr>
<tr>
<td><a href="https://github.com/kamaci">Furkan Kamaci</a></td>
<td><a href="https://lagom.ai/">Lagom</a></td>
</tr>
<tr>
<td><a href="https://github.com/gianm">Gian Merlino</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/himanshug">Himanshu Gupta</a></td>
<td><a href="https://www.splunk.com/">Splunk</a></td>
</tr>
<tr>
<td><a href="https://github.com/jihoonson">Jihoon Son</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/jon-wei">Jonathan Wei</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/julianhyde">Julian Hyde</a></td>
<td><a href="https://looker.com/">Looker</a></td>
</tr>
<tr>
<td><a href="https://github.com/junrao">Jun Rao</a></td>
<td><a href="https://www.confluent.io/">Confluent</a></td>
</tr>
<tr>
<td><a href="https://github.com/kaijianding">Kaijian Ding</a></td>
<td><a href="https://www.alibaba.com/">Alibaba</a></td>
</tr>
<tr>
<td><a href="https://github.com/kurtyoung">Kurt Young</a></td>
<td><a href="https://www.alibaba.com/">Alibaba</a></td>
</tr>
<tr>
<td><a href="https://github.com/binlijin">Lijin Bin</a></td>
<td><a href="https://www.alibaba.com/">Alibaba</a></td>
</tr>
<tr>
<td><a href="https://github.com/mistercrunch">Maxime Beauchemin</a></td>
<td><a href="http://lyft.com/">Lyft</a></td>
</tr>
<tr>
<td><a href="https://github.com/QiuMM">Mingming Qiu</a></td>
<td><a href="https://bytedance.com/">Bytedance</a></td>
</tr>
<tr>
<td><a href="https://github.com/b-slim">Mohamed Slim Bouguerra</a></td>
<td><a href="https://www.linkedin.com/">LinkedIn</a></td>
</tr>
<tr>
<td><a href="https://github.com/navis">Navis Ryu</a></td>
<td><a href="https://www.sktelecom.com/index.html">SK Telecom</a></td>
</tr>
<tr>
<td><a href="https://github.com/niketh">Niketh Sabbineni</a></td>
<td><a href="https://www.oath.com/">Oath</a></td>
</tr>
<tr>
<td><a href="https://github.com/nishantmonu51">Nishant Bangarwa</a></td>
<td>Independent</td>
</tr>
<tr>
<td><a href="https://github.com/pjain1">Parag Jain</a></td>
<td><a href="http://lyft.com/">Lyft</a></td>
</tr>
<tr>
<td><a href="https://github.com/ptgoetz">P. Taylor Goetz</a></td>
<td><a href="https://www.epam.com/">EPAM</a></td>
</tr>
<tr>
<td><a href="https://github.com/leventov">Roman Leventov</a></td>
<td><a href="https://www.snap.com/en-US/">Snap</a></td>
</tr>
<tr>
<td><a href="https://github.com/samarthjain">Samarth Jain</a></td>
<td><a href="https://www.netflix.com/">Netflix</a></td>
</tr>
<tr>
<td><a href="https://github.com/surekhasaharan">Surekha Saharan</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/vogievetsky">Vadim Ogievetsky</a></td>
<td><a href="https://imply.io/">Imply</a></td>
</tr>
<tr>
<td><a href="https://github.com/xvrl">Xavier Léauté</a></td>
<td><a href="https://www.confluent.io/">Confluent</a></td>
</tr>
<tr>
<td><a href="https://github.com/zhangxinyu1">Xinyu Zhang</a></td>
<td><a href="https://www.360.cn/">Qihoo 360</a></td>
</tr>
</tbody></table>

<h3 id="becoming-a-committer">Becoming a committer</h3>

<p>If you&#39;d like to become a committer, that&#39;s great! Please contact one of the
existing committers for a walk through the process. Basically, what we&#39;re
looking for is an interest in ongoing contributions to Druid.</p>

<h3 id="general-committer-guidelines">General committer guidelines</h3>

<p>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:</p>

<ol>
<li>You can merge your own pull request if it fits the rest of the criteria. A common thing to see is &quot;+1 after travis&quot; from other committers.</li>
<li>A pull request should have at least one +1 from a committer who is not the author, on the &quot;code/textual&quot; level of review.</li>
<li>Pull requests which have just one +1 from a committer couldn&#39;t be merged earlier than after 3 working days since PR submission.</li>
<li>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.</li>
<li>If a pull request has two or more +1&#39;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&#39;t merge a pull request that was submitted Friday evening until at least 1~2 regular work days have passed. Use good judgement here.</li>
<li>Major architectural and backwards incompatible changes, or changes which have long-term maintainance consequences (see examples in <a href="#getting-your-changes-accepted">the &quot;Getting your changes accepted&quot; section above</a>), should have at least three +1&#39;s from committers, on the &quot;design&quot; 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 <code>Design Review</code> tag to such a pull request.</li>
<li>Travis-CI should pass or have some <strong>very</strong> good reason why it won&#39;t pass for a pull request.</li>
<li>You reasonably believe that all comments have been addressed.</li>
<li>You are expected to be the champion for your own pull requests.</li>
<li>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.</li>
<li>Sometimes code is presented as a work-in-progress or as a point of discussion. Use the <code>WIP</code> or <code>Discuss</code> tags on a pull request in such a case.</li>
<li>If a pull request you are championing is taking longer than expected to merge, be sure to raise the issue in the developer sync.</li>
<li>Limit the number of pull requests you are championing at the same time.</li>
<li>Prioritize code reviews to look at pull requests that are blockers for the next release (see the Milestone marker on the pull request)</li>
<li>Help serve as champion for pull requests that originate from new committers.</li>
<li>If you feel a pull request is required for the next release, mark it as such in the Milestone of the pull request.</li>
<li>Do not comment on a pull request unless you are willing to follow up on the edits.</li>
<li>Give priority to getting older pull requests merged. (Either as their champion or as an active commenter)</li>
<li>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.</li>
</ol>

<p>Remember, we all want to see this project thrive!</p>

<h2 id="governance">Governance</h2>

<p>The PMC (Project Management Committee) is responsible for the administrative
aspects of the Druid project. The responsibilities of the PMC include:</p>

<ul>
<li>Approving releases</li>
<li>Nominating new committers</li>
<li>Maintaining the project&#39;s shared resources, including the github account,
mailing lists, websites, social media channels, etc.</li>
<li>Maintaining guidelines for the project</li>
</ul>

    </div>
  </div>
</div>

    
    <!-- Start page_footer include -->
<footer class="druid-footer">
<div class="container">
  <div class="text-center">
    <p>
    <a href="/technology">Technology</a>&ensp;·&ensp;
    <a href="/use-cases">Use Cases</a>&ensp;·&ensp;
    <a href="/druid-powered">Powered by Druid</a>&ensp;·&ensp;
    <a href="/docs/latest/">Docs</a>&ensp;·&ensp;
    <a href="/community/">Community</a>&ensp;·&ensp;
    <a href="/downloads.html">Download</a>&ensp;·&ensp;
    <a href="/faq">FAQ</a>
    </p>
  </div>
  <div class="text-center">
    <a title="Join the user group" href="https://groups.google.com/forum/#!forum/druid-user" target="_blank"><span class="fa fa-comments"></span></a>&ensp;·&ensp;
    <a title="Follow Druid" href="https://twitter.com/druidio" target="_blank"><span class="fab fa-twitter"></span></a>&ensp;·&ensp;
    <a title="GitHub" href="https://github.com/apache/druid" target="_blank"><span class="fab fa-github"></span></a>
  </div>
  <div class="text-center license">
    Copyright © 2020 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a>.<br>
    Except where otherwise noted, licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>.<br>
    Apache Druid, Druid, and the Druid logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
  </div>
</div>
</footer>

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'UA-131010415-1');
</script>
<script>
  function trackDownload(type, url) {
    ga('send', 'event', 'download', type, url);
  }
</script>
<script src="//code.jquery.com/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="/assets/js/druid.js"></script>
<!-- stop page_footer include -->

    
  </body>
</html>
