Comment by forrestthewoods

9 hours ago

> Wine and Proton are not tributes to Win32's portability.

I emphatically disagree. It is a hilarious and catastrophic failure of Linux userspace that the best API for running games on Linux is Win32. This has absolutely nothing to do with what Microsoft locking down the desktop market. It has 100% literally everything to do with Linux userspace being a clusterfuck of terrible design.

Linux adopted Win32 because it actually worked. They didn't have to. They could have simply invented a better API that didn't suck. But that's quite hard.

So yeah. I emphatically, but respectfully, disagree with your entire thesis.

It's Linux's failure that one of the world's biggest corporations outspent it on marketing by orders of magnitude? You can sell crap like hotcakes with enough money and advertising minds. Yours isn't really an argument for Linux APIs being any worse or better quality.

> Linux adopted Win32 because it actually worked.

WINE would have been invented one way or another because enough people would have wanted to run Windows programs on Linux in a world where Linux had dominant market share. For Pete's sake, there are Commodore 64 emulators for Linux in a world where that system has been dead for decades. It has nothing to do with what "works" or not. WINE and Proton are developed as actively as they are today because Microslop has been able to market so effectively to convince average joes and businesss leaders to buy their crappy OS. This has nothing to do with the quality of APIs.

> They could have simply invented a better API that didn't suck.

Is there ever a situation where this statement isn't true? Everything built in software can be seen as sucking, and all software could have been written better the first time around.

  • > It's Linux's failure that one of the world's biggest corporations outspent it on marketing by orders of magnitude?

    No, It is Linux's severe failure that it lacked a singular, stable, and unified userspace GUI API.

    • > No, It is Linux's severe failure that it lacked a singular, stable, and unified userspace GUI API.

      Careful, some people are too hell bend on idealogies than making a reliable product. They'd never understand this.

      This is one of the reasons why open source (free as in beer) will never work for anything serious. When my work depends upon a software someone made for free, there's an unnecessary power dynamic in play where since I didn't pay for it, they can rugpull me anytime. Before someone comes with the argument of forking, that's not how an economy works. I can't be the farmer, the truck driver, the salesman and sometimes even the buyer at the same time.

      The kernel doesn't owe anything to the distros, which is insane, distros doesn't owe anything to the various libraries and vice versa, none of them owes anything to the application developers. It's a boat where each person is rowing in their own direction because they don't care what others does with their code and they don't have to. Because they are working for FREE®.

      The effects of this is catastrophic. Everytime I try to switch, I can't find a single userspace application that works half as good as windows applications. People need incentives to make their work good, no one does anything for free. Free just means it sucks.

      If microsoft/apple/google tomorrow releases their own distro, every single one will abandon their flavor of the week arch/ubuntu/mint/fedora for that one. One that's made by people in exchange for money. I bet the ubuntu developers use macbooks.

> Linux adopted Win32 because it actually worked.

Completely untrue - Linux "adopted" Win32 because the majority of video games are written for Windows (and thus Win32).

They could not have invented a better API because the entire reason Proton exists is because developers don't build native Linux games.

  • > because developers don't build native Linux games.

    Correct. However you grossly misunderstand why why dev don't build native Linux games. The answer is that distributing proprietary software that works on "Linux" is an absolute unmitigated clusterfuck of pain, misery, and woe.

    Cross-platfrom is very very easy. It's a solved problem. There are indie devs with custom engines that can easily ship for Windows, macOS, iPhone, Android, Playstation, Switch, and Xbox.

    If Linux userspace had an ABI that wasn't garbage then adding "Linux" to that list would be very easy. The fact that devs don't and it is your primary clue.

    I keep putting "Linux" in quotes because back in the day with r/LinuxGaming would spam Kickstarters begging for Linux support that's what they asked for. Of course there is no such thing as shipping for Linux. There is the Linux kernel and glibc and a kajillion different distros that are all unique and terrible in an myriad of different ways.

    And it turns out that Linux is such a minefield clusterfuck that the actually best ABI is Win32. It'd be great if Linux designed a new ABI that was better. Seriously, that'd be awesome. But in the meantime Win32 it is!

> It is a hilarious and catastrophic failure of Linux userspace that the best API for running games on Linux is Win32

Studios don't target Linux, they target Windows and sometimes Mac.

Imagine if Flappy Bird targeted only iPhone, because there were only 50,000,000 Android users in the world (hardly worth supporting). Then Android creates an iPhone runtime on Android so people can play Flappy Bird on it, and you conclude "iPhone actually worked, this is evidence that Android is a hilarious and catastrophic failure."

  • I don't need to imagine a made-up scenario that doesn't make sense. We can look at what has happened at face value.

    The calculus is very very very boring and simple. Game devs will support every single platform on the planet in which the cost to support that platform - both directly and long-term maintenance - is less than the increased revenue that platform provides.

    It is not uncommon for indie games on custom engines to support Windows, Playstation, Switch, Switch 2, Xbox. And, depending on the game, iOS or Android. Sometimes macOS although that's increasingly rare.

    Native Linux builds are pretty rare. Especially before Proton got pretty good with Steamdeck release.

    Supporting Linux is a monumentally tremendous pain in the ass. Radically more than literally any other platform. It is hands-down the hardest and most painful to support natively. So painful that emulating Win32 is a clear win. Valve's runtime helps a lot. And supporting another path is just a waste of time.

    Very sad!

    • > The calculus is very very very boring and simple. Game devs will support every single platform on the planet in which the cost to support that platform - both directly and long-term maintenance - is less than the increased revenue that platform provides.

      Companies end up not doing profitable things all the time, for many reasons. One rational reason is that while action 1 might be profitable, action 2 is even more profitable. So the fact that Linux is not supported does not show that it would not be profitable, but rather that there are other things the companies can use labour for which they think is even more profitable. If they could freely clone their employees (and "unclone" them afterwards) all profitable things would get done.

      (This is just nitpicking about your economic argument, I have no reason to think your conclusion is wrong).

    • > Supporting Linux is a monumentally tremendous pain in the ass. Radically more than literally any other platform. It is hands-down the hardest and most painful to support natively.

      Funny, I have the same feelings after 5 seconds of using MSVC or looking at Win32 documentation. Or is it WinRT now, or is it .NET Core, or .NET Framework, or UWP or OLE or COM, or whatever the API du jour is which will be slightly incompatible and incomplete with the rest of the ecosystem in poorly documented and inscrutable ways?

      Performance profiling and debugging tools are critical for game development. What's your equivalent to strace again, the one that's built into the system natively? There isn't one?

      All major game engines I am aware of support native Linux builds and have for years, anyways.

      I guess there's a reason 80% of the servers in the world run Windows. Because it's so hard to develop for. Er, uh...no wait!

      5 replies →