Finally we released a new version of the OpenStack Quarterly report. This is intended to provide insights about the software development process of the OpenStack projects. This covers information from several data sources such as Git, Launchpad, Gerrit, Mailing lists, ask.openstack.org and IRC channels. And it aims at providing quantitative and qualitative information about the activity, community and software process.
Within a few hours the OpenStack Juno release will be delivered. At the moment of writing this analysis the OpenStack Activity Board shows 91,317 commits spread across 108 repositories. All of this activity was performed by close to 2,600 developers, affiliated to about 230 different organizations. In addition, around 75,000 changesets have gone through code review, submitted by 3,082 developers.
The room was crowded, with people from organizations like Eclipse Foundation, Red Hat, Google, Twitter, PayPal, Open Source Initiative, LibreOffice, Kaltura, Cloudera, etc. There has been a lot of interesting topics and talks, and almost everything is already available in the 2014’s edition website
An interesting fact: while for previous releases contributing organizations changed a lot, from Havana to Icehouse release top contributors keep stable with no big changes. Even more: no big changes in the top organizations, and no big changes in the number of commits. The only new entry in the top ten is Intel, with the rest contributing in a similar way as they were in Havana.
Turnover is inevitable. Developers leave a project and others join it. And this effect may be more harmful in open source communities than in companies. Depending on the community, it is hard to find new people willing to participate. And even more, there is a knowledge gap left by those that gave up developing. So the issue is double: people leave and those leave a knowledge gap that in some cases is hard to fill.
However, is it possible to analyze that regeneration of developers? How good is my community retaining developers? Is it possible to measure the number of newcomers joining the community? It is clear that having this type of information is basic to define policies to attract new members, retain current ones and check if the current situation is driving the community to good terms.
The demographics of open source communities allows us to understand how the community has evolved, and potentially how this community will evolve through the time. Demographics in open source communities can be seen as the typical analysis of pyramids of population in countries or cities. Typically on the top of the chart the oldest people are found, while the age decreases going to the bottom of the chart. Those are named as pyramids given their typical triangle shape. However during the last decades and in developed countries, this shape is moving to an inverted pyramid, although this is another discussion :).
Thanks to the study of the demographics of developers, it is possible to know a bit more about the community. We already introduced the demographics of the Linux Kernel, and this post is focus on the analysis of the OpenStack community as a case study. The following figure shows the demographics of the OpenStack community (daily updated in the OpenStack activity dashboard). The x-axis indicates the number of developers, while the y-axis shows the timeframe of activity.
Green bars show the number of developers that in each of the periods started contributing with at least one commit. And blue bars show the number of those developers that still contribute to the community. By definition, a developer is still contributing to the community if a commit has been detected during the last six months. If not, this developer is considered as a developer that left the community. There may raise the case when a developer after more than six months, returns and submit another change to the source code. In this specific context, this developer would appear as not leaving the community.
An example was provided and in some cases, and depending on the development policy of the project, commits ignoring merges represented around a 50% of the total activity that we can find.
CVSAnalY is one of the tools that is used as input in our dashboards. It is specialized in versioning systems, and parses the log provided by some of the most used in the open source world. It does this with the priceless help of Repository Handler, in charge of adding a transparency layer.
Its procedure is simple: CVSAnalY reads a log from SVN, CVS or Git and builds and feeds a relational database. For other distributed versioning systems, there are hooks to migrate from those, such as Mercurial or Bazaar to Git.
On February 3rd, I was delivering a lightning talk at FOSDEM, presenting MetricsGrimoire and vizGrimoire as free software tools to get some analytics from the software repositories of your preferred project. The talk was titled “Do you want to measure your project?”, as it was focused on explaining the capabilities of these tools for analyzing a project, and on how they can be easily used for that.
Some interesting results are the share of contributions by the two main companies behind the project (Apple and Google), and how it has evolved from a project clearly driven by Apple, before 2009, to the current situation, with Google leading the top contributors table, and both Apple and Google being almost equal in contribution share over the whole history of the project. During the last years, it is also noteworthy how the diversity of the project is increasing, with new players starting to show a significant activity.
Bitergia, the software development analytics company
Bitergia helps companies and organizations by understanding and improving the software development projects that matter to them. Software development is more than writing code: is about engagement and collaboration of the people involved in its design, development, deployment and maintenance. It's about the processes and activities that turn ideas, feature request, and requirements into code.
We provide tools and means to track all these aspects, and to evaluate how policies and decisions are shaping the development processes.