Hacker News new | ask | show | jobs
by cryptarch 3355 days ago
I'd just like to interject for moment. What you're refering to as WSL, is in fact, GNU/NT, or as I've recently taken to calling it, GNU plus NT. NT is not an operating system unto itself, but rather a non-free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, a version of GNU which is widely used today is often called WSL, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.

There really is an NT, and these people are using it, but it is just a part of the system they use. NT is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. WSL is normally used in combination with the GNU operating system: the whole system is basically GNU with NT added, or GNU/NT. Windows 10, the so-called NT distribution, is really a distribution of GNU/NT!

(Sorry for the copypasta, I couldn't resist.)

2 comments

The interesting bit of WSL (what the article talks about) is a Linux syscall translation/emulation layer, as well as ELF64 binary support (not specific to Linux, but not specific to GNU either). You can certainly install the Linux versions/ports of GNU tools and run them under WSL, and that's what the stock setup looks like, but an important component of WSL is about emulating a Linux (the kernel) environment.

If MS had actually ported the GNU base system to NT, then you could reasonably call it GNU/NT. They have not done that.

I think it is more significant from a user's perspective that they get the GNU tools to run on their NT machine with MS support.

What's the use of Linux syscall -> NT syscall translation if not compatibility with developer tools, most of which are GNU software?

So you were actually serious? I thought your first post was great satire. Poe's law strikes again...
I think the syscall translation part is an irrelevant hack, seems silly to act like that is what makes the project more useful because it does not guarantee performance, compatibility or stability.
The syscall translation makes it more useful than the previous UNIX subsystem, because it means it can near-perfectly emulate a popular POSIX-like system (Linux), and thus be compatible with most of its software, rather than being its own eccentric platform that existing POSIX software must first be ported to.
So is it near-perfect yet?

I don't see the value if it's not more stable than "excentric" platforms like Cygwin and MSYS, but I guess I wouldn't use it either way because there's no way I'm installing Windows 10 on my hardware.

> developer tools, most of which are GNU software?

such as python, nodejs, elixir and PHP?

You can say that about Linux as well; the bread-and-butter of the CLI experience is still the GNU stuff.

EDIT: Yes, there are non-GNU Linux distributions, but WSL is based off Ubuntu specifically and ships with a GNU userland by default.

I feel that you miss the point of WSL. Bash and coreutils have worked on Windows for years. In fact, they ship with git so most developers have had them for years.

The point is compatibility much more than CLI UX. The ability to run that nodejs or Python project even though one of the 1352 subsubsubdependencies has a bug on Windows.

So it's supposed to be more stable than Cygwin? Is it that right now?

I thought Cygwin was very stable and included most things you could want, while also supporting Win7/8, which are the last versions I'm willing to run on my hardware.

There are Linux distributions which contain almost no GNU software, e.g. Alpine Linux which is built around musl libc and busybox: https://alpinelinux.org/about/
WSL is "Ubuntu GNU/NT". You can't base your WSL install off other distros AFAIK.
What if you run a ToyBox userland then? Or BusyBox for that matter
What if your run ToyBox on Ubuntu? You have a lot of work to do upfront and get less functionality in return.
In all seriousness (your message could be in favor of, hostile to, or neutral toward GNU; I can't be sure), I got rms' opinion on all of this in April of last year and wrote about it:

https://mikegerwitz.com/2016/04/GNU-kWindows

(He proofread, and I made suggested changes.)

I feel like I've read that before.

I'm a supporter of the GNU project but I'm very ambivalent about its communication strategy. I posted this because I think it's as true for GNU/NT as it is for Ubuntu, which is... technically true, but hard to talk about without sounding off-putting.