Most active commenters
  • captainmuon(3)
  • chris_wot(3)
  • simoncion(3)
  • fauigerzigerk(3)
  • JdeBP(3)

←back to thread

Ubuntu on Windows

(blog.dustinkirkland.com)
2049 points bpierre | 91 comments | | HN request time: 2.348s | source | bottom
1. captainmuon ◴[] No.11391214[source]
A few random thoughts:

- Wow, hell is really freezing over!

- The hardest part of running bash and other posix things under windows is filesystem access. Windows uses drive letters and backslashes, unix has a root filesystem with forward slashes. It seems they are taking the same route as cygwin by "mounting" windows drives in /mnt/c (or /cygdrive/c).

- If you just wanted bash and some posix tools, the harder but nicer way would be to patch them to understand windows paths. It is not clear to me that it is even possible, for example many tools assume a path that does not start with a slash is a relative path - while "C:\" is absolute. You would also want to make more windows apps understand forward slashes like "C:/Windows". To make things even more complicated, there are NT native paths "\Device\HarddiskVolume4\Users\Bill", UNC paths "\\Server\share", and the crazy syntax "\\?\C:\MyReallyLongPath\File.txt".

- I am really surprised this works in an appx container. From my little dabbling with modern apps in Visual Studio, I've found that they are incredibly sandboxed - no filesystem access unless you go through a file picker, no network connections to localhost (!?), no control of top-level windows, no loading of external DLLs. You can get around most restrictions for sideloaded apps, but not for windows store apps. That they can now package such a complex application as a modern app (with maybe only the linux subsystem DLLs delivered externally) means that they are slowly moving the modern/universal apps and traditional Win32 apps together with regards to their powers.

- Running a Linux kernel in windows, and then ELF executables on top (without virtualization) is nothing new, see CoLinux or andLinux. If I understand correctly, this new work uses a new Linux NT subsystem. It remains to be seen if this is better (more performant) or worse (if the Linux kernel is just another process, and it crashes, it doesn't take down the system).

- If they actually wrote a NT subsystem for Linux, this opens a whole can of GPL licensing worms, as you'll need to include internal NT headers. However, they say it is closed source, so I wonder how they did it.

- This really stands and falls with how well it is integrated in the rest of the system. I want to install tools in "Ubuntu" via apt and use them from cmd.exe, and vice versa. And long term, a X11/Wayland bridge would be nice too.

replies(7): >>11391240 #>>11391243 #>>11391895 #>>11391990 #>>11392163 #>>11392791 #>>11395063 #
2. barrkel ◴[] No.11391240[source]
I expect they implemented a subsystem for Linux at the syscall level - i.e. they implemented the Linux kernel's interface at the ABI level. No headers would need to intermingle with open source; compile on Linux, run on Windows.
replies(4): >>11391417 #>>11392330 #>>11392474 #>>11392769 #
3. mmebane ◴[] No.11391243[source]
> It seems they are taking the same route as cygwin by "mounting" windows drives in /mnt/c (or /cygdrive/c).

I wonder if this Unix filesystem layer will be able to break the Windows legacy path length limit. If so, the Linux version of Node.js will suddenly become much more useful than the Windows version.

> It remains to be seen if this is better (more performant) or worse

Sounds like performance, at least, will be better. TFA says "it's totally shit hot! The sysbench utility is showing nearly equivalent cpu, memory, and io performance." I'll reserve judgment until I see the fork() benchmarks. :)

replies(3): >>11391381 #>>11391508 #>>11392092 #
4. drinchev ◴[] No.11391381[source]
Just a remark. npm's team fixed long paths in v3.0, so now you have "flat tree".
replies(1): >>11391654 #
5. whatever_dude ◴[] No.11391417[source]
I've read comments where people wrote that NT always had some kind of POSIX subsystem, and it has probably just now been completed and expanded.

Can't find any substantial writings on this, but it seems likely.

replies(4): >>11391513 #>>11391676 #>>11392248 #>>11392369 #
6. bpye ◴[] No.11391508[source]
http://stackoverflow.com/a/67293/3965517 indicates that NT does support fork properly, just not exposed to usermode normally.
replies(1): >>11391876 #
7. barrkel ◴[] No.11391513{3}[source]
Not only did NT have a POSIX subsystem, but once upon a time I used it (when it was packaged as SFU, Services for Unix). It wasn't a pleasant experience.

This will have been quite a bit more work than just a POSIX layer, IMO; POSIX defines a bunch of low-level functions that lie just under the C runtime library, but Linux defines a bunch more that expect a certain view of the world - things like clone(2), which lets you selectively choose what the forked process gets to inherit. POSIX only specifies fork(2). Linux implements fork(2) in terms of clone(2). And POSIX defines the API at the level of C; this will have had to implement the Linux ABI, where it differs from Win64. A minor detail of a bunch of assembly stubs, but work nonetheless.

replies(3): >>11392546 #>>11394779 #>>11418098 #
8. mmebane ◴[] No.11391654{3}[source]
The "maximally flat" package structure in npm 3 solves the problem in most common cases, so I suppose "much more useful" was an exaggeration - if you keep your code in a relatively short base directory such as C:\src\nodeprojects\left-pad-ng\, you'll probably be fine.

Depending on what version ranges dependencies are locked to, you could still end up with a pathological situation which breaks the path length limit, but I've only had that happen once since switching to npm 3, and it was easy to resolve.

9. EvanAnderson ◴[] No.11391676{3}[source]
NT shipped w/ a POSIX subsystem. Later, Microsoft acquired Interix (https://en.wikipedia.org/wiki/Interix), a more fully-featured POSIX subsystem. I have fond memories, in the late 1990's, of running GNU tools on NT under Interix.
replies(1): >>11391955 #
10. pcwalton ◴[] No.11391876{3}[source]
fork() is exposed to user mode, but it's an undocumented private API. Pass the handle of the parent process as the 4th parameter and TRUE as the 5th parameter to NtCreateProcess: http://undocumented.ntinternals.net/index.html?page=UserMode...

The problem is that the Win32 user mode system will fight you every step of the way: CSRSS will not understand what you just did, for example. It's not generally worth it.

11. icefox ◴[] No.11391895[source]
Some long term thoughts:

1) Linux has won the server (web) market. Developers would like to use a Unix box to work on their server code so they typically move to OS X. This could prevent that switch because they can still use Windows to developer their Linux server software.

2) Many projects start out as Linux and stay Linux and are only ported after much time and effort to Windows. Enterprises when faced with a tool that they want to use will also look to switch off Windows. Now rather than the cost of switching they only have to pay to upgrade their windows boxes to use the tool.

3) There is now a major incentive for developers to only build Linux binaries because it will work more places. This might cause a faster drain of developers as they eventually remove all windows specific code and can more easily migrate elsewhere. This feels eerily similar to the OS2 story and no doubt in the next week I expect to see more than a few articles discussing this very thing.

4) It will be much easier for Microsoft to bring much loved Linux tools to Windows so you can expect to see a more rapid increase of tools announced that now work for Windows.

5) Games: What about the graphical layer? Can I write the majority of my game as a Linux binary and only have the rendering bit left over to separately implement for Linux/Windows? Will this spur an increase of cross platform games?

replies(5): >>11392137 #>>11392161 #>>11392208 #>>11392257 #>>11397240 #
12. TeMPOraL ◴[] No.11391955{4}[source]
Same here. It's like everyone forgot there was such a thing as SFU/SUA. I found it much more pleasant to work with than Cygwin.
replies(1): >>11392099 #
13. barsonme ◴[] No.11391990[source]
> - If you just wanted bash and some posix tools, the harder but nicer way would be to patch them to understand windows paths. It is not clear to me that it is even possible, for example many tools assume a path that does not start with a slash is a relative path - while "C:\" is absolute. You would also want to make more windows apps understand forward slashes like "C:/Windows". To make things even more complicated, there are NT native paths "\Device\HarddiskVolume4\Users\Bill", UNC paths "\\Server\share", and the crazy syntax "\\?\C:\MyReallyLongPath\File.txt".

One of the good things about using "newer" languages than C for building cross-platform utilities[0] is that things like that come baked in[1].

[0] - https://github.com/EricLagergren/go-coreutils [1] - https://golang.org/pkg/path/filepath/#IsAbs

14. SNvD7vEJ ◴[] No.11392092[source]
So, max path length in Linux user space will be about 215 chars? (for it to be accessible from Windows user space)

MAX_PATH in Windows = 260

Path to Linux file system root from Windows user space:

"C:\Users\<user>\AppData\Local\Lxss\rootfs\" - about 45 chars

Max depth reachable from Windows user space = 260 - 45 = 215

replies(3): >>11392204 #>>11394446 #>>11395665 #
15. krylon ◴[] No.11392099{5}[source]
> It's like everyone forgot there was such a thing as SFU/SUA

Well, it's not like Microsoft made much of an effort to remind people. It was discontinued as a separate project after about Windows XP. It continued to be part of Windows Server[1], but AFAIK, it was no longer present in the client versions.

[1] at least until 2008 or 2008 R2, I didn't check later versions.

replies(1): >>11392222 #
16. ◴[] No.11392137[source]
17. cbhl ◴[] No.11392161[source]
I imagine that 3) and 5) are hedged by how well Visual Studio is doing.
18. quotemstr ◴[] No.11392163[source]
> Windows uses drive letters and backslashes, unix has a root filesystem with forward slashes.

Windows also has mountpoints. When I use a Windows system, I pretend that C: is the only drive, and mount external volumes under the root, Unix-style. I then install Cygwin in the C:\ root, creating the illusion of a fairly Unix-ish filesystem layout.

replies(1): >>11393245 #
19. to3m ◴[] No.11392204{3}[source]
The NTFS limit is 32768 wchars, though the standard Win32 API doesn't really expose it very well... fingers crossed they used it!
replies(2): >>11392441 #>>11392648 #
20. sbarre ◴[] No.11392208[source]
Your first point describes me exactly (and many other developers I know). I grew up a Windows user, and switched to OS X because of the unix-like command line environment that more closely matched the servers I was working with in my job environments.

I would most likely switch back to Windows as my primary/only machine (because I also like to play video games sometimes) if I had the same kind of unix-like command line environment that I get in OS X.

Right now I basically need 2 computers at home to meet all my needs, but this would allow me to reduce it to one, so I could get a much better one (instead of the 2 mid-range ones I have now).

replies(2): >>11392368 #>>11394465 #
21. SSLy ◴[] No.11392222{6}[source]
last it was avaiable in windows 8 enterprise
replies(1): >>11394875 #
22. dboreham ◴[] No.11392248{3}[source]
It was documented in the original NT manuals in 1992 which I still have on the bookshelf in pristine condition.
23. TillE ◴[] No.11392257[source]
On a practical level, this doesn't change anything for games. Anyone writing games for Linux is already using cross-platform tech like SDL or OpenGL or Allegro, or one of the many increasingly popular high-level engines.

Well, I guess it'll be easier to port roguelikes which use ncurses.

replies(2): >>11392322 #>>11392672 #
24. chris_wot ◴[] No.11392322{3}[source]
I'm really hoping this allows me to compile LibreOffice on Windows. Perhaps if I worked out how to incorporate the WINE libraries it might make my life easier...
replies(1): >>11392409 #
25. blinkingled ◴[] No.11392330[source]
They actually do syscall translation on the fly from Linux to Windows. I suppose they had to add some calls to Windows for things in Linux that did not exist on Windows (various console ioctls for e.g.) but it is still a one to one translation.
replies(1): >>11392436 #
26. 13of40 ◴[] No.11392368{3}[source]
> I grew up a Windows user, and switched to OS X because of the unix-like command line environment that more closely matched the servers I was working with in my job environments.

Out of curiosity, why would you not just go with a Linux desktop for that?

replies(12): >>11392577 #>>11392578 #>>11392619 #>>11392621 #>>11392642 #>>11392651 #>>11392661 #>>11392930 #>>11394153 #>>11394378 #>>11394527 #>>11396211 #
27. nradov ◴[] No.11392369{3}[source]
Microsoft implemented a minimal POSIX subsystem in Windows NT 3.1 as a checklist feature because at the time some government procurement rules required POSIX compatibility. They didn't expect anyone to actually use it and it was so limited that you couldn't really use it for much in practice.
28. simoncion ◴[] No.11392409{4}[source]
> I'm really hoping this allows me to compile LibreOffice on Windows.

Is this not helpful?

https://wiki.documentfoundation.org/Development/BuildingOnWi...

LibreOffice has official Windows builds, so I would expect that they can already build the software on Windows.

replies(1): >>11392954 #
29. jychang ◴[] No.11392436{3}[source]
This isn't really easy to implement for some syscalls in NT, like fork(2) for example.
replies(2): >>11392444 #>>11395586 #
30. ape4 ◴[] No.11392441{4}[source]
Its details like this that will make or break this.
31. blinkingled ◴[] No.11392444{4}[source]
Yeah, it was a MS Research project that did the work.
32. hughw ◴[] No.11392474[source]
They could call it ENIW.
33. LukeShu ◴[] No.11392546{4}[source]
To nitpick: On Linux, glibc implements fork(3) in terms of clone(2). Linux still has an independent fork(2), but nothing uses it.
34. noelsusman ◴[] No.11392577{4}[source]
I'm not that guy but I followed a similar path. For me, there is no laptop that truly competes with the MBP and runs Linux with no issues (I've never liked Thinkpads). The recent Dell XPS Dev model is the only product that has come close, but before that there was basically nothing.

I always use Linux for desktops., I see no reason not to.

35. Dobbs ◴[] No.11392578{4}[source]
Not the OP, but for me at least I did. And it was unstable and didn't work very well. My OSX laptop "just works", that isn't to say it doesn't have issues but the amount of time I spend futzing about because of driver issues, sound issues or wifi issues is drastically reduced.
36. centrinoblue ◴[] No.11392619{4}[source]
as someone with a similar history (front-end dev) I switched from Windows to linux after XP and then on to OSX in order to develop for iOS apps.

I would never go back to windows but would happily move back to linux if I had to

EDIT: I should note I didn't expect to like my Macbook air so much (fantastic machine)

37. uxp ◴[] No.11392621{4}[source]
I'm not who you asked, but because I like to spend my day debugging my terrible code, not my desktop.

Before you ask, yes I do have a Linux laptop (Acer C720P ChromeBook, unlocked with Debian + Gnome), and with all the sudden issues that pop out of seemingly nowhere (my latest dragon is a recurrent kernel module crash that can fill my disk up with .core files in 10 minutes), I've switched back to a 13" rMBP. Though, I have heard that 2016 is going to be the year of the Linux Desktop...

replies(1): >>11398000 #
38. captainmuon ◴[] No.11392642{4}[source]
I'm also not him, but I switched to OS X for a while, too. I couldn't afford a MacBook, so I actually ran a Hackintosh.

The reasons were 1) it ran the unixy stuff I needed for university AND modern games at the same time, and 2) it was boring and conservative. In a time where Linux and Windows were changing and breaking (Windows 8, Gnome 3, ...) it was nice to use something stable, well-tested, and polished.

39. NateDad ◴[] No.11392648{4}[source]
I'm pretty sure I saw something in one of the articles that mentions they explicitly use the extended \\?\ form of paths, which gets around the 255 character path limit.
replies(1): >>11397576 #
40. wtallis ◴[] No.11392651{4}[source]
Because OS X has historically been vastly better than Linux at all the non-server stuff, and comes pre-installed on the good laptops. The gap is a lot smaller than it used to be, but Apple is still the easiest choice for desktop/laptop Unix.
41. cturner ◴[] No.11392672{3}[source]
Non-trivial audio is still difficult to do cross-platform. You can load songs in SDL, but it's not suitable for writing something like a tracker. There's a library coming through libsoundio that looks promising for cross-platform, but it's still early days - I haven't been able to get it to compile yet.
replies(1): >>11392730 #
42. anthk ◴[] No.11392730{4}[source]
OpenAL.
replies(1): >>11397192 #
43. captainmuon ◴[] No.11392769[source]
From the screenshots, it seems there is a full kernel in there - e.g. you have /proc/cpuinfo, and it identifies as Linux 3.4.0.

If they just implemented all Linux syscalls on top of NT, that would replace a Linux kernel. There would be no Linux kernel running on top. But in that case they would also need to emulate stuff like /proc. (This is the "reverse Wine" scenario.)

So I personally think it is either: - There is no new subsystem, this is just a linux.exe running the Linux kernel as a process, like CoLinux does or - There is a new subsystem. One way to do this is to port Linux to a new "architecture", namely the NT HAL. You'd call into the NT native API from the linux kernel, which would mean you'd have to put the headers with the native APIs you use under the GPL.

Armchair kernel development is fun :-)

replies(4): >>11393006 #>>11393062 #>>11393220 #>>11393332 #
44. BrandonLive ◴[] No.11392791[source]
Regarding the AppX thing... Actually AppX packaged apps (even from the Store in AppContainer) have always had direct filesystem access, but only from their install directory and to/from their AppData directories. It's only access outside those areas which requires use of the picker and/or library capabilities (which both go through a broker process).

They can also of course load DLLs, and there are APIs for moving your app Windows around (with some limitations).

That said, I do not know exactly what they're doing here, and it may be using some new capabilities being added to the system in the rs1 release.

45. fauigerzigerk ◴[] No.11392930{4}[source]
Same history here. I did actually use Linux for quite a while but ultimately gave up because Linux just isn't good at the one job only an operating system can do, which is to make the hardware available in a reliable and efficient manner.

I just got tired of fixing sound issues, trying to make a scanner work or investigating CPU states to fix heat and battery draining issues on yet another laptop. Ultimately, I think, all of this is a result of the unresolved issue of who should write and test device drivers.

It doesn't help that I disagree profoundly with the prevailing package management philosophy of Linux distributions, but that is a comparably superficial problem that can be worked around.

replies(2): >>11393645 #>>11394602 #
46. chris_wot ◴[] No.11392954{5}[source]
It means I need to install Visual Studio. Right now I'm only developing on Mac OS X and Linux. On top of this, every time Microsoft updates Visual Studio, things like firebird tend to break :(

I'd rather use a toolchain I know better. In fact, I'd love to use clang on Windows.

replies(2): >>11393401 #>>11393687 #
47. jclulow ◴[] No.11393006{3}[source]
Speaking from experience working on the LX brand (the Linux emulation layer for Joyent SmartOS), we would not have gotten very far with our emulation layer if we did not also faithfully emulate quite a lot of /proc. For example:

    $ grep DESC /etc/lsb-release
    DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
    $ uname -a
    Linux kappa 3.13.0 BrandZ virtual linux x86_64 x86_64 x86_64 GNU/Linux
    $ wc -l /proc/cpuinfo
    608 /proc/cpuinfo
    $ /native/usr/bin/uname -a
    SunOS kappa 5.11 joyent_20160204T173314Z i86pc i386 i86pc
48. xorblurb ◴[] No.11393062{3}[source]
There is no need to use actual Linux code to implement its interface, so no GPL'ing of NT, and implementing /proc is not a big deal compared to other things.

And this seems to be implemented as an NT subsystem, which makes tons of sense.

49. zzzcpan ◴[] No.11393220{3}[source]
There is a link to a full demo someone posted here [1].

They don't run the linux kernel at all. That /proc/cpuinfo is a part of a limited subset from what procfs usually offers. They enter their linux compatible "subsystem" via a bash binary, which could probably be any linux elf binary, since they run them unmodified. So, it looks like they actually implemented most of the syscalls with some of them emulating necessary parts of linux environment, like procfs.

[1] https://sec.ch9.ms/ch9/5db6/8ee786b7-9fc5-45bf-94d0-16ea9176...

50. JoBrad ◴[] No.11393245[source]
And you can also use forward slashes. I've used them in applications (Java apps, NodeJS apps, etc) and in the command line since at least Windows 7.
replies(1): >>11393833 #
51. teacup50 ◴[] No.11393332{3}[source]
FreeBSD's linux compatibility layer does exactly this; it reports as "Linux", there's a linprocfs implementation that provides a Linux /proc, etc.

It's a lot easier to emulate syscalls than it is to do something like CoLinux. Additionally, I can't imagine Microsoft would EVER let GPL'd Linux code into their kernel.

52. voltagex_ ◴[] No.11393401{6}[source]
The latest Visual Studios support clang.
53. vacri ◴[] No.11393645{5}[source]
> Linux just isn't good at the one job only an operating system can do, which is to make the hardware available in a reliable and efficient manner.

It's not the best desktop environment out there, but apart from desktop, linux is the most popular system at every step from small embedded systems to the most powerful supercomputers. That wouldn't be the case if it couldn't make hardware available in a reliable and efficient manner.

replies(2): >>11395227 #>>11395888 #
54. simoncion ◴[] No.11393687{6}[source]
> It means I need to install Visual Studio.

I mean, sure, but (unless things have changed dramatically in the many years since I was a Windows dev) you don't have to do anything more than install VS. The compilers and nmake can be used without opening the GUI. IIRC, you can feed a VS project file (or -I'm pretty sure- a solution file) to nmake and get the same result you'd get from loading the GUI and pressing build.

replies(2): >>11393725 #>>11394736 #
55. chris_wot ◴[] No.11393725{7}[source]
Definitely time for me to get off my backside and install Visual Studio then...
56. jcrawfordor ◴[] No.11393833{3}[source]
The forward slash (/) as a directory separator has always been acceptable to NT. One source says that it's been acceptable to DOS since DOS 2.0, although I don't have a lot of backing on that.

The only place that / as a directory separator doesn't work is when interpreted by cmd, as it's then ambiguous with DOS-style switches. And even then, modern cmd tries to understand / properly when possible. Most of the time it works as long as it is not the first character of a path (which you would not frequently see in Windows anyway), as there's then no way to tell it apart from a switch with a long name.

The canonical representation of paths in Windows uses a backslash, but 95% of the time the slashes are interchangeable.

replies(2): >>11393977 #>>11395464 #
57. quotemstr ◴[] No.11393977{4}[source]
IIRC (it's been a while), the native NT API does _not_ accept backslashes; win32 converts forward slashes to backslashes when passing along filenames to NT. The distinction doesn't matter very much, though, since very few people use the NT native API.
58. dang ◴[] No.11394105{5}[source]
This comment breaks the HN guidelines. Please post civilly and substantively, or not at all.

https://news.ycombinator.com/newsguidelines.html

59. Retra ◴[] No.11394153{4}[source]
In the same boat: I bought an MacBookPro bacause I wanted a nice (new) machine with a decent keyboard/touchpad that didn't force me to purchase Windows. And the keyboard and touchpad on these things are phenomenal.
60. andersen1488 ◴[] No.11394378{4}[source]
Linux on the desktop is awful, and anyone who says otherwise is in denial.
replies(3): >>11394486 #>>11395347 #>>11395445 #
61. wvenable ◴[] No.11394446{3}[source]
Well the very first thing I'd do is symlink/junction point that to something like C:\Users\<User>\Linux or even C:\Linux if I feel particularly single-user.
62. randiantech ◴[] No.11394465{3}[source]
This absolutely represents my case. I bought a MBP just because unix-like command line. IF Windows would provide a this feature at that moment (and giving the case this thing work as intended) I mostly probably would bought an XPS laptop.
63. cyphar ◴[] No.11394486{5}[source]
Or maybe they don't need a bunch of proprietary software? I've been running Linux on all of my desktops for the past few years, and I don't find myself wanting anything more. When doing research, working on free software, etc. I don't need anything I can't get on Linux. I don't play games anymore, so that basically removes most of the "Linux on the desktop" issues that people have.
64. brianwawok ◴[] No.11394527{4}[source]
For my desktop.. it does non worky things. For example I Zwift and I Game. Neither work well enough in Linux.

For my laptops... always had linux laptop problems. Sometimes have gotten really close to all the way working.. but then maybe I will find out my battery drains in 2 hours because some power saving feature is broke in my kernel and I cannot be arsed to go fix it, rather just buy a macbook.

Now for this vs macbook.. it depends how next macbook line looks. I need a 32GB ram laptop. If Apple skips that ship again, this will start to look pretty dang appealing.

65. viraptor ◴[] No.11394602{5}[source]
That's anecdata. Of course it can work the other way too. I've got a printer/scanner which "just works" with Linux. On Windows however they need crazy, proprietary driver/application which always lives in the traybar and tries hard to take over native windows settings.
replies(1): >>11395832 #
66. yuubi ◴[] No.11394736{7}[source]
Confirming you can feed a .sln file to msbuild (I did it the other day), no idea about whether nmake accepts them. Source: https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin3... .
replies(1): >>11394851 #
67. alwaysdownvoted ◴[] No.11394779{4}[source]
I still use SUA every day when I'm forced to use Windows. (I also run Linux binaries on BSD.)

SUA is based on an old version of BSD, not GNU. tcsh, csh and sh. The compiler works. There is an old version of lex. For some of the userland, Windows binaries are provided, such as vi. It's better than nothing.

Why did MS remove SUA from Windows 10? What harm would it do to remain an optional add-in as it was in Windows 7?

Why do users have to upgrade to Windows 10 to use Linux binaries? Seems like Microsoft will do _anything_ to get users to upgrade. What are the privacy implications of Windows 10? Microsoft is very untrustworthy.

Will users be able to run their own Linux binaries on Windows?

Windows has never been a "pleasant experience". It's the unpleasantness of it that makes the alternative, UNIX, so appealing.

replies(2): >>11396094 #>>11418162 #
68. simoncion ◴[] No.11394851{8}[source]
Ah, shit. I couldn't remember if the damn thing was called msbuild or nmake. [0] I guess one should replace all instances of nmake in my comment with msbuild.

[0] I do know that they are both parts of the VS build tooling. ;)

replies(1): >>11395056 #
69. krylon ◴[] No.11394875{7}[source]
I stand corrected.

Thanks for the info!

70. yuubi ◴[] No.11395056{9}[source]
I think nmake is or was a normalish make.
71. rsync ◴[] No.11395063[source]
"The hardest part of running bash and other posix things under windows is filesystem access. Windows uses drive letters and backslashes, unix has a root filesystem with forward slashes. It seems they are taking the same route as cygwin by "mounting" windows drives in /mnt/c (or /cygdrive/c)."

How do these ubuntu tools interact with the rest of the windows system that they are running on ?

Can I 'kill -9 explorer.exe' ?

Can I touch a file in /mnt/c/(whatever)/Desktop ... and have that file actually show up on my windows desktop ?

replies(1): >>11395254 #
72. umanwizard ◴[] No.11395227{6}[source]
It's not the most popular system on phones, unless you are using "Linux" in the correct sense to mean the kernel. But I believe GP was using it in the colloquial sense to mean GNU/Linux, since this thread isn't really about the Linux kernel, but the ""Linux"" userland.

Android certainly doesn't have the userland that is typically (incorrectly) called Linux.

replies(1): >>11395655 #
73. timgws ◴[] No.11395254[source]
PIDs from Windows are not exposed when looking at /proc, so I am guessing you will not be able to `kill -9 explorer.exe` unless there is some real voodoo going on (and then it would not be POSIX compatible, anyways).

I think the command that you meant to say was killall :) `kill` will only kill pids, not process names.

replies(1): >>11415872 #
74. paulnechifor ◴[] No.11395347{5}[source]
It depends on what you do. It's terrible for media things, but it's the best OS for programmers and I don't have to go along with every UI trend Microsoft/Apple are implementing this week.
75. kagamine ◴[] No.11395445{5}[source]
That being the opposite of my experience. While we're making bland sweeping gestures, I have been having it easy developing on Linux (specifically Bodhi with Moksha DE) while fixing my partner's Windows PC every week because it fails constantly. Hell, Windows can't seem to go from location A to B and change networks without a meltdown. It's an awful OS with awful usability, a file explorer that is awful to use and a file system that makes development feel like physical pain.

There, now we're even. Let's get back to EEE, and the real porblems and advantages with this news.

76. bboreham ◴[] No.11395464{4}[source]
> One source says that it's been acceptable to DOS since DOS 2.0

I can confirm that from personal memory.

At the time, the biggest vendor of UNIX-like systems was Microsoft (Xenix), so compatibility was a benefit. They soon sold that product off, though.

77. willtim ◴[] No.11395586{4}[source]
It's not possible to implement fork efficiently on Win32/64 which cygwin uses, but are you sure this is the case when using the NT native APIs?
78. vacri ◴[] No.11395655{7}[source]
The parent was specifically talking about making hardware available for use. That's kernel stuff, not GNU userland.

But if you want to talk about userland, then you need to buy supported equipment. OSX doesn't work with a ton of equipment out there - as that equipment does not come with OSX drivers. Windows also works like shit when it doesn't have the drivers - anyone who has had to install XP regularly will quite happily attest to just how terrible it is at supporting network cards before you install drivers.

Then, of course, there's the bonus of the AMD Catalyst driver installer program for windows: at least as recently as win7, if you didn't have drivers for video, it fell back to VGA graphics. The Catalyst driver installer was too large to be seen on VGA - you couldn't see the bottom of the installer window to see what was going on, and couldn't drag the window high enough without a hard-to-discover key chord. :)

The argument to "buy stuff your operating system supports" sounds like a cop-out, but it really isn't. OSX, for example, is difficult to make run on things other than Apple-designed computers, but if you complained about it, people would write you off as an idiot.

79. batat ◴[] No.11395665{3}[source]
Kinda bad news for node.js developers

  /home/user/dev/my-proj/node_modules/concurrently/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex
80. fauigerzigerk ◴[] No.11395832{6}[source]
>That's anecdata

Sure, that's what this whole thread is about. But I'm afraid that there is causality involved that we know about without collecting any sample data at all.

Developers of Linux device drivers for consumer devices quite often do not have access to all the hardware and information they need. And hardware makers quite often do not make high quality Linux device drivers for their consumer devices. For most consumer laptops, the vendor will not do integration testing to make sure everything works well together on Linux.

I don't think the right response to that is to deny that the average laptop or peripheral will work better with Windows. The right response is to make it clear that you have to make very deliberate hardware choices if you plan to use Linux and accept that much of the hardware you can use is always going to be slightly dated. And that is in fact what many Linux advocates are saying.

Choosing a Mac also restricts your hardware choices quite dramatically after all, so if a broad selection of hardware is your goal, Windows is the only game in town.

81. fauigerzigerk ◴[] No.11395888{6}[source]
I was speaking in the context of the question I was replying to, which was "why would you not just go with a Linux desktop for that?"

More specifically, it's the state of Linux device drivers and integration testing for laptops and consumer peripherals I'm complaining about. That's not a result of any inherent deficiency of the Linux kernel or its design. It's ultimately an economics issue.

82. ◴[] No.11396094{5}[source]
83. sbarre ◴[] No.11396211{4}[source]
Because when i switched to OS X - over 10 years ago - I still needed access to Photoshop, MS Office and other modern business tools, most of which are still not available on Linux to this day.

And also because the user experience of OS X (and the "just works" aspects of the OS in general) is far above that of any Linux desktop.

84. yoklov ◴[] No.11397192{5}[source]
OpenAL is neither good nor reliable. Sadly, nothing on linux has the quality/reliability of DirectSound.
85. yoklov ◴[] No.11397240[source]
I wouldn't expect (commercial) games to use this, even indies. Gamers (on Windows) are extremely harsh if you ship a buggy product, and this tends to be what happens for most linux ports. Gamers on linux are more forgiving since it's very hard to guarantee quality on linux, so they're more used to it. I'd be surprised if anybody wants to give that up on windows.
86. NateDad ◴[] No.11397576{5}[source]
Just to verify, watched a video that explicitly said that it does get around the path limit (though if you then go look at those files in explorer, explorer "has problems" whatever that means).... but that's just because explorer still uses the legacy APIs that do have a path limit.
87. tingol ◴[] No.11398000{5}[source]
Measuring Linux maturity by chromebooks is silly though. It's a hack. Linux on bare metal works really well these days. Especially if you use a machine that has linux in mind (ie dell xps).
replies(1): >>11399484 #
88. btym ◴[] No.11399484{6}[source]
I briefly tried switching to Ubuntu on my desktop a few months ago after being unable to compile some CUDA project on Windows. Gave up after spending several hours trying to figure out why it refused to set one of my monitors to anything other than 1024x768. Linux is easily the best operating system for productivity, but there are still too many issues to make it as comfortable as OSX or Windows for everyday use.
89. JdeBP ◴[] No.11415872{3}[source]
This was one of the selling points of the old Windows NT POSIX subsystem (the Interix-derived SFU/SFUA one) over its predecessor. Programs such as "ps" and "kill" can "see" Win32 processes, with POSIX process IDs.

* https://technet.microsoft.com/en-gb/library/bb463219.aspx#EH...

* https://technet.microsoft.com/en-gb/magazine/2005.05.interop...

90. JdeBP ◴[] No.11418098{4}[source]
> It wasn't a pleasant experience.

In my experience the differing perception of pleasure, certainly with the Interix-derived Windows NT POSIX subsystem rather than the original one, is usually a result of the toolset being BSD rather than GNU. I don't have much trouble with the BSD toolset, myself, especially when switching between Windows and an actual BSD. (-:

In addition to the fact that a number of the "Does this new subsystem ...?" questions are answerable as "No; but the old POSIX subsystem did." (https://news.ycombinator.com/item?id=11416392) the POSIX subsystem has some stuff that we're simply not going to get with a Linux subsystem that has vanilla Linux binaries including libraries right down to the system call level. There are things that only come by adjusting libraries and binaries, because they are above the raw system call level. The POSIX subsystem integrates the user account database access library routines with the Windows SAM, for example. So "ls -l" shows the actual Windows usernames. The POSIX subsystem also comes with a "service" command that understands and can work with the SCM, for another example.

I'd like to see the POSIX subsystem reintroduced. It's a major reason not to use Windows 10.

91. JdeBP ◴[] No.11418162{5}[source]
> The compiler works.

... but is too outdated to be capable of bootstrapping clang. There's very probably a long chain of bootstraps that would achieve it, but there's not a direct route.

> Will users be able to run their own Linux binaries on Windows?

The answer to that is easily determined from the demo video that Microsoft published. In it, Russ Alexander compiles a program with (Ubuntu binary) GCC and and runs it.

Its implicit int in the declaration of main() was jarring. (-: