Open Source .NET – 3 years later19 Dec 2017 - 1105 words
A little over 3 years ago Microsoft announced that they were open sourcing large parts of the .NET framework and as Scott Hanselman said in his Connect 2016 keynote, the community has been contributing in a significant way:
This post forms part of an on-going series, if you want to see how things have changed over time you can check out the previous ones:
- Open Source .NET – 2 years later
- Open Source .NET – 1 year later - Now with ASP.NET
- Open Source .NET – 1 year later
In addition, I’ve recently done a talk covering this subject, the slides are below:
Now that we are 3 years down the line, it’s interesting to go back and see what the aims were when it all started. If you want to know more about this, I recommend watching the 2 Channel 9 videos below, made by the Microsoft Engineers involved in the process:
It hasn’t always been plain sailing, it’s fair to say that there have been a few bumps along the way (I guess that’s what happens if you get to see “how the sausage gets made”), but I think that we’ve ended up in a good place.
During the past 3 years there have been a few notable events that I think are worth mentioning:
- Samsung developers have made significant contributions to the CoreCLR source code, to support their Tizen OS
- Microsoft really are developing ‘out in the open’, you can see this by how often GitHub issues are referenced in the source code
- We saw the new Span<T> apis move their way through the various repos, CoreFXLabs -> CoreCLR -> Roslyn -> CoreFX before turning into a complete feature!
- There’s been deeper integration between .NET Core and Mono
- Significant Performance Improvements have been made in .NET Core
- .NET Core and .NET Desktop have now sufficiently diverged (even though they still share code, such as JIT, GC)
- Microsoft have made a concerted effort to ensure that all their Open Source code can be built just using other Open Source code
- The Local GC effort has been started, aiming to ‘decouple the GC from the rest of the runtime’
- .NET will be finally getting Tiered Compilation
Repository activity over time
But onto the data, first we are going to look at an overview of the level of activity in each repo, by looking at the total number of ‘Issues’ (created) or ‘Pull Requests’ (closed) per month. (yay sparklines FTW!!). If you are interested in how I got the data, see the previous post because the process is the same.
Note: Numbers in black are from the most recent month, with the red dot showing the lowest and the green dot the highest previous value. You can toggle between Issues and Pull Requests by clicking on the buttons, hover over individual sparklines to get a tooltip showing the per/month values and click on the project name to take you to the GitHub page for that repository.
This data gives a good indication of how healthy different repos are, are they growing over time, or staying the same. You can also see the different levels of activity each repo has and how they compare to other ones.
Whilst it’s clear that Visual Studio Code is way ahead of all the other repos in terms of ‘Issues’, it’s interesting to see that the .NET-only ones have the most ‘Pull-Requests’, notably CoreFX (Base Class Libraries), Roslyn (Compiler) and CoreCLR (Runtime).
Overall Participation - Community v. Microsoft
Next will will look at the total participation from the last 3 years, i.e. November 2014 to November 2017. All Pull Requests are Issues are treated equally, so a large PR counts the same as one that fixes a spelling mistake. Whilst this isn’t ideal it’s the simplest way to get an idea of the Microsoft/Community split.
Note: You can hover over the bars to get the actual numbers, rather than percentages.
Participation over time - Community v. Microsoft
Finally we can see the ‘per-month’ data from the last 3 years, i.e. November 2014 to November 2017.
Note: You can inspect different repos by selecting them from the pull-down list, but be aware that the y-axis on the graphs are re-scaled, so the maximum value will change each time.
It’s clear that the community continues to be invested in the .NET-related, Open Source repositories, contributing significantly and for a sustained period of time. I think this is good for all .NET developers, whether you contribute to OSS or not, having .NET be a thriving, Open Source product has many benefits!