Comment by steve_adams_86
5 days ago
No, there are good reasons developers are on Windows. Industrial and embedded systems are very often Windows-based, for better or worse. Heaps of games are developed on Windows. Windows-based software itself is developed on Windows.
Being ~2 weeks into migrating from Windows to Linux for my dev machine, there are a lot of good reasons why people use Windows, and I keep learning more each and every day!
From a lock screen that appears ~3 seconds after my desktop does (during which time I can interact with my desktop...) to getting Nvidia GPU passthrough working in Docker being harder running on Linux natively than what it was making it work on WLS (...) to absurd amount of time it takes my machine to come out of sleep.
Oh also the popping and clicking over my BT headset every time someone speaks in a meeting. That was wonderful.
Despite using an older model MB, I needed to install some kernel extensions to get system temperatures working.
Also if I want to develop desktop software, I'm going to be writing against Windows anyway because at least that is somewhat documented, vs the ever changing landscape of Linux desktop software development. (Windows used to be the OS for desktop software, but Microsoft shot themselves in that foot, then removed the entire leg, long ago, by constantly changing and deprecating frameworks, ugh, 20+ years of API stability down the drain...)
> to Nvidia GPU passthrough working in Docker being harder running on Linux natively than what it was making it work on WLS
To be fair, assuming you're using WSL2, you're running docker on a VM, so it doesn't sound that crazy that it might be more work without the abstraction around the hardware that defines. If there were a built-in VM for your Linux distro, it might end up being easier to expose the GPU through that to things running on it than directly too. I can't say I've ever had any need to access a GPU from a container running on a VM then, so this is just conjecture.
> Industrial and embedded systems are very often Windows-based
I find Windows to be the outlier against a sea of embedded Linux devices.
> Heaps of games are developed on Windows
Inertia.
> Windows-based software itself is developed on Windows.
Plenty of Windows-based software is developed on Linux with Wine.
> Plenty of Windows-based software is developed on Linux with Wine
The overwhelming majority of software written against MinGW (or worse, Cygwin) are bad/lazy ports of Linux-first software. Case in point: Git and Perl, both of which drag along an entire coreutils ecosystem (each, so you have two copies of `ls`) along with the main binaries.
First-class Windows programs that are used every day like Office, Chromium and its forks, the Adobe suite, and tons and tons of internal administrative programs for HR, inventory, and more are written on Windows, for Windows, using C# or C++ and 'boring', so-called enterprisey frameworks like WPF, Windows Forms, and WinUI 2.
Anyone remotely serious about taking advantage of the large (albeit shrinking) market share of Windows users should at the very least fire up a VM to test their release binaries, rather than just 'use Wine'.
Ironically it was the act of doing that: spinning up a VM to test a release on Windows, which really turned me against it forever. During installation, I counted 4 un-skippable EULAS about "sharing data" and then asked me what my ad preferences were. To add insult to injury once I finally did get it installed, the start menu was full of Xbox apps and the taskbar had some news headline about the Kardashians on it.
I don't know how people put up with it. It feels disrespectful.
3 replies →
> I find Windows to be the outlier against a sea of embedded Linux devices.
I think you're thinking of consumer devices, not industrial.
> Inertia.
I think that's a tough case to make. Windows offers legitimate technical advantages for gaming and game development. Integration with large vendors' tooling like NVIDIA and AMD is pretty huge. There are real workflow benefits.
> Windows-based software itself is developed on Windows.
You know more about this than I do. That sounds kind of wild to me, like it could be a pretty awful work flow at times for no good reason. It looks like you don't have access to native debugging tools and Wine itself introduces potential compatibility risks. I would rather just develop on target, personally
> Integration with large vendors' tooling like NVIDIA and AMD is pretty huge. There are real workflow benefits.
This seems very much like something that happened because it had such a large market share, not because of any inherent technical advantages
>Integration with large vendors' tooling like NVIDIA and AMD is pretty huge.
This is a product of inertia. If Windows didn't have inertia it wouldn't have ecosystem advantages, it's not inherent to Windows itself
> I think you're thinking of consumer devices, not industrial.
Maybe he's thinking of more modern devices. There was a time when Microsoft flogged WinCE as an embedded solution, and yes a lot of people producing embedded stuff drank the kool aid.
I watched one instance of this happen first hand. They asked me what OS should they base their shiny new product (that I would be the first customer of), I said I would use some 'nix, but they should chose what they were comfortable with.
It turned out to be bad advice. They were comfortable with Windows desktop of course, so they chose WinCE. WinCE is not the stable WinNT they were familiar with, despite what Microsoft's marketing said. I've used a number of WinCE based devices in the past, they were all about as reliable as Windows 95/ME, which is to say most wouldn't last the day without rebooting.
In the end they could only get it working by shipping the product to a team in Germany that had access to the WinCE source. It cost them a small fortune, and lost them over a year. The delay lost me as a customer.
Most (I hope all, but it's never all) of todays experienced software engineers wouldn't make that mistake, but these people where (pretty good) hardware engineers, with a vision for a product they built the hardware for. Developing software was something you hired people to so for you, like plumbing and legal work. And they wanted those people to provide them with a familiar environment.
WinCE has long since been retired, or course. May it soul burn in hell. Yes, those same hardware engineers who insist on sticking to what they are familiar with might turn to Windows 11 instead. But that comes with costs - no ARM or other CPU's, huge resource requirements, insistence on TPM's, so little lack of control of the platform that you lose control of the USS Yorktown [0]. Those costs are large. In fact so large they would have overwhelmed the budget of my engineering friends years ago, and they would have just gone with Linux. I haven't seen a new embedded Windows design in quite a while, so I suspect that's true for most embedded projects now.
[0] https://archive.is/aKrml
1 reply →
As someone who's ambivalent about the experience, I'd say "because that's what my employer issued to me" is perfectly acceptable.
It's also probably one of the most common explanations for why anyone's using it. It's 70% of the market, and even more if you focus on enterprise. Us Linux and Mac folks are weirdos.
Was a windows dev for 20 years-but then I got a job where I didn’t have to use that ad infested joke of an operating system.
Never going back.