This article is part of the Microsoft 💘 Open Source blog post series:
- Microsoft’s journey to open source (link)
- Azure makes it easy to run open-source products (this)
- Microsoft makes it easier to build scalable platforms (this)
- Giving back to open source (this post)
In this blog post, we will have a look at the various ways through which Microsoft gives back to open-source.
In John’s blog post, he also shared that 30,000 Microsoft employees are contributing back to open source to help improve the technologies Microsoft is depending on.
As a maintainer, I’m very happy that Microsoft is doing that to help to maintain those projects and was lucky enough to have Microsoft people such as Julien Corioland, Sébastien Pertus and others contribute to Promitor instead of just asking for features.
The .NET Foundation is an independent, non-profit organization allowing it to be vendor-neutral that focuses on fostering the open-source community around .NET. Microsoft has initially started it in 2014 and is still actively involved as a sponsor and part of the board of directors.
The foundation is another way to help open-source projects take away the burden of administration, provides advice for legal topics, and more. It is the home for a lot of well-known open-source projects and is working through 25+ open applications.
Free and Open Source Software (FOSS)
Open source does not mean free software, nothing is free in life and it has to be sustainable.
That’s why Microsoft has created the Microsoft Free and Open Source Software (FOSS) fund that donates $10,000 every month to an open-source project that is not governed by Microsoft.
This allows those projects to use the funds to keep on doing what they do, cover their costs, or even take a bit of time off to enjoy life; because maintaining projects can be overwhelming.
What I love about this program is that it is the Microsoft employees themselves who can nominate projects they love! That means that every open-source project can be added and I’ve had people that were so kind to submit Promitor already.
You can find an overview of the projects funded by Microsoft’s FOSS program on GitHub.
.NET Foundation in practice
Before I share my view on it, this obviously comes with a disclaimer - I’m not actively involved and am just sharing based on what I’ve seen/experienced so I might be wrong and you can just ignore this.
.NET Foundation, .NET & open source
Open source is not always a walk in the park and there have been some hiccups in the past which I’ve found to be interesting.
Let’s start with Newtonsoft JSON. It was created by James Newton-King and is one of the most well-known open-source libraries in the .NET ecosystem which has more than 1 billion downloads and joined the .NET Foundation in 2018 (news).
In .NET 3.0, however, Microsoft introduced its own new System.Text.Json library as a replacement for Json.NET. It did not have feature parity with Json.NET, which is fine, but became the new standard for all Microsoft libraries which caused a lot of troubles when migrating.
While I do see why Microsoft wants to have its own JSON library, why did it not just support Json.NET? I know it’s not as simple as that because of licensing, branding, support, and why Microsoft did it. But it makes me wonder what role does the .NET Foundation play?
And then came IdentityServer, one of the best-known identity solutions in .NET that has been part of the .NET Foundation since 2014 and is maintained by Brock Allen & Dominick Baier. (news)
Microsoft did a great job at embracing the technology and even provided project templates to help people get started because it closes a (big) gap in the ecosystem.
However, late last year they announced that maintaining IdentityServer is not sustainable as it is today, and that they are relicensing the product. (news) The new dual license allows you to use it for free with open-source technologies, but not for commercial products.
Boy, oh boy did that cause a tsunami of disappointment and even hate in the community.
Well, you can’t blame them 🤷♂️ As a maintainer of open-source projects, which are nothing compared to IdentityServer, I fully get why they are doing it because it takes A LOT of free work but in the end, they have to eat as well.
I fully support their decision and we could have helped as a community by supporting them through donations or contributions. In the end, if you are running your whole company on an open-source product for free you have a serious supply chain issue. Support your dependencies, or they will eventually go away.
Now, where do .NET & .NET Foundation come in? I think they’ve been supportive until now, but there are a lot of requests for an official authentication solution story in .NET 6 or above.
I am very curious to see where this is going, is Microsoft building its own solution? Will Microsoft leave room for others to play in .NET, and recommend other alternatives that exist today? Will it help through the .NET Foundation given it’s still part of it? Or will it acquire Duende Software?
I don’t think that’s why they are making it a paid product and if they would even sell it, but after more than 10 years of hard work on free software, I’m really hoping that they keep on supporting IdentityServer in the best way possible.
Want to hear their side of the story? I highly recommend listening to .NET Rocks episode #1722.
From a maintainer’s point of view
Personally, I’m not sure what the focus area is of the .NET Foundation as I think it’s solely aimed at open-source projects that help you build .NET applications through libraries and tools.
For example, Promitor is an open-source product for scraping Azure Monitor metrics and bringing them to Prometheus, StatsD & Atlassian Statuspage. It is written in .NET, runs as a Docker container, and is optimized for Kubernetes.
Does that mean it fits the scope of the .NET Foundation or not? If so, is it worth donating it?
From an end-user perspective, it could be better since it’s then licensed to the .NET Foundation and gives more guarantees. But does it change a lot for me as a maintainer? I’m still not convinced yet.
What I’d love to see happen, though, is an open-source program for tools & products that make the Azure ecosystem a better place. As an example, Promitor & Kubernetes Event Grid Bridge are purely focused on Microsoft Azure and tries to make it a better place (at least I hope) and requires Azure funding to run tests, reproduce bugs, and more.
While the .NET Foundation could be a good fit for my tools, there are non-.NET tools that have the same needs and we should try to support those as well. There used to be a program to support the project but that is no longer around, but I’m sure this is just a matter of time before a new one comes back.
As an Azure customer & open source maintainer, it’s great to see how Microsoft is helping open-source and make it a better place.
It not only allows me to use open-source products on Azure, without having to worry about hosting it myself, but it also helps me by closing the gaps in the ecosystem so that I can easily build scalable platforms.
Microsoft loves open-source, and it’s shown me the way to love it as well.
Thanks for reading,