Maybe to be able to run linux programs on a windows machine? Could be good for developers targeting the linux platform, especially with the now ported .NET platform, MSSQL and so on.
As well as what others have said, it might long-term give an easier path for developing things that work across platforms too.
Lots of companies spend a lot of effort to run code on multiple platforms (SQL Server recently announced Linux support; .NET core has supported runtimes on Linux too and tons of OS languages have runtimes for multiple platforms). It would be great for both devs and end-users if the number of things that are different between platforms was reduced.
Perhaps avoid dual-booting or VMs in environments where you need both Linux and Windows.
This sounds either a bit like CoLinux, or like the POSIX subsystem revived. Remember: Windows has kernel support for different userspace APIs, and the well-known Windows API is just that: A user-mode subsystem running atop the kernel (there have been OS/2 and POSIX subsystems before).
My guess for the marketing target is developers who use Macs because their tools of choice are native to POSIX, with Windows API implementations as second-class citizens at best.
Maybe things have improved since, but at least a few years ago, it was always a crapshoot to try to get some new open source tool set up on Windows/Visual Studio, vs. batting close to 1.000 on Mac with configure && make && make install.
Another way to put this is that the world Terminal.app gives you access to is a huge selling point for developers, and this is part of Microsoft's attempt to provide something as useful.
I can't +1 this one enough. I have some developers on my team who insist on using Docker on a Windows setup, and it is painful to use with VirtualBox.
OSX is better because it doesn't feel too different from Linux (aside from setting docker machine ENV variables). Still virtualized so you take a performance hit.
The Docker beta that was announced is using Windows 10 builtin virtualization APIs. In theory when utilizing kernel virtualization features there will be less overhead (closer to the metal), but still overhead.
I wonder how they will make Ubuntu happen on Windows. Reading some of the comments, some speculate a subsystem, while others suggest an interoperable interface.
Edit: reading bitcrazed's comments it looks like it will be implemented a la WINE. No need to recompile binaries made for Linux x86; you'll be able to run apt packages from Ubuntu out of the box.
My office IT will only allow and manage Windows PCs on directory server. So I need to run VirtualBox everywhere to develop in Linux. If I could cut that step out, that wouldn't be a bad thing.
IT departments not worrying much about what you do as the superuser inside a virtual machine that is running only with your user credentials, is one thing. But tell them that you're now going to be installing and running random Ubuntu softwares, not in a virtual machine but natively within Windows, and they will prick up their ears and start to take notice. Even the ones who are alright about what's being installed will want to think about things like control over what packages can be installed and locally-hosted repositories. "So, tell me how I set group policy for your apt-get installer?"
And if that is not a worry, let me relate some personal experience of using the Windows NT POSIX subsystem. Anti-virus programs, particularly the ones with the whizz-o features of "let's check what 'the crowd' said about this program" or "let's run this program for a little bit in my controlled execution environment to see whether it does malware-type things", don't like this a lot. I had to go through the unblocking of "/bin/foo is a rare program" so often, for everything from "ls" to "ftp", that it was in danger of becoming an automatic reflex.
Goodness knows what the likes of DeepGuard will make of programs that use a wholly new set of system call entrypoints into the kernel. (-:
Shell and command line tools: Linux users can be more productive in Windows now. The command line interface is very confortable for do a lot of things. If you need to do batch work (rename a lot of files, onvert some images, add metadata to your mp3 collection), you can do it now in the console. Before this, the alternative in windows was to use a sub-par shell, or install several graphical application and expend your evening clicking here and there.
Applications: Now you can install and configure applications like apache, postquesql, etc. on windows in the same way you do in linux/other unix platforms.
Strategically, this is a big win for Microsoft. Now they can go to their clients that are moving or thinking about moving to Linux and tell them "There's no need to migrate, just install your apps in Windows."
The POSIX subsystem was so crippled that it was unusable (no graphics or network). SfU was neither free nor included by default, except for one free version which also happened to be its last. Also at those times Linux did not have the market penetration that it currently has with Android.
You confuse the POSIX subsystem with SFU/Interix (originally called "OpenNT", but soon renamed to "Interix". Later bought by Microsoft and rebranded as "Services for UNIX"):
I specifically remember that I read that (it was a checkbox feature) about the ancient POSIX subsystem. The SFU/Interix system was a bit more capable, I think? I did install it at one time, but never really used it.
Edit: yes, that is in fact exactly what the first link you gave says: The POSIX subsystem was added as the POSIX standard had become very prevalent in procurement contracts. [...] This original subsystem was, I think it's fair to say, deliberately crippled to make it not useful for any real-world applications. Applications using it had no network access and no GUI access, [...] SFU contains a full POSIX environment, with a Software development kit allowing applications to be written that have access to networking and GUI API's.
What I heard was that they took advantage of every function that could technically be "implemented" by setting errno appropriately and returning an error value, rendering the subsystem useless while still allowing the box to be checked off.
I do the same thing! Even now, WiFi has poor support on Linux with many computers, especially newer business tablets, so VMs or remote desktops are the only options. This will mean I can get full performance.
It does, but then find me a Linux user who doesn't dual-boot into Windoze for desktop apps. This way, you save one reboot. I wonder, however, how stable this will be...
Fortunately for me, the only game I really care about (Civ5) is available on Linux thanks to SteamOS. It certainly seems as though I am in the tiniest of minorities, though.
If by 30 you mean 20 gigs then, yes. Also, 20 gigs on a very decent 256GB SSD costs around $6.40. I don't know how much your hourly wage is, but the time Visual Studio saves me compared to other development platforms makes up for that money pretty quickly.
I was just being cheeky, honestly, but that price doesn't scale linearly, at least not on a laptop. A 512gb SSD might have a higher cost-per-GB than a 256GB SSD.
I don't run Windows and consequently haven't used VS in any kind of intimate detail, I'm sure it's great if you like dealing with IDEs. I feel more productive with Vim, tmux, GHCI, and GraspJS for doing of my web development.
That might be true; I had a slightly tainted image of VS when I had to use it three years ago, and after everything I needed was installed, I only had like a gig left (this was on a weak, underpowered netbook, admittedly).
In retrospect it's not entirely VS's fault, though I just found it amusing how quickly it ate through my storage when Vim only takes like 90 megs.
I agree. I use a VM for Windows as well. It's probably safer to keep Windows sandboxed away in a VM. I know this doesn't work well for everyone, but any app I use in Windows is not that resource-intensive. I haven't tried WINE recently, but due to headaches years ago, I tend to avoid it and just fire up the VM.
I would. Professionally I command a high rate consulting within the Microsoft ecosystem. All of my professional work is on Windows. However I'd love to run some Linux libraries on Windows. For example, tensorflow would be very useful. Sure I can fire up a VM, but then I lose GPU support which is a big deal.
At home, I am using ubuntu since 2009. The first year, I have dual-booted a lot. Progressively, I have stopped. The last time I have booted in Windows was december 2014 to check if it was still working. If a desktop app does not work with wine, I do not use it.
If you can have all the comfort of Linux (huge catalog of software that are easy to uninstall, network transparency, ...) with the assurance that your hardware will be fully supported by the OS, it would deserve a try.
I had similar progression when I switched to Gentoo in 2007. I would boot into windows maybe every 3 months, and it was always a hassle with the security updates. Wiped out the partition after a couple of years of checking into windows maybe once every 6 months.
I am similar to reacweb. I dual-booted from 2008 through about 2011, then switched to using Linux as my only bootable OS and Windows in a VM occasionally.
I've noticed since about 2013 that I booted into the VM less and less often. The most recent was after maybe 9 months without using Windows? I wanted to check how something related to batch files worked, purely for curiosity (i.e., unrelated to professional work). There being so many updates queued up that I almost said "screw it" to the whole thing, reasoning that I could ask a friend to check easier/faster than the wait was worth.
Me, for everything but "work work"[0] for long stretches of time, including moonshine consulting, photos and causual gaming (Counter strike):
accounting? web based
service reports for moonshine work? Office 365 online or Open-/Libre-office
gaming? Steam has worked nicely on my not too beefy desktop for years (I only play CS:GO though)
Today I'm back on Windows 10, mostly, since Windows 10 is less annoying and my current employer don't care if I have a personal account on my new nice laptop.
My house has a pantload of computers, none of which have Windows installed -- it's actually been this way for years. I have an ubuntu laptop, my wife uses OS X. My kids mostly use iOS/android devices and occasionally another ubuntu laptop or chromebook.
> It also seems unlikely that Ubuntu will be bringing its Unity interface with it. Instead the focus will be on Bash and other CLI tools, such as make, gawk and grep.
I will love it but not having a graphical interface limits the added value. Currently the main problem with running a desktop Linux in a VM is the limited support for 3D/2D that increased CPU usage making your whole computer unusable.
On the server side Hyper-V in Windows 10 is a partial solution that already works.
> Currently the main problem with running a desktop Linux in a VM is the limited support for 3D/2D that increased CPU usage making your whole computer unusable.
So... you know something that I don't and instead of teaching me you insult me. Also, your answer doesn't invalidate what I said since these are experimental approaches with many issues (see for example https://forums.virtualbox.org/viewtopic.php?f=7&t=69732 )
Now, have you tried these experimental approaches with Unity on VMware/VirtualBox/Hyper-V? Please let us know your results so anyone can benefit of that.
Maybe the NT kernel could gain a linux-syscall-compatible layer, instead of adding compatibility in userspace. That would allow for compatible (same-arch) binaries!
(EDIT: this would also require ELF loaders and all kinds of other good stuff, but still a possibility IMO)
One (more) thing that is conspicuously glossed over is non-ELF executables. We've seen Win32 programs invoking ELF64 binaries demonstrated. And of course the Windows NT Linux subsystem already "knows" that it's a Linux subsystem process when a program comes to exec() a script, and doesn't have to worry about checking binary formats over fork() because the program image doesn't change. But missing so far has been Win32 programs invoking Linux executable scripts, that have #! lines.
So nice to be remembered! Reading some of this MS stuff has given me serious deja vu...
(Source: I worked on Project Janus, a long time ago in a galaxy far far away)
This might be the most exciting news I've heard in a long time. Being able to use Visual Studio and .NET for web development while using zsh and all the other Linux tools? Dreamland.
Different strokes.. that sounds like an absolute nightmare to me. .NET is not a good web development framework, and Visual Studio is totally overkill for web development.
I'd like to know what kind of web applications you've built and what tech stack you've used for them for you to make such an uninformed statement like that.
I'm not really interested in posting my CV to HN. Suffice to say I've been the lead web developer at several companies and have been doing that for ~13 years now. I've used all the popular web development languages, and written everything from small applications to web sites with hundreds of thousands of users.
I personally think .NET is much worse than any of the more common web languages (even PHP or Perl) for the web. If I were writing a Windows application then I'd probably write it in .NET using Visual Studio, but not a web application.
As I said in my original comment "Different strokes.", you may like .NET. That's fine. It might be the right choice for you and the wrong one for me. I was more commenting that it was amazing to me that someone would think it was awesome because it sounds like the complete opposite to me.
I guess I should have asked what you find compelling about writing web applications in .NET.
I would like hear arguments, what you don't like particularly?
I'm not saying .net is the best web dev platform, not at all, but i wouldn't say it's worse than most. It has it's own set of pros/cons, like every other, but generally, to me it looks quite decent, despite heavyweight VS/IIS, which is another story. Looking at mvc, rest, looks pretty much like any other modern dev stack:/
It has a reasonable MVC model, it mostly boils down to it's just way overkill. Using t for web development to me is like using a 27 foot truck to get groceries. The beauty, to me, of even "large" web applications is that they can still be light weight.
What is "overkill?" The framework? The language? The UI? The CLR?
I have issues with Microsoft's MVC (mostly that there is no official way of splitting it across several solutions and keeping working routing) but I've never found it overkill for enterprise-style webapp development.
We used MVC/Entity Framework. It works well as a RAD for the backend with full HTML/CSS/JS for the front end that we can get creative with. Reminds me a lot of Java development.
Visual Studio is overkill for web development IMHO (and again, different strokes. I know some people like to write PHP in Eclipse.)
The MVC model itself is not overkill, sorry that sentence was not clear. I should know better than make contentious comments on HN that are going to spawn a bunch of aggressive responses when I'm trying to start my day.
Making contentious comments is fine, the problem is you have to back them up with anything solid. The basis of your argument is that Visual Studio is overkill for writing web applications. That has nothing to do with ASP.NET and more to do with the desire for simpler developer environment. This can be solved by using VSCode, or setting up Omnisharp for the various text editors out there.
You have not given any solid technical reason as to why ASP.NET is a bad framework. In my experiences, it's more or less as capable as Ruby on Rails, Clojure, Java, etc. You've stated it's overkill, meaning what exactly? Are you even aware of the changes being made to ASP.NET vNext? The dotnet cli tool? The only complaint you seem to have is that the tight coupling of ASP.NET to various Windows platforms is a little much for people who are used to Go or RoR.
You still have not provided any specific reasons for "why" you believe Visual Studio/.NET is overkill for web development. I would like to actually know because I am curious.
That's true, MVC and Webapi can do everything, like Rails, all functionalities you need and don't need are inside. Most .net devs are expecting that, compared to node devs where they would have everything splited into small packages. One fx was designed in 2000, when that made sense, other one in 2010 ...
But, you don't have to use mvc; there's Nancy or low-level Owin.
So why do people complain about MVC when there are other choices? Certainly not like in other platforms, but at least few good ones exists! Why judge whole platform because of one fx?
Similar like EF or Nhibernate. They are big and heavy and very slow if not used properly, but also there's Dapper, massive or simpleData.
If you can't develop with it on all platforms it sucks. Not to mention the job market for .NET devs is pretty shit and I don't know a single person who actually enjoys it.
ASP.NET is a great. I've used it since it's existed (coming from what is now called "Classic ASP").
I think the HN intolerance towards Microsoft / zealousness for Apple is showing here. Certainly .NET isn't for everyone, but I don't think "is not a good web development framework" is justified. Check out http://nancyfx.org/ if you're looking for something more lightweight than the full ASP.NET / IIS stack.
I like using F# for web development. Check out Websharper. It's like Elm or Purescript but comes with all the amazing tools MS has developed for non-web-dev F# for free.
Yes, I agree, F# and Websharper are a whole different breed than the ASP.NET, C# apps I used to create. F# is a lot of fun too for more than just Web dev.
What does this give you that you would not already have with cygwin? The latter installs .exe versions of the usual command line utils, and I'm almost certain ZSH and the others you speak of are included.
I do not understand the practical implications of this move by Canonical/MS other than PR - what's actually changing from a user/dev standpoint?
I would assume much better stability and integration. If this works as I expect, I will be able to do things like apt-get install which is a huge improvement over cygwin. Another benefit is that since it's Ubuntu tools and projects will support it vs cygwin which is usually "we don't use it, so figure it out and then we'll post it here for all the other poor saps using cygwin"
Cygwin is and always will be only an emulation-layer, never the real deal. For most day-to-day things it works perfectly, but when you run into some corner-case, most of the time you are out of luck.
My only real problem with Cygwin is, that it misses a command-line package manager. If they could adopt pacman for package management like MSYS2 does, I'd be a happy camper.
edit: To deploy Cygwin based applications you need to get a commercial license from RedHat (if it's not FOSS). Which could be a deal-breaker.
This is a good answer. I always feel limited in Cygwin, it doesn't feel quite right. And it takes quite a bit of tweaking to get working correctly. Case in point: Try getting gvim to work properly from Cygwin.
You realize cygwin's setup.exe package manager has a CLI, right? The issue with pacman in msys2 is that it's posix dependent, which fails badly at updating the core posix layer itself. Cygwin's setup.exe is a native Windows executable and doesn't have this self hosting problem.
That doesn't solve the problem that if it is trying to update the Cygwin DLL, you need to shut down everything. And if there's an update to something like bash or coreutils, same thing (since Windows does not allow writing to executables that are running).
Sure. But self-hosting pacman makes it literally impossible to do correctly. Updating cygwin itself should be done by an outside-of-cygwin solution to invoke setup.exe, just write a little powershell provisioning script or something.
Arch is certainly capable of updating pacman via pacman,and it's been a while but I'm pretty sure you can update apt/dpkg via the usual apt-get upgrade on Ubuntu
> My only real problem with Cygwin is, that it misses a command-line package manager. If they could adopt pacman for package management like MSYS2 does
There is babun (https://babun.github.io/). It is essentially a wrapper around cygwin and comes with a package manager.
apt-get install whatever from any ubuntu repository
Not sure about X11 apps, but whatever.
Largely this makes running a special win32 build of redis for whatever dev you're doing unnecessary.
I'm currently running windows on this laptop, but I have a virtualbox instance running Lubuntu for doing any UNIX specific dev.
Ports and files are shared across windows and linux transparently, which means there's far less need for need for running+maintaining a separate developer's VM.
The only reason I can't really use Windows as development OS are the inferior terminal emulators. As good as ConEmu is, it is still worse than Terminator etc. Unless I can run a native Linux terminal emulator, it doesn't make much of a difference to me. Also, the filesystem differences don't help.
I was also running into Haskell compilation problems that were fixed by running Ubuntu in a Vagrant environment but speed was slow. There isn't good NFS support on Windows either (there is some).
Speed was an issue on Windows 7 (PSv2), but they sped it up considerably in Windows 8 (PSv4, I think). Maybe installing the current PowerShell version helps; I doubt it's inherent in the OS.
I'm on Windows 10 and I agree it has improved a lot since Win7, but it's still not pleasant. I'm rocking a 7200rpm spinning disk, so as suggested by adiabatty, getting an SSD might help.
On my i5-2400 with 8 GB of RAM and a 7200 RPM hard drive, it takes six seconds to start the first time and four seconds to start subsequent times.
On my i5-3550 with 16 GB of RAM and an SSD it takes a couple seconds to start the first time and less than a second for subsequent times.
Both machines are running Windows 10.
Right now, the machine with the spinning rust is loading a bunch of files with an I/O priority of "background" because it just got booted into Windows; that might slow it down a bit because of the seek times and I don't know if Windows is willing to starve background I/O for seconds at a time to speed up interactive requests (I doubt it).
Update: once all the background preloading is done, PowerShell restarts in three seconds on the spinning-rust machine.
Long story short, I think getting an SSD will be the thing that makes PowerShell start acceptably fast.
Depending what you open, powershell.exe should open as fast as cmd.exe pretty much, the ISE can take a few seconds to load based on the addons you have and how many PS cmdlets you have registered on your system.
As people have mentioned the biggest factor here is probably your hard drive since you are loading maybe couple of 100's of small files when you load the ISE.
Powershell ISE is quite a good terminal emulator (even tho it wasn't intended as one), it's also extensible via addons and there are quite a few nifty ones like git integration and the likes.
This is the ISE in a default configuration https://imgur.com/xz9Kfpt
On the left just an open terminal, in the middle a script which can be edited and executed at any time with F5, and on the right all the powershell commands which could be either immediately executed or inserted into your script with ease.
Unless you need tab browsing that much, which you can get via addons, the ISE is one of the best "terminals" out there imho.
I love tiling window managers...and real package management... and free software.
Windows still has a ways to go. I think this might make some Windows stuff easier to deal with, but I still prefer jobs where I can run Linux natively on my workstation.
I think eventually, we'll see Windows transform into a Linux distro with a Windows UI.
I'm not trying to wrinkle anyone's shorts, but this just makes a lot of financial sense. Let the "community" do most of the OS development and only maintain the Windows UI. This allows them to focus more on services and Azure.
I knew that, but I left it out because I don't consider it consumer-grade. It's not something you'd find on a PC you'd buy at Best Buy, Tiger Direct, Amazon, etc, nor is it something you'd give to a non technical user and expect them to use.
OSX is a thin layer of UNIX with a lot of non-UNIX like stuff. Aqua over X. Self-contained apps over package management (unless you want to count the app store).
I find it more like a broken borked *NIX system than anything.
Neither FreeBSD nor NetBSD have been submitted to the Open Group for certification, and are thus considered "Unix-like". When I say OSX is literally Unix, I mean it has passed certification and can legally use UNIX trademark.
Ten years ago I would have said that's ridiculous thinking.
But today kernel software is practically commoditized by Linux. Competing feature wise is a fools errand - it's just too costly and slow to go it alone.
FreeBSD could be another choice also. Lots of industry support.
Microsoft is probably going to make a lot of money from selling apps/games on win-10. Why would they lose that for and commoditize their OS and the API layer ?
My guess: It'll be a lot like how Android works. The kernel is OSS, but "Windows(Google) Services" requires a proprietary license.
Android's license is "you need to put the Google Play Store and the Google App ecosystem on the phone". Window's license might still be, "pay us money".
You wouldn't pay for the kernel (because of GPL) but you would pay for branding and support (like RHEL) and you would pay for the ability to run the "Windows Application Compatibility Layer".
It would look like that's the direction they're moving in if this product were a Windows environment on Linux. Something like a Microsoft supported version of Wine.
As it is, it looks more like a Linux environment on Windows. Analogous to a Cannonical supported version of Cygwin.
I'd love to see Windows as Linux distro because I'd prefer to give full access to my hardware to Linux and only pull out a Windows environment when an application requires it. Desktop Linux users are in the minority though, so I expect there's a lot more demand for the reverse.
As I see it, Windows 10 is an abstraction layer on top of...well increasingly, on top of anything. The current iteration is a more robust abstraction over diverse hardware (where Windows for the Desktop has always found its strength) -- but now the stack is more unified from micro-controllers to just short of big iron.
Pushing operating systems under the abstraction is just the next step after decoupling Windows from hardware. In a sense that's been a theme for Windows since the development of .NET.
The value of Windows has been as an ecosystem and it almost certainly will remain one. The tradeoff of running Windows is a tradeoff and it comes with big advantages for some users.
The cynic in me sees this from the opposite direction.
Microsoft has already gone out of it's way to take control of the hardware and kernel (think secure boot on intel and the _total_ control on arm). They're now allowing you the privilege of running some posix userland applications (which have no real power) so people don't complain too much when they make it impossible to boot a custom kernel on newer hardware.
"What do you mean you can't boot linux? Don't be silly, you're already running ubuntu!"
Amazing. Can't tell you how many times we've asked Microsoft for a better shell like linux. Or how many times we've said (half-jokingly) that Microsoft should just give up and use a more unix-y file system and swap out the kernel for linux.
This all not to say that Microsoft tech in these low level areas don't have advantages over linux or are bad, but it'd be nice to have it at a low level.
> Microsoft should just give up and use a more unix-y file system and swap out the kernel for linux.
You do realize that that's the exact opposite of what is happening here, ne? The Windows NT file system is used, and the Linux kernel is being swapped out for the Windows NT one.
"At a low level" NTFS actually is "Unix-y", of course. It had to be in order to support the POSIX subsystems. Case sensitivity, hard links, symbolic links, and a wide degree of freedom for filename characters are all there, at a low level.
Yes I do, but the ideas/conversations have been happening, on and off, for many years before this.
Especially when they weren't doing so hot and the idea gets floated around (obviously without much serious thought, just something we say) "oh man, what if they just gave up on that part and used linux to make it all work" -- Then everyone goes "that'd be cool, but then all those apps wouldn't work..."
Hence why they chose this route which required some pretty fancy research on their part to implement. Which is even cooler imho. Probably the best senario for Windows/MS over all in the end.
So a bunch of CLI tools, that use a shim layer to translate Linux syscals to Windows kernel API. I think this will be somewhat like OS X's POSIX base. I'm dreaming this could mean eventually being able to run KDE or openbox or sth, perhaps by community effort.
Sounds like a regression on Canonical's issue #1. The resolution case was "A majority of the PCs for sale should include only free software.". This article does indeed appear to showcase active work toward a regression on bug #1
Mark Shuttleworth marked that bug as resolved a couple of years ago, which I think was a mistake. I recently reproduced this bug in that I went to a local PC store and attempted to buy a machine without any proprietary software. They said that they didn't have any such machines available (never mind a majority of their machines, as suggested by the original bug text).
He also uses the popularity of Android as part of his reason for closing it. Sure, Android itself is open source, but you still have to go out of your way to find Android devices that are purely FOSS.
> but you still have to go out of your way to find Android devices that are purely FOSS.
Can you elaborate?
I'm not aware of any physical Android devices which are able to boot and function as an Android device (e.g. with a hardware accelerated GUI, can make phone calls over GSM/CDMA) that don't require proprietary vendor blobs.
I am excluding the Android emulator because I don't think it qualifies as a "device"
> but you still have to go out of your way to find Android devices that are purely FOSS
This is pedantry, and certainly there's a sliding scale of openness for devices. But unless I'm very mistaken, there are no devices available that even approach 'purely FOSS'. What would such an 'Android' phone even be? No google play services, no google play store, crippled and buggy open GPU drivers, and still a proprietary baseband. Not that I'm happy with this situation it just seems impractical.
Money talks. Canonical attempted to make bank from their partnership with Amazon, yet people over the web went insane and fought tooth and nail to shift the weight to derivatives, like Xubuntu and Mint.
Naturally, this is one of their alternative methods.
In general I certainly agree, but there are also advantages for free software of this.
For example, this will probably help expose and fix lots of bugs in Microsoft's implementation of Linux interfaces, which will be a benefit to free software developers and vendors.
Also, general users will get more exposure to free software programs, and may be more open to buying a legit Ubuntu or other Linux computer in the future. For example, I was able to switch my wife over to using Linux Mint without any issue, which was undoubtedly made easier by the fact that she was already using LibreOffice, Thunderbird, and Firefox on her Windows PC.
It seems like people are able to pretty easily run free software programs on Mac OS X, and all things being equal I think that has been a great benefit to free software, and a lot of web developers et al seem to be willing to make their program free software friendly and release them under free software licenses. I would love to see a similar trend with Windows, even if I personally think that proprietary operating systems are extremely harmful and need to go the way of the horse and buggy.
I don't see much reason to do either. Virtualization pretty much works now. I'm sure there are use cases when that's not enough, but I think majority of people who want Windws+Linux would be happy with either of those running in a VM (depending on their use case).
for an example of how to debug using gdb in Visual Studio. Having an integrated Linux environment, would make this support seamless. Then Visual Studio becomes the cross-platform hub for building code for Windows, Linux, iOS, and Android.
I am seeing this narrative in HN and web which is ridiculous, You have nothing to worry about PowerShell,Microsoft showed they are dead serious about Windows 10 and PowerShell deeply integrated to .net platform. So I am pretty sure and I can predict nothing will happen to PowerShell because this is against company interest.
They are trying to introduce bash as native shell as another option. That's all.
right, which means more and more people won't bother learning PowerShell and just use grep and the like.
It is still somehow a secret that PowerShell even exists. I can't count the number of Windows users I know that still open cmd.exe, or install cygwin so they can grep files.
I'm just saying that dealing with text is inferior to .NET objects on windows, and the PowerShell pipeline is much more powerful. However, I don't know how many people will end up learning this cause, "hey I can just use bash!"
I don't think bash itself has been ported, it's simply running under a Linux subsystem. I imagine it's similar to the discontinued POSIX and UNIX[2] subsystems. In this case, bash probably believes that it's running in on Linux, not that it's been ported over to compile in Windows.
Powershell will probably be fine. Besides them both being a REPL and scripting language they're very different. I guess the simplest way to put it is in powershell you're passing around objects and in bash you're passing around strings. That's an oversimplification though. I'd start wondering about powershell's future when bash starts getting the ability to tap into .Net the way powershell does.
As exemplified by this announcement, Bash in isolation is not that valuable. It's the standard UNIX tools that most Bash scripts just assume are there that really round it out as a platform. Supporting the piping of objects instead of text? Not such a big deal. Replacing UNIX tools with object versions? I agree - very valuable, but now a massive undertaking involving redefining a lot of flags, etc.
Was hoping the comments here would be talking about PowerShell. I try to use it whenever I can, but if bash performs the same, the community may leverage it more for shared scripts/etcetera.
Let's hope death by obsolescence. Being forced to learn a proprietary not-invented-here scripting language with little value-add over Bash is an anathema to any developer.
For automated building/deploying .NET projects on Windows you have very little choice. Powershell has its own libraries to invoke MSBuild and it's integration with .NET saves a ton of effort on more complex tasks (like parallelization, background jobs, and service management). Is it irreplaceable? Maybe not, but it's clearly the most powerful tool for the job.
Security will still be Windows "security" though. I know my way and I haven't had a Windows PC infected in years but while using it I certainly don't have the relative peace of mind that I have while on Linux.
PM on the PowerShell team here. First, just let me say, I'm a huge fan of Linux and can't be more excited about Bash coming to Windows.
As others have mentioned throughout this thread, PowerShell isn't going anywhere. We're investing considerably in the PowerShell ecosystem. PowerShell/WMF 5.0 just came out with a ton of new features[1], and we're not slowing down any time soon.
Because it's operating mostly in user mode today, Bash on Windows is much more suited to developer scenarios. I've already played with workflows where I'm running vim inside of Bash on Windows to edit PowerShell scripts that I'm executing in a separate PowerShell prompt. In fact, I can plug along fine in a PowerShell window, run a quick 'bash -c 'vim /mnt/c/foo.ps1'', make a few edits, and be right back inside my existing PS prompt. This really is just another (really freaking awesome) tool in your toolbox.
This is part of the long-standing problem for people: this loopy re-presentation of what happens that completely ignores the past and even the present. A lot of us have been using bash and other shells, and indeed vim and other things, on Windows for years. They aren't "coming to Windows". They've already been there for a long time.
We've been able to invoke "vim foo.ps1" to edit our files, and do so without any necessity for an intermediary (and entirely supernumerary) "bash -c" too. I did so myself, only yesterday. This is not the news.
A new "Linux" subsystem is coming to Windows NT that allows one to spawn and to run unaltered Linux binaries directly. Explaining this as "bash is coming to Windows" is to give a hugely dumbed-down explanation, one that is so markedly wrong that it (mis-)leads to the very same mistaken assumptions about the imminent death of PowerShell and so forth that you are now having to counter in several places. (I know. It's not your own explanation. Nonetheless, one should not adopt the error from someone else, especially if one then has to firefight the world leaping to the wrong conclusions based upon it. That's just making a rod for one's own back.)
I know I've run bash on Windows before -- but I don't remember if it was with or without Cygwin. I assume this announcement is running bash natively, without Cygwin or anything VM-like.
Did they have to contribute patches to bash, or just install it by default? I don't see anything on the bash mailing list, but the development is not particularly open.
OK interesting -- native Ubuntu Linux binaries on Windows too. FreeBSD and Illumos are also emulating Linux too, i.e. translating syscalls in the kernel. I wonder if Microsoft grabbed some of that code since it's open source :)
This just shows how standards are made... implement first then think about it later :) I don't think the Linux syscall interface is the model of clarity, but that's what we have.
EDIT: This answers my original question... apparently they didn't patch bash -- they patched their own kernel to run the bash binary, and all Linux binaries! It was done at a binary level rather than source level.
490 comments
[ 4.1 ms ] story [ 387 ms ] threadYou could still develop stuff for server OS while having the ability to play games without having to reboot or use wine inside linux.
Lots of companies spend a lot of effort to run code on multiple platforms (SQL Server recently announced Linux support; .NET core has supported runtimes on Linux too and tons of OS languages have runtimes for multiple platforms). It would be great for both devs and end-users if the number of things that are different between platforms was reduced.
This sounds either a bit like CoLinux, or like the POSIX subsystem revived. Remember: Windows has kernel support for different userspace APIs, and the well-known Windows API is just that: A user-mode subsystem running atop the kernel (there have been OS/2 and POSIX subsystems before).
Maybe things have improved since, but at least a few years ago, it was always a crapshoot to try to get some new open source tool set up on Windows/Visual Studio, vs. batting close to 1.000 on Mac with configure && make && make install.
Another way to put this is that the world Terminal.app gives you access to is a huge selling point for developers, and this is part of Microsoft's attempt to provide something as useful.
OSX is better because it doesn't feel too different from Linux (aside from setting docker machine ENV variables). Still virtualized so you take a performance hit.
The beta announced a few days back by Docker uses HyperV to boot a Linux kernel to run Linux Docker.
The preview announced around a year ago by Microsoft and Docker is a native Windows implementation of Docker, running on the next Windows OS.
[later]
But...
This new layer should let you run most Linux containers straight on top of the next Windows.
Interesting...
I wonder how they will make Ubuntu happen on Windows. Reading some of the comments, some speculate a subsystem, while others suggest an interoperable interface.
Edit: reading bitcrazed's comments it looks like it will be implemented a la WINE. No need to recompile binaries made for Linux x86; you'll be able to run apt packages from Ubuntu out of the box.
IT departments not worrying much about what you do as the superuser inside a virtual machine that is running only with your user credentials, is one thing. But tell them that you're now going to be installing and running random Ubuntu softwares, not in a virtual machine but natively within Windows, and they will prick up their ears and start to take notice. Even the ones who are alright about what's being installed will want to think about things like control over what packages can be installed and locally-hosted repositories. "So, tell me how I set group policy for your apt-get installer?"
And if that is not a worry, let me relate some personal experience of using the Windows NT POSIX subsystem. Anti-virus programs, particularly the ones with the whizz-o features of "let's check what 'the crowd' said about this program" or "let's run this program for a little bit in my controlled execution environment to see whether it does malware-type things", don't like this a lot. I had to go through the unblocking of "/bin/foo is a rare program" so often, for everything from "ls" to "ftp", that it was in danger of becoming an automatic reflex.
Goodness knows what the likes of DeepGuard will make of programs that use a wholly new set of system call entrypoints into the kernel. (-:
Applications: Now you can install and configure applications like apache, postquesql, etc. on windows in the same way you do in linux/other unix platforms.
Strategically, this is a big win for Microsoft. Now they can go to their clients that are moving or thinking about moving to Linux and tell them "There's no need to migrate, just install your apps in Windows."
https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem
https://en.wikipedia.org/wiki/Windows_Services_for_UNIX
> https://www.samba.org/samba/news/articles/low_point/tale_two...
> http://brianreiter.org/2010/08/24/the-sad-history-of-the-mic...
Edit: yes, that is in fact exactly what the first link you gave says: The POSIX subsystem was added as the POSIX standard had become very prevalent in procurement contracts. [...] This original subsystem was, I think it's fair to say, deliberately crippled to make it not useful for any real-world applications. Applications using it had no network access and no GUI access, [...] SFU contains a full POSIX environment, with a Software development kit allowing applications to be written that have access to networking and GUI API's.
I don't run Windows and consequently haven't used VS in any kind of intimate detail, I'm sure it's great if you like dealing with IDEs. I feel more productive with Vim, tmux, GHCI, and GraspJS for doing of my web development.
I'm pretty sure VS doesn't require nowhere near that amount and you are talking about Windows symbols.
In retrospect it's not entirely VS's fault, though I just found it amusing how quickly it ate through my storage when Vim only takes like 90 megs.
I'd rather use a VM (or WINE).
If you can have all the comfort of Linux (huge catalog of software that are easy to uninstall, network transparency, ...) with the assurance that your hardware will be fully supported by the OS, it would deserve a try.
I've noticed since about 2013 that I booted into the VM less and less often. The most recent was after maybe 9 months without using Windows? I wanted to check how something related to batch files worked, purely for curiosity (i.e., unrelated to professional work). There being so many updates queued up that I almost said "screw it" to the whole thing, reasoning that I could ask a friend to check easier/faster than the wait was worth.
Wine, and for the troublesome apps: VM.
accounting? web based
service reports for moonshine work? Office 365 online or Open-/Libre-office
gaming? Steam has worked nicely on my not too beefy desktop for years (I only play CS:GO though)
Today I'm back on Windows 10, mostly, since Windows 10 is less annoying and my current employer don't care if I have a personal account on my new nice laptop.
[0]: Work for NotSoBigCo between 8-16
I've been using Linux on the desktop for 19 years, and I've never once dual-booted into Windows on any of my personal machines.
I will love it but not having a graphical interface limits the added value. Currently the main problem with running a desktop Linux in a VM is the limited support for 3D/2D that increased CPU usage making your whole computer unusable.
On the server side Hyper-V in Windows 10 is a partial solution that already works.
Bullshit.
For anybody else, just search this on Google: 2d 3d cpu ubuntu (virtualbox OR vmware OR "hyper-v")
Now, have you tried these experimental approaches with Unity on VMware/VirtualBox/Hyper-V? Please let us know your results so anyone can benefit of that.
Also, how is that experimental:
https://www.youtube.com/watch?v=37D2bRsthfI
Stop spreading FUD if you don't know what are you talking about.
https://news.ycombinator.com/newsguidelines.html
On a more serious note - Unity is something I deeply hate, and a lot will depend on the quality of the implementation.
It will be good to develop easily for linux too.
(EDIT: this would also require ELF loaders and all kinds of other good stuff, but still a possibility IMO)
What makes you think "maybe"? This is (reportedly) exactly what's happening. What did you infer was happening from the headlined article?
http://www.colinux.org/?section=home
I guess it's possible to do something like this again.
I personally think .NET is much worse than any of the more common web languages (even PHP or Perl) for the web. If I were writing a Windows application then I'd probably write it in .NET using Visual Studio, but not a web application.
As I said in my original comment "Different strokes.", you may like .NET. That's fine. It might be the right choice for you and the wrong one for me. I was more commenting that it was amazing to me that someone would think it was awesome because it sounds like the complete opposite to me.
I guess I should have asked what you find compelling about writing web applications in .NET.
.NET is overkill for web application development, IMHO. But I tend to eschew large frameworks in general. YMMV.
I have issues with Microsoft's MVC (mostly that there is no official way of splitting it across several solutions and keeping working routing) but I've never found it overkill for enterprise-style webapp development.
We used MVC/Entity Framework. It works well as a RAD for the backend with full HTML/CSS/JS for the front end that we can get creative with. Reminds me a lot of Java development.
The MVC model itself is not overkill, sorry that sentence was not clear. I should know better than make contentious comments on HN that are going to spawn a bunch of aggressive responses when I'm trying to start my day.
You have not given any solid technical reason as to why ASP.NET is a bad framework. In my experiences, it's more or less as capable as Ruby on Rails, Clojure, Java, etc. You've stated it's overkill, meaning what exactly? Are you even aware of the changes being made to ASP.NET vNext? The dotnet cli tool? The only complaint you seem to have is that the tight coupling of ASP.NET to various Windows platforms is a little much for people who are used to Go or RoR.
But, you don't have to use mvc; there's Nancy or low-level Owin. So why do people complain about MVC when there are other choices? Certainly not like in other platforms, but at least few good ones exists! Why judge whole platform because of one fx?
Similar like EF or Nhibernate. They are big and heavy and very slow if not used properly, but also there's Dapper, massive or simpleData.
As far as being an "influencer"; do you see any links on my profile? Again, that's something other people find appealing, not me.
I think the HN intolerance towards Microsoft / zealousness for Apple is showing here. Certainly .NET isn't for everyone, but I don't think "is not a good web development framework" is justified. Check out http://nancyfx.org/ if you're looking for something more lightweight than the full ASP.NET / IIS stack.
What does this give you that you would not already have with cygwin? The latter installs .exe versions of the usual command line utils, and I'm almost certain ZSH and the others you speak of are included.
I do not understand the practical implications of this move by Canonical/MS other than PR - what's actually changing from a user/dev standpoint?
My only real problem with Cygwin is, that it misses a command-line package manager. If they could adopt pacman for package management like MSYS2 does, I'd be a happy camper.
edit: To deploy Cygwin based applications you need to get a commercial license from RedHat (if it's not FOSS). Which could be a deal-breaker.
Arch is certainly capable of updating pacman via pacman,and it's been a while but I'm pretty sure you can update apt/dpkg via the usual apt-get upgrade on Ubuntu
There is babun (https://babun.github.io/). It is essentially a wrapper around cygwin and comes with a package manager.
Not sure about X11 apps, but whatever. Largely this makes running a special win32 build of redis for whatever dev you're doing unnecessary.
I'm currently running windows on this laptop, but I have a virtualbox instance running Lubuntu for doing any UNIX specific dev. Ports and files are shared across windows and linux transparently, which means there's far less need for need for running+maintaining a separate developer's VM.
I was also running into Haskell compilation problems that were fixed by running Ubuntu in a Vagrant environment but speed was slow. There isn't good NFS support on Windows either (there is some).
On my i5-3550 with 16 GB of RAM and an SSD it takes a couple seconds to start the first time and less than a second for subsequent times.
Both machines are running Windows 10.
Right now, the machine with the spinning rust is loading a bunch of files with an I/O priority of "background" because it just got booted into Windows; that might slow it down a bit because of the seek times and I don't know if Windows is willing to starve background I/O for seconds at a time to speed up interactive requests (I doubt it).
Update: once all the background preloading is done, PowerShell restarts in three seconds on the spinning-rust machine.
Long story short, I think getting an SSD will be the thing that makes PowerShell start acceptably fast.
Left click in fwvm, select xterm, window appears in less than my blink response time.
Seriously: I think I might pop Win10 on an old Dell i5 that came with Win7 and play with this.
Jeffrey Snover [MSFT]
As people have mentioned the biggest factor here is probably your hard drive since you are loading maybe couple of 100's of small files when you load the ISE.
This is the ISE in a default configuration https://imgur.com/xz9Kfpt On the left just an open terminal, in the middle a script which can be edited and executed at any time with F5, and on the right all the powershell commands which could be either immediately executed or inserted into your script with ease.
Unless you need tab browsing that much, which you can get via addons, the ISE is one of the best "terminals" out there imho.
Windows still has a ways to go. I think this might make some Windows stuff easier to deal with, but I still prefer jobs where I can run Linux natively on my workstation.
I'm not trying to wrinkle anyone's shorts, but this just makes a lot of financial sense. Let the "community" do most of the OS development and only maintain the Windows UI. This allows them to focus more on services and Azure.
As long as you consider OSX to be a Linux distro (lol) with a Apple UI, then sure.
But I doubt Microsoft ever gets any closer to unix-like systems than Apple is.
I'm confused by this comment. OS X is literally UNIX. In fact, I think it's the ONLY UNIX system available to consumers.
OSX is a thin layer of UNIX with a lot of non-UNIX like stuff. Aqua over X. Self-contained apps over package management (unless you want to count the app store).
I find it more like a broken borked *NIX system than anything.
But today kernel software is practically commoditized by Linux. Competing feature wise is a fools errand - it's just too costly and slow to go it alone.
FreeBSD could be another choice also. Lots of industry support.
Android's license is "you need to put the Google Play Store and the Google App ecosystem on the phone". Window's license might still be, "pay us money".
You wouldn't pay for the kernel (because of GPL) but you would pay for branding and support (like RHEL) and you would pay for the ability to run the "Windows Application Compatibility Layer".
As it is, it looks more like a Linux environment on Windows. Analogous to a Cannonical supported version of Cygwin.
I'd love to see Windows as Linux distro because I'd prefer to give full access to my hardware to Linux and only pull out a Windows environment when an application requires it. Desktop Linux users are in the minority though, so I expect there's a lot more demand for the reverse.
Pushing operating systems under the abstraction is just the next step after decoupling Windows from hardware. In a sense that's been a theme for Windows since the development of .NET.
The value of Windows has been as an ecosystem and it almost certainly will remain one. The tradeoff of running Windows is a tradeoff and it comes with big advantages for some users.
Microsoft has already gone out of it's way to take control of the hardware and kernel (think secure boot on intel and the _total_ control on arm). They're now allowing you the privilege of running some posix userland applications (which have no real power) so people don't complain too much when they make it impossible to boot a custom kernel on newer hardware.
"What do you mean you can't boot linux? Don't be silly, you're already running ubuntu!"
This all not to say that Microsoft tech in these low level areas don't have advantages over linux or are bad, but it'd be nice to have it at a low level.
You do realize that that's the exact opposite of what is happening here, ne? The Windows NT file system is used, and the Linux kernel is being swapped out for the Windows NT one.
"At a low level" NTFS actually is "Unix-y", of course. It had to be in order to support the POSIX subsystems. Case sensitivity, hard links, symbolic links, and a wide degree of freedom for filename characters are all there, at a low level.
Especially when they weren't doing so hot and the idea gets floated around (obviously without much serious thought, just something we say) "oh man, what if they just gave up on that part and used linux to make it all work" -- Then everyone goes "that'd be cool, but then all those apps wouldn't work..."
Hence why they chose this route which required some pretty fancy research on their part to implement. Which is even cooler imho. Probably the best senario for Windows/MS over all in the end.
https://bugs.launchpad.net/ubuntu/+bug/1
Can you elaborate?
I'm not aware of any physical Android devices which are able to boot and function as an Android device (e.g. with a hardware accelerated GUI, can make phone calls over GSM/CDMA) that don't require proprietary vendor blobs.
I am excluding the Android emulator because I don't think it qualifies as a "device"
This is pedantry, and certainly there's a sliding scale of openness for devices. But unless I'm very mistaken, there are no devices available that even approach 'purely FOSS'. What would such an 'Android' phone even be? No google play services, no google play store, crippled and buggy open GPU drivers, and still a proprietary baseband. Not that I'm happy with this situation it just seems impractical.
Naturally, this is one of their alternative methods.
For example, this will probably help expose and fix lots of bugs in Microsoft's implementation of Linux interfaces, which will be a benefit to free software developers and vendors.
Also, general users will get more exposure to free software programs, and may be more open to buying a legit Ubuntu or other Linux computer in the future. For example, I was able to switch my wife over to using Linux Mint without any issue, which was undoubtedly made easier by the fact that she was already using LibreOffice, Thunderbird, and Firefox on her Windows PC.
It seems like people are able to pretty easily run free software programs on Mac OS X, and all things being equal I think that has been a great benefit to free software, and a lot of web developers et al seem to be willing to make their program free software friendly and release them under free software licenses. I would love to see a similar trend with Windows, even if I personally think that proprietary operating systems are extremely harmful and need to go the way of the horse and buggy.
i want a better wine, that can run sql server, and ms visual studio
for an example of how to debug using gdb in Visual Studio. Having an integrated Linux environment, would make this support seamless. Then Visual Studio becomes the cross-platform hub for building code for Windows, Linux, iOS, and Android.
They are trying to introduce bash as native shell as another option. That's all.
It is still somehow a secret that PowerShell even exists. I can't count the number of Windows users I know that still open cmd.exe, or install cygwin so they can grep files.
I'm just saying that dealing with text is inferior to .NET objects on windows, and the PowerShell pipeline is much more powerful. However, I don't know how many people will end up learning this cause, "hey I can just use bash!"
[1] Meaning being very familiar and having fewer disappointments...
[1] https://www.wikiwand.com/en/Microsoft_POSIX_subsystem
[2] https://www.wikiwand.com/en/Windows_Services_for_UNIX
I wonder what will happen to Powershell now.
For Windows shops (like my current job), it will most definitely be sticking around
As others have mentioned throughout this thread, PowerShell isn't going anywhere. We're investing considerably in the PowerShell ecosystem. PowerShell/WMF 5.0 just came out with a ton of new features[1], and we're not slowing down any time soon.
Because it's operating mostly in user mode today, Bash on Windows is much more suited to developer scenarios. I've already played with workflows where I'm running vim inside of Bash on Windows to edit PowerShell scripts that I'm executing in a separate PowerShell prompt. In fact, I can plug along fine in a PowerShell window, run a quick 'bash -c 'vim /mnt/c/foo.ps1'', make a few edits, and be right back inside my existing PS prompt. This really is just another (really freaking awesome) tool in your toolbox.
[1] http://msdn.microsoft.com/en-us/powershell/wmf/releaseNotes
This is part of the long-standing problem for people: this loopy re-presentation of what happens that completely ignores the past and even the present. A lot of us have been using bash and other shells, and indeed vim and other things, on Windows for years. They aren't "coming to Windows". They've already been there for a long time.
We've been able to invoke "vim foo.ps1" to edit our files, and do so without any necessity for an intermediary (and entirely supernumerary) "bash -c" too. I did so myself, only yesterday. This is not the news.
A new "Linux" subsystem is coming to Windows NT that allows one to spawn and to run unaltered Linux binaries directly. Explaining this as "bash is coming to Windows" is to give a hugely dumbed-down explanation, one that is so markedly wrong that it (mis-)leads to the very same mistaken assumptions about the imminent death of PowerShell and so forth that you are now having to counter in several places. (I know. It's not your own explanation. Nonetheless, one should not adopt the error from someone else, especially if one then has to firefight the world leaping to the wrong conclusions based upon it. That's just making a rod for one's own back.)
Did they have to contribute patches to bash, or just install it by default? I don't see anything on the bash mailing list, but the development is not particularly open.
This just shows how standards are made... implement first then think about it later :) I don't think the Linux syscall interface is the model of clarity, but that's what we have.
EDIT: This answers my original question... apparently they didn't patch bash -- they patched their own kernel to run the bash binary, and all Linux binaries! It was done at a binary level rather than source level.