Analysis .NET Foundation executive director Claire Novotny resigned last week, but board member Shawn Wildermuth said that this did not solve “issues with the community” on which the foundation will now focus.
The phrase “issues with the community” in Wildermuth’s post should not be taken to mean that the community has misbehaved. It would be more accurate to call it the community’s issues with the .NET Foundation, or perhaps with Microsoft, since the special role of Microsoft is one of those issues.
Both longstanding issues and a few more recent ones have triggered the current crisis. In summary:
- Novotny made a pull request and merged it to a project to which she had not contributed for years.
- .NET Foundation projects were forcibly moved from GitHub to the .NET Foundation’s GitHub Enterprise without discussion with maintainers and sometimes in what appears to be an underhanded manner, such as for the WiX Toolset – though maintainer Rob Mensching has managed to move it back.
- When board member Rodney Littles II resigned, the .NET Foundation implied in a post that this was to do with his “personal life” when in fact it was about frustrations with the .NET Foundation’s role and lack of communication with member projects.
- Projects have complained that the foundation delivers little of value to them and some have left or expressed interest in leaving. A co-maintainer of the Marten project said last week: “After… two years, we don’t see any positive impact, any help from being a member.”
- The top issue faced by many .NET Foundation projects is their sustainability, but the foundation has concentrated on things like the semi-abandoned Project Maturity, which seems designed to reassure enterprise customers.
- The .NET Foundation has done too little to promote .NET to a wider community than Microsoft’s own platform.
- The .NET Foundation is not fully independent but controlled by Microsoft, which has special “Founder member” status in the organisation’s bylaws.
- The .NET Foundation is poor at communication with member projects or the wider community and major changes like the proposed removal of the contribution model for projects, later reverted, happen with little explanation. The contribution model allows projects to join the Foundation without assigning their copyright.
Hadi Hariri, VP of Developer Advocacy at JetBrains, noted on Twitter last week: “JetBrains was one of the first to join the foundation when it was announced. However, the broken promises, the approach to how it treats OSS, and the overall lack of value to both JetBrains and the community is the reason we no longer are sponsors.”
JetBrains provides the Rider cross-platform .NET IDE and is a natural fit for sponsoring the Foundation.
In all this discussion, it is easy to lose sight of the fact that Microsoft made a huge change when it took .NET open source and launched the foundation in 2014. Most of .NET is licensed under the MIT or Apache 2 licences and available on GitHub, and that single fact counts for a lot.
The foundation, although it describes itself as independent, is only partially so. The bylaws grant Microsoft, as Founding Member, a veto on “any vote to materially change the Foundation’s Membership Policy, Director Election Policy, Project Governance Policy, or any Intellectual Property-related agreements or policies.”
Further, Microsoft controls the direction of .NET and its core libraries. Corporately, it may simply be unwilling to risk losing control of its core developer platform.
What was Project Maturity (and perhaps the Foundation) really about? A 2019 tweet by Novotny is a clue. “It’s about enabling Microsoft to recommend and take dependencies on libraries not created by them instead of creating new ones that squash projects,” she said.
That possibly unguarded comment is a Microsoft-centric view of what third-party, open-source .NET projects are for and the foundation’s recent behaviour is in line with that.
What happens now? Newly elected board member Rob Prouse, who leads the NUnit team, said: “We will be doing our best to address all the concerns that have been raised recently,” and referenced a new “maintainers committee.”
Prouse also said that “for projects that were moved into GitHub Enterprise and would like to move back, we are working on a plan to do that.”
Further announcements are expected this week.
The relationship between large corporations and open source is often strained. Oracle required a commercial licence for its official Java Development Kit in September 2017 and then made it free again last month. Google donated Kubernetes to the Cloud Native Foundation but chose a controversial path and the formation of a new organisation for its related Istio project. Elastic changed its licensing to restrict commercial usage of its open-source database manager.
It is in Microsoft’s interests to have a healthy open-source community around .NET. The foundation, which once seemed part of the strategy for achieving that, now seems to stand in its way unless the company can achieve meaningful reform.
We have asked both Microsoft and the .NET Foundation for comment on these matters but have so far received no reply. ®