In this edition: the .NET Foundation has a nerdy political drama on its hands. Grab your popcorn!
Plus: SQL temporal tables, 10 commandments of REST, and an attempt at the world's smallest C# program.
The .NET Foundation Drama
For the past few weeks, an interesting drama has been happening concerning the .NET Foundation and how much power it has over .NET projects.
This drama has all the makings of a terribly nerdy political soap opera: a central power being perceived to abuse its authority; stated expectations then not being met by parties that agreed to them; infighting amongst the different groups that was only recently brought to light. Only thing it needs now is a satisfying ending, but that's probably not going to happen anytime soon.
In creating this section, I am attempting to walk the line between siding with the Foundation, and siding with the maintainers who are annoyed with the Foundation's actions (which we will dig into in a bit). In doing so, I am using several sources. Sources will be listed at the end of this section, and I encourage all my readers to check them out.
The .NET Foundation is a group of projects and project maintainers that represent .NET to the larger programming world. The purpose of this group is ostensibly to democratize participation in the .NET community; projects accepted into the Foundation are from all kinds of companies, not just Microsoft. This is a good idea, and something that .NET desperately needs; an organization separate from Microsoft that promotes .NET usage in open-source communities.
A bit of background: in 2019, the Foundation introduced the concept of a project maturity model, in which the Foundation set terms for a project to be included as part of it. They did this with no advance notification to their constituent projects and their maintainers. On the one hand, this makes sense from their perspective; if you're running an organization that's supposed to represent .NET to the wider world, you're gonna want the ability to say which projects meet what standards. On the other hand, because the maintainers were not given any warning, they felt cheated, and that the Foundation was now making themselves the arbiter of project quality instead of letting the community do it.
In August, the Foundation sent out an email that required Foundation-member projects to give administrator rights to the GitHub account owned by the Foundation. Ostensibly this was to enforce Code-of-Conduct issues, but many maintainers (including Aaron Stannard and Rob Mensching, both of whom are sourced below) had issues with this: Rob was not okay with giving administrative control to people he doesn't know, and Aaron stated that he thought this was a "nuclear" option, only to be used in specific, narrow circumstances.
And then the nuclear option got used, though not how the maintainers expected.
The .NET Foundation moved all projects that had given administrator access to their account into the Foundation's GitHub Enterprise server, without asking permission from the project maintainers. What exactly this means for these projects going forward isn't clear to me, but that's not the point; the point is that this happened without many maintainers' knowledge or permission.
The root of the issue appears to be a simple question: who owns these projects? The maintainers think they do; the Foundation appears to think they do.
To compound matters, a few weeks ago the Executive Director of the Foundation's board (Claire Novotny) merged a PR into a project she had not contributed to for years, and did not consult the current maintainers of the project. While this by itself was probably a fixable mistake, to a lot of the maintainers it was just another example of overstepping by the Foundation. She issued an apology for this action, but it was strangely worded and did not satisfy the maintainers, and she has since stepped down as Executive Director.
But why did she step down? Because the apology included this ominous bit:
"Project maintainers sign an agreement that either assigns or contributes their project to the .NET Foundation. That’s the point at which project ownership changes. We’ll post another document on that this week as well."
By signing up a project to the Foundation, you give the project to them? Many maintainers were not okay with handing over the rights to their projects, and understandably so. They called for big changes at the Foundation.
So that's where we are now. Maintainers called for heads to roll, and they got them. Trust has been broken, and we don't know if it can be repaired. The .NET Foundation's entire purpose is now called into question.
Here's where I can stop trying to paint the picture for both sides: I am completely on the maintainers' side here.
My understanding of the .NET Foundation's purpose was to promote .NET to the wider world, and that maintainers of their projects would get to decide the fate of them without needing to kowtow to the Foundation's needs. Forcing admin rights on projects and then moving them to a separate GitHub repository seems to me like a gross misuse of power, compounded by poor communication from the Foundation. I'm not a fan of the slippery slope argument in general, but I can totally understand maintainers thinking "if they're willing to do this without our input, what else are they willing to do?"
The Foundation needs to make clear who owns the projects that fall under its scope: the maintainers, or the Foundation. They need to do this quickly, and unambiguously, or they risk losing whatever influence the Foundation has over the .NET world.
My sources for this section include the following blog posts and articles:
This is one of the more "hands-off" summaries of this entire problem.
Rob Mensching is an open-source project maintainer, and this blog post was one of the ones that fired up this kerfuffle.
Shawn Wildermuth is a board member of the .NET Foundation.
Aaron Stannard is another open-source maintainer, and this post does a good job of summing up the problems from that side.
Rodney Littles II was a board member of the .NET foundation who resigned after feeling that he didn't fit in to the diversity the Board was looking for. He asked for a silent exit, but the Foundation announced his departure by name. His blog post details why that was unacceptable, and goes into further detail about why he felt he needed to resign in the first place.
This article is for paying subscribers only
Sign up now and upgrade your account to read the article and get access to the full library of articles for paying subscribers only.