Two years of simmering discord came to a head last week as the .NET OSS maintainers openly revolted against the .NET Foundation for years of non-communication, the Executive Director resigned, and newly elected board members are left to pick up the pieces.
It was a wild week.
First, there was some discord due to the .NET Foundation saying a board member left ‘for personal reasons’ when in reality they left due to the nature of the .NET Foundation itself.
Second, during this brouhaha and when finding out the Executive Director merged a PR without communicating, the .NET community learned that their projects were moved to the Foundation’s Github Enterprise account without their consent, that the DNFAdmin service account was basically a trojan horse (an actual Trojan Horse, not the virus variety), and that even if they signed the ‘contributor model’ contracts, they may not own their own projects.
As I said, it was a wild week.
So, the Executive Director apologized, not for the lack of communication, or moving the projects to the .NET Foundation’s Github Enterprise account, or misstating why Rodney Littles II left the board, or for the fact that the foundation has not been up front with what it means to have a project join the .NET Foundation, but for… forcing through a PR on a project that the foundation ostensibly owned.
Naturally members of the community asked for the Executive Director’s resignation, and they got it. And we sit, a few days later, watching more communication from a single member of the board than we had from entire previous Boards of Directors, particularly around most of the painpoints the community mentioned previously. One of the board members spoke up during the incident but said nothing of consequence, except to say, “Likewise, I think that the community and projects may have not understood what they were agreeing to when they were brought under the .NET Foundation umbrella.”. That’s what we in the biz like to call an understatement. I’m also not the only person to call this entire thing a brouhaha.
And since I’m writing this newsletter, I get to have my say.
I don’t think Claire Novotny should have resigned as the Executive Director of the .NET Foundation. I believe her to be a scapegoat for the structural issues the .NET Foundation has, as I’ve written about and spoken about previously. We’ve had entire Boards of Directors come and go from the .NET foundation with nary a peep from them in public about their work, no after-action review or postmortem, nothing outside of their initial interview to become a member of the Board of Directors.
I believe if anyone should resign, it should be the Boards of Directors. They ultimately are responsible for what the Executive Director and what the .NET Foundation does, and while half the board is fresher than a prince from Bel-air, the other half aren’t, and in some form of irony, it’s only the new people who are speaking out. I think they’re Good People, but they either have no idea what they’re doing or they haven’t seen and felt the issue simmering for the last few years, in which case they most assuredly shouldn’t be representing the community in the .NET Foundation.
It really all comes back to a single question: What does the .NET Foundation do? or, taken further: Why does the .NET Foundation exist?. We haven’t really gotten an answer to that question yet; especially the vague “commercially friendly” mission statement.
I’m willing to bet the Board of Directors haven’t been taking minutes for their daily meetings over the past week, even though the bylaws require them to, and so I’ve taken to asking that the bylaws be amended to require that the minutes are shared for review by the membership of the foundation.
If the .NET foundation is going to exist, then it’s going to have a vision and a purpose. If you care about .NET and the future of .NET, you should be right there, holding their feet to the fire. Otherwise we’re going to get what we’ve always got, a mono-culture that seeks to fulfill Microsoft’s whims about .NET; not what the actual OSS community wants or needs of .NET.
With that bit of news in the can, let’s see what else happened Last Week in .NET:
📚🔥Facebook went down, and of course since it wasn’t DNS it had to be BGP. Honestly I can’t explain BGP to you. I’d like to, but I can’t. Back in the day when I was building a product to discover and map legacy networks, a network engineer took me aside to explain BGP to me and the nightmares didn’t stop for weeks. I’ve since blocked out most of it except for “it’s a way for networks to tell other networks how to route to them”. It’s astonishing that anything works and that we aren’t all finding a desert island to inhabit, away from people and technology.
🧓 Maybe because of, but certainly related to in some form, I learned what a Basil Hayden Old Fashioned was from Adam Rackis, and it sounds delicious. Also if you’re making Old Fashioneds in your kitchen and you have a gas stove, you can use the burner to burn the inside and outside of the orange peel, which apparently helps with the flavors of the orange.
🦄 Either SQL is old or SQL is new again and I can’t figure out which because C# 9 loves some SQL keywords like
and. If a C# developer fell asleep between 2013 and 2022 they’re gonna be really confused as to the language they came back to.
📅 I did it before it was cool, but Jetbrains released their .NET Annotated Monthly for October 2021, and if you really want a list of links in a monthly format, you could read this list, or just wait and not read LWiDN for a month and read it all at once.
📞 The iPhone 13 can finally photograph dark-skinned folks. This is why diversity in tech matters. 14 years of phone-based cameras for non-white people to get good photos. That’s far too long.
📨 The Register covered Rodney Littles resignation from the .NET Board. They have also previously covered other tech issues like the various Stack Overflow community brouhahas. It’s still weird to me to see inside baseball topics show up in ‘traditional journalism’ that I have to assume that they just have people devoted to these topics.
🌟🦗The CVP for the Windows Developer Platform writes a blogpost on Developing for Windows 11, and because irony is dead, writes that “Windows 11 was built to unlock the full power of the PC”. Because Windows 1 through 10 weren’t?
❣ Did you know there was an alternative to Windows Explorer? I did not. Well version 2 of this alternative is out.
🧀 They moved your cheese in .NET 6 New project templates won’t include the ceremony you remember. They’ll just have the new Minimal API templates because some people just like to watch the world burn.
If you want the old style templates, select .NET 5 when looking for Templates to get the ‘old’ templates back.
🧺 Implicit Usings in .NET 6 With this change you can now use a namespace that isn’t referenced by your .cs file; and so if you want any hope of figuring out where a namespace is from you’d better use an IDE because a text editor can’t tell you. This is a brilliant idea if your goal is to reinforce the necessity of an IDE… like Visual Studio.
🤯 A look at the upcoming improvements to LINQ in .NET 6. There’s Chunking, Range Support, a new Zip Overload, and much, much more.
📝 The WinAppSDK team is actively looking for developer input. Better give it while the giving is good or you’ll just have to go back to Microsoft Connect and wait for them to ignore your issues for years until they finally just shut down the platform.
📹 Dotnetos Conference 2021 carried a talk by Jared Parsons on performance features in C#. I don’t know how to pronounce Dotnetos, sooo. sorry.
📹 Maoni Stephens does a deep dive from A .NET Object from allocation to collection. Any time Maoni speaks, you should watch it. It’s good stuff.
🔉 Mads Torgersen talks C# 10 and I’m starting to feel MCU’d out on the whole C# version number thing.
🥌 And because we need a little fun in our lives, Corey Quinn shares ancient SysAdmin wisdom. Remember when SysOps were a thing? Those were the good ol’ days.
I hesitate to say that’s it for what happened Last Week in .NET… But that’s the standard way to close this thing out, so there you go. See you next week.