Win32 is the stable Linux ABI

(loss32.org)

111 points | by krautburglar 2 hours ago

20 comments

  • haunter 1 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 58 minutes 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 54 minutes 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 44 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 50 minutes 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 1 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 57 minutes 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 50 minutes ago
        Lua
        • pjmlp 46 minutes 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 1 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 1 hour ago
    Unironically, yes. It's time that Microsoft taste their own medicine of embrace, extend, and extinguish.
  • bobajeff 18 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 38 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 1 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 33 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 22 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 1 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 53 minutes 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 1 hour 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 55 minutes 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 42 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 37 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.

    • pcdoodle 1 hour ago
      [dead]
  • znpy 1 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 53 minutes ago
      I've also had the same thought...
  • Ygg2 46 minutes ago
    Damn, they didn't miss a spot to add a Loss comic reference.

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

    • Lutzb 13 minutes ago
      Thank you. I was contemplating the logo but my brain could not make the connection.
  • foxrider 1 hour ago
    I mean... isn't that just X11 light compositor (like IceWM) with binfmt enabled?
  • aggling 1 hour 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 1 hour ago
      you have full control of a Linux system. win32/linux respects your rights that microsoft doesn't. that's the difference.
      • aggling 1 hour ago
        That is irrelevant to the feasibility of reimplementing the Win32 API on Linux.
        • raddan 49 minutes 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 52 minutes ago
          It's already been done, though. Wine has been around for 30 years and has excellent compatibility at this point.
          • aggling 32 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 28 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.