Remix.run Logo
layer8 20 hours ago

A "Windows subsystem" is a specific interface between user-mode applications and the Windows kernel. It's a technical notion that exists in Windows. So there are different Windows subsystems for different types of applications. The naming convention is "Windows subsystem for <application type>". It makes more sense when you read it as "Windows subsystem for [running] Linux [applications]".

WSL2 deviates from the native concept of what a Windows subsystem is; it is named that way because it is the successor of the original WSL.

dataflow 15 hours ago | parent | next [-]

I believe you're almost entirely wrong unfortunately. It is true that Windows has subsystems as a technical feature, yes. However, I don't think it's true that WSL (v1, let alone v2) was part of that architecture, despite the name. AFAIK that existing subsystem notion was a user-mode one, where each subsystem was built mostly in user-mode on top of the NT ("native") subsystem, with binaries in the PE format. WSL just completely ignored the whole thing, and even the existing notion of processes, and came up with a separate new thing called "picoprocesses" that it (barely?) wired through some critical kernel components via a custom driver that executed Linux binaries intact, implementing the Linux syscalls.

If you want a list of actual subsystems Windows recognizes, this should be pretty accurate:

https://learn.microsoft.com/en-us/windows/win32/debug/pe-for...

The real reason for calling it a subsystem was almost entirely for familiarity with the previous concept of running Linux programs on Windows, which were based on that subsystem feature (the POSIX subsystem and the Subsystem for UNIX-based Applications).

lxgr 8 hours ago | parent | next [-]

That doesn't seem like a contradiction to the idea that "Windows subsystem" is (at least after WSL 1 and especially 2) a description for a functionality (i.e. running binaries targeting a different OS's interfaces), not an implementation.

dataflow 5 hours ago | parent [-]

No, as I explained, that's not what the actual subsystem architecture did. The binaries very much targeted Windows and did not target any other OSes. They weren't (say) ELF files targeting Linux, they were PE files targeting Windows, and you had to compile them from source with special flags to target those subsystems on Windows. You could not run those binaries on other OSes. The compatibility was at the source level, not at the binary level.

rusk 9 hours ago | parent | prev [-]

It needs an apostrophe then it makes more sense “Windows’ Subsystem for Linux”

It is a Windows Subsystem, that caters to running Linux.

It’s a functional title not an architectural one.

Jenk 9 hours ago | parent [-]

Or a colon:

    Windows Subsystem for: Linux
jasomill 18 hours ago | parent | prev | next [-]

This, and it may have also been a legal thing. "Product for Third-Party OS" has been accepted as a descriptive use of a third-party trademark for decades, requiring only proper attribution rather than a license, whereas marketing a product that didn't even originally use the Linux kernel as a "Linux Subsystem" might have been considered riskier by Microsoft's lawyers in spite of the nonstandard use of the former.

al_borland 12 hours ago | parent [-]

It could be even more simple. Microsoft would want to their own product, Windows, to come before Linux in the name.

I read through the brand guidelines where I work, and we have a similar stipulation. Maybe there is some law mixed in there, but from a pure branding play, a company will never want to put someone else first.

GeekyBear 16 hours ago | parent | prev | next [-]

WSL was a traditional subsystem in the Windows NT tradition, it just never worked properly.

WSL2 runs real Linux in a virtual machine.

pjmlp 11 hours ago | parent [-]

Actually no, that is what many without Windows background think.

WSL 1.0 was based on Drawbridge research project of library OSes, also used to port SQL Server into Linux.

See https://news.ycombinator.com/item?id=46110904

GeekyBear 6 hours ago | parent [-]

Microsoft had to warn users that they would corrupt the original WSL subsystem if they touched Linux files using Windows tools:

> DO NOT, under ANY circumstances, access, create, and/or modify Linux files inside of your `%LOCALAPPDATA%` folder using Windows apps, tools, scripts, consoles, etc.

They did overcome that problem eventually, but by then everyone had moved on to WSL2.

pjmlp 3 hours ago | parent [-]

That is no different from having file systems problems across OSes, as old as there are multiple OSes.

Even Linux best practices for SMB access have been as read only.

GeekyBear an hour ago | parent [-]

Sorry, but WSL1 was unstable by Microsoft's own admission.

That's why Microsoft abandoned it in favor of WSL2 running real Linux in a VM.

zarzavat 19 hours ago | parent | prev [-]

> It makes more sense when you read it as "Windows subsystem for [running] Linux [applications]".

You can't have ellipsis when the shortened version already has its own meaning.

X for Y when both X and Y are nouns means that X is part of Y, not that Y is part of X.

e.g. "I bought new tyres for my car". The tyres are part of my car. You can't flip it and say "I bought new my car for tyres", it's just not how the word "for" works.

Grammatically it has to be "Linux for Windows subsystem", or "Windows subsystem for running Linux" as you said. The verb is essential for it to parse correctly.

ternaryoperator 19 hours ago | parent [-]

There are many exceptions to what you state as an ironclad rule: i bought a display case for my baseball, i bought an album for my photos, etc. “for” can go in either direction.