| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Mesos Developer Community Status Report</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <meta property="og:locale" content="en_US"/> |
| <meta property="og:type" content="website"/> |
| <meta property="og:title" content="Apache Mesos"/> |
| <meta property="og:site_name" content="Apache Mesos"/> |
| <meta property="og:url" content="http://mesos.apache.org/"/> |
| <meta property="og:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta property="og:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <meta name="twitter:card" content="summary"/> |
| <meta name="twitter:site" content="@ApacheMesos"/> |
| <meta name="twitter:title" content="Apache Mesos"/> |
| <meta name="twitter:image" content="http://mesos.apache.org/assets/img/mesos_logo_fb_preview.png"/> |
| <meta name="twitter:description" |
| content="Apache Mesos abstracts resources away from machines, |
| enabling fault-tolerant and elastic distributed systems |
| to easily be built and run effectively."/> |
| |
| <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> |
| <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml"> |
| <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" /> |
| |
| |
| |
| <!-- Google Analytics Magic --> |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-20226872-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| |
| <script src="//www.gstatic.com/charts/loader.js" type="text/javascript"></script> |
| <script src="../../assets/js/dev-community.js" type="text/javascript"></script> |
| |
| |
| </head> |
| <body> |
| <!-- magical breadcrumbs --> |
| <div class="topnav"> |
| <div class="container"> |
| <ul class="breadcrumb"> |
| <li> |
| <div class="dropdown"> |
| <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> |
| <li><a href="http://www.apache.org">Apache Homepage</a></li> |
| <li><a href="http://www.apache.org/licenses/">License</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li><a href="http://www.apache.org/security/">Security</a></li> |
| </ul> |
| </div> |
| </li> |
| |
| <li><a href="http://mesos.apache.org">Apache Mesos</a></li> |
| |
| |
| <li><a href="/blog |
| /">Blog |
| </a></li> |
| |
| |
| </ul><!-- /.breadcrumb --> |
| </div><!-- /.container --> |
| </div><!-- /.topnav --> |
| |
| <!-- navbar excitement --> |
| <div class="navbar navbar-default navbar-static-top" role="navigation"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mesos-menu" aria-expanded="false"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="/"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo"/></a> |
| </div><!-- /.navbar-header --> |
| |
| <div class="navbar-collapse collapse" id="mesos-menu"> |
| <ul class="nav navbar-nav navbar-right"> |
| <li><a href="/gettingstarted/">Getting Started</a></li> |
| <li><a href="/blog/">Blog</a></li> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/downloads/">Downloads</a></li> |
| <li><a href="/community/">Community</a></li> |
| </ul> |
| </div><!-- /#mesos-menu --> |
| </div><!-- /.container --> |
| </div><!-- /.navbar --> |
| |
| <div class="content"> |
| <div class="container"> |
| <div class="row"> |
| |
| <div class="col-md-3"> |
| <div class="meta"> |
| <span class="author"> |
| |
| <img src="http://www.gravatar.com/avatar/2ab9cab3a7cf782261c583c1f48a81b0?s=80" |
| class="author_gravatar"> |
| |
| <span class="author_contact"> |
| <p><strong>Michael Park</strong></p> |
| |
| <p><a href="http://twitter.com/mcypark">@mcypark</a></p> |
| |
| </span> |
| </span> |
| <p><em>Posted July 21, 2016</em></p> |
| </div> |
| |
| <div class="share"> |
| <span class="social-share-button"><a href="https://twitter.com/share" class="twitter-share-button" data-via="apachemesos">Tweet</a></span> |
| |
| <span><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></span> |
| |
| <span><div class="g-plusone" data-size="medium"></div></span> |
| |
| <!-- Place this tag after the last +1 button tag. --> |
| <script type="text/javascript"> |
| (function() { |
| var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; |
| po.src = 'https://apis.google.com/js/plusone.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); |
| })(); |
| </script> |
| |
| <script src="//platform.linkedin.com/in.js" type="text/javascript"> |
| lang: en_US |
| </script> |
| <script type="IN/Share" data-counter="right"></script> |
| </div> |
| </div> |
| |
| <div class="post col-md-9"> |
| <h1>Mesos Developer Community Status Report</h1> |
| |
| <p>The Mesos project has a large and rapidly growing community of users and contributors. |
| In this post we would like to reflect on the current state |
| of the community as well as speak about some benefits and challenges that the |
| growth brings.</p> |
| |
| <p>One of such challenges is that the we have to make sure that everyone’s interests |
| are met. This isn’t always easy due to occasional conflicts of interest. For example, |
| developers are eager to see their patches vetted and committed to the codebase as |
| rapidly as possible, whereas production users of Mesos want to make sure that the stability of the software is never |
| compromised for the sake of rolling out new features. Both are essential components |
| of a healthy open source infrastructure project, and we want to strike a harmonizing |
| balance.</p> |
| |
| <p>Transparency is the key for being able to grow the community while also making |
| sure that participants understand and agree with the development direction. In |
| this post - much of which derives from a recent <a href="https://www.youtube.com/watch?list=PLGeM09tlguZQVL7ZsfNMffX9h1rGNVqnC&v=SnPmU61fVjQ">MesosCon 2016 presentation</a> - |
| we are going to present some statistics that reflect the current state of the |
| community participation. The time frame for the following statistics ranges from |
| the 0.24 release (July 2015) until 1.0.0-rc2 (June/July 2016).</p> |
| |
| <p>We mined the data for this post from Mesos <a href="https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=tree;f=docs;h=b8c6cfa978ea6986fa7e9181f209448f4984a3ab;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519">git log</a> and used the recently added |
| <a href="https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=blob;f=docs/contributors.yaml;h=e17fed49ea358837eb33827dc3aceea9cd69c1b3;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519">contributors.yaml</a> file for mapping contributors to organizations.</p> |
| |
| <h3>Community Growth and Diversity</h3> |
| |
| <div id="number_of_contributors_and_committers_per_release"></div> |
| |
| |
| <p>The number of unique contributors has been increasing steadily over time. As of |
| this writing, the number of contributors for the most recent release is greater |
| than 100. This is a more than factor two improvement over the 0.24 release for |
| which there were about 50 unique contributors!</p> |
| |
| <p>Historically there have always been large organizations from which the significant |
| amount of contributions came from. In recent times, Mesosphere, IBM and Microsoft have |
| been leading in terms of number of contributions made to the codebase. However, |
| in terms of numbers of people, the individual contributors greatly outnumber those |
| from Mesosphere, IBM and Microsoft.</p> |
| |
| <p>This is a great milestone for all of our individual contributors out there! |
| We greatly appreciate your contribution to the project and we’re looking forward |
| to seeing even more commits from individual contributors in the future.</p> |
| |
| <div id="commit_breakdown_by_organizations_and_releases"></div> |
| |
| |
| <p>In terms of numbers of commits from an organization, Mesosphere has the highest number after |
| contributing 62.8% of the commits. It is followed by ‘Other’ (which is a default organization |
| for all the authors who do not have an affiliation entry in the <a href="https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=blob;f=docs/contributors.yaml;h=e17fed49ea358837eb33827dc3aceea9cd69c1b3;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519">contributors.yaml</a>), IBM and Microsoft. We are actively working on involving more members from the community |
| and are looking forward to seeing an even greater community participation.</p> |
| |
| <p>It is important to note that 1.0 release has been in the making for a longer time |
| than previous releases, and that is why there is a significant spike in the number of |
| commits for 1.0-rc2. |
| Here is how the same graph looks like once we change the breakdown from releases to months.</p> |
| |
| <div id="commit_breakdown_by_organizations_and_months"></div> |
| |
| |
| <p>It presents a fuller picture where the upward trend is still there, but one can also notice |
| that the smooth growth trend has been there for a while.</p> |
| |
| <p>The last graph that we want to present shows the breakdown of commits per release |
| between contributors and the PMC members (aka Mesos Committers). As one can see |
| the number of commits authored by non-committers vastly outnumbers the ones originating |
| from committers. This shows that the active committers spend a lot of time shepherding |
| and landing patches from contributors.</p> |
| |
| <div id="commit_breakdown_by_contributors_and_committers"></div> |
| |
| |
| <p>Going forward we are going to introduce a page on our website where we will continuously |
| publish up-to-date statistics around the developer community. We are also going to double |
| down on initiatives to improve the contribution experience on the Mesos project. We |
| started by doing a spring cleaning on our GitHub and Reviewboard backlogs, as well as the Kanban |
| board in JIRA. This will make sure that shepherds do not get drowned in stale reviews, and that |
| everyone can see what the community is working on. We also have some ideas around improving the |
| developer tools, collecting and analyzing metrics around reviews, as well as some other initiatives |
| that should foster a greater participation. If you are interested in helping us improve the |
| community participation and drive some of these initiatives please join the ‘Community’ working group.</p> |
| |
| <p>Stay tuned for more news on the dev list!</p> |
| |
| |
| </div> |
| </div> |
| |
| </div><!-- /.container --> |
| </div><!-- /.content --> |
| |
| <hr> |
| |
| |
| |
| <!-- footer --> |
| <div class="footer"> |
| <div class="container"> |
| <div class="col-md-4 social-blk"> |
| <span class="social"> |
| <a href="https://twitter.com/ApacheMesos" |
| class="twitter-follow-button" |
| data-show-count="false" data-size="large">Follow @ApacheMesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| <a href="https://twitter.com/intent/tweet?button_hashtag=mesos" |
| class="twitter-hashtag-button" |
| data-size="large" |
| data-related="ApacheMesos">Tweet #mesos</a> |
| <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> |
| </span> |
| </div> |
| |
| <div class="col-md-8 trademark"> |
| <p>© 2012-2017 <a href="http://apache.org">The Apache Software Foundation</a>. |
| Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation. |
| <p> |
| </div> |
| </div><!-- /.container --> |
| </div><!-- /.footer --> |
| |
| <!-- JS --> |
| <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script> |
| <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script> |
| </body> |
| </html> |