This article sums up a lot of my thinking pretty well, and at the same time, I didn't find any of it particularly earth-shattering, and that it was all a rather obvious place they've been heading[0] but I realized after I reflected on it for a moment that ... this industry sometimes makes you think in terms of minutes, not years, and ... holy crap, are we really here?

Shortly after Microsoft started realizing the threat that i-devices posed to the entirety of their business (anyone who had used an iPhone/iPod Touch saw what was coming), they reacted by digging in/"patriotism", with policy changes like: "We'll buy anyone who wants one a Windows Phone 8 device..." because... they were already buying almost everyone an iPhone that asked for one and they needed a way to say "we're going to make it a lot harder for you to show our customers that you prefer an iPhone". My best friend and I had jobs developing/architecting large MS-related things so we regularly assessed the marketability of our skillsets. We both concluded: "Microsoft has one way out of this: give away[1] Windows, probably need to start making Office/Linux work or provide easy integration points for the OS community to integrate with AD/Exchange[2]". I, separately concluded, that I needed to start using a Linux desktop, full time, because no part of me believed they'd do it. It's, culturally, too foreign for them.

And then, they started executing on exactly that plan, consistently. When they'd make the inevitable "Microsoft-centric" decision and get blowback, they'd unexpectedly listen, and either thoroughly explain, or resolve.

Windows 10 isn't free as anyone who's built their own desktop knows. But it's effectively become the last version of Windows you buy, upgraded for life, and they made that retroactive to Windows 7 (do they still do this? not sure). Stuff mostly just works with regard to Linux interop -- NFS is a problem in some contexts, but most of the things that seemed like they existed "just to make it painful to interoperate between the two platforms" are gone, and a lot of that is because Microsoft put money behind intentionally making "The Enemy OS" work, with care spent to not just "make it work" but fix the parts that aren't quite good enough" continuously.

The best part of it, though, is they're operating as the "opposite" of their past behavior with open standards/Linux in general. I wouldn't have been surprised to see an OK implementation of Linux interop on Windows (Windows Services for Unix was the start of that idea), with no attention paid to getting MS apps running at all on the Linux side. I'd have been quite surprised if they wrote anything* for Linux, but they made the important things work well on Linux.

I'm an enthusiastic full-time user of OpenSUSE Tumbleweed, with all of one disused Windows OS running in a virtual machine, who writes software almost exclusively in C# (console, web and even an occasional GUI, at home, anyway).

It's not just that they "open sourced a bunch of really important things", but it's how they approached opening up things like .NET Core. They completely failed with the full framework's "Shared Source" crap. They recognized the complete loss of trust that all of us (I am and have been a happy-minus-a-few-things Microsoft customer all of my career).

How many companies much smaller than Microsoft release their "frameworks/libraries/tools/software" as Open Source products but simply refuse to accept a single Pull Request. Basically, "Developing it transparently" -- a good thing -- but failing to "develop in the open". How many tiny little edge cases around the variety of framework Collections required me, in a high-performance scenario, to write an ugly hack because my performance edge-case was not worth fixing. They didn't opt to "develop in the open" and accept only internal PRs. They didn't take it to the next step and "benevolently, (but probably reluctantly) accept the occasional PR). They encouraged developers to submit pull requests using swag/recognition and, most importantly, willingness to accept PRs that aren't all that important to Microsoft (or maybe anyone but that one developer if it doesn't negatively impact anything). They even hosted it on GitHub, despite owning/pushing a competitor at the time, because "that's where everyone really is". A look at some of the core logic around collections (and enum for Pete's sake), turns out that all of those previous edge cases are not only solved, they're solved really, really well[3].

God, please give me a time machine so I can see the reaction when I explain all of this to 12-years-ago me. I "would will have been[4]" more likely to think that this future version of me appeared out of some alternative timeline that I'd never actually see.

[0] Not a dig at the author/topic, I just felt that he was explaining something that "most people who care at all about this topic already knows".

[1] Ideally "open source it" but I knew that was extremely unlikely simply because of legal reasons that are far more complicated than I care to understand.

[2] This was a long time ago; I'd say "Office for Linux" is a necessity, and is acceptable (and I prefer to use Outlook web, no matter the OS; it doesn't endlessly hang), today with the decision to write a Teams for Linux (albeit, with fewer features) client.

[3] I was downright disappointed that a really nice generic Enum library that I wrote is completely pointless in .NET Core. Every single thing that was 10-100 times faster in that library is now slower than just using the built-in stuff. And .NET's implementation uses less memory.

[4] See Douglas Adams commentary on the difficulties of time travel and grammar.