blob: 6da4b1ad140f85d942b992dd5d18d5e99e8bb296 [file] [log] [blame]
<!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&amp;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&rsquo;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 &lsquo;Other&rsquo; (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 &lsquo;Community&rsquo; 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>&copy; 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>