top | item 12880274

Ask HN: How is Windows for developers nowadays?

13 points| CJefferson | 9 years ago | reply

I don't want any of the new Macbooks, but every time I have tried to run Linux on a laptop I've had nothing but pain. Therefore I'm tempted to use Windows as my primary OS.

I alternate between doing POSIX and Windows development, so I'm tempted to run Windows 10, with one of "Bash on Windows", cygwin, or a Linux VM.

Is anyone using Windows as their daily machine, while doing POSIX coding? How does it work out?

19 comments

order
[+] munchbunny|9 years ago|reply
If you're asking about being able to do the same things on Windows as you could on Linux, then it takes a bunch of work to set up, and has some substantial holes in it. You basically have three options: cygwin, Linux VM, or the new Linux subsystem (https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux)

I use a mix of cygwin and "native" tools depending on whether the language has multi-platform support. It's good enough for most purposes (Python stuff mostly), but not so good if you want POSIX threads in your C++ code, and so on.

But, for example, if you're trying to do game programming, arguably the tooling on Windows is substantially better.

Basically, it's maybe 70% good and highly depends on what tools you need.

[+] TurboHaskal|9 years ago|reply
WSL is okay for basic needs (I can do Go coding with the ACME editor just fine) but you will find it lacking in the long run. There are some bugs here and there, the need to build tons of programs from source (the apt library is quite outdated) and there are tons of missing libraries. Incredibly promising but I wouldn't recommend it in its current state for professional work.

I honestly think Windows is great for development, but for that you need to embrace the whole OS and live in .NET land. If you need POSIX and commercial applications such as Office, Skype and Adobe you're currently better off with macOS.

[+] ksherlock|9 years ago|reply
It's based on ubuntu 14.4 trusty, which is 2.5 years old at this point. Apparently beta versions use 16.4 xenial so that will be updated at some point. However, it does not automatically update and the current recommendation is to save off anything you need, uninstall, and reinstall.

Alternatively, you can sudo editing your /etc/apt/sources.list file to add an entry for xenial. I did that to replace hopeless obsolete versions of gcc (4 -> 5) and cmake (2.8 -> 3.2).

So far, all of my problems with WSL have been ubuntu.

[+] Amezarak|9 years ago|reply
> (the apt library is quite outdated)

It's exactly the same as that of Ubuntu, is it not?

[+] BjoernKW|9 years ago|reply
The machines I use for development usually run some sort of UNIX or UNIX-like OS (i.e. Linux). Sometimes I have to use Windows as well though for development.

From direct comparison I can tell that Windows still sucks for general-purpose software development (if you develop Windows software you'll be fine, obviously):

Installing, maintaining and running common development tools takes considerably more effort. Many of the tools used in software development come from a UNIX background that often just doesn't quite fit the Windows way of doing things. The Windows command line - though greatly improved in recent years - is still playing catch-up with its UNIX equivalents.

Basically, what one commonly ends up with to make Windows usable for development at all is installing some sort of UNIX environment (Cygwin, Git Bash etc.).

[+] ohgh1ieD|9 years ago|reply
What do you mean by POSIX development ?

Yea well, I work for a .NET company and therefore I'm on windows on a daily basis.

It depends a lot on, what kind of development I'm doing, for example if I work in Visual Studio on some C# code everything is just fine, integration between SQL-Server/VS/ASP.NET-MVC is just great but when I have to work on web projects where npm is involved or commandline in general, it's a nightmare.

If found that the only useable shell on Windows is babun[0]. Executing Ruby or Python scripts is also not good at all and therefore I just use powershell for glue scripts.

[0] https://babun.github.io

[+] CJefferson|9 years ago|reply
By POSIX, I mean standard command line POSIX APIs. In practice, things that run on Mac / Linux / BSDs. They often don't build on Windows due to a lack of pthreads, or fork. In some cases, I'd like to make these apps truely windows compatible (unless Bash on Windows gets so good we can just ask people to install that).

I hadn't heard of babun. It looks like a much neater cygwin distro, I will give it a try.

[+] Meph504|9 years ago|reply
To be honest, no operating system is perfect for both POSIX and Windows development at the same time. But windows is very workable in a lot of situations, and when it's not, I run a VM. I don't believe that you will be able to get around that (without dual booting, Remoting, etc...)

There are just a lot of development tool sets that aren't based around working in windows. In that same respect though .net development is improving on *nix, it's clearly not something you want to do for production yet.

[+] ddorian43|9 years ago|reply
It sucks for python for example. Currently I either use a vm or linux.
[+] kennell|9 years ago|reply
Care to elaborate what some of the pain points are?
[+] wprapido|9 years ago|reply
python and ruby are still troublesome in windows
[+] eb0la|9 years ago|reply
Sadly Windows is still a second class citizen when you are developing for Big Data.

There are lots of Java stuff that would be machine independent but in fact rely on native libraries that you cannot find easily.

[+] samfisher83|9 years ago|reply
You can just use virtual box or VMware, or use use putty and log in to server.
[+] wprapido|9 years ago|reply
a linux VM works just fine. with all advances in linux integration, there is no full POSIX support yet. even cygwin is a pain in the ass