Perhaps WSL2 Should be a Wake-up Call

I just spent a few evenings playing with WSL2 and all I've been able to think of during this whole time is one of Rob Pike's remarks from his still eerily relevant talk on how systems research has become irrelevant: "[Windows] is [to the pre-OS X Macintosh] an industrial response to an interesting but technically flawed piece of systems software".

And I can't help feeling that, in the desktop space, WSL2 is sort of like that: an industrial response to an interesting but technically flawed piece of desktop software. Well, several pieces of desktop software -- from Gnome to FVWM and from KDE to i3. It's a way to grab the highly desireable Linux userland without its unpallatable bits.

I don't want to go into too many details about why I think that software is flawed -- mostly because I don't trust myself to write a good-natured take on that. I would like to point out two symptoms of that fact though.

First, this is an age when Microsoft is increasingly disinterested in Windows, Apple is increasingly disinterested in macOS, professional users (and companies!) are increasingly frustrated with Windows 10, and it's easier than ever to get a laptop preloaded with Linux. And yet, despite almost 10 years of frantically rewriting, refactoring and deprecating almost every piece of desktop technology, the FOSS community can't convince substantially more people to switch to Linux for more than 2-3 years than it could back in 2010.

Second, that you see more and more laptops running things like i3 and dwm than back in 2010 -- and these tools haven't gotten any better in these ten years. The fact that a substantial part of the FOSS community seriously prefers using what is effectively the Windows 1.01 interface with a few more features and anti-aliasing instead of any of the results of nearly a decade of UX-focused work in KDE, Gnome, or Cinnamon is a pretty convincing hint that Linux' whopping marketshare in the desktop space isn't so whopping just because of evil Microsoft's monopoly.

The Linux community's reaction to WSL2 has been... surprising, I guess? I mean, I had to check the username twice when I read this post, which I will quote verbatim below in the interest of not sending you off to /r/linux because there are few places more distasteful than it besides 4chan's smuttier boards:

so awesome to see nautilus running under WSL :-) If they are supporting flatpaks it means the entire app library of kde and gnome apps would be available. Just imagine how larger the consumer of apps would be at that point?

Even better, we would be competing against all those shitty app developers - the ones that charge you money for things we've long been having for free. We'd kill them off most likely. Plus privacy respecting..

The WSL is a two way street and it's quite possible at some point that you can run GNOME and KDE inside WSL. (although I suspect that you might to switch to client side decorations for KDE, but I don't know enough about wayland to be sure)

I'm thrilled about this.

(The person thrilled about this is a Gnome developer).

Everyday experience on Linux and Windows makes it very hard for me to partake in this optimism.

To pick just one (of countless) examples: if memory serves me right, the last time Windows users had to put up with something akin to my favourite KDE bug was somewhere in 1999 or so. I vaguely recall Windows NT 4.0 having a similar bug. That bugfix is probably still in explorer.exe somewhere. In the meantime, KDE is on the... fourth, I think, rewrite of the equivalent piece of its stack. (It's my favourite KDE bug because I, too, spent a few weekends trying to make it work. I am no closer to a good solution, but after spending a few weekends on a desktop shell built with QML, I regret every single bad thing I've ever said about KDE 3.x, DCOP, and C++).

Twenty years' worth of bugfixes and exposure to hundreds of millions of users, from Nuuk to Brisbane and from Los Angeles to Osaka gets you software that can run circles around the umpteenth rewrite of something in Vala, even if you only consider the parts that are fun to work on.

But -- as shown countless times by programs like foobar2000 or Irfan View, to name just a couple of free ones -- it's often the parts that aren't fun to work on that make the difference between quality software and a couple of good ideas that no one managed to piece a finished program out of.

Besides the uncomfortable reminder that maybe jwz was right about the CADT software development model being so prevalent, WSL2 is interesting because of other unsettling fact. The FOSS community has been trying to emulate the best parts of Windows' GUI for about twenty years now. It's still pretty far away from catching up -- in fact, I think that now, in 2020, it's farther than it was in 2010. Microsoft, on the other hand, needed only a few years, and just one failed attempt (WSL 1) to come up with a convincing solution for integrating the best parts of Linux on their platform.

WSL1 was an interesting bit of technology, but there was a lot of impedance mismatch between the host and the system that it tried to implement, probably too much to feasibly compensate for. Microsoft eventually dumped it, but if your tech stack depends on it, you can bet it'll keep working for a few years -- in contrast to what we do over here in Linux land, where we often dump even perfectly good software once it gains enough functionality and bugfixes to be useful.

WSL2 is not an ellegant solution. It's very much a "throw containers at it" solution, but it works better than its predecessor for most things. And, although it's tough pill to swallow for many of us in the open source world, a Windows machine with WSL2 is very much a viable alternative to a Linux machine with any desktop environment.

There are many reasons why FOSS desktops are still playing catch-up (and not gaining any ground, either), and I suspect I'm too emotionally invested in this whole affair to list them without ranting. But I do hope that WSL 2's launch -- the jury is still out on whether or not it's a success -- will be a wake-up call for the FOSS community.