{"id":36842,"date":"2016-06-10T05:00:32","date_gmt":"2016-06-10T12:00:32","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/webdev\/?p=7105"},"modified":"2016-06-10T05:00:32","modified_gmt":"2016-06-10T12:00:32","slug":"a-peek-into-net-open-source-contributions","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/a-peek-into-net-open-source-contributions\/","title":{"rendered":"A Peek into .NET Open Source Contributions"},"content":{"rendered":"<p>During the dotNetConf virtual conference, <a href=\"https:\/\/channel9.msdn.com\/Events\/dotnetConf\/2016\/NET-Conf-Day-3-Keynote-Scott-Hanselman\" target=\"_blank\" rel=\"noopener\">Scott Hanselman shared a map and some charts<\/a> that were constructed based on participation in Microsoft owned GitHub repositories.\u00a0 In the comments and social media since, we have heard your questions and we would like to provide some additional information about the data and some additional images.<\/p>\n<h2>Method<\/h2>\n<p>We wanted to answer the question: &#8220;Is Open Source .NET receiving contributions from the community?&#8221;\u00a0 Fortunately, all of the .NET source we wanted to measure was located in GitHub and accessible with the amazing <a href=\"http:\/\/octokit.github.io\/\" target=\"_blank\" rel=\"noopener\">Octokit.NET library<\/a>.\u00a0 Yes, this is the same tool that <a href=\"https:\/\/channel9.msdn.com\/Events\/dotnetConf\/2016\/A-Lap-Around-OctoKitNET\" target=\"_blank\" rel=\"noopener\">Jasmine Greenway showed us during dotNetConf<\/a>.<\/p>\n<p>I wrote a set of simple data extraction methods that would copy data from GitHub to an Azure SQL database.\u00a0 Specifically, we extracted information about the aspnet\/*, dotnet\/*, xamarin\/*, mono\/mono, and Microsoft\/vscode repositories.\u00a0 These extracts take a long time to run, having to analyze almost 200 repositories, so I turned the extraction process into a scheduled webjob and sent it off to Azure to run on a nightly basis.<\/p>\n<p>Once the data started accumulating, I spent some time learning <a href=\"http:\/\/powerbi.com\" target=\"_blank\" rel=\"noopener\">PowerBI<\/a>.\u00a0 I had not used the tool before, and after spending some time learning about it and writing a few reports, I was hooked.\u00a0 Its so easy to attach to my Azure SQL database and start returning data.<\/p>\n<h2>Data Accuracy<\/h2>\n<p>Here&#8217;s the difficult part: to collect and identify user profile information, I used the GitHub API to query the publicly accessible user profile information for name, company, and location data.\u00a0 MANY individuals do not provide 100% accurate information in these fields, and that&#8217;s their choice.\u00a0 For those records that did have appropriate location information, I used the <a href=\"https:\/\/www.nuget.org\/packages\/BingGeocodingHelper\/\" target=\"_blank\" rel=\"noopener\">Bing Geocoding Helper<\/a> with <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ff701711.aspx\" target=\"_blank\" rel=\"noopener\">Bing Maps services<\/a> to generate a latitude and longitude.\u00a0 Not everyone spells their locations in a way that Bing understands, but we took our best shot to get accurate data.<\/p>\n<h2>Results<\/h2>\n<p>I took those locations Bing returned and using the PowerBI map visualization plotted every .NET repository participant that doesn&#8217;t work for Microsoft.\u00a0 The results for June 9th 2016 are pretty amazing:<\/p>\n<div style=\"text-align: center\"><a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/europe.png\"><img decoding=\"async\" class=\"alignnone size-mediumlarge wp-image-7115\" src=\"\" alt=\"Europe GitHub .NET Activity \" width=\"418\" height=\"350\" \/><\/a><a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/northAmerica.png\"><img decoding=\"async\" class=\" size-mediumlarge wp-image-7125 alignleft\" src=\"\" alt=\"North America GitHub .NET Activity \" width=\"500\" height=\"342\" \/><\/a> <a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/southAmerica.png\"><img decoding=\"async\" class=\" size-mediumlarge wp-image-7135 alignleft\" src=\"\" alt=\"South America GitHub .NET Activity \" width=\"245\" height=\"350\" \/><\/a> <a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/africa.png\"><img decoding=\"async\" class=\" size-mediumlarge wp-image-7145 alignleft\" src=\"\" alt=\"Africa GitHub .NET Activity \" width=\"349\" height=\"350\" \/><\/a> <a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/asia.png\"><img decoding=\"async\" class=\" size-mediumlarge wp-image-7155 alignleft\" src=\"\" alt=\"Asia GitHub .NET Activity \" width=\"470\" height=\"350\" \/><\/a> <a href=\"http:\/\/devblogs.microsoft.com\/aspnet\/wp-content\/uploads\/sites\/16\/2016\/06\/australia.png\"><img decoding=\"async\" class=\" size-mediumlarge wp-image-7165 alignleft\" src=\"\" alt=\"Australia GitHub .NET Activity \" width=\"475\" height=\"350\" \/><\/a><\/div>\n<h2 style=\"clear: both\">Where to from here?<\/h2>\n<p>We think there&#8217;s a lot of data about the .NET Community that would be amazing to share. Over the next few weeks, we&#8217;re going to investigate how we can share this information and make it interactive for you. Keep an eye on this blog for more about the .NET open source ecosystem. We thank everyone who is involved whether by opening issues, commenting on issues, writing code, writing tests, and writing documentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>During the dotNetConf virtual conference, Scott Hanselman shared a map and some charts that were constructed based on participation in Microsoft owned GitHub repositories.\u00a0 In the comments and social media since, we have heard your questions and we would like to provide some additional information about the data and some additional images. Method We wanted [&hellip;]<\/p>\n","protected":false},"author":405,"featured_media":58792,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[],"class_list":["post-36842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aspnet"],"acf":[],"blog_post_summary":"<p>During the dotNetConf virtual conference, Scott Hanselman shared a map and some charts that were constructed based on participation in Microsoft owned GitHub repositories.\u00a0 In the comments and social media since, we have heard your questions and we would like to provide some additional information about the data and some additional images. Method We wanted [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/36842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/405"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=36842"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/36842\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=36842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=36842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=36842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}