230 comments

[ 2.9 ms ] story [ 243 ms ] thread
In my experience, emulators are never quite the same as the real deal. Has anyone used this, and if so how was it?
It's not an emulator
Depends on your definition of "emulator". Since it is a thing that emulates Linux kernel calls on top of the NT kernel...it is definitely "emulating".
The dependency to make this work is transforming the calls but the Ubuntu itself is not. Not everything has to run through that translation layer either, only specific types of calls to make things work. Code that isn't using specific *nix commands will run like normal without that layer.

It's pretty complex. I don't think I would call it an emulator but I can see why someone would.

A mirror of WSL is WINE, and we know that WINE is Not an Emulator ;)

But, yeah, jokes aside - it depends on the definition.

Still, the translation (or emulation) layer is partial at best. No cgroups (so no native Docker and rkt would work only with fly stage1 and a few patches), sockets are limited (e.g. a number of setsockopt stuff is missing), no tun or tap devices, no netfilter subsystem at all (so no iptables/iproute2/nftables), no GPU access, etc etc etc. Even though it's out of beta it's a bit early to think of it as a "real deal". Best it can do is run some desktop apps and build some software. Would probably work for basic webdev stuff (without containerization), but that's about it. It would probably never come close to the real thing, just as WINE probably won't ever replace Windows. But they try.

And, of course, it's non-free.

It is not an emulator and the experience is pretty great for anything involving Linux as a workstation.

Even though they say "NO current plans to support X/GUI apps, desktops, servers, etc. at this time", this is achievable by installing VcXsrv.

Perhaps emulator was a poor descriptor in this case -- I haven't used it. But it is running a subset of functionality non-natively, correct?
From what I understand it's mainly translating system calls. It's been described as being like a reverse WINE, hence everyone replying 'Not an Emulator' at you. :)
> It's been described as being like a reverse WINE, hence everyone replying 'Not an Emulator' at you. :)

WINE originally stood for "WINdows Emulator". It was several years later that it became "WINE Is Not an Emulator". The change was for marketing reasons, not technical reasons, since nothing had actually changed in how WINE worked.

The first time anyone suggested "WINE Is Not an Emulator", as far as I've been able to track down, was late August, 1993, over concern that Microsoft might win its trademark case over "Windows" and come after WINE. Someone suggested WINE become WAW, for "WINE Ain't Windows", and someone else responded to that suggesting "Wine Is Not an Emulator".

Soon fear of the trademark issues abated and nothing happened for quite a while.

By 1997, the "not an emulator" usage had become an acceptable alternative. The Wine FAQ late that year said:

> The word Wine stands for one of two things: WINdows Emulator, or Wine Is Not an Emulator. Both are right. Use whichever one you like best.

The dropping of saying WINE was an emulator came in late 1998. The 981108 release notes said:

> This is release 981108 of Wine, the MS Windows emulator.

The 981211 release notes said:

> This is release 981211 of Wine, a free implementation of Windows on Unix.

From what I was able to find, it seems there were a couple reasons for dropping calling it an emulator.

One was that it could be used for more than just running a Windows binary on Unix via emulation. It could also be used as a library that you could link with code compiled on Unix. This provided a way to provide a native port of you Windows program to Unix instead of running the Windows binary in emulation.

Calling it an emulator unnecessarily pigeon holed it.

Another was that emulators that emulated hardware were getting popular. People were making emulators that emulated x86 hardware on RISC systems. They were making emulators that emulated older personal computers, like C64 and Apple II. They were making emulators that emulated console gaming systems like NES.

One thing all of those emulators had in common was that they were very slow, in the sense that emulating one instruction of the emulated machine took many instructions on the host machine. For emulating the old gaming consoles, or the old 8-bit personal computers, where the host machine was running two or three orders of magnitude faster, that was not a problem--the emulation could run as fast or faster than the original machine actually ran. But when emulating something more contemporary, such as emulating an x86 PC at the hardware level to run Windows on it, they were very slow.

Since hardware emulators like these were the only kinds of emulators most people encountered, people tended to see "emulator" and read "ridiculously slow". If they kept calling WINE an emulator, many people would think that means it is ridiculously slow and avoid it, so they stopped calling it an emulator.

(comment deleted)
It's a pretty interesting design -- Microsoft created a new class of processes called pico processes; these are native processes run without the normal Win32 overhead and are managed by a special pico process driver. For WSL, the driver implements the Linux kernel API and process loading. Linux API calls are mapped to existing Windows APIs or implemented directly in the driver.

Everything else in the WSL is the regular Ubuntu user land. So all the processes are "native" and they make calls to a kernel that acts just like Linux.

This is possible because Dave Cutler and the rest of his VMS team built Windows NT to support multiple personalities. From day one the Win32 subsystem was just one of several. That idea got sidelined when Windows became so popular but the core has always been there.

It's kinda funny: the Windows NT kernel (and Executive, the actual native API) are a single-root object hierarchy where everything gets mounted - much like unix - only even moreso. Mutexes, Registry Keys, etc are all objects mounted in the root filesystem.

I guess everything old is new again. Microsoft used to have a server product called Services for Unix that replaced the built-in POSIX 1.0 subsystem with a legit Unix environment but it was always a neglected product that only existed to get people to port server apps to Windows. This time they're doing the integration on end-user desktops and have spent more time getting Win API integration working smoothly.

> This is possible because Dave Cutler and the rest of his VMS team built Windows NT to support multiple personalities.

Although it would seem logical, the WSL doesn't actually use this system. The whole pico process engine and how it interacts with Windows is all new and not related to that design. I'm not really sure the reasoning behind it; perhaps it didn't allow them to do the level of integration they wanted.

I don't know that I would call it a subset either. It's bash, all of it. And you compile for Linux, and it works.

I develop a rails app on Windows using WSL daily. Ruby runs in Linux and gems compile to Linux, not win32. So there is no weirdness compiling something like ImageMagic.

Well, the kernel API is implemented using the (rather undocumented) internal API. But so is the published Windows API. What it's literally not is Linux. However, you might want to call it GNU/Windows if you enjoyed watching people have seizures.
Haha. I almost spit my drink out imagining saying GNU/Windows to a specific friend.
If windows supports the linux system calls by apis that are compiled natively, would the functionality be considered native?
A Linux workstation at the very least involves X and full user's control over the computer, neither of which are provided by this piece of software.
> A Linux workstation at the very least involves X

That's kind of a strange comment given that in these very same comment boxes the most ardent *nix users tend to bash the entire concept of GUI (no pun intended) and just assert that a command-line interface is the right way to use a computer.

(comment deleted)
It's not really an emulator. It's more like a virtual machine that runs Linux in the background and lets you use the commands. You can install Ubuntu with it and it's officially supported. If it didn't work, I'm sure Ubuntu wouldn't run.
Thanks for the clarification. I guess I'm having a hard time classifying it, since you can use an actual VM but this seems like something less than that.
Correct, it's not a virtual machine at all. It is a reimplementation of the Linux kernel's API. Most userspace Linux programs run as normal and can't tell that the system calls they do aren't handled by the Linux kernel.
What it is is what BSDers call a "kernel personality". It's not a virtual machine; the Windows kernel just knows how to load Linux binaries and translate Linux system calls to the corresponding Windows calls.
It works great for me. Like others have mentioned, it's not an emulator, so I don't feel sandboxed using it. The main downside is one of the caveats they mention: "Linux files are NOT accessible from Windows." Hopefully they can fix this in the future.
%AppData%\local\lxss\rootfs

Have fun

I recall there were issues if you tried to modify those files in Windows. Maybe they've fixed that in recent updates, but my impression was that while I could see the files, I shouldn't be touching them.
Yes. Updates to those files didn't seem to be reflected in bash until I'd closed and reopened the terminal.
(comment deleted)
FYI, this does not work.
Since you have to uninstall and reinstall WSL to upgrade it, it makes more sense to store your files on the Windows file system and symlink them into your home directory.
I just cd to my windows home and work there.
It works frighteningly well; it's practically magic how well it works. I've even used it run GUI apps (mostly emulators for embedded software) via a Win32 X client.

In early builds I did have some file system weirdness but I believe that's all be resolved now. I expect the creators update will be a very solid version.

Alot of stuff works great. I had a pretty high functioning dev environment. Hit snags when I tried to interact with the hardware. Like for setting up VPNs or networking tools. I think because it doesn't manage the hardware.
I had it break on me a while ago because there was no inode support and that's needed for hot-reloading of code when developing with web frameworks.

I'd rather just use Linux and not be surprised by anything.

Would you mind elaborating a bit? What's the exact functionality that's required? Is it like notification support for file modification or something?
Yep, but they fixed it already, fix rolled out with the last major Windows 10 update.
Wasn't that the first beta release of insider? I thought they fixed inode support

https://blogs.msdn.microsoft.com/commandline/2016/10/07/wsl-...

They did.

My point was that I just don't want to encounter bugs. When I run Linux, I get Linux. I already have it installed and I know how it works. I don't want to take the chance of a bug breaking my development workflow.

> My point was that I just don't want to encounter bugs.

You purposefully installed a pre-release version in which they heavily mentioned there would be major bugs and other unfinished things in it.

I'm not sure what you expected here but unless you're talking about the release version I don't think you're being fair at all.

>> Wasn't that the first beta release of insider? I thought they fixed inode support

> They did. My point was that I just don't want to encounter bugs.

What an awful response. If that's the problem you have then the solution is that you don't run beta software. You're not really making a sensible point by citing bugs in explicitly-marked-as-beta software as a reason to avoid release software that has already fixed those bugs. I would give the final version a try before complaining about nonexistent bugs.

That's exactly what he said, that in order to not encounter bugs he stopped using the software.
With the Creators Update there was major improvement. Here's how I'd put it:

I used to bring a picture of home with me on business trips, now the house just comes along more or less (there are the occasional plumbing issues on the road and it's jarring sometimes when I go outside and realize I'm in some weird neighborhood with maple syrup coating the sidewalks and immediately I'm getting hustled by some guy with his arm around my shoulders and people aren't walking anywhere, just standing there looking at me without blinking and even with the hustler spinning his yarn there's this eerie, heavy silence like a summer storm always on the horizon and I start to miss the fresh clean mountain air back home all the while trying to disengage myself from the hustler without starting too much of a conflict but when I step away my right shoe stays stuck on the sticky street and I stumble over and the hustler, before I've even hit the ground, he's already got his fingers around the wallet in my back pocket and still everyone just stands there watching as I smack pavement ... you know?).

I've been using this for back-end dev since 14.04 distro (lastest update is xenial). Quite stable and very fast, no emulator or vm come close to WSL. Best gift from MS to devs after VS.
Does using the system change power consumption / battery life?
Not in a noticeable way. I'm sure there isn't much extra power usage.
It's still way too slow for me using tmux.

File system performance seems bad. Have tried multiple times to use it. First when it was first announced, and then again when Creators Update came out.

But... it's just not good enough yet. Hopefully the Fall Creators Update improve things.

For now, running a Linux VM is still way faster.

After this was initially announced I ran apt-get a a few times for dependencies, then compiled OpenSSL inside the box. I also got linux apps working with a gui, which was quite possible.

On balance, due to security issues, I decided not to use WSL for day to day.

finally I can remove the win32 specific code from all the open source software I maintain

not sure that was what Microsoft was going for though...

Depends on your software - it doesn't get you integration with other Win32 apps or features, notably the GUI, since it's a separate subsystem. If your app is a database server, probably yes. If your app is a monitoring agent, definitely no.

(I'm curious if you've used it or you're just commenting based on the headline?)

> If your app is a database server, probably yes.

They explicitly don't support that. From the article:

> Linux distro's [sic] running atop WSL are for interactive user scenarios, NOT for running production workloads on Apache/nginx/MySQL/MongoDB/etc.

And the last time I checked, it's not suitable for services. The moment I closed the bash terminal, all the processes I had running through WSL terminated - including nginx and tomcat.

Ah, thanks. I've only played around with interactively but that makes sense.

It really seems like the primary use case is supporting Docker/OCI containers for local dev, so you can keep using a Windows desktop instead of switching to a Linux one.

(comment deleted)
Unless you're going to force your users to install WSL up front(which is a pretty poor first contact) I think you might be better served by keeping it around.
Why? The Linux sub-system is the best part of Windows. He's doing them a favor.
Extra dependencies are rarely ever doing anyone a favour. Yet another thing to keep up to date, occupy disk space, memory...
That's a pretty flimsy case when it's bundled with the OS and the performance and memory cost is in their court to improve.
It seems to still be a feature hidden under Developer Mode thus not appropriate as a dependency for end users.

Maybe OP is talking about tools installed on his/her own system only?

WSL is not always available for corp Windows setups
You are misunderstanding the point of WSL. It's not about writing software with Linux that users will run with Windows. Rather, it's about writing software on Windows that users will run on Linux.

The target demographic is developers of Linux server software. A lot of those devs today run macOS

Oh no, I get that. The OP was making the assertion that open source doesn't need win32 portability.

That's a huge pain in the ass for those of us who work in things that are tied to win32(graphics, gamedev tools, etc) we happily contribute back but ripping out a working port just seems petty.

it's a maintenance cost

I have to maintain a separate build system for Windows, all the win32 specific code, and also test under Windows... and most of this requires a Windows license

if I can rip all of that out by outsourcing the compatibility testing to Microsoft: all the better, even if I have to add a line to the documentation requiring users to check a checkbox once in some control panel somewhere

Once you turn WSL would the actual user experience of those apps change?

Shouldn't you be happy that WSL will enable F/OSS devs to write cross-platform software much easier by not having to keep two sets of code?

Honestly, Windows users should be accomodated for as little as possible. I don't want to write my software once for 12 operating systems and once again for one. WSL is the only reason my software runs on their shitty OS at all.
If you're just looking to do open source for the fun of writing software then by all means ignore portability(which is a totally legit approach).

However if you're goal is to have an impact with your software then supporting win32 is a good bet since you're going to find an order of magnitude more users on win32. You'll also probably want iOS, Android and other platforms that aren't drop-in ports for POSIX if you want to provide a reasonable interface.

iOS and Android are largely POSIX-compatible. Windows is not as an intentional anticompetitive design choice. Now that WSL is mature, there's no reason to play into that nonense any further (though in my opinion there was never any reason to).
My theory of what they are going for is to migrate server devs from Macbooks running BSD Terminal.app to cheaper Windows laptops running WSL terminals. Once you have migrated away from Mac, getting your server code to run on Windows natively becomes a lot easier and more attractive.
The question of why you would want to run your server code on Windows (aside from supporting legacy .NET apps) remains. Those same sysadmins can overwrite Windows with a BSD or Linux on those cheap laptops.
Because some of us prefer Windows to Linux on the desktop.
My point was that I don't see the sense in the strategy laid out by grandparent, because I don't see a compelling reason to run Windows on servers (I say this as a former Windows sysadmin (as recently as this year, not 2005)).
He said server devs, which I assume means people who develop stuff that runs on a (nix) server.

corysama, I agree. Windows was really lacking in any type of native unix connectivity. No native ssh, sftp support is a big one. You can get free third party programs for that, but nothing beats opening a terminal and having all of it, especially if that's what you are accustomed to.

I really love the new shell in Windows. I'm so glad they broke away from their old mindset.

For software intended for regular users, POSIX via WSL isn't a replacement to the Windows API.

In addition to the feature needing to be manually installed, developer-mode must be enabled. WSL leaving beta does not appear to change that.

If the feature was installed by default, and an X server was bundled, it would risk the Windows platform. WSL allows developers to be placated without affecting the business side of the platform.

Does anybody use this?
I do, for Ruby/Sinatra development, it works very good.
As an Rails dev on OSX, do any tests (or various dev tasks) that spawn a browser work with the WSL? ie. the letter_opener gem will open a sent email in the browser, selenium will run tests in the browser, etc.
What about PostgreSQL? Last time I tried it I had to install it on Windows because of some reason I cannot remember...
I do not use Postgress, I use Firebird SQL and I had no problems installing it in WSL.
I've been using it every single day since it was announced. It's pretty nice. There are compatibility issues with some programs (mainly networking and a couple weird syscalls), but for 90+% of things, I've had no issues.
Why not just run Linux? Or use a Mac?
I run Linux at home on a laptop (arch), and had been dual booting my desktop for a while. Games, easy access to Office, and software compatibility issues for work software limit me primarily to windows. Plus I've been using Windows since '95. And with WSL, I don't need to dual boot anymore.

Never used a Mac, and never will. Don't see the point, everything is ridiculously overpriced. I build my own PC's

> Never used a Mac, and never will. Don't see the point

Try the Mac trackpad, I think you will love it.

My main project is Ruby, but have a small (mission critical) app that is WinForms .Net. Developing with VisualStudio (not VS Code) inside a VM on a Mac is terrible.

This is way better.

My main project is Ruby, but have a small (mission critical) app that is WinForms .Net. Developing with VisualStudio (not VS Code) inside a VM on a Mac is terrible.

This is way better.

Microsoft employees do. (And they post here).
I use Crystal (not Windows support yet) and works well.
I used it when I first got my current laptop because Linux couldn't work the video properly (it could either do 800x600 resolution stably, or do 4k and freeze every few minutes). It was nice enough. I switched back to Linux as soon as the drivers got good enough and haven't looked back, but I was pleasantly surprised by how nice development has gotten on Windows in recent years. If I weren't building systems management tools that kinda need the system to be "real", I could see Windows+WSL being a great combo for people building multi-platform applications.
Yup. I haven't booted by Ubuntu VM since I installed it.
Can someone point to a decent X server for windows?
From the article:

> NO current plans to support X/GUI apps, desktops, servers, etc. at this time

No plans to support specifically, but a surprising amount of things work simply due to their effort making the rest of it work.
It still works. X is a protocol, install a server and point at it.

It's unsupported, which means it doesn't necessarily work well and they won't help you out.

Yes, I know Microsoft doesn't have an X server. This is why I asked if people could recommend a 3rd party one.
I think Xming works
The free version of xming works for about 99% of things, the other 1% needs the updates provided by the charity ware version, or something more recent
I've been using VcXsrv.

I tried both Xming (donated and got the most recent versions) and VcXsrv. I found VcXsrv to be faster and dynamically picks up my screen resolution. Xming doesn't do that out of the box.

However, I find that both are terrible when my network is a bit unstable such as when I'm in transit. That's the major pain point I have.

Great news, this will hopefully allow our developers to make code on Linux since they've been forbidden from running VMs and it's extra overhead.

I hope Visual Studio gets good integration here because it truly is a first class IDE and it's hard for me to tempt our windows developers away based on that fact combined with the "We don't support linux on desktops" and "No VMS" attitude of my company.

Sheesh, your company sounds like a crappy place to work.
I'd like that too. The main thing holding it back is the file interop. If a windows program creates a file in a Linux directory bash literally can't see it. I've worked around this by putting my real work in Windows directories and symlinking then into my WSL home, but I can see this biting me at some point in the future.
I really hope they make WSL's /home/. symlink to /mnt/c/users/. by default. What's the point of having a separate filesystem and home directory? I want native POSIX in Windows. The WSL implementation feels like... not that.
The linux filesystem has to be segregated from the windows filesystem. If I remember correctly, the linux FS can read from windows FS, but not write to it, due to locking issues. Or something like that. Whatever it was, it made me discount it as a way to write windows code. Instead, I'm using Git Bash, which is based on mingw
You can definitely write to the windows file system from WSL, so long as you don't need admin privileges to do it. I use it at work and 99% of the files I edit are in a windows controlled drive.
For me, reading and writing works, but I have major performance issues on /mnt/. `git status` for example is unreasonably slow on any directory under /mnt/.

I tried to adapt to this by instead of writing to the Windows file system from Linux; to instead write to the Linux file system from Windows. After corrupting my profile 3x and having to reinstall WSL each time, I went back to vagrant[1].

[1] vagrant is also really slow on Windows.

When was the last time you tried? There are some file I/o improve EMTs over the past few months that drastically improved the kind of performance problem you are describing.
I believe you got it inverted. You cannot write on the WSL file system from Windows, but the other way (writing on windows from bash) is ok.
Yes, because Windows doesn't play nice with Linux's permissions.
Which is weird because the Window's NFS server seems to manage it just fine.
How do they expect developers to write code if windows can't write to the file system? Do they expect everyone to use vim or other text based editor?
Or write it using whichever editor you'd prefer in Windows, then access it from WSL, I guess? You can see the entire Windows filesystem from inside the Linux environment. You just shouldn't try to write to the locations that they keep the Linux part of the filesystem in from Windows.
I'd use Emacs and the same X11 apps I'd use on a Linux cluster. There are X servers for Windows, though WSL strangely omits one.

If you like Windows apps, why run WSL?

Just host the code in Windows-land.

Symlink ~/code to /mnt/c/Users/jamie/code, run whatever editor I want in windows to edit the code, and run my app from linux-land in the console. Hasn't given me a hiccup yet, even with a local sqlite database and such.

If you just treat your linux homedir as a spot for dotfiles and symlinks out to windows, it shouldn't give you much trouble unless you're doing stuff that relies heavily on owner/write permissions.

Just put symlinks to the relevant subfolders of /mnt/c/users/... in /home/..., and you can barely tell. I hardly touch /mnt/c.

I like having separate filesystems so I can have both Windows and Linux versions of some things in the "same" place but not interfering.

(comment deleted)
add 'cd /mnt/c/Users/$(whoami)/Desktop' to your bashrc
So is this complementary to the linux subsystem in windows, or a completely unrelated option?
I think you've fallen victim to Microsoft's somewhat awkward naming scheme - the Windows Subsystem for Linux is the name of the "linux subsystem in windows" that you're referring to. It's not complementary or unrelated, but the same thing.
God that's an atrocious name.
Microsoft's other official name for it is "Bash on Ubuntu on Windows". "BOUOW", it just rolls right off the tongue.

You know what they say: "there's only 2 hard problems in programming: naming things, cache invalidation, and off-by-one errors". That team appears to be particularly bad at the first.

The fundamental abusiveness of the naming of this product isn't lost on people. Every time I see "Windows services for Linux" I know very well that it's just Microsoft doing what their public manipulation thing.

I've actually heard this issue discussed by the Windows admins in my company, without them having first heard my own opinion on the matter.

"Why didn't they name it 'Linux services for Windows', or something sane?" My Exchange/storage admin asked. "Because that would make sense", our other Windows admin says.

The discussion moved on to how Microsoft was afraid of the very notion of a product name that made it clear that Linux was doing something useful on Windows. They had to make it seem that Windows was offering services to Linux, because Linux needed the help of Windows, not the other way around.

It is awkward, but the name is a requirement of the trademarks involved. Something about having to use your own trademark (Windows) before someone else's (Linux)
Because they want the first word to be Windows, their brand. They do the same thing with Server for NFS.
(comment deleted)
I hope my Macbook days would be over soon. After using Macbook Pro many years, I find good Windows machines are as reliable as Mac's ones. Apple products are usually overpriced, much less options for hardware accessories and upgrades, very expensive to fix. I have to keep running both Mac & Windows machines which is very inconvenient sometimes.
Which laptop manufactures have you found to be as reliable and well put together as macbooks? I haven't had too much luck with dells or lenovos.
Surface Book and Surface Laptop are quite good.
Just wait 6 months or so after release....
For what?

I own a Surface Pro 3 and a Surface Book. Both have only been improved through firmware updates after release. There was actually some pain points on the SP3 right around release that caused some headaches.

Generally the Surface products have a poor history of 'working' at launch. The reason for waiting is that the firmware improvements come out before you get the machine.

My Surface Book was a spotchy experience for the first 6 months or so. by month 6 it was running acceptably.

Aren't they roughly the same price as Macbooks?
There's no way to answer that without a bias.

It depends which Mac you feel is most comparable to the Surface Laptop, what value is placed on Touchbar (if any), what value is placed on a touchscreen (if any), how much value you place on a slightly faster integrated GPU or a slightly faster CPU (Macbook Pro 13" or Surface Laptop respectively), and numerous other metrics.

Broadly speaking I'd likely say, "similar," but there might also be a $200 saving buying the Surface Laptop relative to a similarly spec-ed Macbook Pro 13". I don't consider that a significant saving when we're discussion laptops costing over $1200, but the savings grow as price increases.

+1 on Surface Book. Great build quality, good dev machine and decent gaming laptop as well.
Was thinking about getting one for work, and gaming is a nice perk

What kind of specs/graphics/resolution do you get on that for games?

Just make sure to grab one with the discrete GPU(dGPU aka Performance Base). It's not going to be anything near a desktop(no laptop will) but I can run most things at 1080p pretty well and some of the lighter stuff(like Pyre) at 3Kx2k(native resolution).
I would strongly recommend the XPS 15 9560 over it, if you don't need it to be able to convert it to a tablet.

More performant, cheaper, better screen.

I'd like to see 4 or 6 cores.
If you stick to the boring Thinkpads (T series and P series) they're fairly safe bets. Some of Dell's business grade laptops are also built like tanks. Neither company's consumer grade (read: cheap) I'd touch.

Microsoft makes good hardware, but you'll pay borderline "Apple Prices" for it.

Only big mistake Microsoft has made is trying to ship the Surface Laptop starting at $999 and topping out at $2199, with Windows 10 S, which you'll be able to "upgrade" "free" for a "limited time only." Meaning, when that promo runs out you may need to pay a $50 fee on your $999 Surface Laptop to get a full copy of Windows 10. To say that annoys me would be a huge understatement.

Yes it's annoying but forgivable when you consider that MS's first priority with its Surface Line is to run a profitable tech demo rather than competing its own foremost customers - Dell, HP...
If you stick to the boring Thinkpads (T series and P series)

Anecdotal, but two out of three T series Thinkpads has sudden motherboard failures. No problems with 3 MacBooks or 3 Inspirons. We're done buying Lenovo.

Counter anecdata: My office is full of T and W series Lenovos. I myself have a first generation Carbon as my work machine. My personal machine was a T410 (and before that another T series) until I recently got a new Carbon.

Absolutely zero reports of problems. None.

A maxed out ThinkPad P71 is AU$13,250 (about US$10,000), but still no option for on site warranty (through the AU store anyway).
I really like the Surface Pro. It's a very nice combo of a tablet & a laptop with lots of power like a laptop. I've used Dell's XPS & Inspiron models. They've last quite long. Their hardware does fail after 4+ years, but acceptable and replaceable and they're inexpensive to replace. I do own a Windows desktop with Xeon core, and it's very powerful PC. Its price is probably 1/4 of the Mac Pro. Definitely not HPs, they're bad computers, both laptops and desktop. Thinkpads are good, but I've never tried one after Lenovo took over.
For those considering MS Surface, be aware that, unlike Apple, support is limited to the country that you purchased the device in.

See this comment from 2 months ago on HN [1].

Because of that negative point, I'm now considering one of the Ubuntu Dell Precision models and would appreciate any experiences on HN of Dell and international support for business class laptops.

[1] https://news.ycombinator.com/item?id=14400873

Author of that comment here.

Still being sent back and forth between Microsoft UK and Microsoft US with an occasionally unusable laptop.

Such a good way to attract pro users. The number of Apple store and their world-wide support is one of the reason I see a lot of pro users reluctant to buy something else than a MacBook.

This makes absolutely no sense since the only buyers of Surface products are as of now pretty much only "pro" users.

If your willing to pay MacBook prices I'd give Lenovo another look. The latest Carbon is just... a perfect laptop as far as I'm concerned.
It may be MacBook prices but they certainly don't offer Apple support. I'm never going to go through that hassle again.
But sir, you did not purchase the extended accidental damage act of God fragile electronics warranty!
Yeah, fair point. Fortunately I've only once ever had to get service for a Lenovo in the 10+ years I've owned one. But you're not wrong.
What happened?

Did apple simultaneously fire all of it's hardware team along with it's QA dept? (we know the 2nd one happened).

I love apple, but it feels like they have a CEO who's running it in "latter years" mode. Zero risk, minimize cost everywhere, maximize profit even if it results in absurd cash piles...

This is what you get when bean counters run tech companies.

I kind of agree, but feel a need to point out that the "absurd cash piles" are a byproduct of tax rules, not of (alleged) timidity on the part of Cook et al.
What tax rule are you talking about? The cash in the "absurd pile" has already been taxed as income.
(comment deleted)
It's a stretch to say that it's a byproduct of tax rules. It's more a product of avoiding taxes, period.

Apple could repatriate its overseas profits at any time. It would have to pay taxes on those profits, yes, but that would be no different than their domestic profits. Apple would be able to deduct foreign taxes, including foreign VAT payments[1], which would put their foreign profits in parity with their domestic profits in terms of tax burden.

[1] Unlike foreign income you can't take a credit on VAT payments. But VAT payments are deductible like any other business expense. Because corporations are taxed at a fixed percentage (no progressive income brackets), it's a distinction without a difference.

I have to agree. Mac has for years now felt like a redheaded stepchild at Apple, and the loss of the dedicated Mac development team at Apple sent the message loud and clear: Tim Cook doesn't give a fuck about the Mac.
Zero risk? I wish they were more cautious and orthodox sometimes. Vide Mac Pro, Final Cut Pro X, TouchBar. Just give me a faster version of the previous one, don't reinvent every category every decade or so. Because sometimes they manage to, but others they just screw up (like everyone else).
(comment deleted)
"This is what you get when bean counters run tech companies."

Yeah, letting the COO be CEO isn't necessarily a good idea in a tech company.

> I find good Windows machines are as reliable as Mac's ones.

Yes. But they are still fugly.

I am sorry I prefer an ugly device which is more powerful and provides more value for the money for less than half of the price of its competitor.
I don't think they're. There're many great ones, very powerful & slick designs. I think you fall into Apple's illusions.
There are plenty of aluminum rectangle Windows machines now.

I just bought a Lenovo gaming laptop (it was an amazing deal) and I'm actually surprised that it isn't super fugly. Gaming laptops are all a bit over-the-top design-wise but Lenovo actually used a little restraint. It also came with no bloatware.

one thing I'd miss from Apple is service. Being ablr to walk into a store where they can fix simple things immediately is AFAIK unheard of with windows PCs.. maybe with MS Stores, but these are incredibly rare outside the US.
For the Thinkpads, you can upgrade the 1-year warranty to on-site next business day for a few bucks. I think a 3-year onsite is a couple hundred, but you don't have to purchase it with the laptop, as long as you buy it before the base warranty runs out.
I'm a Microsoft employee, but never tell them that when I go to the local store to get an idea how they treat everyone else. I've returned a few things and been shocked at how good and fast the service is.Basically it's Sorry! Here's a new one! Bye!

Disclaimers: Inside the US, Microsoft employee, Nazgûl

I've had excellent experiences at the Microsoft store. In one case, I returned a Surface Pro and they really took the time to listen to why I decided to return it. Now, I don't know if that feedback ever made it outside of the store or not, but I felt like a valued customer, and that means a lot in this day and age.
same here. i got my first macbook in the windows xp days. mac os x was lightyears ahead of that OS and increased productivity many orders of magnitude. nowadays? i use my surface pro for any real work and basically use my macbook pro as a web browsing machine given that's it's slightly more lapable and has a nice big trackpad. but it can barely do that. so many (basically forced) upgrades have left it unusable for running anymore than an app at a time. mac os x has generally degraded and gotten worse and worse. i find you can get a lot more mileage of windows 7 and up out of computers than mac os x these days.
I tried that and got an HP Spectre 15" when my 2013 rMBP was having memory issues. I really wanted to like it and it was a beautiful machine, but the home/end key was in a weird place, and the zoom/scroll in the browser (Chrome) is still clunky, especially the zoom, compared to Safari. There were other little things like no right click dictionary, poor palm recognition, etc.

I went back to the 2017 rMBP and really like it. I use Windows in a VM and have the Cmd -> as end and Cmd <- as home and it works great.

I'd still buy a Thinkpad if they put their old keyboards back in service.

Why not use Linux? Same price point advantage, and even better than mac for development because you can develop on the exact same distro you will use for your server.
Indeed, some advantages I can think of with Linux.

* Containers (LXC, systemd-nspawn, Docker, etc. and native virtualization with QEMU/KVM), Apple doesn't even come close here.

* Use the WM/DE of your choice.

* Superior package management (pacman, apt, dnf, flatpak, etc).

* Use the distro of your choice.

* Use the latest GNU software unlike some crippled bash version like in Mac.

* Decide if you want bleeding edge or not.

* Use any hardware you want (older or new, Linux doesn't care and it will still perform well even with older hardware).

* Get more performance with Linux.[1][2]

* Freedom.[3]

* Privacy, security and transparency.

* Peace of mind, never be forced to upgrade your hardware or software. Your hardware is yours and you can use it until it literally breaks. You control your computer and not the other way around.

IMO, GNOME 3 and i3/sway are way nicer than the GUI on macOS, and you can use all the same development tools and editors on Linux today, tmux, Vim/Neovim, Emacs, Atom, VS Code, Sublime Text, etc.

There are so many other reasons.[4] Feel free to mention your reasons too.

I don't see what's the appeal with Mac at all, it seems like you are just paying for a logo.

[1] http://www.phoronix.com/scan.php?page=article&item=macos-sie...

[2] http://www.phoronix.com/scan.php?page=article&item=macos-101...

[3] https://www.gnu.org/philosophy/free-sw.html

[4] https://www.youtube.com/watch?v=qH3v41JmyIg

Great summary. I'd like to add the nix package manager to your list. It allows non-destructive updates, rollbacks, parallel installs of different app/library versions, development environments and much more.
Most of that is supported on Windows

* Docker is supported and it will get better. Nano server supports it otb.

* Chocolatey is a great package manager. Others also exist.

* You can use most GNU tools.

* You can use any hardware you want

* Performance is good on Windows

* Freedom, i.e. FOSS is ubiquitous on Windows too (not as much as on Linux for sure tho).

* Privacy and security is good on Windows 10. Linux desktops are honestly not that safe.

Things not supported on Windows are:

* WM/DE - this is not a thing on Windows

* There is only 1 distro of Windows, but you can basically create your own with package manager, its just there aren't currently any OTB.

There are things Windows has better:

* Powershell is way better shell then anything Linux has to offer.

* Games still work better and there are more supported.

* More commercial tools are available for Windows.

Honestly, the only difference now is the culture around it. Although I use Windows as my desktop (which is irrelevant as I live in the shell and browser 24/7, so any OS will do), i prefer Linux engineers.

Server side ofc. you can't really bit the fact that linux servers are mostly free of charge. Windows Enterprise is terribly expensive.

Honest question

Did they solve long file/path name issue? Remember Windows 7 slow FS with large file count and npm/js breaking everything due to long, nested paths.

> Honestly, the only difference now is the culture around it.

.. and:

* Freedom.[3]

* Privacy, security and transparency.

* Peace of mind, never be forced to upgrade your hardware or software. Your hardware is yours and you can use it until it literally breaks. You control your computer and not the other way around.

?

Some things may exist (e.g. Chocolatey), but why not use a better package manager?

This is asking out of honest ignorance, but what makes PowerShell so much better than other shells?
> Docker is supported and it will get better. Nano server supports it otb.

Docker on Windows is not native, it runs on a VM and uses Linux under the hood.

> Chocolatey is a great package manager. Others also exist.

Chocolatey is a step in the right direction, but it probably doesn't integrate as well as apt or dnf, you still have the Windows Store to update separately, and the Windows Store is what Microsoft wants you to use.

Chocolatey is more like a bandaid solution that was made by the community to deal with the limitations of software installation on Windows.

So I think Linux does package management much better than Windows, but this isn't to say that Chocolatey is bad, it's just that Microsoft has total control over everything on Windows.

I also like how Linux distros share a common file system hierarchy and share libraries between programs, while minimizing disk space and reducing security issues.

> You can use most GNU tools.

Yes, that's because those GNU programs are cross platform, which is good.

Free software also allows others to port programs to other platforms, which is also a very good thing.

> You can use any hardware you want

This isn't completely true, you cannot take your existing Windows drive and just plug it into another computer and expect everything to work, but you can do this just fine with Linux.

An existing Windows install and its license is associated to the machine where you have it installed.

Also, Windows won't run on other architectures other than x86 and I think ARM? Linux is known to work with ~20 different architectures or more.

Another advantage with Linux is that the drivers are built into the Linux kernel, so when a driver is added to the Linux kernel, it will be maintained and improved as part of the kernel, so your hardware will be supported for a very long time / forever.

This is unlike Windows where hardware vendors will release a blob for Windows and won't provide updates after the hardware is EOLed or for the next version of Windows.

I still have old printers that still work fine with Linux but the same printer doesn't have drivers for the current version of Windows anymore.

Linux is the only OS kernel with more hardware support than any other OS out there.

> Performance is good on Windows

Performance tends to vary depending on what you are doing and what you are comparing against.

So this is debatable, and one would need to run benchmarks to be sure.

That said, I find Windows to always be slower than Linux, running Linux on the same machine tends to be faster for the things I do, and Windows tends to slow over time whereas Linux doesn't.

> Freedom, i.e. FOSS is ubiquitous on Windows too (not as much as on Linux for sure tho).

You don't have freedom with Windows, you cannot give a copy of Windows to your friends, and you cannot inspect the Windows source code to learn and/or to modify it or fix anything in it.

> Privacy and security is good on Windows 10. Linux desktops are honestly not that safe.

[citation needed]

Do you have any sources to back this claim? There are a lot of security/privacy concerns with Windows 10, especially with the likes of telemetry and backdoors.

> Powershell is way better shell then anything Linux has to offer.

How is PowerShell better than the many different shells we have on Linux? I don't think this is true.

There is also PowerShell on Linux.

> Games still work better and there are more supported.

Linux has Steam now and many games are being released with Linux support every day, Vulkan is also taking off on Linux.

> More commercial tools are available for Windows.

There are many commercial tools coming out for Linux too, and this is only going to increase.

> Honestly, the only difference now is the culture around it.

It's not just about the culture, GNU/Linux and Windows are different operating systems with different ideas, purposes and design.

Windows is merely ...

Older hardware hasn't quite been solved by windows yet AFAIK. Being the "computer guy" in my family, I'm frequently handed old W7, Vista, and XP laptops that are "running slow". Since a lot of my family isn't too well off, "buy a new laptop that isn't a 1.7Ghz processor with 2 GB RAM" isn't a viable answer. I can't leave them with W7 anymore because of the near future of missing security updates, so lately I've just been wiping them (after backing up everything important of course) and throwing ElementaryOS on there. Runs like a charm, unlike fresh W10 installs on these machines which I can only classify as "almost unusable".
I can write code on Linux, but I cannot run my accounting/finance/photosoft software. Sometimes I need to run test on IE too. I understand the love for Linux for some people, but I would like to get things done the quickest way, of course with the quality required too.
Its a good point. Depending on how frequently you use it, dual booting is an option though. I switched from windows because Meteor was slow as molasses and I'm very glad I made the switch. Dev stuff just runs better on Linux in my experience.
I use a powerful Linux laptop, a thinkpad, and run Windows VM for any software that's windows specific. It makes me sure I can isolate these untrusted applications from the rest of my data.

QubeOS is a good OS to provide these isolation techniques.

For me it's all about power management:

Sleep and hibernate still manage to break periodically.

Higher battery consumption unless I'm willing to break out powertop and tweak endlessly.

Meanwhile, the dev I do is all cross-platform Java and scripting. WSL provides a useful unix-like environment when I need it. And when it really matters I break out a VM.

Sleep and hibernate have never broken for me on various ThinkPads, what hardware and distro are you using?

These days tlp gives power management on Linux a good set of defaults. Powertop tweaking should not be necessary as long as you use a distro that supports tlp.

Sleep and hibernate have never broken for me on various ThinkPads, what hardware and distro are you using?

Happened right around the switch to systemd with Debian Sid on my old T410, which by that point was probably 5 years old. IIRC, the system would resume from sleep or hibernate but the console would not recover properly, so you had to force a VT switch to get the video to reinitialize. Just a huge PITA.

I agree, it had been stable for some time up to that point, but when it broken again, that was the last straw for me, and as a consequence I've stuck with Windows 10 on my Carbon.

These days tlp gives power management on Linux a good set of defaults. Powertop tweaking should not be necessary as long as you use a distro that supports tlp.

Could be. But I'm happy with Windows 10 on my Carbon and have no intention of switching.

It used to be that Linux was on balance the better choice for my use case, being more stable (as in, fewer crashes) and more transparent, with a superior dev experience. Yes, it was always a platform for tweakers... things never seemed to consistently work quite right (hell, back around 2010, it was a miracle if sleep or hibernate worked at all). But since you could open up the hood and mess around, I was willing to live with that given the benefits. As a result, for 20 years Linux was the operating system I ran on every piece of hardware I owned. I even built a 3-tuner MythTV backend and two front-end systems for my home back when I still had cable... you can't imagine all the tweaking!

But over the years the gap has closed considerably.

Windows has become substantially faster and more stable, and tools like WSL have made it a much nicer dev platform. Linux is still far more transparent, obviously, but the stability of Windows 10 means that just doesn't matter that much.

Meanwhile, with Linux, in my experience the need to continuously tweak and deal with random breakages continues to be a fact of life, while distros have become far less transparent through the switch to systemd, making tweaking and fixing things substantially harder (trying to diagnose those issues I described earlier was basically impossible).

As a result, Linux simply doesn't offer enough value for me, at this point, to motivate the hassle.

Of course, as always, YMMV. Some people have a higher threshold for this stuff (certainly I used to be a lot more willing to put up with Linux's idiosyncrasies), and different hardware, distros, etc, perform differently. So I'm not going to claim my experiences are universal. But they are my experiences.

Because then you have two environments to maintain, your Windows OS and then Linux too. It's much easier to do everything on your Windows PC instead of building two separate environments. Bash on Windows is the best of both worlds together.
Which is why I got rid of Windows, it has nothing to offer that I need or want, so why bother with it?
Only $300 a license.
Isn’t there a way to get a free beta version? I got an image once for Virtual Box.
Why would you want to?

Windows is for corporates putting spreadsheets in front of coin counters.

For everything else there is Linux (or FreeBSD), which is probably why Micro$oft is porting SQL server to it.

Are you being facetious? It seems like you are. I'm 99% sure you have to be, but some people do think and write like that.

Notably the cringeworthy second paragraph and substituting $ for s like this is Slashdot in the 00s.

The 90s called, they want your comment back.
Rich Turner and his team has pretty much done the impossible. Huge congratulations to them.
(comment deleted)
WSL needs access to the wifi adapters for network security testing!!!
Every time I read about WSL I can't help but wonder why cygwin is never mentioned. Cygwin provided all this over a decade ago.
Cygwin was able to run unmodified elf binaries on windows? And it was doing it a decade ago? Wow, that's really impressive.
No, but it ran all the Linux applications and shells and utilities. I was running Xemacs in X11 on Windows XP using cygwin years ago.

But to your point they were built for cygwin, not linux.

from https://msdn.microsoft.com/en-us/commandline/wsl/about:

"Bash on Windows provides developers with a familiar Bash shell and Linux environment in which you can run most Linux command-line tools, directly on Windows, UNMODIFIED, without needing an entire Linux virtual machine!"

from https://cygwin.com/:

"Cygwin is not:

a way to run native Linux apps on Windows. You must rebuild your application from source if you want it to run on Windows."

Regarding security, it increases attack surface but besides that is there any critical issues?
Why is it called Linux, though? There's no Linux there at all IIRC, in the sense that it's not using the Linux kernel.
If you're going to be pedantic shouldn't it be "GNU/Linux"?
I guess technically MS need to start referring to Windows 10 as GNU/Linux/Windows now.
More like GNU/Linux/Microsoft/NT. Windows is more of a distro name such as Ubuntu.
The other way around. Being pedantic, it would be GNU without Linux. How is any of that helpful to people?
The WSL converts the Linux system calls to Windows calls with additional wrappers to implement the system calls correctly.
You've made a fair observation, but being strictly correct in the naming, in this case, is probably not helpful for Microsoft or users.

"Windows Subsystem for Linux" sets an appropriate expectation with me (the user) that I will get an experience not dissimilar from installing a real Linux distribution of one sort or another. For Microsoft, it's simply the easiest way to market that idea in the product.

No matter how much someone like a Richard Stallman would like me to differentiate between Linux (the Kernel) and the large proportion of GNU utilities that are the common tools of a complete system, in practice I simply think of the whole lot as "Linux" and probably always will... regardless of how fair, important (or not), the distinction actually is. I expect there are many more who think like that than not.

Because it runs Linux binaries and not FreeBSD binaries instead.

"If it looks like a duck, swims like a duck, and quacks like a duck..."

It's not. It is called the Windows Subsystem for Linux. As I pointed out at https://news.ycombinator.com/item?id=11417059 and elsewhere, this name is in line with similar names that go back a quarter of a century, and they are all in one way or another named after the part that the Windows NT kernel substitutes for.
Barely related, but what's with the whole "Creators Update"/"Fall Creators Update" thing? It's not "Creator's Update," so I guess it's supposed to be targetting "Content Creators," right? But looking at the changes in these updates, I'm really not sure what's been added for any sort of content creator. Windows Movie Maker hasn't turned into Premiere, Paint hasn't turned into Photoshop, etc. So where the fuck does the name come from? And why not just name it with some Apple/Google-esque codename like Snow Leopard or Jellybean instead of making some half-baked marketing scheme?
Yeah, at the time I could still understand them calling the original Creators Update that way, just to have some marketing buzzword to throw at people, but "Fall Creators Update" is really just the dumbest thing I've seen in a while.

Not only is its meaning just as nonexistent as the first time around, it also just seems like something that some guy thought up on the spot in a meeting, after remembering that he was still supposed to ask the marketing department about that.

It's not in any way a remarkable name and it's going to be confusing to many people as well as to search engines, making troubleshooting any issues with it unnecessarily hard.

I use a Mac. And I also use this when I'm using Windows. I try to use both so I stay up to speed on the latest developments of both platforms.

WSL leveled the playing field for me. WSL makes Windows a decent dev machine out of the box.

I wish Visual Studio would integrate better with it though. e.g. if I run a project in VS, I want the option of running in WSL.

(comment deleted)
MS Word and Excel
As a web developer why would this be useful to me. I know Linux and run it for years and now at this job i am on windows. My stack is usually python flask, postgres, vuejs/react, ...

All of these things run natively on windows is there another advantage to moving to the WSL?

I know there are advantages but specifically for my tool chain is there something i am missing?

TIA