Hacker News new | ask | show | jobs
by skrebbel 2260 days ago
I'm curious, I always thought that devs who choose Windows do so because they like the window management and the UI tools etc. That's my reason for sure. What's stopping you from just running proper Linux with VS Code, if you don't like the way the Windows shell works?
3 comments

Windows shell is a good reason not to use Windows. It's like an early 2000s KDE desktop mixed with a bunch of Gnome and ancient Motif apps. On the command line side, PowerShell isn't half bad, but it still requires you to write C# from time to time to make things work... The biggest four reasons to use something other than Linux (Mac included):

* Adobe software, MS Office, pro audio, pro video, and other income-dependent software tools mostly run on Windows and/or Macs and don't have a Linux version.

* Ease of asset management for the company (yes, it can be done with Linux, but Apple, MS and Google have great tools for managing huge numbers of computers). Google (Chrome) and Apple have a great story on configuration management by having much more consistent hardware.

* Company issued laptop (usually combined with the need for MS Office & corporate asset management)

Oh, and I love VS Code, but it really needs a full org-mode equivalent. It's the only thing that keeps me reaching for Emacs at least once a day.

The strongest argument for Windows is not its window management or UI tools, it's that you can use third-party software without dealing with too much bullshit.

On Linux, if your third-party software is available at all, it's on some third party repo you have to add manually, or maybe it's a binary which may or may not work on your particular distribution on your particular version.

This is basically the reason why I gave up on Linux on the desktop, it just hasn't gotten better in decades, it probably will never get better. The distributions have no incentive to make this work well, because first-party packages are a big selling point.

I'll take a crappy default shell over that.

(After re-reading my own comment, I don't think I'm particularly rebuking what you said, it's turned into a "I hate computers" vent :-))

In my eyes, how Windows and Linux deal with third party software is identical...

The Windows model forever has been "you just double click an .exe or an .msi and it runs".

i.e. outside of stuff published on Windows Store (which many developers will not do), it's down to the developer to:

- Distribute their software and provide an update mechanism (download an exe? Windows Store? chocolatey? Steam / epic games launcher / origin / uplay? jetbrains toolbox? adobe software updater?)

- Deal with the many different environments (i686 vs x84, Windows XP / 7 / 8 / 10 / 10 Home / 10 Pro / 10 Pro N* / 10 Basic Server Education Edition N RT for phones)

- (Probably) bundle their software with the exact version of the libraries they're using (looking at you, "Installing Microsoft VC Redist" and DirectX, every single game that I run), because any in /system32 might be the "wrong" ones

* 10 Pro N = "without media essentials" or something, which I stupidly chose last time I forked out the money for a Windows license. Every time there's a new major Windows update (assuming it doesn't repeatedly fail to update, forcing me to reinstall from scratch,) I need to go and reinstall the Media Feature Pack so Rockstar Launcher and GTAV and $software don't all fail to launch with an obscure error code that means one of 100 things that some corporate web forum rep will not have the answer to... Because none of them put a .log file somewhere ...

So the fact that stuff "just runs" better on Win is more to do with third party developer effort rather than a failing of the OS and distribution. There's no incentive for microsoft to make it work better either, because it's Not Their Problem. A whole slew of software runs like bullshit on Windows too, but we just kind of accept it as it is...

Yet me running a program by installing Wine and double clicking the .exe, or via mono, or running one via a snap image, or an .AppImage, or a docker image (those 3 are essentially containerized environments which should work regardless of distro as they bundle their own libraries a la the windows dll hell, though your kernel version may cause issues, just like windows driver versions do), or my Linux distro's packages... is apparently jumping through more hoops than Windows?

As a power user of both OS'es, they're just as much a pain in the ass as each other.

One key difference is the OS <-> application interface is defined as a group of system provided dynamic libraries on Windows, not syscalls. So Windows effectively provides a set of very reliable core libraries that is guaranteed to be backward compatible. And as long as you don't use newly added APIs, also forward compatible. While on Linux even libc is decoupled from the kernel, each distribution uses a different version, the application cannot distribute its own libc in any sane way, and the glibc choose to use ELF symbol version to make incompatible changes to frequently used APIs (like memcpy), sabotage bidirectional compatible attempts.

Oh, and there are only one Windows distribution. Not at least 3 major ones.

These both make packaging for Linux hard (requiring kinda funny solutions wrapping up a sysroot as a whole, like Snap or AppImage), while on Windows, the developer builds an exe, and voila, it works everywhere, even on very old systems. There are simply no funky stuffs e.g. glibc symbol version issue.

IMO several reasons still exist for windows:

* Corp Policy * Gaming * Professional Tools (Photoshop etc.) * Ease of Use

I tried concepts like dual booting windows & linux, but in the end they often created a mental barrier ("Ugh, I could do some work but I would've to reboot"). With WSL2 and PowerToys I'm 90% happy. The missing 10% is a better window navigation via keyboard concept.