2026-08-29
Embrace,
Extend,
Deprecate
Ten panels about one afternoon spent discovering that our test simulator had been quietly orphaned by a runtime it never chose. Every error message below is real.
Upgrade to 26.04 completed successfully.
1,847 packages updated. 312 packages removed.
One of them was holding up everything you do.
It does not say which one. It never says which one.
Yesterday this worked. Nothing in the repository changed. The machine changed, underneath it, on purpose, with a progress bar.
Searching for: dotnet-runtime-8.0
ubuntu 26.04 “resolute” — not available
mono-complete — no candidate
3 results. 1 of them is the machine you are sitting at.
The distribution is not being cruel. It refuses to ship a runtime that dies partway through its own support window. That is the sane party in this story.
You have .NET 10. The app wants .NET 8.
Close enough?
INITIALIZATION COMPLETE — LOGINS ENABLED
Region is ready. 29 prims loaded. Scripts compiled.
BinaryFormatter serialization and deserialization have been removed.
Failed to get asset 54f6959b… (and the next one, and the next one)
This is the worst outcome available. It starts. It says ready. Then it quietly stops caching assets and mis-serialises keyframed motion — the exact two things this project exists to capture and decode. A crash would have been a kindness.
This setting is still accepted.
It has done nothing since .NET 9. It will go on doing nothing, silently, for as long as you care to set it. The build will not warn you. Neither will we.
Acquired 2016. Handed to WineHQ 2024.
The independent implementation — the entire reason C# was ever a defensible choice for a cross-platform server — is now a compatibility layer for running Windows software you did not want to run.
Support ends November 2026.
The only runtime this codebase can run correctly on. Three months out.
Both doors, closed, for a simulator that has been under active development for twenty years. The software outlived the platform. Twice.
.exe built for Windows 95
1997
Runs
.jar, untouched since
2004
Runs
net8.0, built in March
2026
Nov 2026
The thirty-year-old binary is fine. The five-month-old one is on a clock.
Win32 backwards compatibility is a genuine engineering marvel — shims, special cases, whole subsystems kept alive for one misbehaving application. It is also the layer whose roadmap they stopped writing decades ago.
Java never made compatibility a personality trait. It just quietly kept loading your bytecode, release after release, for twenty years, while nobody wrote a blog post about it.
And King’s Quest? Sixteen-bit support was dropped from 64-bit Windows entirely — the DOS classic needs an emulator written by volunteers. The parts they froze are eternal. The parts they still own are rented.
C# is a genuinely good language.
Real value types. Proper generics. async/await before
almost anyone. As a language it beats most of what we write in, and saying so
costs us nothing.
What failed was never the language. It was the contract around it: one vendor
owning the runtime, the cadence and the removals, with no second implementation
standing anywhere to say no. Portability arrived as a product decision, and
System.Drawing.Common is how it left again — OpenSim ships a
private fork of a core framework assembly to this day.
There is no one to shake a fist at.
The founder left the chief executive's chair in 2000 and the board in 2020.
Nobody twirled a moustache and removed BinaryFormatter. No
memo went out about stranding a twenty-year-old virtual world simulator.
A committee deprecated a type. A packager made a defensible call. A support window elapsed on schedule. Every individual decision was reasonable and the sum of them ate an afternoon.
You would probably enjoy the conversation, too. He is by most accounts good company. That is the trouble with wanting a villain: the org chart kept running long after anyone you could argue with had left it.
The treadmill runs by itself now. That is the worse version.
Thirty-one megabytes in ~/.dotnet. No sudo. Move on.
The launcher pins DOTNET_ROOT so nothing can helpfully roll us
forward onto a runtime that lies. It is written down, the suite is green, and
the next person to hit a dead simulator does not re-derive a word of it.
Satire, by the Vibestorm project. Not affiliated with, endorsed by, or in any way the work of Microsoft Corporation. Every error string, version number and package result reproduced here was observed on a real machine on 29 August 2026, which is the only thing about it we would defend in court.