In a recent post we’ve seen how to set up Inner Source in your company is a cultural change question. Companies need to increase inner transparency, confidence and collaboration for breaking the functional silos in order to create a proper environment to develop software between motivated peers and enable code/knowledge reuse.
Open Source development communities use several tools for enabling collaboration and transparency. Companies can take advantage of them for their inner software development projects. Let’s see some examples from our experience tracking collaborative software development and helping companies in their Inner Source projects analysis:
Linux Foundation projects define source code as
“the version of software as it is originally written (i.e., typed into a computer) by a human in plain text…Source code is primarily used as input to the process that produces an executable program (i.e., it is compiled or interpreted). It is also used as a method of communicating algorithms between people”.
Source Code give us a lot of information about the code authorship (even organizations diversity), quantity of code, evolution over time of the code (code aging), geographical diversity, etc. We can track several metrics related with source code and KPI like Pony Factor or Bitergia’s Zapata Factor and even profile code contributors (core vs. casual code contributors, contributors demography).
Git has become the standard tool for collaborative development (and the core of well known services like Github, Gitlab or Bitbucket). GrimoireLab supports it from the very first day. Other tools like Baazar and Mercurial can also be tracked.
Tickets and issue tracking systems are the most common management tools for a software project. By tracking tools like Github Issues, JIRA or Bugzilla with GrimoireLab, we can get information about backlog, evolution, project management speed, etc.
Code review is systematic examination of computer source code (Wikipedia) usually done to review code contributions. It can be made with some tools such as Gerrit, GitHub Pull Requests, Review Board, etc.
Code Review Analytics can provide insights about review process bottle necks (review iterations, time to merge, etc.) and can give inputs about contributors code quality perception, activity and performance of the project.
Beyond these simple metrics, analyzing code review process is key to identify valuable external contributors and fair play among people from different organizations / areas.
In software engineering, continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day, in combination with automated unit tests or or build servers, which automatically run the unit tests periodically or even after every commit and report the results to the developers.
Jenkins is one of the most common tools for CI and supported by GrimoireLab too. CI is becoming an standard practice in distributed contributions, which is crucial on Inner Source projects.
Mail list, forums, questions & answers forums
Mail lists and forums are one of the most important tools for collaborative software development. Newbies questions, decisions about the code, features, bugs and issues are discussed in these lists and forums.
Threads in the mailing lists can show what part of the project has more activity or where the project is stacking. But they can also be combined with the rest of the dev tools (JIRA, git, Jenkins, etc.), and by tracking them combined we can get metrics related to the whole collaborative development process like time from idea to deployment, iterations, people involved, etc.
Some examples of the tools GrimoireLab tracks in this area are Mailman, GMane, mbox files, Discourse, StackOverflow, Askbot, etc.
A wiki is a website that provides collaborative modification of its content and structure directly from the web browser. In a typical wiki, text is written using a simplified markup language and often edited with the help of a rich-text editor. Wikis are a very common tool for documentation, done collaboratively, from basic software use guides to architecture descriptions.
Wiki edition activity analysis show how alive documentation is, who is involved. Thanks to GrimoireLab, we are already doing MediaWiki and Confluence activity analytics for some customers.
Chat or real time communication
Real-time communication tools, like IRC or Slack, are fundamental in collaborative software development, even more with people geograplically distributed. Chat activity is one of the items you can observe to measure diversity and demography of the project, beyond code contributors.
There are many other tools that can be used for collaborative development. For example, we track projects Meetup activity, Twitter impact, etc. Open Source and Inner Source communities share a lot, but their scopes are different, so the tools usage may be different. Which ones are you using in your company’s projects?