You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2016/07/25 19:29:38 UTC

mesos git commit: Added Developer Community Status blog post.

Repository: mesos
Updated Branches:
  refs/heads/master 3e115accc -> 9dfcd890b


Added Developer Community Status blog post.

Review: https://reviews.apache.org/r/50313/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9dfcd890
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9dfcd890
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9dfcd890

Branch: refs/heads/master
Commit: 9dfcd890b9af0ebc1d18ef4d5ec629ea6eacb32a
Parents: 3e115ac
Author: Artem Harutyunyan <ar...@mesosphere.io>
Authored: Mon Jul 25 12:29:25 2016 -0700
Committer: Vinod Kone <vi...@gmail.com>
Committed: Mon Jul 25 12:29:25 2016 -0700

----------------------------------------------------------------------
 site/source/assets/js/dev-community.js          | 125 +++++++++++++++++++
 .../blog/2016-07-21-dev-community-status.md     |  91 ++++++++++++++
 site/source/layouts/basic.erb                   |   3 +
 site/source/layouts/dev-community.erb           |   7 ++
 4 files changed, 226 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/9dfcd890/site/source/assets/js/dev-community.js
----------------------------------------------------------------------
diff --git a/site/source/assets/js/dev-community.js b/site/source/assets/js/dev-community.js
new file mode 100644
index 0000000..e2686e2
--- /dev/null
+++ b/site/source/assets/js/dev-community.js
@@ -0,0 +1,125 @@
+// Load the Visualization API and the corechart package.
+google.charts.load('current', {'packages':['corechart']});
+
+// Set a callback to run when the Google Visualization API is loaded.
+google.charts.setOnLoadCallback(drawChart);
+
+// Callback that creates and populates a data table,
+// instantiates the pie chart, passes in the data and
+// draws it.
+function drawChart() {
+  var data = google.visualization.arrayToDataTable([
+      ['Release', 'Apple', 'Metamarkets', 'Twitter', 'Mesosphere', 'Huawei', 'Other', 'Microsoft', 'IBM', {'role': 'annotation'}],
+      ['0.24', 2, 0, 157, 211, 0, 65, 13, 5, ''],
+      ['0.25', 0, 0, 76, 157, 0, 44, 13, 29, ''],
+      ['0.26', 0, 0, 48, 205, 0, 67, 60, 20, ''],
+      ['0.27', 1, 0, 22, 637, 0, 65, 25, 24, ''],
+      ['0.28', 0, 0, 0, 406, 0, 34, 48, 19, ''],
+      ['1.0-rc2', 23, 2, 1, 1107, 1, 287, 123, 226, '']
+  ])
+
+  // Set chart options.
+  var options = {
+    'title': 'Commit Breakdown by Organizations and Releases',
+    'width': 600,
+    'height': 400,
+    'isStacked': true,
+    'groupWidth': '90%',
+    'legend': { position: 'top', maxLines: 30 }
+  };
+
+  // Instantiate and draw our chart, passing in some options.
+  var chart = new google.visualization.ColumnChart(
+      document.getElementById('commit_breakdown_by_organizations_and_releases'));
+  chart.draw(data, options);
+  drawContributorsChart();
+}
+
+function drawContributorsChart() {
+  var data = google.visualization.arrayToDataTable([
+      ['Release', 'Committers', 'Contributors', {'role': 'annotation'}],
+      ['0.24', 208, 245, ''],
+      ['0.25', 139, 180, ''],
+      ['0.26', 97, 303, ''],
+      ['0.27', 214, 560, ''],
+      ['0.28', 126, 381, ''],
+      ['1.0-rc2', 445, 1325, '']
+  ])
+
+  // Set chart options.
+  var options = {
+    'title': 'Commit Breakdown by Contributors and Committers',
+    'width': 600,
+    'height': 400,
+    'isStacked': true,
+    'groupWidth': '90%',
+    'legend': { position: 'top', maxLines: 30 }
+  };
+
+  // Instantiate and draw our chart, passing in some options.
+  var chart = new google.visualization.ColumnChart(
+      document.getElementById('commit_breakdown_by_contributors_and_committers'));
+  chart.draw(data, options);
+  drawUniqueContributorsChart();
+}
+
+function drawUniqueContributorsChart() {
+  var data = google.visualization.arrayToDataTable([
+      ['Release', 'Unique Contributors', 'Unique Committers', {'role': 'annotation'}],
+      ['0.24', 40, 14, ''],
+      ['0.25', 37, 13, ''],
+      ['0.26', 42, 14, ''],
+      ['0.27', 51, 13, ''],
+      ['0.28', 41, 10, ''],
+      ['1.0-rc2', 92, 17, '']
+  ]);
+
+  // Set chart options.
+  var options = {
+    'title': 'Number of Contributors and Committers per Release',
+    'width': 600,
+    'height': 400,
+    'isStacked': true,
+    'groupWidth': '90%',
+    'legend': { position: 'top', maxLines: 30 }
+  };
+
+  // Instantiate and draw our chart, passing in some options.
+  var chart = new google.visualization.ColumnChart(
+      document.getElementById('number_of_contributors_and_committers_per_release'));
+  chart.draw(data, options);
+  drawMonthlyChart()
+}
+
+function drawMonthlyChart() {
+  var data = google.visualization.arrayToDataTable([
+    ['Release', 'Apple', 'Metamarkets', 'Twitter', 'Mesosphere', 'Other', 'Microsoft', 'IBM', {'role': 'annotation'}],
+    ['2015-07', 0, 0, 71 , 124, 45 , 8 , 1 , ''],
+    ['2015-08', 2, 0, 107, 99 , 46 , 5 , 7 , ''],
+    ['2015-09', 0, 0, 71 , 132, 56 , 30, 28, ''],
+    ['2015-10', 0, 0, 17 , 94 , 29 , 43, 10, ''],
+    ['2015-11', 1, 0, 31 , 138, 71 , 0 , 9 , ''],
+    ['2015-12', 0, 0, 1  , 195, 61 , 17, 10, ''],
+    ['2016-01', 0, 0, 0  , 301, 71 , 22, 13, ''],
+    ['2016-02', 0, 0, 0  , 258, 46 , 12, 12, ''],
+    ['2016-03', 0, 0, 0  , 296, 78 , 42, 36, ''],
+    ['2016-04', 2, 0, 0  , 184, 75 , 37, 58, ''],
+    ['2016-05', 6, 0, 0  , 237, 50 , 50, 52, ''],
+    ['2016-06', 7, 1, 0  , 268, 118, 16, 66, '']
+  ])
+
+  // Set chart options.
+  var options = {
+    'title': 'Commit Breakdown by Organizations and Months',
+    'width': 600,
+    'height': 400,
+    'isStacked': true,
+    'groupWidth': '90%',
+    'legend': { position: 'top', maxLines: 30 }
+  };
+
+  // Instantiate and draw our chart, passing in some options.
+  var chart = new google.visualization.ColumnChart(
+      document.getElementById('commit_breakdown_by_organizations_and_months'));
+  chart.draw(data, options);
+}

http://git-wip-us.apache.org/repos/asf/mesos/blob/9dfcd890/site/source/blog/2016-07-21-dev-community-status.md
----------------------------------------------------------------------
diff --git a/site/source/blog/2016-07-21-dev-community-status.md b/site/source/blog/2016-07-21-dev-community-status.md
new file mode 100644
index 0000000..8a8b0e3
--- /dev/null
+++ b/site/source/blog/2016-07-21-dev-community-status.md
@@ -0,0 +1,91 @@
+---
+layout: dev-community
+title: "Mesos Developer Community Status Report"
+permalink: /blog/dev-community-status/
+published: true
+post_author:
+  display_name: Michael Park
+  gravatar: 2ab9cab3a7cf782261c583c1f48a81b0
+  twitter: mcypark
+tags: Community, MesosCon
+---
+
+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.
+
+One of such challenges is that the we have to make sure that everyone\u2019s interests
+are met. This isn\u2019t 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.
+
+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 [MesosCon 2016 presentation] -
+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).
+
+We mined the data for this post from Mesos [git log](https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=tree;f=docs;h=b8c6cfa978ea6986fa7e9181f209448f4984a3ab;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519) and used the recently added
+[contributors.yaml](https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=blob;f=docs/contributors.yaml;h=e17fed49ea358837eb33827dc3aceea9cd69c1b3;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519) file for mapping contributors to organizations.
+
+### Community Growth and Diversity
+<div id="number_of_contributors_and_committers_per_release"></div>
+
+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!
+
+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.
+
+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.
+
+<div id="commit_breakdown_by_organizations_and_releases"></div>
+
+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 [contributors.yaml](https://git1-us-west.apache.org/repos/asf?p=mesos.git;a=blob;f=docs/contributors.yaml;h=e17fed49ea358837eb33827dc3aceea9cd69c1b3;hb=9c8bfa9b1bfe52fa6b44aaf883333311bdde5519)), 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.
+
+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.
+
+<div id="commit_breakdown_by_organizations_and_months"></div>
+
+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.
+
+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.
+
+<div id="commit_breakdown_by_contributors_and_committers"></div>
+
+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.
+
+Stay tuned for more news on the dev list!
+
+[MesosCon 2016 presentation]: https://www.youtube.com/watch?list=PLGeM09tlguZQVL7ZsfNMffX9h1rGNVqnC&v=SnPmU61fVjQ

http://git-wip-us.apache.org/repos/asf/mesos/blob/9dfcd890/site/source/layouts/basic.erb
----------------------------------------------------------------------
diff --git a/site/source/layouts/basic.erb b/site/source/layouts/basic.erb
index 950c5a3..253de38 100755
--- a/site/source/layouts/basic.erb
+++ b/site/source/layouts/basic.erb
@@ -27,6 +27,9 @@
       var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
     })();
     </script>
+    <% if content_for?(:javascript) %>
+      <%= yield_content :javascript %>
+    <% end %>
   </head>
   <body>
     <!-- magical breadcrumbs -->

http://git-wip-us.apache.org/repos/asf/mesos/blob/9dfcd890/site/source/layouts/dev-community.erb
----------------------------------------------------------------------
diff --git a/site/source/layouts/dev-community.erb b/site/source/layouts/dev-community.erb
new file mode 100644
index 0000000..950d643
--- /dev/null
+++ b/site/source/layouts/dev-community.erb
@@ -0,0 +1,7 @@
+<% content_for :javascript do %>
+  <%= javascript_include_tag '//www.gstatic.com/charts/loader.js' %>
+  <%= javascript_include_tag 'dev-community.js' %>
+<% end %>
+<% wrap_layout :post do %>
+  <%= yield %>
+<% end %>