PowerShell Open Source Community Dashboard

Since going cross-platform and open source on GitHub, I’ve wanted to know how we are doing as a community and who the top contributors we should recognize are.
The available GitHub graphs are not sufficient as they focus on commits, and there are many other ways for the community to contribute to PowerShell.
Certainly receiving Pull Requests (PRs) has a direct impact on the code base, but opening issues, commenting on issues, and commenting on PRs (aka code reviews) are also immensely appreciated and valuable to help improve PowerShell.In addition, PowerShell is not a single repository, but several repositories that help to make PowerShell successful:

  • PowerShell-RFC where we do design work for new proposed features
  • PowerShell-Docs which contains all the PowerShell help and documentation
  • platyPS: tooling for our help documentation that enables authoring and editing of docs in Markdown instead of XML
  • Microsoft.PowerShell.Archive: a built-in module for creating and expanding ZIP archives (in the future we plan to move other built-in modules to their own repositories like this)
  • ODataUtils: a module to generate PowerShell cmdlets from an OData REST endpoint
  • JEA where we store samples and resources associated with Just Enough Administration (JEA)
  • PSL-OMI-Provider: an optional component for Linux/Mac to enable PowerShell remoting over WS-Man protocol (both client and server)
  • PSReadline: the default interactive command line experience for PowerShell

Although most of the contributions happen in the PowerShell/PowerShell repo, I want to ensure we recognize contributions in these other repositories (and new ones in the future).

To get a more holistic view, I decided to create a dashboard in PowerBI.
A follow-up blog post will go into some of the technical details and challenges to having an Azure Function execute a PowerShell script calling GitHub REST APIs and storing the result in an Azure StorageTable queried by PowerBI.
The PowerShell scripts I used for this dashboard will be published to the PowerShell Gallery.

You can access the dashboard at http://aka.ms/PSGitHubBI.

The first page, Top Community Contributors, recognizes individuals outside of Microsoft for their contributions for each of the 4 types of contributions described previously.
Two things to note:

  • the rankings are based on a moving 30 day window
  • ties for the rank are due to individuals having exactly the same count for a contribution type

The second page, Top Microsoft Contributors, is the same as the first table but for Microsoft employees who are members of the PowerShell organization on GitHub.

The third page, Contributions over Time, has two graphs:

  • The first graph compares community contributions and Microsoft contributions.
    It really shows that going open source was the right decision as the community has provided lots of contributions and helped to move PowerShell forward more than what the PowerShell Team could have done alone!
  • The second graph shows a comparison over time of the different types of contributions, but is not separated out between the community and Microsoft.

The last page, Downloads, shows a trend of the cumulative downloads of our official releases with a view comparing the different operating systems and the different release versions.
Eventually, I would like to replace the download numbers with usage numbers based on Census Telemetry, which is a much more accurate representation of growth of PowerShell adoption.

I intend to iterate and improve upon this dashboard to make it useful not only to the PowerShell Team, but also to the PowerShell community.
I plan to provide similar dashboards for some of our other projects such as DSC resources, ScriptAnalyzer, Editor Services, OpenSSH on Windows, and others.

Please leave any suggestions or feedback as comments to this blog post. If you find this dashboard useful, or you believe we can improve upon it in some way, please let us know!

Steve Lee
Principal Software Engineer Manager
PowerShell Core