Finally bailed Windows this year after a lifetime of MSVC, couldn't be happier with the decision. I'm actually kind of grateful for Windows 11 being so impossibly shit and forcing so many people to finally make the switch! Now I use Arch, btw.
I recently moved from many many years on Windows to full time on Linux for my bare metal embedded development, largely because of ST Micro's good Linux support with their tools.
Somewhat reluctantly, VS Code; but I'm checking out CLion as well and not hating it as much as I did last time.
I find CMake intensely offensive, just the whole worldview of every tool demanding you learn some DSL to do basic things when I have a 4K monitor and just want to select a bunch of cpp and h files to build, but I've since been forced to swallow this bitter pill for work reasons, and I guess it's time to give tools based on it another go.
I never found anything better than the latest macOS machines. I ran ubuntu for years and then switched back to mac just because I don't have the time to tinker and fiddle with stuff in Linux that just randomly makes the computer run hot, or a monitor to not work, or fonts looking awful.
MacOS is just the sweet spot of great desktop + great unix-style devbox.
I agree with this in general, but the major downside of macOS is it obsoletes itself quickly unless you are willing to keep spending money and staying on Apple's hardware/OS/Xcode treadmill.
On my Debian or Ubuntu dev systems, even with 10+ year old hardware, I'm always one apt dist-upgrade away from having one of the best development environments in the world. On macOS, once my hardware gets "old enough" (as defined by Apple), I'm left in the dust. No more OS updates, no more Xcode versions, no more SDKs. I can shore up some development capabilities using Homebrew, but Homebrew itself perpetuates[1] the treadmill.
Every time I'm forced to use MacOS again, its worse than the last time. Everything feels like a bolted on afterthought in an OS that forces Apple's opinions on everything. My productivtiy is ruined trying to do things the Apple way, instead of the way that works best for me.
No thanks, I'll stick with Linux, where I can tinker to have the OS work the way that is best for me, instead of what Apple thinks is best for me.
I ran MacOS for decades and then switched to Linux, because I no longer have the patience to deal with an OS which cannot be tinkered and fiddled into the shape I prefer it in, its makers believing that they know better than I do what I ought to be doing with my own hardware. I cannot stand the paternalism. Linux has its quirks, but at least I can be sure that in the end, it can always be made to do what I want.
This is a valid concern. Perhaps, if you are still interested in giving Linux a chance, you should consider immutable distributions like Fedora Silverblue or even going one step further with NixOS.
NixOS has a declarative configuration that is simply key=value for most use cases. Whatever you configure stays configured, and you can also rollback when doing dramatic changes e.g, migrating from Xorg to Wayland takes 2 min and changing 1 LOC in your configuration.
On top of that I've been locked out of my machine and Apple ID and they just kept sending me emails that in some weeks they were going to reset my password, and they sent me those emails for 2 months before I got access to my apple id and machine again, proof[1].
They just kept not obliging the "2 weeks" (which is already mad when I've given you my secret password and I've verified my email and phone already).
And they did not respect the two weeks 3 times in a row!
That is beyond disgusting and Apple has never got a single $ from me since, I only own a MBP I use on the move because a client has sent me an M3 Max with 48 GBs so it made no sense to at least not use it.
My current project uses a cross-platform SDK. My most comfortable development platform is macOS, and that's what I use 90% of the time on this project. Occasionally I work on embedded android systems. For that I use Linux. If I'm on a consulting job and the client has everyone using Windows, I go with the flow, but my impression is that Windows has become end-user hostile, and it's getting worse. Maybe that's just because my permissions and network access are never set right on the first try when a client needs a machine set up for an outside consultant. Subjectively, Windows is the itchy sweater of development platforms.
I'd love to use macOS, but macOS's font rendering on low DPI monitors (2560x1440) looks awful compared to Windows's font rendering. It's to the point that it's unusable for coding, so I just use Windows with WSL.
BetterDisplay is $15 or so and it changes the equation from ’horrible’ to ‘good enough’. Still not as good as other OSes but at least you don’t have to buy an expensive monitor.
Why Apple decided to not support low dpi is beyond me.
I don’t get to choose the platform my employer wants me to develop on, macOS it is. My wfh setup is on me; $15 is much cheaper than a $1000 5k display.
Apple doesn’t care as long as they move inventory, apparently.
Not sure this covers popular mixes, eg WSL or considers AI clients.
My IDE is Windows (VSCode or Cursor); but I'm also using ChatGPT in the browser and various Linux command line tools (connecting through Windows Terminal to WSL Redhat).
There should probably be a fully hybrid option in the poll.
The question is not about booting, it's about which OS is running the environment where development happens (writing code, compiling code, testing code, etc).
> Clarification: the operating system where e.g. your IDE runs on
If you're developing on a Linux VM that you connect to via a browser tab opened from your Windows laptop, you're developing on Linux for all intents and purposes.
That is, Windows was not doing enough for you so you switched to Linux for dev tasks.
By the same token, if your IDE is running in WSL, for all intents and purposes you're developing on Linux. A virtual machine, sure, but the virtualized OS is a Linux variant. Because installing the IDE on Windows itself was not doing enough for you.
I wouldn't consider Chrome the "operating system" that I am primarily developing on, even though it is really the VM under the hood. Windows is really the one facilitating running the Chrome application, or the Linux WSL application.
To be way too pedantic, if WSL2 (and therefore Hyper-V) is enabled then Windows actually boots into bare-metal Hyper-V first, which then launches the Windows kernel as a VM under itself, side-by-side with the WSL2 VMs if any are installed, so if the lowest level facilitator is what counts then you're really developing "on Hyper-V". I don't think that's a very useful distinction though.
I mean, that's a debatable definition, one could agree or not.
I program on Windows + WSL 2 e.g. and I have no idea how to develop on windows and barely used powershell in my life, but I know the ins and outs of Linux.
I'm not saying you're wrong and I'm right, I'm merely stating that we have different definitions and AFAICT there's no ISO standard saying what qualifies as developing on Linux and what not.
I guess it depends on what you do. I do python, rust, and web frontend in Windows. I have a personal bias against Docker, which'd otherwise be the primary WSL draw for me since if I want/need Linux, I can SSH into the majority of the machines in my house.
I'll throw out my unpopular opinion/experience here, too: I haven't liked any "desktop experience" I've seen or used for a Linux distro, and they all look and feel very similar to me: foreign, basic, and difficult for me to tweak and produce with. I greatly dislike the React stuff both on the web and in Windows, and use Classic Shell, which I'm satisfied with. Windows is easy to customize and almost everything can be tailored without even needing a reboot, many even with registry options already made and just waiting for a bit to be flipped.
It helps my puny, smooth brain, too, to just think of Windows being graphical and Linux being text-based; helps me remember what I'm doing.
Cloud based development and browser hosted environments would certainly be worth measuring. I imagine the numbers are tiny compared to other platforms.
Arduino IDE probably counts as something with decent numbers. Wokwi also makes for an interesting candidate in that area.
Linux for many years. Windows and Mac feels the same to me: they are not configurable enough. You just use almost default setup or you are out of luck.
Used to be Windows, but Linux being able to run Docker containers without emulation is a killer feature for me (I am primarily developing backends that also run on Linux). Even if the driver issues are still really annoying.
22 years in the same Corp, targeting Linux systems since day one, and only in the first two years, and this year, have I been permitted a Linux desktop.
+2 years slugging in a vm.
Developing with out bash is just unnecessary work.
My productivity has more than doubled. easily. I manually type passwords half as much and when I do that is to access Microsoft services.
LXC containers on top of Debian in a specific work station just for this. I have one generic container to start everything, and then create specific ones if projects get bigger.
This is by far the best option to isolate and easily create development environments that I found.
I connect to the containers from VS Code running on Mac OS.
Old enough to remember when work place mandated Windows machines were common place - now it feels like things have flipped in software dev, and macOS has become the "workOS". While no fan of Windows, I now find in my older age I am much less inclined to run Macs for personal/home use than I was 20 years ago - it feels too much like being at work now!
While I of course agree modern Mac laptops are great and Apple's silicon efforts have been superb, just seeing one makes me think of work and not pleasure now, somewhat ironically how I also felt about beige IBM boxes in the early 90s...
My development is on Linux. Some of my work has to run on Windows as well; VirtualBox has several Windows VMs, a ReactOS VM, and Wine for testing.
I've never had to deal with the BSDs or Macs. If a customer was willing to pay for me to come up to speed on either of them I would consider it, but I have no interest otherwise.
I am slowly coming up to speed on Haiku, and now that most of my application and development software runs on Haiku and its hardware compatibility is much better, I'm looking to eventually move from Linux to Haiku for my primary workstation.
I'm surprised at the small number of Windows users. At my workplace every computer has Windows installed and we didn't really have a choice about it, although I never asked. Also, as a fullstack web developer, I don't really see why I would prefer one over the other, since they all support VSCode and I can write code on any one of them. But then again, I exist inside of an echochamber of Windows users so I'm pretty clueless on how development is different on other OSs.
I was surprised in the opposite direction - I thought Windows would be <5% for dev. Big, cheap contracting agencies skew the Windows number up globally, and even just in the US, but this is just HN users so I expected a much smaller representation.
Pleasantly happy and surprised by Linux after many years. I'm not happy with the insidious lock-in that Apple and Microsoft engage in. When I'm developing I need the machine to be by own, and only a few distros provide that. I do wish to try kde though because it receives a lot of praise but just can't figure out which distro is the sweet spot, allowing for games, but good package management too.
I have to develop on Windows for work and then code on a Mac for my own projects at home. Going from a project on my Mac Studio at home to my Windows PC at work makes me want to tear my eyes out.
There are so many things that are just plain worse on Windows when it comes to coding: messing with WSL, constant driver updates, every Windows link opening in Edge etc.
Haven't tried Linux for a while but maybe it's time.
Firefox on Linux, though, is not working very well. It keeps hanging during long typing inputs. No CPU or disk usage, just stuck. And it uses so much memory that the OOM killer sometimes kills it.
I was never a Linux fanatic. It's just that I considered an operating system with ads unacceptable. I rather liked Windows 7.
I think laptop of your choice as a thin client to Linux box in a data center is super common.
Most people seem to pick a Mac as their thin client, since ssh works well natively on it, it runs MS office, and the Windows laptop options are never the “nice” Windows options for some reason, but various flavors of plastic hate boxes that get 1/2 the battery life of the Macs IT offers.
I'm happy to do this as all I need is a vi-like, but I don't really see this happening from people in the IDE camp. I understand that VS Code does support development in a target linux host or container, but I just don't really see people doing it.
Firmware build times can be comically bad. Most firmware builds are heavily optimized and you often build the same codebase dozens of times with each build optimized for one particular hardware configuration of many. You then get to deploy to a legion of test devices (also managed by machines you remoting into) and see which special snowflake you managed to break this time (it somehow is never the one you sanity checked your changes on during development :-D).
It's common to throw (a lot) of compute at the problem, and at some point it's way nicer if the 100+ cores you're cranking to 100% CPU for a few min are somewhere you're not sitting next to. It's also nice that those resources can be shared among many devs so they don't sit idle most of the time.
So, you end up with the thin client pattern. It's usually practical to build locally as well for a few particular targets, which might be a random dev board at your desk. But if I have a remote build system with a few hundred cores cores and a few dozen TB of ram, why would I not just use it instead of using my laptop?
Athough firmware and hardware is such a huge, varied field many people likely have different experiences. Brining up a big custom SoC is way different than bringing up a board with an FPGA and all off-the-shelf stuff.
What's "far more than ssh to some remote server" mean to you? It's always fascinating how different everyone's experiences are.
I went from Windows to a VM running Ubuntu, to WSL, to a Mac. Each switch felt like a massive upgrade and I haven't looked back. I'm new to macs and I hear veterans complaining about the quality of the OS but compared to Windows which was adding ads in their search bars at the time I left... I guess I've just been conditioned to have a low bar
macOS, but mostly for the hardware. The operating system matters less to me than having a good screen and a machine that isn’t made of crappy plastic. After nearly 20 years years on a MacBook Pro, it’s hard to go back to anything that feels cheap. =P
I'd prefer to run Linux, but one of my two primary dev targets requires a proprietary Windows IDE (Automation Studio by B&R). So running that on Windows then using WSL to develop for my Linux servers is the easy path.
Asahi Linux with Kate (editor) & Fossil (scm). - No idea why I wasted so much time switching away from macos. It feels like my computer belongs to me again. 'It just works better'
I think it's possible we see some people now use other OSes, there should at least be an "Other" option. The *BSD's, Nix and some more bespoke options.
have been using linux ever since i got my first personal computer.
our customers all run linux in production too, so it's very easy and natural to develop and test the software in its usual environment (although i wish my laptop had eight times the ram to match).
Mac Mini M4 or Macbook Air M4 is not expensive. Just bought the latter (extensive rebates at the moment) to replace my Intel-based 2019 MPB. Wow! It's pretty much the perfect laptop, at that price.
My primary complaint so far: The green color LED on the magsafe connector is not the same green as the LED on the caps lock key. This wouldn't have passed the Steve Jobs approval.
I need to give Omarchy and Hyprland a real try at some point. I love the idea of a tiling window manager. I just haven't used one in 10 years and it's a big adjustment to classic window management.
If your editor is full screen, and you have a terminal emulator to build, test, and run, does an OS actually matter these days?
VS Code is good enough for 90% of grunt work, and Emacs will give you 110% more, but at the end of the day, you live in your editor not your OS (or maybe it’s just me).
Please don't sneer at the community. The HN audience disproportionately includes experienced programmers, data scientists, machine learning experts, sysadmins, other advanced tech professionals, power users and hacker types who like to be able to control and customize their tools. It's not surprising that Linux and macOS are more popular here than in mainstream society. However it's not the HN way to be arrogant or elitist against the broader population. Sure, it happens but it's against the guidelines and we penalize accounts that act that way. So we just don't want any of this kind of rhetoric here, whether it's "pro" or "anti" the HN community and its ways.
reply