<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content=""/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content=""/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.apache.org/blog/atom.xml" title="Apache Pulsar Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://pulsar.apache.org/blog/feed.xml" title="Apache Pulsar Blog RSS Feed"/><script>
              (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
              (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
              m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
              })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

              ga('create', 'UA-102219959-1', 'auto');
              ga('send', 'pageview');
            </script><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/pulsar.svg" alt="Apache Pulsar"/></a><a href="/en/versions"><h3>2.10.0</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/docs/en/getting-started-standalone" target="_self">Docs</a></li><li class=""><a href="/en/download" target="_self">Download</a></li><li class=""><a href="/docs/en/client-libraries" target="_self">Clients</a></li><li class=""><a href="#restapis" target="_self">REST APIs</a></li><li class=""><a href="#cli" target="_self">Cli</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="#community" target="_self">Community</a></li><li class=""><a href="#apache" target="_self">Apache</a></li><li class=""><a href="https://pulsar-next.staged.apache.org/" target="_self">New Website (Beta)</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>English</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/ja/team">日本語</a></li><li><a href="/fr/team">Français</a></li><li><a href="/ko/team">한국어</a></li><li><a href="/zh-CN/team">中文</a></li><li><a href="/zh-TW/team">繁體中文</a></li><li><a href="https://crowdin.com/project/apache-pulsar" target="_blank" rel="noreferrer noopener">Help Translate</a></li></ul></div></li><script>
        const languagesMenuItem = document.getElementById("languages-menu");
        const languagesDropDown = document.getElementById("languages-dropdown");
        languagesMenuItem.addEventListener("click", function(event) {
          event.preventDefault();

          if (languagesDropDown.className == "hide") {
            languagesDropDown.className = "visible";
          } else {
            languagesDropDown.className = "hide";
          }
        });
      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Team</h1><hr/></header><p>A successful project requires many people to play many roles. Some write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p><p>The team is comprised of PMC members, Committers and Contributors. Committers have direct access to the source of a project and actively evolve the codebase. Contributors improve the project through submission of patches and suggestions to be reviewed by the Committers. The number of Committers and Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><h2>Committers</h2><p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p><table class="versions"><thead><tr><th>Name</th><th>Apache Id</th><th>Roles</th></tr></thead><tbody><tr><td>Ali Ahmed</td><td>aahmed</td><td>Committer</td></tr><tr><td>Addison Higham</td><td>addisonj</td><td>Committer</td></tr><tr><td>Bo Cong</td><td>bogong</td><td>Committer</td></tr><tr><td>Boyang Jerry Peng</td><td>jerrypeng</td><td>Committer, PMC</td></tr><tr><td>Brad McMillen</td><td>bradtm</td><td>Committer, PMC</td></tr><tr><td>Chris Kellogg</td><td>cckellogg</td><td>Committer</td></tr><tr><td>Daniel Blankensteiner</td><td>blankensteiner</td><td>Committer</td></tr><tr><td>David Fisher</td><td>wave</td><td>Committer, PMC</td></tr><tr><td>David Kjerrumgaard</td><td>david-streamlio</td><td>Committer</td></tr><tr><td>Enrico Olivelli</td><td>eolivelli</td><td>Committer, PMC</td></tr><tr><td>Fangbin Sun</td><td>sunfangbin</td><td>Committer</td></tr><tr><td>Francis Christopher Liu</td><td>toffer</td><td>Committer, PMC</td></tr><tr><td>Guangning E</td><td>guangning</td><td>Committer</td></tr><tr><td>Guo Jiwei</td><td>technoboy</td><td>Committer</td></tr><tr><td>Haiting Jiang</td><td>jianghaiting</td><td>Committer</td></tr><tr><td>Hang Chen</td><td>chenhang</td><td>Committer, PMC</td></tr><tr><td>Hiroyuki Sakai</td><td>hrsakai</td><td>Committer, PMC</td></tr><tr><td>Huanli Meng</td><td>huanlimeng</td><td>Committer</td></tr><tr><td>Ivan Brendan Kelly</td><td>ivank</td><td>Committer, PMC</td></tr><tr><td>Jai Asher</td><td>jai1</td><td>Committer, PMC</td></tr><tr><td>Jennifer Huang</td><td>hjf</td><td>Committer, PMC</td></tr><tr><td>Jia Zhai</td><td>zhaijia</td><td>Committer, PMC</td></tr><tr><td>Jim Jagielski</td><td>jim</td><td>Committer, PMC</td></tr><tr><td>Joe Francis</td><td>joef</td><td>Committer, PMC</td></tr><tr><td>Lari Hotari</td><td>lhotari</td><td>Committer</td></tr><tr><td>Lin Lin</td><td>linlin</td><td>Committer, PMC</td></tr><tr><td>Ludwig Pummer</td><td>ludwigp</td><td>Committer, PMC</td></tr><tr><td>Masahiro Sakamoto</td><td>massakam</td><td>Committer, PMC</td></tr><tr><td>Marvin Cai</td><td>xxc</td><td>Committer</td></tr><tr><td>Masakazu Kitajo</td><td>maskit</td><td>Committer, PMC</td></tr><tr><td>Matteo Merli</td><td>mmerli</td><td>Committer, PMC</td></tr><tr><td>Michael Marshall</td><td>mmarshall</td><td>Committer</td></tr><tr><td>Nozomi Kurihara</td><td>nkurihar</td><td>Committer, PMC</td></tr><tr><td>P. Taylor Goetz</td><td>ptgoetz</td><td>Committer, PMC</td></tr><tr><td>Penghui Li</td><td>penghui</td><td>Committer, PMC</td></tr><tr><td>Rajan Dhabalia</td><td>rdhabalia</td><td>Committer, PMC</td></tr><tr><td>Ran Gao</td><td>rgao</td><td>Committer</td></tr><tr><td>Rui Fu</td><td>rfu</td><td>Committer</td></tr><tr><td>Sahaya Andrews</td><td>andrews</td><td>Committer, PMC</td></tr><tr><td>Sanjeev Kulkarni</td><td>sanjeevrk</td><td>Committer, PMC</td></tr><tr><td>Sebastián Schepens</td><td>sschepens</td><td>Committer, PMC</td></tr><tr><td>Siddharth Boobna</td><td>sboobna</td><td>Committer, PMC</td></tr><tr><td>Sijie Guo</td><td>sijie</td><td>Committer, PMC</td></tr><tr><td>Xiaolong Ran</td><td>rxl</td><td>Committer</td></tr><tr><td>Yijie Shen</td><td>yjshen</td><td>Committer</td></tr><tr><td>Yu Liu</td><td>liuyu</td><td>Committer</td></tr><tr><td>Yuki Shiga</td><td>yushiga</td><td>Committer, PMC</td></tr><tr><td>Yunze Xu</td><td>xyz</td><td>Committer</td></tr><tr><td>Yuto Furuta</td><td>k2la</td><td>Committer</td></tr><tr><td>Yong Zhang</td><td>yong</td><td>Committer</td></tr><tr><td>Zhangjian He</td><td>shoothzj</td><td>Committer</td></tr></tbody></table></div></div></div></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2022 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
      const community = document.querySelector("a[href='#community']").parentNode;
      const communityMenu =
        '<li>' +
        '<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
        '<div id="community-dropdown" class="hide">' +
          '<ul id="community-dropdown-items">' +
            '<li><a href="/en/contact">Contact</a></li>' +
            '<li><a href="/en/contributing">Contributing</a></li>' +
            '<li><a href="/en/coding-guide">Coding guide</a></li>' +
            '<li><a href="/en/events">Events</a></li>' +
            '<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
            '<li><a href="https://github.com/apache/pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
            '<li><a href="https://github.com/apache/pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
            '<li><a href="https://pulsar-summit.org/" target="_blank">Pulsar Summit &#x2750</a></li>' +
            '<li>&nbsp;</li>' +
            '<li><a href="/en/resources">Resources</a></li>' +
            '<li><a href="/en/team">Team</a></li>' +
            '<li><a href="/en/powered-by">Powered By</a></li>' +
          '</ul>' +
        '</div>' +
        '</li>';

      community.innerHTML = communityMenu;

      const communityMenuItem = document.getElementById("community-menu");
      const communityDropDown = document.getElementById("community-dropdown");
      communityMenuItem.addEventListener("click", function(event) {
        event.preventDefault();

        if (communityDropDown.className == 'hide') {
          communityDropDown.className = 'visible';
        } else {
          communityDropDown.className = 'hide';
        }
      });
    </script></span></footer></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script><script>
                document.addEventListener('keyup', function(e) {
                  if (e.target !== document.body) {
                    return;
                  }
                  // keyCode for '/' (slash)
                  if (e.keyCode === 191) {
                    const search = document.getElementById('search_input_react');
                    search && search.focus();
                  }
                });
              </script><script>
              var search = docsearch({
                
                apiKey: 'd226a455cecdd4bc18a554c1b47e5b52',
                indexName: 'apache_pulsar',
                inputSelector: '#search_input_react',
                algoliaOptions: {"facetFilters":["language:en","version:2.10.0"]}
              });
            </script></body></html>