Here we go, again.
On October 19th, the PM For “Hot Reload” (which honestly sounds like an urban dictionary term of art), showed off Hot Reload to internal stakeholders. On October 20th, Hot Reload was removed from the .NET 6 RC2 CLI in favor of a Visual Studio only release. On October 22nd, the news broke in the Register and the Verge, with the Verge stating the reasoning was a “business-led decision” by the CVP of Developer Division (DevDiv), Julia Luison. On October 23rd, Microsoft put it back in saying “we inadvertently ended up deleting the source code instead of just not invoking that code path”, and it was also reported by The Verge.
There is ample evidence to draw conclusions that this was not inadvertent, and that Scott Hunter’s blog post is to maintain political cover for the CVP that made the decision:
- If this were ‘inadvertent’, then there would have been no reason to close and lock the PR to prevent discussion.
- If this were ‘inadvertent’, then the myriad of developers that make up .NET’s online twitter presence wouldn’t have been radio silent on the subject for days.
- If this were ‘inadvertent’, then someone from the .NET team would have spoken up to explain what the reasoning was behind removing a working feature from a Release Candidate.
I could go on. But unfortunately if I point to the back-channel ways the .NET Team was trying to show that it wasn’t their call, I would get them in trouble with their corporate overlords.
The .NET Community was largely pissed off (a technical term) at the removal of this working feature from the .NET CLI and making it ‘Visual Studio only’, and I can’t say I blame them.
The problem here is the same problem the .NET Community has with the .NET foundation’s governance: Microsoft.
One the one hand, Microsoft would like to be known as a steward of open source; going so far as to showing “We ♥ Open Source”, but on the other, each time it comes down to making a hard decision that would benefit the open source community but potentially harm Microsoft’s business interests, it chooses its business interests, every time.
This is a pattern of corporate interests at Microsoft wanting to lock down development ecosystems to enhance their product’s bottom line while hurting adoption that ends up hurting Azure’s bottom line. It’s like the 90s called and said “Hey, get in, we’re going shopping for Fanny packs, Lowrise Jeans, and Vendor lock-in”.
And that’s the rub. Visual Studio is great — I personally love it, but I also love not having to boot into Windows to write .NET. .NET Core saved me from leaving .NET. Seriously. I like a console-first workflow, and the developer affordances in a *nix based environment outweigh any improvements Microsoft has made, and I go so far as to say that a console-first workflow respects how I work.
So that’s how Microsoft shat the bed last week in .NET. Let’s see what else happened.
🗣 The .NET Foundation invites you to come talk to them with their “Come Talk to Us – A .NET Foundation Face-to-Face. This is happening October 27th, 12pm EDT, and a second session on October 27th, 8pm EDT.
📹 The .NET Docs Show talks “EF Core Power Tools and Nuget Packages, oh my!” with Erik Jensen. I agree, both are scary.
🖇 There’s a new Data Structure in .NET 6 which is ironically to our conversation about Hot Reload, a “Priority Queue” where elements of the lowest priority get Dequeued first. Like free CLI tools? (I will not apologize. It is not too soon.)
🚫🚚Sorry folks, UWP Is not being moved to .NET 5/6, which all of this has been confusing to follow from the start, but isn’t the purpose of Project Reunion to… you know, reunite everyone? Also, this is about the 10th time Windows developers have had the football pulled away, and they’re starting to notice.
🚪Developing for Windows with the Windows App SDK this would be the other team in Microsoft that’s locked in to the 90s.
λ What’s new in F# 6… It now supports Task from C#. That’s the only feature I can recognize, all the rest look positively greek to me.
😶 I can’t vouch for its efficacy, but there is CoreWCF, that is a .NET Core port of WCF. WCF sounds like a nightmare, and I hope it isn’t your reality.
📑 Because hope springs eternal, I’ve been keeping tabs on Windows Terminal, and a new preview release (1.12) is out. Slowly but surely Windows Terminal is getting features available to Gnome users 10 years ago.
🥄🥄Microsoft Fends off 2.4Tbps DDoS Attack, Second Largest on Record. They did not fend off 2.4 Tablespoons, much to my dismay.
☕ Announcing the 1.0 release of Language Support for Java™ on Visual Studio Code. Does Visual Studio even support Java? Asking for a friend.
◀ Microsoft’s YARP (That’s Yet Another Reverse Proxy) 1.0.0-RC.1 has been released. The .1 signifies that if there’s one constant at Microsoft, it’s that every team has their own versioning structure.
🎁 Reed Copsey has a must read on the .NET foundation’s bylaws. It’s not as boring as it sounds, I promise. Bylaws are boring, but Reed makes it approachable and spells out the consequences of the current governance structure of the .NET Foundation. As I said, a must read.
🕸 VS Code + Live Share: Putting the “We” back in “Web” Live Share works across Visual Studio and VS Code and on any computer. Even my wife knows that’s a big deal*.
❓ Dusted Codes asks Can we trust Microsoft with Open Source which is a rather in-depth piece on the whole Hot Reload saga.
🤗 How we shipped PostgresSQL 14 on Azure within One day of its Release. The “Embrace” part still holds true.
⏩ There’s a new RandomAccess API in .NET 6 so you can read and write files without using a FileStream. Apparently it’s faster and better? I’m less familiar with this and would love to hear from you on it.
🌲I Used Cypress as an Xbox Web Scraper and I regret Nothing Yes. Using Cypress to buy a new Xbox? This is good. This is very good.
So that’s what happened Last Week in .NET. If you’re still reading this and haven’t started drinking heavily, I salute you.
*Joke courtesy of my wife.