Win32 is the stable Linux ABI

111 points | by krautburglar 2 hours ago

61 comments

  • haunter a minute ago

    Reference to the famous “Win32 Is the Only Stable ABI on Linux" post

    https://blog.hiler.eu/win32-the-only-stable-abi/

    https://news.ycombinator.com/item?id=32471624

  • senfiaj 23 minutes ago

    This might offend some people but even Linus Torvalds thinks that the ABI compatibility is not good enough in Linux distros, and this is one of the main reasons Linux is not popular on the desktop. https://www.youtube.com/watch?v=5PmHRSeA2c8&t=283s

      duped 2 minutes ago

      It's really just glibc

  • mikkupikku 38 minutes ago

    Crazy how, thanks to Wine/Proton, Linux is now more compatible with old Windows games than Windows itself. There are a lot of games from the 90s and even the 00s that require jumping through a lot of hoops to run on Windows, but through Steam they're click-to-play on Linux.

      Verdex 4 minutes ago

      My gaming PC isn't compatible with windows 11, so it was the first to get upgraded to Linux. Immediate and significant improvement in experience.

      Windows kept logging down the system trying to download a dozen different language versions of word (for which I didn't have a licence and didn't want regardless). Steam kept going into a crash restart cycle. Virus scanner was ... being difficult.

      Everything just works on Linux except some games on proton have some sound issues that I still need to work out.

      jimbobthrowawy 29 minutes ago

      Wine works on windows too. It's used by the shorthorn project to get software for newer versions of windows to run under XP.

      andsoitis 15 minutes ago

      > There are a lot of games from the 90s and even the 00s that require jumping through a lot of hoops to run on Windows

      What are some examples?

  • oybng an hour ago

    It still puzzles me decades later how MS built the most functional, intuitive and optimised desktop environment possible then simply threw it away

      hypeatei an hour ago

      It still is if you're an enterprise customer. The retail users aren't Microsoft's cash cows, so they get ads and BS in their editions. The underlying APIs are still stable and MS provides the LTSC & Server editions to businesses which lack all that retail cruft.

        lelele 43 minutes ago

        Do you mean Windows 1x Pro/Enterprise?

          hypeatei 24 minutes ago

          Yes. Enterprise, Pro, and Home are the enshittified, retail editions. Enterprise just adds a few more features IIRC but still has ads. The other versions I mentioned above don't have any of that.

      Ygg2 an hour ago

      It's functional - yes, intuitive - maybe, but optimized is highly debatable.

      The answer to maintaining a highly functional and stable OS is piles and piles of backwards compatibility misery on the devs.

      You want Windows 9? Sorry, some code checks the string for Windows 9 to determine if the OS is Windows 95 or 98.

        PunchyHamster 4 minutes ago

        He was talking about user interface not app compatibility

  • rickcarlino an hour ago

    Building GUI utilities based on VB6 instead of status quo web technologies might actually be more stable and productive.

      andsoitis 9 minutes ago

      I would pick Delphi (with which you can build Windows, Linux, macOS, Android, and iOS apps - https://www.embarcadero.com/products/delphi)

      Alternatively, RemObjects makes Elements, also a RAD programming environment in which you can code in Oxygene (their Object Pascal), C#, Swift, Java, Go, or Mercury (VB) and target all platforms: .Net, iOS and macOS, Android, WebAssemblyl, Java, Linux, Windows.

      bobajeff 9 minutes ago

      Only if I don't need to do anything beyond the built-in widgets and effects of Win32. If I need to do anything beyond that then I don't see me being more productive than if I were using a mature, well documented and actively maintained application runtime like the Web.

      pjmlp an hour ago

      I would vote for Delphi/FreePascal, but share the sentiment.

        CWuestefeld 30 minutes ago

        I only had limited exposure to Delphi, but from what I experienced, it's big thumbs-up.

        But if you liked that, consider that C# was in many ways a spiritual successor to Delphi, and MS still supports native GUI development with it.

        NooneAtAll3 an hour ago

        Lua

          pjmlp an hour ago

          Performance?

            Etheryte 38 minutes ago

            If there was sufficient interest in it, most performance issues could be solved. Look at Python or Javascript, big companies have financial interest in it so they've poured an insane amount of capital into making them faster.

      andy_ppp an hour ago

      Honestly, it’s probably faster and less resource intensive through emulation than your average Electron app :-/

        jeremyjh 18 minutes ago

        Wine Is Not an Emulator (WINE). It provides win32 APIs; your CPU will handle the instructions natively. There is no “probably” about it.

  • mikewarot 13 minutes ago

    I'm back to running Windows because of the shifting sands of Python and WxWindows that broke WikidPad, my personal wiki. The .exe from 2012 still works perfectly though, so I migrated back from Ubuntu to be able to use it without hassle.

    It's my strong opinion that Windows 2000 Server, SP4 was the best desktop OS ever.

  • nialv7 2 hours ago

    Unironically, yes. It's time that Microsoft taste their own medicine of embrace, extend, and extinguish.

  • bobajeff 17 minutes ago

    I like this idea and know at least a few who would love to use this if you can solve for the:

    'unfortunate rough edges that people only tolerate because they use WINE as a last resort'

    Whether those rough edges will ever be ironed out is a matter I'll leave to other people. But I love that someone is attempting this just because of the tenacity it shows. This reminds me of projects like asahi and cosmopolitan c.

    Now if we're to do something to actually solve for Gnu/Linux Desktops not having a stable ABI I think one solution would be to make a compatibility layer like Wine's but using Ubuntu's ABIs. Then as long as the app runs on supported Ubuntu releases it will run on a system with this layer. I just hope it wouldn't be a buggy mess like flatpak is.

  • the__alchemist 37 minutes ago

    Yea! I love the spirit. Compatibility in computing is consternating. If my code is compiled for CPU Arch X, the OS should just provide it with (using Rust terminology) standard library tools (networking, file system, and allocator etc) , de-conflict it with other programs, and get out of the way. The barriers between OSes, including between various linux dependencies feels like a problem we (idealistically thinking) shouldn't have.

  • andrewf an hour ago

    Starting with FreeBSD might be easier than starting with Debian then removing all the GNUisms. But perhaps not as much Type II fun.

      tssva 10 minutes ago

      Using Linux gets you much more hardware compatibility especially for the consumer desktop and laptop systems this is targeted towards.

  • antirez 32 minutes ago

    The difference between Win32 and Linux is that the latter didn't realize an operating system is more than a kernel and a number of libraries and systems glued together, but is, indeed, a stable ABI (even for kernel modules -- so old drivers will be usable forever), a default, unique and stable API for user interface, audio, ..., and so forth. Linux failed completely not technologically, but to understand what an OS is from the POV of a product.

      jcelerier 21 minutes ago

      Linux didn't aim to be an OS in the consumer sense (it is entirely an OS in an academic sense - in scientific literature OS == kernel, nothing else).The "consumer" OS is GNU/Linux or Android/Linux.

        i80and 17 minutes ago

        There really isn't that much GNU on a modern Linux system, proportionately.

  • jimbobthrowawy 26 minutes ago

    I think there's a quote from Linus himself saying this.

  • frumplestlatz an hour ago

    Technically it's the only stable macOS ABI, too. The only way to run a legacy 32-bit binary on macOS today is a win32 exe running under Wine.

  • pjmlp an hour ago

    Thus reinforcing development tools that target Windows desktop even further, the OS/2 lesson repeats itself.

    And failing everything else, Microsoft is in the position to put WSL center and front, and yet again, that is the laptops that normies will buy.

  • ezoe 2 hours ago

    But would you want to run these Win32 software on Linux for daily use? I don't.

      keyringlight 37 minutes ago

      Depends on what task you're doing, and to a certain extent how you prefer to do it. For example sure there's plenty of ways to tag/rename media files, but I've yet to find something that matches the power of Mp3tag in a GUI under linux.

      jcelerier 20 minutes ago

      For making music as much as I love the free audio ecosystem there's some very unique audio plugins with specific sounds that will never be ported. Thankfully bridging with wine works fairly well nowadays.

      pjmlp an hour ago

      Gamers have no other option, and thanks Valve, game studios have no reasons left to bother with native Linux clients.

      Just target Windows, business as usual, and let Valve do the hard work.

        Goronmon 28 minutes ago

        ...game studios have no reasons left to bother with native Linux clients.

        How many game studios were bothering with native Linux clients before Proton became known?

          mpyne 8 minutes ago

          That's exactly the point. They weren't, so a Linux user didn't have an option to run a native Linux client in preference to a Win32 version.

          That goes back to address the original question of "But would you want to run these Win32 software on Linux for daily use?"

        cromka 41 minutes ago

        > Gamers have no other option, and thanks Valve, game studios have no reasons left to bother with native Linux clients

        But they do test their Windows games on Linux now and fix issues as needed. I read that CDProjekt does that, at least.

          mikkupikku 36 minutes ago

          CDProjekt releases native linux builds.

            not_a9 25 minutes ago

            I don’t think Witcher 3 or Cyberpunk 2077 have Linux builds available for the common folk? Cyberpunk has a ARM64 Mac build, though.

        kaoD 37 minutes ago

        Well, not having Proton definitely didn't work to grow gaming on Linux.

        Maybe Valve can play the reverse switcheroo out of Microsoft's playbook and, once enough people are on Linux, force the developers' hand by not supporting Proton anymore.

  • znpy an hour ago

    > What is this? A dream of a Linux distribution where the entire desktop environment is Win32 software running under WINE.

    I might unironically use this. The Windows 2000 era desktop was light and practical.

    I wonder how well it performs with modern high-resolution, high-dpi displays.

      QuadmasterXLII 39 minutes ago

      I’m in if this is happening

      hxorr an hour ago

      I've also had the same thought...

  • Ygg2 an hour ago

    Damn, they didn't miss a spot to add a Loss comic reference.

    https://en.wikipedia.org/wiki/Loss_(Ctrl%2BAlt%2BDel)

      Lutzb 12 minutes ago

      Thank you. I was contemplating the logo but my brain could not make the connection.

  • foxrider an hour ago

    I mean... isn't that just X11 light compositor (like IceWM) with binfmt enabled?

  • aggling 2 hours ago

    This is amusing but infeasible in practice because it would need to be behaviorally compatible with Windows, including all bugs along with app compatibility mitigations. Might as well just use Windows at that point.

      nialv7 2 hours ago

      you have full control of a Linux system. win32/linux respects your rights that microsoft doesn't. that's the difference.

        aggling an hour ago

        That is irrelevant to the feasibility of reimplementing the Win32 API on Linux.

          raddan an hour ago

          WINE has been reimplementing the Win32 ABI (not API) for decades. It already works pretty well; development has been driven by both volunteers and commercial developers (CodeWeavers) for a long time.

            aggling 37 minutes ago

            There are many programs that still do not work properly in WINE, even though it has been developed for decades. This in itself demonstrates the infeasibility of reimplementing Win32 as a stable interface on par with Windows. The result after all this effort is still patchy and incomplete.

          tapoxi an hour ago

          It's already been done, though. Wine has been around for 30 years and has excellent compatibility at this point.

            aggling 31 minutes ago

            5341 of the 16491 applications listed in the Wine AppDB have a compatibility rating of "garbage". This is not excellent compatibility.

  • tosti 39 minutes ago

    This is only ever relevant for proprietary software. Free software does not require a stable ABI. Great that wine exists but it should be useless.

    (That and Linux doesn't implement win32 and wine doesn't exclusively run on Linux.)

      juliangmp 27 minutes ago

      Stable interfaces and not being in versioning hell (cough libc) would actually be good for FOSS as well.

      If you make a piece of software today and want to package it for Linux its an absolute mess. I mean, look at flatpack or docker, a common solution for this is to ship your own userspace, thats just insane.

      Nextgrid 34 minutes ago

      Free software can still benefit from a stable ABI. If I want to run the software, it's better to download it in a format my CPU can understand, rather than download source, figure out the dependencies, wait for compiling (let's say it's a large project like Firefox or Chromium that takes hours to compile), and so on.