79 comments

[ 2.7 ms ] story [ 183 ms ] thread
Looks like worthwhile additions. WSL is pretty nice, although I've started moving away from Windows, and generally do all my WinNix stuff on MSYS2 and Cygwin now anyway, for a variety of reasons. That and Eshell in NTEmacs is so nice.
Shouldn't it be called Windows Subsystem for GNU? There's a boatload of GNU-tools in there, but does it include a Linux kernel too?
> Shouldn't it be called Windows Subsystem for GNU?

No, that's a separate module that requires the Windows Subsystem for Pedants.

I'm just waiting for the rms rant demanding that it be called GNU/Windows. :) Then again, I guess rms cares much more about the non-free nature of Windows...
Or GNU/Linux Subsystem for Windows? It's called "Linux Subsystem on Windows" in the HTML:

<title>Install the Linux Subsystem on Windows 10 | Microsoft Docs</title> [1]

Microsoft has a tendency to create confusion around names when they relate in some way to Free software.

Another example: Office Open XML.

[1] https://docs.microsoft.com/en-us/windows/wsl/install-win10

I was actually trying to guess whether it’s an April joke indeed because of the naming.
The GNU userland is copied verbatim from your GNU/Linux distribution. Microsoft doesn't need to maintain these utilities. What Microsoft is developing is really a compatibility layer for running ELF binaries and handling all the system calls expected by Linux programs. So it's accurate to say Windows Subsystem for Linux. I haven't tried but I bet a GNU-free Linux system like Busybox will run just fine.
It emulates a Linux kernel, by handling Linux syscalls - it doesn't care much about what's in the userspace. The GNU tools are not required, they are just present since the Linux distros available use them. You can, of course, run busybox if you please. It might be buggy in some fashion but it will almost certainly work.
Too put it more simply ladies and gents', it's the doppelgänger of WINE.
Just inside the NT kernel.
WSL's kinda the mirror-universe Wine, but not quite - AIUI, it doesn't translate Linux syscalls into Windows ones, it's an alternative Windows kernel ABI that bypasses the normal one entirely.

That makes a big difference when it comes to the implementation of syscalls that have no remotely close analogue in regular Windows. fork() and exec() spring to mind - the hoops Cygwin had to jump through to fake those[0] are pretty eye-watering, but for WSL Microsoft added new kernel functionality to support them directly.

[0] https://cygwin.com/cygwin-ug-net/highlights.html#ov-hi-proce...

GNU/Windows seems snappier
I advice people to not use WSL. It seems to me that this is the first step of their well-known embrace, extend, extinguish microsoft's strategy.

They are now embracing the gnu/linux way of working like the packaging tools, the command line with the shells, the easy of having a compiler and developer tools, etc etc.

At the same time they don't let you create from WSL standard Windows application that you can redistribute, I guess this is part of their strategy.

In addition Windows 10 is such a messy, bloated system and the updates are very heavy and have often problems and they reset without asking many of the configurations you carefully made on your system.

I advice people that want to use Windows to use MSYS2 instead. It is very well done, works flawlessly and you can build full featured windows application that you can redistribute. You have also the pleasure to use a shell inside a decent terminal and install very easily packages using pacman.

In addition they support MinGW packages that does not need a special compatibility library, the msys2 dll, so that your application is 100% Windows native and can be a single executable if you want.

bloated system and the updates are very heavy

Really though, they asume everyone has a 100Mbps and a SSD, every new update is like a new install of windows, glad I don't have to use it.

On one of my old computers with a i7 Sandy Bridge but a 7200rpm hard drive the update took 2 hours
That I still wouldn't mind so much if it weren't for the fact the update system provides so little feedback of what's going on and whether the process has stalled or not.
I’ve had do-release-upgrade take 4+ hours on spinning rust.

It’s like Canonical thinks we all are made of money have recent supercomputers with SSDs!

How are they extending Linux? It also sounds like you are asking them to, since you want to build Windows apps from WSL! A large part of the attraction of WSL for many, is that native windows ports are not needed.

Windows will never extinguish Linux, while it remains closed and proprietary, so I wouldn't worry about that.

They're in the embracing phase.

Linux, the kernel, is actively in the process of losing a majority of its non-server market share and thus related development resources. It will become a very real possibility for Linux to be relatively unusable directly on modern consumer hardware if nothing is done to prevent it.

WSL, if successful, will deter potential desktop Linux users from leaving Windows if they consider WSL as already providing everything Linux has to offer without the trouble of installing an OS.

Fuschia will eliminate all the Android devices once that pivot is fully realized. Presumably ChromeOS is going to follow suit.

One doesn't even need to speculate on how exactly MS will extend to see the very real threats. The Linux kernel's stable ABI contract it turns out is a serious vulnerability for its market share. There are some similarities to how Google embraced Java in Android without Sun/Oracle's participation.

edit:

If you value having the option of running a GPL kernel on modern computers, don't use WSL and discourage others from using it. We need people running Linux on bare metal. It's the only way we will continue to have the option. If nobody is using it, when you decide you want/need it, your hardware isn't going to be supported.

I'm a little surprised that Linus / The Linux Foundation haven't played the Linux trademark card to prevent MS from using the Linux name in the WSL moniker. There is no Linux in WSL, and the deliberately ambiguous marketing is actively harmful to Linux.

WSL makes it easier to migrate to Linux, and the business drivers are entirely in that direction for licensing and tech vibrancy reasons.
(comment deleted)
the updates .. reset without asking many of the configurations you carefully made on your system.

Funny you should say that, I am normally quite fond of Win10 but I just installed the April update on my HTPC which uses a 4k TV as monitor.

The graphics settings went to hell, making the screen push past the boundaries or "overscanning" them. Reinstalling Nvidia graphics drivers now to hopefully bring things back into order. Willing to bet colours will default to 16-235 instead of 0-255 as well.

This happened to my old gaming PC as well. I looked into it and it mistakenly installed AMD Firepro drivers during the update instead of the correct Radeon drivers... Had to manually install the correct ones
Ouch. Yep my Nvidia drivers were reset (#); installing latest ones and redoing my config fixed it. This included DPI settings; it's right funny how tiny 100% gets even on 65".

Was easy enough to get back to where it was, but then again I've done this enough times for even myself to remember quickly - it'd be rather annoying for the family if update happened when I was away. (I had already postponed feature updates by about a month).

#) I got a 960 when it had just come out, and it can handle huge (e.g. 70gb/2hrs) 4k h265 videos just fine - if only Netflix saw it that way too, but no - cpu is all that matters, and the i5-2500 is far too old for them.

Overscan is an unfortunate fossil of CRT era. I don't know why videocard manufacturers keep using it, some compatibility requirements probably.
At the same time they don't let you create from WSL standard Windows application that you can redistribute, I guess this is part of their strategy.

I fail to see how that has anything to do with embrace/extend/whatever. Maybe I'm missing something but they simply let you run largely unmodified linux. Which obviously is not windows. And which can already cross-compile for windows seemingly making your point extra moot. Why on earth (and how) should they add another way to create windows applications? I'm really not sure what you want here.

By letting users run Linux, they are moving people away from the Linux distributions and into the windows ecosystem. This the embrace step, so they later can watch Linux distribution usage decline to nothing. That leaves Windows as the professional choice for Linux.

Anything that moves users from Linux distributions to Windows is very bad for free software, since it's already a small market.

(comment deleted)
I really deeply disagree.

You could use the same argument against Msys2 and Cygwin, yet they were key to me choosing the Unix command line as my common interface across all OSes when I was a teenager, with plenty of games that I wasn't going to give up any time soon to live in Linux.

I think it's ridiculously naive to think that businesses are going to build on top of a closed source licensed system like WSL when with minimal effort they could choose Linux. The business risks of the former are huge and they're handing a big lever to MS to screw them in the future - why would they do that? If anything, WSL makes it easier to transition to Linux, because you can develop and test without committing to a big change or using clunky virtualization.

In theory I would agree with you, but clearly a lot of businesses are not rational. Just look at how many built stuff on top of MS products to begin with!
How is that not rational? You're letting your biases cloud your judgement.
> I think it's ridiculously naive to think that businesses are going to build on top of a closed source licensed system like WSL when with minimal effort they could choose Linux. The business risks of the former are huge and they're handing a big lever to MS to screw them in the future - why would they do that?

All of that applies just as much to native Windows development, except you no longer have a canonical escape hatch (aside from WINE, I guess).

My comment actually just addressed the part where the parent complains about MS not providing a way to create native Windows applications from within WSL. Maybe you wanted to reply to someone else?

In any case:

away from the Linux distributions

When running Linux on WSL you're effectively still running it so you're not really away from Linux, are you?

Actually you can even try and turn the argument around. For a windows user it is now probably easier than ever to try linux: no need for dual-boot or bootable media or virtual machines but a simple way to install and run it. So this might actually lead to more linux users, not less. But we'd need to count to be sure, everything else is guesswork.

I absolutely agree, after seeing Microsoft to exactly the same in the 90s. Hopefully the new generation learns from past mistakes, but probably they won't.
> They are now embracing the gnu/linux way of working like the packaging tools, the command line with the shells, the easy of having a compiler and developer tools, etc etc

This is ridiculous. Damned if you have a CLI, damned if you don't. Further more, if Microsoft where to extend it, wouldn't it need to contribute back to the community? Isn't Microsoft one of the leading if not biggest contributors to opensource on Github?

You'll need further evidence to support this claim.

> At the same time they don't let you create from WSL standard Windows application that you can redistribute, I guess this is part of their strategy

I don't understand - WSL is the linux Kernel compatibility. What this has to do with cross compiling Windows applications is beyond me. Additionally - IIRC .NET core can be compiled from Linux.

> In addition Windows 10 is such a messy, bloated system and the updates are very heavy and have often problems and they reset without asking many of the configurations you carefully made on your system

I'm not sure that an operating system that is backwards compatible with software over 25 years ago exists that isn't a bit "messy" or "bloated". Linux has it's own share of warts. It's worth noting that Linux is my primary operating system.

> I advice people that want to use Windows to use MSYS2 instead

I advise people to use the best tool for the job, whether that is WSL or MSYS2 depends on the application and the use cases.

Based on your post history - you seem to have an outstanding grudge with WSL. I don't think you're being impartial.

And yet we could live without all their github open source contributions.

They haven't really created anything new, so not leading, they just go after the community and release what they can't keep closed. Or create their flavor of other existing OSS. Although their R&D is great.

Why would they want to embrace, extend and extinguish Linux when nowadays the competition is no longer Linux but AWS, Google etc?
Even AWS and gcp offer windows instances.
> At the same time they don't let you create from WSL standard Windows application that you can redistribute.

WSL runs Linux applications natively by implementing Linux compatible syscalls in a kernel subsystem. What standard windows application and redistribution have to do with it?

WSL is not for developing Windows applications, it's a full Linux ABI-compatible subsystem. The intent is to run Linux-based operating systems and tools unmodified. It's mostly just to make life easier for people developing on platforms like Ruby on Rails where Unix has better support.

WSL feels no more dangerous than Wine.

> WSL feels no more dangerous than Wine.

Wine is not really a fair comparison against WSL, especially when it comes to comparing 'potential to extinguish the embraced'.

Wine has nowhere near the amount and quality of resources (both human and IP) available to WSL.

Wine is very often cited as a 'solution' for not needing Windows at all (when the reality isn't so simple). It looks like a reasonable enough comparison.
Put it this way. People who want to use Linux will keep using Linux and are very unlikely to switch. Microsoft obviously wants a piece of that Apple cake where people want a polished and consumer grade OS with a unix-y environment to write code.

This is likely a response to the fact that today's web OSS dev tools are first class UNIX Cli programs

I’ve been using Linux for more than 10 years. Don’t be ridiculous. Linux desktop usage has always been pitiful, 2% of the market at best. What is there to extinguish? There is a reason “the year of Linux on the desktop” is a meme.

You’re completely misreading their strategy. They’re targeting development for Azure. These days a ton of development tools are *nix native and Windows is a second class citizen, because Linux on the server is massive. And Microsoft can’t budge it, it tried, it gave up: Linux runs on Azure. But Microsoft needs to take dev mindshare from Mac, especially. Mac is the real target here, another proprietary OS. Mac is closer to Linux so many devs work on it and later deploy to Linux.

Microsoft wants to attract Mac devs to Windows so that they can up-sell things that make it easy to work with Azure.

And you forgot one thing from the days of EEE: Microsoft was uncontested #1. Those days are GONE. They can’t extinguish anything these days, even if they try. They did successfully extinguish Windows Phone, now that I think about it... :p

> What is there to extinguish?

The Linux CLI development environment? The point of WSL clearly can't be to try to extinguish the Linux Desktop, because WSL doesn't even embrace the Linux Desktop.

What Linux CLI dev env is there to extinguish? There’s more Mac users using nix CLIs than there are Linux users using those nix CLIs...
(comment deleted)
The end goal is to use WSL on servers, to extinguish linux servers.
Pfffft. WSL is almost a side project for Windows. If it were meant to be more than a dev environment we’d see a major push for it on Windows Server. Major push: fast development, integration with other Windows Server tools, tons of marketing, etc.

Did I miss something? As far as I know the Windows Server side is completely silent...

I honestly think this is more of a reaction to Macs having had a perfectly good POSIX environment for ages, resulting in the Apple ecosystem grabbing a lot of developer mindshare (or at the very least developer dollars). I don't think it's at all surprising that you can't create Windows apps that run within WSL, because I don't think Microsoft see this as Windows as a desktop interface to Linux. I think they just see it as a way to get reliable installs of Postgres, Ruby, Python, whatever else, from a really good package ecosystem, in a Unixy environment that you know will work (including being able to build from source), and expose those to the Windows developer.

For my part, if I'm booted into Windows I only really need enough GNU stuff to keep the Windows build of Emacs happy, and I find Cygwin makes that very easy. It's currently not seamless to try and do this with WSL, and I'd rather just dual boot if I want anything more heavyweight.

I think it is a response to macOS and trying to make it easier for developers to use Azure.

Sorry, a bit off topic, but I would like to talk with someone who has compared dev on macOS, Windows with Linux support, and the new Google ChomeOS Linux sandbox. I am tempted by the latter, but I would like to hear from many more people who have tried it.

In comparison to WSL msys2 ist horrible. Yes it has pacman but it only supports an extremely limited set of packages. There are quite a lot of linux commands which are hard or impossible to run on msys2. WSL is far from optimal but it makes Windows at least bearable.
Agreed. I was watching a channel9 video on vscode and OSS, their contempt for the rest of OSS community was visible.

The marketing changed, but the "open source is inferior" culture is still there.

I really wish that Docker could natively run in WSL. It's a really aspirational project for Microsoft, but it's not doing anything that Cygwin doesn't at this time.
Cygwin doesn't run Linux binaries. WSL does.
Depending on what you need, it already does. Docker for Windows provides Linux (and Windows) Containers on a windows host, albeit the Linux containers run in a VM.

you can access docker for windows from WSL by setting up TLS on the Docker engine interface (https://raesene.github.io/blog/2018/03/29/WSL-And-Docker/)

There's also some suggestions that some versions of the docker daemon can run on WSL with ubuntu https://github.com/Microsoft/WSL/issues/2291#issuecomment-38...

Was so sad, because vagrant stopped working on my colleague's computer after this update.

I had to force Vagrant to use the "system" ssh binary ( VAGRANT_PREFER_SYSTEM_BIN=1 ), since the internal vagrant OpenSSH stopped working.

And this is without WSL being in use.

It's already so complicated to run even git / vagrant on a windows machine, that I'm wondering how are people developing with it.

> It's already so complicated to run even git / vagrant on a windows machine, that I'm wondering how are people developing with it.

I find Git fine, but the Vagrant/Virtualbox ecosystem...

I dread every Windows update because something will break the setup, and that will be a day lost to figuring out which version of every component I need in order for my Virtual Machines to boot/build.

I would pay money for something that "Just works". Wondering if VMWare rather than Virtualbox is that, but no way to test without spending money.

Run the vagrant inside Debian (possibly inside virtual box/hyperv/VMware/parallels running on your host OS).

Debian doesn’t pull or push the proverbial update rug under your legs without asking, and things rarely if ever break on a Debian stable update.

Run VMs in Hyper-V. That just works
My vagrant install failed under HyperV after the update. After spending a couple of hours trying to get it working again I switched over to Docker for some legacy Rails projects and installed native binaries for the Elixir project I was working on. I’ve used Vagrant for years but I guess it was time to move on.
I could find many ways to describe HyperV, but "just works" would definitely not be a phrase I'd use.
In comparison with VirtualBox, Hyper-V “just works”
I really like WSL for systems where I have to use Windows either for corporate reasons or driver support. Now that you can do UNIX sockets between the 'sides' its pretty easy to add shims for special purpose USB devices as well.
Another nice update to the WSL which I believe arrived with this version, SIGIO and nonblockig reads. This is very nice for console textmode UI apps.
Wouldn't it have been better for Microsoft to support https://midipix.org, which would have resulted in more finegrained POSIX support for Windows, rather than installing an isolated machine, that runs seperate?
What isolated machine? Open up WSL, run "CMD.exe notepad", then top. You'll see the instance of notepad running, and then you can go kill it with taskmanager. People still seem to think it's a VM when it's not - the pid in the Linux system is the same pid in Windows, it just hits a different part of the kernel.
You are right, I was assuming, it'd be running in a VM. At least, that was what was being said, when this project got introduced to me a while ago.

I still don't sympathize and would prefer Microsoft putting other efforts, than this, into making Windows more POSIX aware/compatible.

Maybe that will still happen? Getting this bridge built on new bedrock would make the transition more optional, so the vast amounts of different user types can switch as they please.
Yeah, when it was first released no one wanted to believe it was kernel level compat.

Curious - what would you prefer to see Windows do to make it more POSIX compatible beyond the current work of making it actually POSIX compatible? I mean, you can use any package manager you like to install any Linux application - it's literally POSIX compatible.

What does just "notepad.exe" do?
It will also launch notepad.
The utf-8 everywhere is great. Microsoft should admit that their utf-16 was a mistake a provide utf-8 version of all functions - eg GetWindowTextA() GetWindowTextM() exist and now... GetWindowTextU()
> [...] to start an argument, case sensitivity is one of the most annoying features of Linux.

This is of course so much opinion-based, but my feeling is that in absolute numbers, machines which distinguish between upper and lowercase in file names surpass machines which don't. At least since the global market is dominated by Unix-inspired operating systems (iOS, Android) in the end ;-)

Not to mention, that case-insensitivity requires knowledge of locale/encodings and all the associated complexity. Not every language even has the concept of case.
One cool thing about the update is WSL's filesystem now supports metadata which can store Linux file permissions.

So instead of having 777 permissions everywhere you can have your WSL mounted files and folders have correct permissions.

Problem is popular code editors like VSCode will strip this metadata every time you save a file.

If you want to see this fixed, please post about the issue in https://github.com/Microsoft/vscode/issues/49021.