I think Bash on Windows is a great compromise.
Your exposure to the kernel in the last 8 years is not representative of 90+% of computer users.
I think this would be a total disaster that killed Windows, personally.
That would be "wine", which has worked surprisingly well several years.
Similarly, my laptop probably wouldn't be able to handle a production workload for any length of time...but it doesn't have to either.
Perhaps you've been lucky enough to move to more modern systems, but you're in the tech circle. For everyone else, it's not an easy option. Have you ever worked for a fortune 500 company? There are systems that are nearly 20 years old with billions of dollars running through them. Moving that is not a light decision.
One of the most widely used OS's ever is called Tron. Does that effect me? Not really. Is it important? I think so. I thought so at least enough to do some reading on the subject. Was it important from a CoSci standpoint? Maybe. NT is important from multiple angles, as well. Also, it's importance doesn't take away importance from the things that may actually touch your life. Such is the nature of things.
LSB is mostly a superset of POSIX. POSIX is a subset of SUS. OSX is SUS compliant, though not POSIX certified. Windows is POSIX certified though not SUS compliant. And no one is LSB certified except a few Linux Distros.
This leaves me wondering exactly what target Microsoft should be aiming for since everyone seems to be playing by their own rules. It's like playing Monopoly with your friend's family who has their own house rules that aren't really like your family's house rules both of which are incompatible with the official rules.
---
"Moving forward we will be investigating new areas of interest while continuing to support the following scenarios:
+ GNU command line tools such as grep, sed, and awk
+ File system and symlink support within the WSL environment
+ Ability to run apt / apt-get for installs, updates, and package testing
+ Basic functionality for languages such as NodeJS/npm, Python, Perl
+ Command line tools such as Vim, Emacs, Git, and SSH"
https://blogs.msdn.microsoft.com/wsl/2016/07/08/bash-on-ubun...
I think it's telling that they called it the "Windows Subsystem for Linux" where are their prior Subsystems (SUA/SFU) were for "Unix".
At this point you have platforms like Electron, which run in a browser environment. Java software which runs inside JVM. Now there's even linux sub-system inside windows, etc.
I think there is a way to do it the other way around. MS put effort in creating something similar to WINE and make a special "Windows POSIX", which let's say for the next decade is released along with the classic Windows ( Same as NT before ). Where they try to emulate / rewrite the software piece by piece until the stability is reached to switch.
I don't see this as an impossible idea to me. Actually if they did something like this I will be so happy to switch back.
As for a POSIX sub-system on Windows, well there once existed such a system that was near-compliant, but MS stopped supporting it a few years back. As for Wine, I think cygwin fulfills a similar role.
Anyway, you want your tools. You might even want your familiar filesystem and its hierarchy. I think the primary reason Microsoft deemed it worth it to implement Bash on Ubuntu on Windows was to provide webdevs access to the same tools they had on osx/linux.
All in all, I think a bit of reading on these subjects would help, because I think you're confusing the kernel with the userland.
Note: I'm faily young and inexperienced, and when I heard the "Bash on Ubuntu on Windows" announcement, I didn't really know what the meant. But learning about these bits on wikipedia/various blogs was certainly interesting.
They simply can't afford it, not because they lack the resources but from a strategic point of view. See the other comments talking about compatibility. Windows works for many, many, many people and businesses. It would be a suicide move. People, and even more importantly businesses, don't jump on any hot new thing just because it's available, because change has huge costs in an enterprise context. If Microsoft ever tried to pull the rug from under them, you can be pretty sure that would be the end for them.
It is necessary though. Microsoft seems to be preparing for a post-Windows eventuality as well. Doesn't mean they have to write their own operating system.
Edit: it is mostly for azure anyway... I think Microsoft might as well ride Windows as long as it can and give it up.
Then, can you explain why the C library provided by Microsoft in their compilers has such slow 'realloc()' implementation? (e.g. expanding a 10MB allocation to 20MB using realloc())
Just a few days ago there was post about how NT's IO by default is more performant.
Yeah, the NT kernel design is pretty frickin awesome. There is a great book about the run up to NT's release. He took on the job because he thought that writing operating systems would happen fewer and fewer times in the future. I think he actually said that he thought this might be one of the last times a commercial OS would be written from scratch.
The thing about operating systems is that everyone thinks they know everything there is to know, but wow are they off the mark.
The idea that windows=bad across the board is terrible.
Most don't even know what VMS is/was.
Why is NT better than * nix (particularly Linux)? Two areas mainly:
- Virtual memory
This one's pretty obvious if you've ever written a malloc. Compare VirtualAlloc² with the mess of mmap/madvise/mprotect. I'm not even sure you can get the nice explicit reserve/commit of Windows with pure POSIX APIs.
Linux in particular used to have a very questionable virtual memory implementation³, but I suspect it's been much improved.
NT can demand-page kernel memory; Linux kills processes if the kernel needs memory.
- Async I/O
Here's how platforms do async I/O:
POSIX: You don't.⁴
Linux: Sleep. Wait for the kernel to wake you up when something happens so you can yell “IS ANYONE READY YET? HOW ABOUT NOW?!” at your file descriptors.
FreeBSD: Like Linux, but the API is less stupid.
Windows: Tell the kernel to run a callback when an I/O operation completes.
Personally I'm really excited for ReactOS. Linux is a 1970s kernel design.
---
¹ Well, Solaris and DragonFlyBSD have a lot of good ideas and good implementation.
² https://msdn.microsoft.com/en-us/library/windows/desktop/aa3...
³ https://lwn.net/1999/0121/a/vmreview.html
⁴ Okay okay, you have select(2) and poll(2), but then you're using select and poll.
The document you're referencing is written in 1999. I suspect a lot has changed since then.
> FreeBSD: Like Linux, but the API is less stupid.
Yeah, I covered epoll (and kqueue, which also applies to Solaris and OS X).
The NT Kernel originally was POSIX compliant and there was a UNIX user-mode subsystem available called "Windows Services for UNIX". Unfortunately over the years the distinction between the NT Kernel and the Win32 subsystem eroded and Microsoft eventually dropped the Windows Services for UNIX subsystem around 2008.
With Vista however, the MinWin initiative took off to extricate the Win32 Subsystem from the NT Kernel. This was carried forward with 7 and completed for 8. It's because of this separation that they were able to share the same Kernel in Phone, RT, Desktop and Server OSes. It's also how WinRT and UWP apps can run on Phone, RT, Desktop and Server because they do not rely on the Win32 subsystem to operate.
The Windows Subsystem for Linux is Microsoft's new Linux (not UNIX) user-mode subsystem.
What features do you want from POSIX that Windows doesn't already provide?
Is the Linux subsystem in Windows 10 not good enough to handle this? What *nix applications do people want to be able to run in Windows that they can't already?
5 years ago I switched to OS X, because I think it's closer to the deployment environment I use as a dev.
However what OS X did ( when they killed the old one - MacOS 9 and rewrote the whole thing on UNIX based kernel ) was the single greatest move, which I think pays off even these days.
This is what I hope should happen with Windows. They should decide on POSIX kernel and completely rewrite most of it. This will put Windows as an option for me.