Poll HN: What operating system do you primarily develop on?

78 points by dennis-tra ↗ HN

153 comments

[ 2.9 ms ] story [ 212 ms ] thread
At work, Windows.

For personal stuff, Linux.

At work Windows (no other option), but fully in WSL2 (and a Linux batch compute cluster) so... Linux?

For personal stuff, Linux right on the silicon.

Wait, you work fully in Linux VM but are forced to use Windows? That's a strange requirement.
That's quite normal, many places have blanket policies about what workstations run.
Windows is what we get. I tried running Linux, I can't get our vpn software to work. I proposed reverse SSH tunnels, they call it an "unmanaged endpoint", deemed unacceptable.
(comment deleted)
Which VPN software it is? Last time I had trouble with Checkpoint SNX and even that was figured out [1] (forks because the parent doesn't work).

[1] https://github.com/schlatterbeck/snxvpn/network/members

Cisco anyconnect, I know it can work on Linux, and I talked to some collegues using it on Linux on a "don't ask, don't tell" basis, but they had to hack some cert from the Windows version and I'm sure that IT would frown upon this.

I tried installing a second disc in my laptop for Linux to try just this anyway, but I broke the laptop. Yeah this HP laptop has a 2.5" bay and an m.2 connector and it looks like you can use both at the same time, and you can! But if you read in the manual it says you can't because it puts strain on the connector and indeed, the "laptop died" after some days (pretty bad design I'd say). I didn't try anymore after that.

You can grab that cert in a number of ways. IT can do whatever since they have to provide all the data needed to connect anyway.

> you can't because it puts strain on the connector

Well that looks like a feature designed to sell more laptops.

It's normal for desktops which are owned by the employer.
I wish it was Linux but work doesn't have a Linux SOE... so Mac it is Monday to Friday.
Stuck with windows due to work restrictions. Could happily use either Mac or Linux with windows VM for the unfortunate bits.
Interesting to see such a representation of Windows.

My experience is that the only places where devs are using Windows is when it's mandatory, but when offered a choice, you end up with a 50/50 split Linux/MacOS +/- 25% depending on the company culture.

And even when Windows is mandatory, most devs try to find escape hatches like WSL2 or a VM

I'm not sure it's fair to call WSL2 an escape hatch. I use Windows for work because I like the more polished experience of the desktop, but I can just open up a Windows terminal instance and I've got a linux shell (via WSL2). And best of all, I can access the files directly with `explorer.exe .` if I need to.
WSL2 is literally a whole OS shipped alongside windows. (with nice integration done by the windows devs)

Regardless of the implementation, the fact that you have to use it in the first place instead of native windows tools speaks volumes about how useless windows is for development. I can not fathom how anyone can consider it anything other than an "escape hatch".

For the type of work I do, Linux or Mac or WSL works. My preference also falls in that order, but WSL really does make Windows pretty painless for me. Now if they just ditch it all for Linux+WINE, that'd be great. ;-)
Strictly speaking, it's not a "whole OS shipped alongside windows".

It's an interop layer to allow you to interact with GNU based operating systems from Windows. Linux (or Debian etc.) is the OS.

I use KDE for the more-polished experience on the desktop: https://imgur.com/a/7FOZkdk

I have the Zsh terminal directly in the file explorer (slightly hidden in the screenshot), and also the KDE text editor (Kate). With the tab completion in Zsh, I often find it faster to navigate with "cd w-a/s/m/r/c/e/as<TAB><ENTER>" to go to "/home/symbiote/Workspace/work-app/src/main/resources/com/example/assets" than by clicking.

I also use KDE for the wide range of configuration options. From scratch, it takes me about 5 minutes to go through all the settings to put everything as I like it -- of course, this is only necessary on a completely new system, e.g. at a new job. On the screenshot, I think the only visible change from default is the ^^ and vv buttons next to minimize/maximize, which are "Keep this window above/below" toggles.

Invisible things are mostly keyboard shortcuts for moving windows around, mouse behaviour, auto-starting apps etc.

My experience is that the only places where devs are using Windows is when it's mandatory

That is a very narrow (dare I say Silicon Valley) view of the world. I know tons of developers who love Visual Studio and cannot imagine programming without it. Plus there is a whole world of developers out there happily writing and shipping software that runs natively only on Windows.

I've found the opposite - with the companies I've worked for (all Australian) in the past 10 years, there's been a total of 5 developers I know of who ran Windows (and that's including a person who used to work at Microsoft).
Indeed. It depends what you're doing. Web development, yes, I can see why you'd want a UNIXy system for that. But a lot of the enterprise is Windows-first and if you want a desktop app, that's what you'd develop on. If you're doing embedded development you may have a choice of exactly one operating system with the manufacturer's toolchain.

Do not underestimate the power of full Visual Studio. It's a bit bloated, and it's even slower with Resharper, but if you're working in C# it will do a lot for you.

Swiss here, in my work experience only part of the management used windows.

I also know some small shops enforcing it, but I don't know any dev who uses it because he wants to.

As an observation, especially in the 3rd world, and "3rd tier business" I think Windows is the dominant operating system.
Which some are still running XP. These are the places that could benefit the most from Linux or BSD to keep that hardware running as long as possible.
C# still has a large mind-share in enterprise. And while it's net core is cross platform these days, Visual Studio (Windows) is still the preferred way of working for many.
In decades of software development in Danish enterprise and smaller companies I’ve never worked in a place that didn’t use windows. I don’t think I’ve worked in a place where using WSL wouldn’t be more of an administrative hassle than it was worth either.

Windows isn’t such a bad place to develop these days, depending on what you’re developing of course, but I’ve never had issue using Python, dotnet (as in the cli, not visual studio) or anything related to typescript or node in general.

I don’t particularly like using windows. I can’t tell you why, I used to like it, but I haven’t since I switched from 7 to 10. Which is sort of ironic considering that developing on windows has gotten much better with windows 10, but well, it’s probably just my personal opinion. So I actually often work on things on my personal Mac, which is sort of easy in todays environment if most of your assets live in the cloud which ours do. But I don’t mind using windows, about the only thing that annoys me these days is that you use “cd” instead of “ls” in the non shell terminal.

Danmark is very much still Windows first country for developers. Macs are showing up more and more and a few can use Linux. The thing is, those companies I know who allow their developer to use Linux, provides their employees with two computers, a Linux developer workstation, and a Windows machine for "other stuff".

I have the same issue with defining exactly why I don't like Windows. Part of the issue is my hand cramps up when I use it, but I don't know why. Windows seems sluggish, but people who measure these things says that it's not.

Re. everything is Windows in Denmark, my understanding (backed by a few acquaintances as MS) is that Denmark is being actively pursued as a test-marked by Microsoft: It is a sufficiently advanced market that they can get everything tested, and sufficiently small that they can sell at loss without large expenses.

My experience working in a large Danish Corp. is that you need a really good reason before you can get a non-Windows machine, and if you do you still need a Windows machine on the side. Still, coming from a decade of OS X and GNU/Linux, Windows was actually surprisingly workable as a development environment.

Windows has a market share of 75%. A vast majority of companies use Windows as OS, cause the computers are cheaper, and most people are used to it.

Why would windows be not used by developers? The .net environment is _really_ good these days, and Visual Studio is a top notch IDE.

Even within SV, lots of companies are running Windows desktops.

I actually find it surprising that Linux and MacOs are so well represented.

Visual Studio Professional is more expensive than Jetbrains Rider which was surprising for me to learn.
I've heard that the situation you describe is common in Silicon Valley. Based on my personal experience in Sydney, Australia, the distribution is about a 40/40/10% Win/Mac/Linux. I've seen about the same amount of companies giving either Mac or Windows as the default, and almost always people can request a different OS if there is a specific need. In all other countries where I've worked (Italy, Thailand, Indonesia, Brazil) it's more like 80% Windows. I'm basing this on my direct experience in companies I've worked at, I don't have statistical data.
I willingly use Windows. It's what I'm most familiar with, and I prefer the much nicer desktop environment where things "just work" a lot more. Anything I absolutely need to do in Linux will usually have a workaround in Windows (especially with WSL).
Just need a UI to start Chrome and Visual Studio Code. Have WSL for SSH into Linux servers.
I've played with visual studio code ssh remote development with angular and it is relatively painless to set up for debugging with Firefox. Give it a shot if you'd like.
Really? I'm more surprised that so many are on Linux. I think that says a lot about who's on HN, as in "corporate developers" aren't on HN.
I’m a developer at Amazon and was at Disney before (both very corporate environments). In both companies I run Linux on my laptop/desktop as my primary development machine.
We give everyone free choice and see more of a 60/30/10 split between Windows/Linux/MacOS. We're in Europe.
I think tech culture is just very segregated.

By contrast I'd never seen a developer use a Mac until a few years ago except maybe a few people at conferences. Then the past few jobs I've had have all been Mac-dominant.

I suspect that it’s mandatory, quite frequently. I’d bet it would be a majority, in other communities.

I’m not surprised to see Linux so well-represented (in this crowd). I’m wondering if Unix folks pick that, too, or just don’t participate.

Game development is happening pretty much exclusively on Windows.
Just as an anecdote, I'm forced to use macOS but I wish I could use Windows. edit: with wsl of course
As Apple execs have an agenda of turning developers into low wage gig-workers, I'd run to Windows.
Mac for work, Windows for personal projects.
I use a Mac but work on Linux: I'm always ssh'd into a Linux box, all servers are Linux, all code is on Linux.
ArchLinux with Plasma 5 for everything. Coding at work, automating at work, gaming, homelab and servers. I tried Windows 10, but WSL doesn't feel the same, too many walkarounds to get to my way of working. Tried MBP it was alright, but CPU is too hot with 2 external screens not even doing any work. Attaching 3rd screen doesn't always work, doesn't detect the screen, it seems to be a power-consumption issue, and then I run out of USB ports. Linux PC has best performance with 4 screens and gives be best tools.
Does this refer to the OS furthest away from what is running the code or the closest?

Windows running WSL to support a Linux environment for Python...

Windows running a web browser accessing a colab notebook hosted on a Linux machine...

macOS ssh'd into a Linux box with a tmux "development environment"...

All (my) roads lead to Linux so I'll say Linux.

It says 'develop on' not 'for', hence the mention of Desktop OSes as the client.

Basically in your case, in simple terms: Windows.

Is it really developed on Windows if Windows is solely only used as thin client to access something else? I'd say for examples #2 and #3 the development OS is definitely Linux.

#1 is the only where I'd lean towards "Windows", since WSL tends to involve a much more split workflow, where a lot of your interactions happen outside the VM.

Why is #2 not Windows? He is in Windows. That remote machine hosting a notebook may tomorrow be replaced with Windows, and he would barely notice if he didn't put a lot of shell in his Python.
Yes, unfortunately phrased question. I think they are asking what OS is your development environment on, not deployment target. But a little ambiguous and so will probably be slightly unbalanced in it’s results.
I develop on macOS and Windows (with WSL) to deploy on Linux, so this poll is... interesting, but only captures a third of that equation, if anything.
Linux for development. MacOs for personal use. Windows only for gaming though.
I feel pity for anyone that are forced to develop on Windows.
Exactly. I started using it on my personal machine so that I can get used to it and make my work experience less shitty.
I develop on Windows and Linux, and I'm ok with Windows.

What are the main disadvantages to develop on Windows?

From someone who has done heavy development on both - I would say it's quite difficult to get used to the filesystem, non-POSIX (which is why mac users and linux users tend to find affinity), windows API being a bit arcane (Things like user-groups, event viewer, and process explorer being mostly dated UI apps with unique and strange windows API calls), services vs daemons, session-zero.

I would say it's great at a user level, but under the covers you have to be a true windows grognard to know what is going on.

This is why I don't use windows. Compared to Linux, everything feels strange and obfuscated
I've switched to Windows from Ubuntu on my desktop for development. I do miss some things but WSL2 is surprisingly good, the bluetooth stack doesn't randomly fail (as often) and having access to Windows and Linux tools at the same time without having to dual boot is very useful
Could you please elaborate why? I found macos/ios to be the most annoying platform to develop on by far, expecially if you are trying to make some kind of cross-platform software. For webdev grunt work, in 2022, I think there are no dramatic differences between the 3 OS...
It's not because you don't understand something that other people cannot live with it. Dare I say, I pity such lack of imagination? FWIW I use both limux and windows, if that even matters.
I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done, and WSL saves me from having to learn Powershell (even if I only hear good things about it).

Never even considered MacOS as an option. Not as good for tinkering as Linux, and with 17% market share (both in my country and global average) it can't deliver the "everyone supports this, everything just works" that I got with Windows (it also doesn't help that Apple lately seems to happily break anything not sold by them)

17% market share for MacOS? That seems high?
> I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done, and WSL saves me from having to learn Powershell (even if I only hear good things about it).

I must be the strange one here since WSL is a hardcore nope from me. Mainly because I've gave that setup a chance last year and then after two hours of work I've noticed Windows git or WSL changed all my carriage returns to CLRF and basically broke all scripts and pipelines.

I just finished off a program to show which files use CRLF and which use LF. It also shows results for TAB, NUL, BOM-8 and BOM-16:

https://github.com/jftuga/chars

You can use the -f switch to help with pipelines and -j for JSON output.

> I used to develop on Linux, but eventually wanted something that "just works" so I switched back to Windows. Much less time spent tinkering and more time spent getting things done

I started recommending WSL on Windows to a few friends who wanted to get a taste of how Linux works after hearing praises about it although I've never actually used it myself. I recently realized that systemd doesn't work on WSL (without ugly hacks) and /mnt also mounts Windows disks.

I have stopped recommending WSL since then. Although I don't recommend anyone to use Linux either.

WSL works pretty well for typical command line usage (your typical "grep | sort | uniq" stuff) or for "this command line tool only runs/compiles on linux" usecases. If you push it much more than the abstraction starts getting leaky and you have to get more involved (though WSL2 can be pushed a lot more, e.g. getting systemd running in WSL2 doesn't seem that bad [1]).

1: https://gist.github.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee...

systemd doesn't work on WSL? Blessed Microsoft.
Some might pity you for not being able to add those beefy GPU-s into your setup. I know, external GPU-s exists, which is cool if you miss the Commodore 64 era of plugging a bunch of devices together.
I call it "Windads" these days. Because so many Ads!
Why? My career as been split pretty close to 50/50 between developing on *nix and Windows. And while both have strengths and weaknesses I wouldn't say one is better than the other. If you put a gun to my head and said I could only use one desktop OS for the rest of my life I would probably choose Windows.
I use Windows to develop at home, and Ubuntu at work. I much prefer Windows. The only advantage Linux has is the terminal environment. The GUI is crappy. The memory handling is atrocious, if it starts swapping it'll freeze for twenty minutes before the OOM killer finally kicks in. Multiple monitor use is a crap shoot, I'll always get one black screen after resuming from suspend. Windows is miles more stable. And this on a Dell XPS 15 which is supposed to have great Linux support.
There are two major and many smaller desktop environments for Linux. KDE is more like Windows, you could try that. (sudo apt install tasksel; sudo tasksel install kubuntu-full to get a KUbuntu equivalent, or just sudo apt install kde-full for the main things. Though you may well have a colleague already using KDE.)

Unless you need it for the type of work you do, you could disable swap, or reduce it to a small amount.

(I don't have a laptop, so I can't comment on suspend.)

I develop on Windows voluntarily. Funnily I was not able to set-up Docker with CUDA on any of the Linux distributions I have tried, but on Windows with WSL it worked pretty much out of the box.
In the past I always found Visual Studio to be a solid dev environment. This was for C++, where the debugger was unmatched by anything else.

Things may have changed since then (8+ years ago)?

I use CLion on Ubuntu and it's an absolute joy to use. Debugger is absolutely on par with VS in my opinion - and if you are missing something, gdb is always avaliable within a terminal.
My workstation is Linux, which I mostly use. Though I have a MacBook laptop that I also use. So I voted for Linux, though MacOS is a close second.

I also use Windows for development, but that is only when I do Windows specific stuff.

Which OS do you mean?

The OS where my text editor runs?

The OS where the build system runs?

The OS where the software I'm developing runs for testing?

The OS I log into first thing in the morning?

I think this poll is so unspecified the responses aren't going to be that meaningful.

> The OS where my text editor runs?

Ubuntu Linux

> The OS where the build system runs in?

Ubuntu Linux

> The OS where the software I'm developing runs for testing?

Ubuntu Linux

> The OS I log into first thing in the morning?

Ubuntu Linux

The OS you primarily develop on. Where does your IDE and devex tooling run.
Emacs-OS with underlying hardware-framework/runtime ;)
Mac at work, Linux at home
Whatever the tooling works best on. So Ubuntu for me, mostly as specialised/dispensable VMs.
I primarily do backend (PHP) dev. I write code on a Windows machine. I test it on a server running GNU/Linux, and deployment is also usually on a server running GNU/Linux.
Well, our products work only on Windows/Windows server, so we don't really have a choice there...
Linux is used by developers so Linux will win this poll

MacOS would win in a forum which has professionals who work primarily in movie/music/animation sector

Windows if this was asked on internal platforms of enterprises

I've noticed more and more editors (TV news rather than movies) moving back to windows over the years, the stranglehold that FCP7 and the macbooks from 10 years ago (having supplanted avid/windows) had on shoot-edits isn't anywhere near as concrete as it used to be.

For producers and reporters, the OS has changed from Windows to Chrome

Unfortunately, Windows at work as of late. But I've been surprised at how not-that-bad it's been. With Webstorm + Windows Terminal + Chrome, I have an almost identical frontend workflow to my previous job on MacOS, and barely have to touch anything Windows-specific.
Reminder that this poll likely suffers from self-selection bias.
Also like to see how this changes as daylight time moves over the map.
It's not been the easiest, but with little exceptions, I'm Nix and NixOS all the way down now. The end result has been very good once it's rolling though.
I use Arch Linux with dwm as my daily driver as a software engineer. Sure there is some initial pain setting it up but it’s been rock solid and super fast, never have any problems with it and I love how customised it is to my needs. I only use Windows to play games, while they may work okay with Linux this is certainly not the case with dwm.
Games on Linux are still hit or miss in my experience. With very simple setups (keyboard, mouse, one GPU) it can work okay-ish, but something "exotic" like gamepads, or multi-GPU setups still cause way too many problems.

Windows is a very fine game console, in comparison.

Funny, even ironic, that the thread now starts with someone saying "I use Arch". Good meme food.
Thank you. I seriously didn’t know the meme and had a good read during my lunch break
I use a Mac at work, but I ssh into a Linux server and develop everything there. For personal projects, I use my Win 11 machine.
NixOS for everything. It's the Linux distro I've had the best experience with in ~15 years of daily usage.