microsoft / WSL

Issues found on WSL
https://docs.microsoft.com/windows/wsl
MIT License
17.55k stars 823 forks source link

Summary of what's changed in WSL since the last stable update #1744

Closed SRGOM closed 7 years ago

SRGOM commented 7 years ago

I'm hoping you guys have something on this already. I remember @benhillis @aseering and a few others whose id's I don't recall being the know-it-all's six months back. Do you guys have any links I can check out which tell me what's changed with WSL between anniversary and creator's updates?

carpet92 commented 7 years ago

@SRGOM You can see here https://msdn.microsoft.com/en-us/commandline/wsl/release_notes

benhillis commented 7 years ago

We're also planning a blog post or two for when we get closer to Creator's Update release.

MikeGitb commented 7 years ago

Are you - on the long run - targeting complete (modulo bugs) feature parity with the real linux kernel or are there syscalls or functionalities thereof that you deliberately don't / can't port?

Edit: By long run I mean primarily the time horizon for the next win 10 Update after the creator's update.

fpqc commented 7 years ago

@MikeGitb Right now, they're working on completeness vis-a-vis 64-bit syscalls and performance (and the console team is working on a new console API), but I've been able to harass Ben into giving some ideas that they're considering for some kind of graphics support.

A very very large part of the Linux Kernel is device and filesystem drivers. In general, since Windows already drives these interfaces natively with its own drivers, MS's approach will probably be some sort of generic WSL drivers for the already-abstracted hardware. If filesystem support happens, it will be built directly into the NT kernel, not just the Linux subsystem.

iz0eyj commented 7 years ago

I believe that to have a good success at least Firefox and Chrome must be executable without problems by any user. If the browser will not be used simply almost no one will use the WSL. The order of priorities should be revised in this direction. Of course that's just my opinion

MikeGitb commented 7 years ago

@iz0eyj: Why would you run one of those browsers from within the WSL instead of just using the Windows version of it?

iz0eyj commented 7 years ago

@MikeGitb Because that's what everyone will want to do justly. The WSL expresses the maximum of the mixing potential on the power of a single desktop Win10 with the flexibility and the large amount of them freely installable applications of Linux. It 'will be obvious that the most interest for graphical applications, and between them the part of the eon will the graphics packages like Gimp, for some LibreOffice, for still other development environments ... but above all there will be the browser, because it is with them that the user builds the relationship with the Internet. In this cluster now it works pretty well almost everything EXCEPT browsers, which are the most important thing. What you can see in the picture is my desktop, in which Windows 10 and WSL are mixed to obtain a power hitherto never experienced the true union between the owner and the free software. At times like now use Edge, other (usually when I charging machine) prefer to use Firefox from WSL ... still others are both open. not that I pay much attention to the face which I am using, for me the end is the same thing because WSL is making free software an integral part of Windows, and I think this is absolutely brilliant! And that's what everyone will expect, and will demand, by WSL.

I ask forgiveness for my bad English. cattura

iz0eyj commented 7 years ago

@MikeGitb: Another observation: since last summer WSL officially became a Win10 subsystem; This means that now we can no longer ask why launch a Linux instead of a Windows program, because now any ELF-64 program is fully in a Windows program. This also means that from next April, the ELF-64 will land on half a billion Desktop compatibility making Microsoft the majority shareholder in the market of Free Software Desktop. I do not know if this is a desired outcome or a simple side-effect to which he had not thought of, but that's what will happen in a month.

aseering commented 7 years ago

@iz0eyj -- how can a Windows be a majority stakeholder in desktop Free Software applications when it explicitly does not support desktop Free Software applications (because it does not support X Windows natively)?

iz0eyj commented 7 years ago

@aseering: I do not think the majority of people very interests that is officially supported or unsupported, partly because I doubt anyone is going in and read it. It will affect only what you can do. If a single click from the package manager will install Gimp or LibreOffice will be happy if with a click can install Firefox and Chrome (or Chromium) will even be excited. The problem is that now Gimp and LibreOffice installing them work well, while Firefox only works kicked him and Chrome does not work.

iz0eyj commented 7 years ago

@aseering: I think not support X WSL side is a great idea because it would make unnecessarily heavier the same WSL. What sense would include a second graphical environment when the original works fine and installing X on it you will get good performance? Do not go 3D games? ok ... buy an Xbox :)

aseering commented 7 years ago

@iz0eyj -- LibreOffice and Gimp do not work with stock WSL either. They also require X Windows.

iz0eyj commented 7 years ago

@aseering: Adam is true, three mouse clicks to download and install VcXsrv the reach of the most naive of the end user, a simple procedure that will be shown in all the magazines and blogs. In fact it is not even correct to say that WSL not natively run the software ... it runs it but does not do graphics rendering. Users interested in having this can be tens of millions, impossible to avoid saying that the graphics "is not officially supported". cattura

aseering commented 7 years ago

@iz0eyj -- fair point that non-graphical features of the software do run natively. It's also true that VcXsrv is easy to download and install. But it's also true, in my experience, that VcXsrv is buggy :-) Sometimes it works well for me; sometimes it does not.

I'm not on the WSL team; I'm just another user. So I don't get to decide their priorities :-) But if you are correct that graphical applications were very important and lots of people were using them, then there should be should be lots of people asking for graphical applications to be fixed. So, why don't you try this experiment?: Open up the Bash on Windows UserVoice. Then read the titles of the most-popular issues. You say that there's lots of interest in graphical applications. How much interest is there in it really? How many people have asked for it?

If you know people who want it, tell them to go post on that page. Go write articles and blog posts; get people (not just you -- lots of people) complaining that they need this. If lots of people do want Linux graphical apps to work better, and if requests involving apps like Chrome and Firefox get voted much higher on that list, then I'm confident that the WSL team will make them work better.

If you're right that there are tens of millions of interested people, then it should be very easy to get a few hundred votes on an issue to add support. Is there enough interest to get that many votes?

iz0eyj commented 7 years ago

@aseering: Adam, I'm a developer and an Insider, you are a developer and an Insider (much better than me on Linux) ... we are not regular users. We come here on Github and we write something, or go on Uservoice to propose or vote for something ... but do not think for a minute that a common user to be here or go on Uservoice because never will, as never use WSL from the command line (and this you should know that better than me because you gave a lot to do in the desktop environment debugging from the first moment). The difference is only in the degree of satisfaction that otterrano ordinary users when WSL (which is a highly important subsystem) will be proposed. All of Win are accustomed to "click to install, click to run", and that they will want to WSL, and one of the few things not to meet this habit unfortunately there are browsers. And browsers have an extraordinary strategic importance, because you can bet it will be the first thing everyone will expect to see work (well). Do not think like a programmer and insider, fell in the average user's shoes, because compared to them we are a small handful.

On VcXsrv ... to me it works great, in almost a year since I use it I have never experienced a crash. The only thing that sometimes gives me problems is the "Copy & Paste".

I am sorry for my bad English.

aseering commented 7 years ago

@iz0eyj -- regarding browsers, why would people who are not developers care whether their browser is an ELF (Linux) binary or a Windows binary? It's one-click either way; it can be invoked from a bash shell either way. It can integrate with, for example, xdg-open, so that a Windows binary is the default Linux system browser.

You're right that we're developers. You think that lots of people want to use graphical Linux browsers. I think that most people (most non-developers) don't. So why don't we stop talking and do what developers do best -- write some code?

You keep saying that getting graphical Linux applicatuons working is a one-click (or three-click, etc) process. But, frankly, that's simply not true right now. You have to install bash itself at the command line; you have to set the DISPLAY environment variable after installing VcXsrv; you have to install a bunch of packages using apt inorder to get a graphical package manager; and you still have to launch bash apps from the command line because Linux menu shortcuts aren't added to the Windows start menu. You should make a one-click installer that solves those problems. If you do, and if it becomes as popular as you say, I will help you get Firefox and Chrome working.

iz0eyj commented 7 years ago

@aseering:

Yes, I thought several times to make an automatic configurator, but not the usual script. What I had in mind is a Win32 program, fully graphical and then average household users, able to take care of both the WSL as a graphic configuration environment that its subsequent maintenance. I believe a lot in the WSL project, to have opened the doors to the support of ELF-64 on the Windows kernel opens the door to incredible scenery, and I do not see the negative. Unfortunately I left the *nix environments for two decades, and so I do not control them more effectively, however, I sense the strength that can come from the union of two worlds when used simultaneously.

MikeGitb commented 7 years ago

MS has stated very clearly from the beginning that - for now - their target audience are developers that want to use Linux command line tools and/or create Linux command line applications themselves. I'm pretty sure (or rather hope), they will stay focused on that for quite some more time before committing serious resources to the support of graphical apps. Otherwise we get just stuck with half baked support for command line and half baked support for Graphical user applications. Although I certainly wouldn't be disgruntled if WSL would receive official support for graphical applications in the long run. Back to the specific topic of web browsers: I still don't see what advantage it would have to run e.g. FF under WSL when the exact same Software with the same functionality runs natively on windows. If this is just about having a software repository on windows chocolatey might be good enough for you.

fpqc commented 7 years ago

ELF64 is just the image format for Linux and other 64-bit variants of Unix executables. There's actually a way to have cygwin compile to ELF64 if you want. ELF64 offers very few benefits over PE32+ (and at a significant increase in parser complexity). Executable format isn't the problem. The reason you can't run a FreeBSD ELF64 on Linux is that the syscall interface and libraries are different.

fpqc commented 7 years ago

@MikeGitb Ben Hillis mentioned in a thread of mine here that they were at least brainstorming options for implementing graphics natively in Windows, so it is on their radar.

https://github.com/Microsoft/BashOnWindows/issues/882#issuecomment-269791471

iz0eyj commented 7 years ago

@fpqc: Exactly, and in addition the team is present in all open thread on the topic Desktop Manager, Browser and graphics in general. In any case, a bug is a bug, whether it blocks an editor or browser, and as such should be corrected if possible. With regard to the direct support of WSL graphics, personally I think it preferable to continue to keep the X server on Win32 because the only real benefit would be achieved by moving it would be to have more bandwidth, after all unnecessary accounts because hardly anyone would play in ELF-64, but the benefit would pay in terms of heaviness and can lower security.

fpqc commented 7 years ago

@iz0eyj uhh look at @therealkenc 's udev-stub, which makes chromium work.

therealkenc commented 7 years ago

@aseering

So, why don't you try this experiment?: Open up the Bash on Windows UserVoice. Then read the titles of the most-popular issues. You say that there's lots of interest in graphical applications. How much interest is there in it really? How many people have asked for it?

Answer is 426 people before it got locked.

That said, running Chrome (with libudev-stub), Firefox, LibreOffice, or Roller Coaster Tycoon on WSL is pretty pointless. Fun, maybe. But pointless.

Running VSCode with vscode-cpptools on WSL, however, is an entirely legitimate development use case. But to that end, there is still much WSL work to be done before broaching anything to do with "graphics". The cpptools guys did some nice additions recently to help with interop by the way.

iz0eyj commented 7 years ago

If this is so and then WSL is intended for a few thousand developers who usreanno (why ever then a developer should develop on WSL?) What is the point that I waste my time? If the targets are only developer they can debug it alone, I certainly will not let the development of .NET / Win32 code to dedicate myself to ELF-64, so it does not concern me, and I do not care

iz0eyj commented 7 years ago

However it does not at all clear what "intended for developers." A developer should convince his customers to come back to the non-GUI software because WSL does not officially support the graphics? Or maybe the aim is to develop of WSL then to run the software on a Linux operating system that supports the graphics?

I believe that those who think one of two things is wrong, because no professional developer or software company will do one of two things if not for pure hobby level.

aseering commented 7 years ago

@iz0eyj -- why would I care about the market (Linux desktop) that only reaches a few percent of users, when I as a developer can develop for the market (Linux server) that can be a platform for 99+% of users?

iz0eyj commented 7 years ago

@aseering: First I could also answer that "officially WSL does not support server", second thing because if properly oriented WSL make dispnibile the Desktop environment of hundreds of millions of desktop, take a market nonexistent today. In fact WSL is a "Linux" Linux QUALITIES, both for servr that for the desktop, because it offers the direct execution of ELF-64 on a better kernel of the Linux. Using an integrated graphical environment (with mixed desktops, not alternative to each other) you get a flexibility never seen to date, as well as using it in a server environment you will get more robust system, quick and easy to administer.

therealkenc commented 7 years ago

@iz0eyj

Or maybe the aim is to develop of WSL then to run the software on a Linux operating system

In a word, yes. In two words, cross platform.

All of which kind of sucked on Windows (read: Visual Studio) in say 2012, and developers fled to MacBooks. Microsoft has since improved this astronomically, and WSL is part of that.

What's your "professional development use case"? ELF binaries running on Ubuntu? I don't think so, unless you are in some specialized vertical scientific and engineering areas. In which case you have a real Linux box.

On the other hand, if you are developing Pokémon Go, where the money is, you are probably doing it on a Mac. For now.

iz0eyj commented 7 years ago

@therealkenc: What you say is absolutely correct, but there is no single reason in the world why a developer should employ WSL instead of a Linux machine. In this sense WSL is absolutely useless.

aseering commented 7 years ago

Ok all -- so, I admit that I've fueled the fire, but this thread is very much off-topic at this point. The ticket is about what has changed since the last stable update. We are no longer talking about what has changed since the last update. We may be talking about what we wish had changed, but that's a different discussion :-)

I'd be happy to continue this discussion if people are interested, but, let's do so elsewhere. I'll shamelessly promote my own forum: https://wsl-forum.qztc.io/ Or feel free to pick another location and post a link.

aseering commented 7 years ago

Also, @iz0eyj -- I'm afraid I don't speak any Italian at all, but if Google Translate is to be trusted, then your statement was already asked as a question here: https://github.com/Microsoft/BashOnWindows/issues/637#issuecomment-278193599

iz0eyj commented 7 years ago

@aseering: OK Adam, immediately went to read your blog, which views your huge capacity can only be interesting. But let me say one last thing: WSL will make it possible not to have to run PORTING to Windows, because everything can be run natively. As an example of how this can become important please refer to the thread on Sage (https://github.com/Microsoft/BashOnWindows/issues/1757), ), software that Microsoft tried to have not succeeded. WSL can represent the point of function between between two universes ... or die as it was for many technologies that preceded it, this will be settled over the next few months.

-This is my last post on this thread.

SRGOM commented 7 years ago

I agree with @aseering- there are bigger and better problems to solve than trying to make GUI work on Linux. I don't know of any notable tools that have a GUI better on Linux than on Windows. The time spent on that would be better spent elsewhere.

crcrewso commented 7 years ago

@SRGOM I can name a few where the GUI is a simple control app for a lot of math. Having one gui (not just one code base with a few windows/linux definitions) for all users greatly simplifies documentation. That being said, until Ubuntu drops X11 those guis work today!

dashesy commented 7 years ago

Is there any plan to add namespace or cgroups support? Even as a slow emulation that would enable running docker daemon in WSL.

sunilmut commented 7 years ago

@dashesy - Adding @jackchammons to comment on planning related stuff. But we have a user voice page for docker and we do take your voice on our user voice page seriously.

therealkenc commented 7 years ago

85 (message)

jackchammons commented 7 years ago

Unfortunately, we can't comment about work that hasn't been released yet. I doubt you will be able to contain your excitement when we release all the cool stuff in the pipeline though.

iz0eyj commented 7 years ago

@jackchammons: Can you at least tell us if it will be easier for users to enable WSL?

fpqc commented 7 years ago

@jackchammons when I first read this comment on my phone, I didn't realize the italics haha.

iz0eyj commented 7 years ago

@fpqc: I had not noticed the italicized I start to have a little fear, my mind goes back to the bad end of Project Astoria

fpqc commented 7 years ago

@iz0eyj eh? I'm pretty sure at least 90% of the work that went into Project Astoria is part of WSL now.

iz0eyj commented 7 years ago

@fpqc: yes it is, but Astoria has never reached the public

SRGOM commented 7 years ago

Here's the blog post I asked for: https://blogs.msdn.microsoft.com/commandline/2017/04/11/windows-10-creators-update-whats-new-in-bashwsl-windows-console/

Thank you guys for the wonderful work. Closing

therealkenc commented 7 years ago

It's a nice post. I can't help by being struck with some irony though:

..most mainstream developer tools now work as expected, including:

  • Dev tools: vim, emacs, nano, git, gdb, etc.
  • Languages & platforms: vim, emacs, nano, git, gdb, etc.Node.js & npm, Ruby & Gems, Java & Maven, Python & Pip, C/C++, C# & .NET Core & Nuget, Go, Rust, Haskell, Elixir/Erlang, etc.

Gdb, git, node (ie libuv), .NET Core, Go and Haskell all have known unimplemented surface and/or performance issues in Creator's Update that are pretty serious blockers. Meanwhile:

...you may also have been following along with some intrepid explorations into running X/GUI apps ... we don’t do anything to block/prevent them from running... but know that we are still focusing all our efforts on delivering a really solid command-line experience

Xlib (and by extension libgtk) is a client TCP socket protocol library that has no known issues since #313 and #493 were squashed. OpenGL (mesa llvmpipe) is a number cruncher that doesn't enter kernel space to begin with.

Just sayin'.

aseering commented 7 years ago

@therealkenc -- well, there's graphical applications, and then there are graphical applications :-) If you're just pushing pixels, then, yeah, that infrastructure is in good shape. But I think it's fair to say that a lot of the infrastructure behind at least some popular desktop applications (fuse filesystems -- #412 , GPU acceleration, etc) has not been a focus.

Also -- are there any specific tickets that tracks node issues related to libuv? I can't find any offhand. I haven't had trouble using node for performance-insensitive tasks personally. And the deluge of commentary from node users about network-interface issues seemed to taper off after that fix landed, and nothing new has obviously taken its place :-)

aseering commented 7 years ago

Also, yeah, WSL team -- I do appreciate this post, and I'm impressed by all the amazing stuff that you've shipped. I agree that the post is overreaching a bit, though. For gdb in particular: The practical gdb user experience has not improved significantly in my experience since prior to Anniversary. (See #204 , for example.) I have periodically been testing it, but I haven't been reporting bugs because y'all have indicated that gdb was a post-Creators priority; no point in filing a bunch of detail tickets when the basics don't work yet, the second-order tickets will just get lost :-) gdb bugs are a major reason why, when I summarized its status to our engineering group at work, I was not able to recommend that our backend team (which develops in C++) offer WSL as a primary dev environment. I appreciate that the broader C++ dev workflow is a technical challenge to support and there aren't that many of us using it, so it makes sense that you wouldn't prioritize it. But that still means that it doesn't work yet :-)

SRGOM commented 7 years ago

Adding @bitcrazed who authored that post and is generally receptive to feedback. Rich, would you be open to trying to push https://github.com/Microsoft/BashOnWindows/issues/2041? Let us know if and how we can help. I don't want WSL to go the way of some other products where people don't try an MS product again because of the initial disappointment (no offense to you guys, you've built an amazing thing). MS has already lost the a lot of PR battles with devs, but this is one feature which will need a good community around it for everyone to benefit.

therealkenc commented 7 years ago

Regarding nodejs, the libuv test suite fails on the following. It also hangs on one test, and skips others. Clean on Real Linux, natch. Full results here. Any fail in libuv represents a fail in node; one would just have to write some javascript that exercises the same functionality as the libuv test.

# Assertion failed in test/test-tcp-bind-error.c on line 56: r == UV_EADDRINUSE
# Assertion failed in test/test-tcp-create-socket-early.c on line 168: r == UV_EINVAL
# Assertion failed in test/test-tcp-oob.c on line 89: 5 == r
# Assertion failed in test/test-tcp-bind6-error.c on line 60: r == UV_EADDRINUSE
# Assertion failed in test/test-udp-create-socket-early.c on line 108: r == UV_EINVAL
# Assertion failed in test/test-poll.c on line 608: 0 != uv_poll_init(uv_default_loop(), &poll_handle, fd)
# Assertion failed in test/test-fs.c on line 613: r == UV_ENAMETOOLONG
fpqc commented 7 years ago

@SRGOM I think it's just a nonstarter. The lxss drivers have frequently moved in tandem with improvements to Windows kernel subsystems. For example, read the post about the winsock kernel and WSL