Hacker News new | past | comments | ask | show | jobs | submit login
Windows 10 refutes the idea that the Linux kernel is what defines GNU/Linux (twitter.com/swiftonsecurity)
91 points by homarp on Jan 19, 2019 | hide | past | favorite | 63 comments

Even the strictly GNU parts are in the minority in modern Linux usage. There are dozens of libraries, some GPL and some X11/zlib/Apache licensed but most of them not part of the "GNU project". Some parts only run on Linux and Linux-compatible systems because they were built on top of Systemd or other Linux-only software.

FreeBSD has had a Linux emulation layer for quite a long time, so in that sense you can of course have a Linux environment without a Linux kernel, just as you can have (with WINE or ReactOS) a Windows environment without the Windows kernel.

It's like gin.

Gin contains a million different herbs, and which ones are included differ depending on which gin you buy, but some of them are always included.

But always juniper, unless you're talking about sloe gin, which is always qualified as such.

And SmartOS (née Solaris) has LX branded zones.


God donut.

GNU doesn't define the Linux kernel API. The kernel defines the kernel API. Applications (GNU whatever) use the API. Now Windows implements the API. The Linux kernel API. It doesn't implement GNU API because there is no such thing. See?

Linux kernel is the implementation of the kernel API. You can run Linux applications as long as you have the implementation of the API. Windows has it. Linux kernel has it. GNU doesn't have it. See?

Yeah if anything WSL shows that Linux is what matters. It can also run non-GNU stacks (e.g. Android).

Glibc is also GNU, though. You typically talk through it to kernel interfaces.

God donut?

I didn't know what this was either.

So I searched for it.

> Urban Dictionary: God Donut > https://www.urbandictionary.com/define.php?term=God%20Donut

> Aug 7, 2014 - "God donut" is a censored way to say "God damn it!". Best known for being in iPhone autocorrects.

And then I posted it for everyone else to see too.

I saw that when I searched, but didn't think it was a thing someone would realistically say. It's a little Ned Flanders.

It's worth a wider appreciation of how much GNU tools define the "Linux" experience we seek -- such that we're happier with WSL than with Android.

Taking nothing away from Linux or it's developers, I'm massively grateful to RMS and GNU.

Yeah the bsd versions are generally pretty eh, at least the ones on OS X. Usually the first thing I do on a new Mac is install the gnu coreutils. Though the new rust replacements are generally quite nice.

Alpine Linux refutes the idea that the GNU userspace is the important component here.

And the various home router distributions before Alpine that were musl or uclibc and busybox based.

It more demonstrates that Stallman was right about calling it GNU/Linux to differentiate Alpine, though I still don't see the name catching on.

Had Microsoft actually improved the POSIX personality on Windows NT, instead of having it as bullet point to win contracts in some areas, I doubt many would have cared that much about GNU/Linux.

Many of us installed Slackware and friends during the early days so that we could do university work on our home computers.

As proven by those that use macOS to deploy on GNU/Linux, a large majority is happy with having access to a POSIX userspace.

It just happens that how things have evolved, Linux syscall compatibility is now more relevant than plain POSIX.

> Had Microsoft actually improved the POSIX personality on Windows NT, instead of having it as bullet point to win contracts in some areas, I doubt many would have cared that much about GNU/Linux.

I can see why Microsoft wanted to push Windows and the GUI itself as a new way of interacting with the system, rather than have it come off as a cheap copy of Linux. You couldn't even administer Windows server from the command line until quite recently if I recall. You had to install all of Windows, including the GUI, even if all you wanted was access to the Powershell. Its only changed from Windows Server 2012 onwards. They really believed that Linux and the terminal were obsolete.

That isn't quite true regarding the command line on Windows.

At least since Windows 2000 it is possible to automate Windows via VBScript (JScript was possible as well, but never got much use), COM Automation and WMI.

And every savvy Windows admin has had the Windows Technet shell utilities installed as well.

Just not the way UNIX devs would expect every other OS to behave.

Modern version, still actively developed by Microsoft: https://docs.microsoft.com/en-us/sysinternals/.

First thing I install on every windows box, the power of that toolset is incredible.

Those and Take Command for me. (-:

Interestingly it's now gone quite the other way; there are many Windows admin tasks which can only be accomplished using powershell.

There are still GUI tools that help calling those powershell scripts if desired, like the new Windows Admin Center.


I'm having a hard time understanding why this is so important? Linux is "just" the kernel. Surely everybody knows this? And if they didn't then surely Android and ChromeOS made that distinction clear?

The argument is that Windows Subsystem for Linux has no Linux code in it.

edit: I'm having a hard time coming up with a name which would be correct and Microsofty enough. But I think it would be a oxymoron.

We had the discussion of the name here on Hacker News when WSfL first came out. I and others pointed out that these subsystems are, and have been for decades, effectively named after the kernel that is actually left out and replaced by the Windows NT kernel. There wasn't an OS/2 kernel in the OS/2 subsystem, for example.

ENIW: Embracing Neatly Inverted WINE


Microsoft Xunil?

Xenix 2!

That was originally known as Xenix V and was released in 1985. IBM sold it as Xenix 2.0 at the time. SCO was using Arabic version numbers by 1988, when it was up to Xenix 386 Release 2.3.

Linux might be the name of the kernel, but we use Linux to refer to the whole ecosystem too. For example, people say "I'm running Linux" when they run e.g. Ubuntu or Debian etc, not when they run Android. Running "Linux" doesn't mean just running the kernel.

And in the MS case, the argument is the opposite: MS calls it a "MS subsystem for Linux" but there's absolutely no Linux kernel code in it. Just emulation of APIs and the GNU userland.

He’s referencing an old old copypasta.

SwiftOnSecurity uses they/them pronouns as listed in their profile.

Ah thanks. I'm terrible at navigating twitter.

You could alternatively view it as Twitter being terrible at presenting anything other than the trivial and superficial in a legible manner. (-:

A huge part of what makes Linux Linux is that it's free(libre) software. So no.

Also no because what others say: It's WSL-'Applications' and Linux is just the kernal.

Linux developers using macOS don't seem to care much about that distinction.

I can't make any sense of this statement. 'Developers using macOS' are either macOS developers or making apps that run on a platform.

For a long time before WSL was conceived of, there was a GNU system on top of Windows - cygwin. Cygwin and WSL have entirely different strengths and weaknesses due to the fact that Cygwin is GNU on top of Win32, whereas WSL is GNU on top of a Linux syscall layer implemented by the NT kernel. Earlier versions of Windows had GNU tools on top of the POSIX layer of the Kernel, which was entirely different beast altogether. All "GNU" systems, all very different characteristics.

I do think that the GNU/Linux distinction is valid when comparing something like CentOS against Android or even Busybox, but WSL is not a great example because it is almost entirely defined by its implementation of the Linux kernel API.

I guess it's an interesting debate, although I should point out for the benefit of anyone unaware that SwiftOnSecurity is somewhat of a parody / joke / tongue-in-cheek account so perhaps this should be taken accordingly.

rms refers to this combination as "GNU/kWindows". I wrote about GNU's perspective back in 2016:


Please remember that GNU is not just a collection of programs that fall under the umbrella of the GNU Project---GNU is a complete operating system, and it was an explicit decision to use existing free software when it was already available, and write replacements only for non-free components needed replacing. A detailed history of the development of GNU can be found here:


As distro maintainers know, it is a lot of work to come up with the right combination of programs to produce a complete, working operating system using _existing_ free components and being able to draw inspiration from existing GNU/Linux distributions. Imagine how difficult this effort was 30 years ago when nobody had done it yet.

“When I use a word,” the commenter replied, in rather a scornful tone, “it means just what I choose it to mean—neither more nor less.”

“The question is,” said the public, “whether you can make words mean so many different things.”

(with apologies to Dodgson)

If it was called "Windows Subsystem for Linux Applications", people probably wouldn't be this nit-picky, but it would be more of a mouthful. (What's a "Linux Application" ? Who knows...)

The proper name is clearly GNU/Windows

If you feel that GNU belongs in the name, I would say that it should be last since, with this subsystem, you need Windows up and running before you can even insert any GNU tools. So, Windows/GNU or more precisely: Windows + GNU.

However, you could enable the subsystem without installing any GNU tools at all if you wanted to. Then you could install whatever alternative tools that you wish to. Also, I don't think that the OS name should change when I install a set of applications. For instance, when I install Paint.NET to do all of my image work, I don't refer to Windows as Paint.NET/Windows.

"Windows Subsystem for Linux Syscalls" maybe?

Linux ABI for Windows.

Great Value[1] Linux

or if we are going with something from the last ten years,


[1] https://www.quora.com/What-the-heck-is-the-Great-Value-brand

I believe it's at least partially due to Windows Defender, but creating files in WSL is dog slow.

  $ mkdir scratch;cd scratch;time perl -e 'for (1...10000) {open(F,">$_");close F}'
Runs for 5 seconds in WSL, 100ms or less on an actual Linux box. I do like WSL, but this sort of thing limits how useful it is. Pull some big repo with git, and Zzzzz.

Linux is GNU and two other children in a trench coat functioning very successfully as an operating system.

a variety ststem diagrams of the scheme: https://m.imgur.com/gallery/xxyr9

I don't understand, can somebody explain the meaning of that tweet?

It means that you can switch the kernel beneath the userspace and hardly notice. So the Linux in GNU/Linux can be replaced, giving you GNU/NT, I guess.

Debian actually tried this a while ago with FreeBSD, but I think it was discontinued.

And Debian GNU/Hurd too.

It does not mean anything. It's a minor variation on a commonly copied piece of text that has been doing the rounds for years, by people placing it in discussions for fun. It's not actually a genuine argument.

You only need to read one tweet further down.

Correct me if I'm wrong, as I'm not that familiar with it, but isn't the point of WSL to lie to applications and present itself as the Linux kernel in order for them to be able to run? If that's the case, then the fact that they have to re-implement the Linux APIs in Windows makes the case that Linux is, in fact, the core, and without it you have nothing―of course I don't believe that statement generally, but that's what their argument would actually imply.

Not like this discussion merits any importance anyway, this is just another pointless argument about semantics. Most (if not all) parts of the GNU system are just another swappable component in the "GNU/Linux" ecosystem.

Microsoft implements Linux Kernel and calls it NT kernel.

The Linux kernel most certainly does not define GNU/Linux.

I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another 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, the version of GNU which is widely used today is often called “Linux”, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project. There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux 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. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact