Win32 is the stable Linux ABI

(loss32.org)

129 points | by krautburglar 2 hours ago

20 comments

  • senfiaj 48 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
    • ori_b 5 minutes ago
      To quote a friend; "Glibc is a waste of a perfectly good stable kernel ABI"
    • dralley 15 minutes ago
      While true in many respects (still), it's worth pointing out that this take is 12 years old.
    • kwanbix 20 minutes ago
      I agree 100% with Linus on this. I can run an exe file from WinXP on my Win10 or Win11 in 99% of the cases, but I need to hunt versions that work on my latest Mint or Ubuntu release because what was using previously no longer works for apps that are not in the reppo.
    • duped 26 minutes ago
      It's really just glibc
  • oybng 1 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 1 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.
      • zppln 5 minutes ago
        I'm an enterprise user and I find Windows 11 a complete disaster. They've managed to make something as trivial as right-clicking a slow operation.

        I used to be a pretty happy Windows camper (I even got through Me without much complaint), but I'm so glad I moved to Linux and KDE for my private desktops before 11 hit.

      • materialpoint 4 minutes ago
        The problem with Windows after Windows 7 isn't really ads, it's the blatant stupid use of web view to do the most mundane things and hog hundreds of MB or even GBs for silly features, that are still present in enterprise versions.
      • lelele 1 hour ago
        Do you mean Windows 1x Pro/Enterprise?
        • hypeatei 49 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.
          • r_lee 12 minutes ago
            Enterprise is not retail and is usually done via volume licensing, but probably without any additional configuration it might have that stuff intact.

            But you can use group policy etc. freely. I don't know how Win 11 is though

    • Ygg2 1 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.

      • mikkupikku 9 minutes ago
        Millions of total computer noobs hit the ground running with Windows 95. It was a great achievement in software design.
      • PunchyHamster 29 minutes ago
        He was talking about user interface not app compatibility
  • mikkupikku 1 hour 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.
    • mainde 2 minutes ago
      It kinda works both ways, just yesterday I tried to play the Linux native version of 8bit.runner and it didn't work, I had to install the Windows (beta) version and run it through proton.
    • jimbobthrowawy 54 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.
    • Verdex 29 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.

      • wffurr 18 minutes ago
        >> some sound issues

        Is this 1998? Linux is forever having sound issues. Why is sound so hard?

        • mikkupikku 10 minutes ago
          In some games I get a crackle in the audio which I don't get through any native application, nor some games run with proton. I don't know if that's what he means, but it hasn't bothered me enough to figure it out. I use bluetooth headphones anyway, I'm relatively insensitive to audio fidelity.
        • bmicraft 7 minutes ago
          To be fair, you can have sound issues on windows too. It's not usually on issue on linux anymore either though.
    • andsoitis 40 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?

      • shakna 17 minutes ago
        Anything around DirectX 10 and older has issues with Windows, these days.

        One more popular example is Grid 2, another is Morrowind. Both crash on launch, unless you tweak a lot of things, and even then it won't always succeed.

        Need for Speed II: SE is "platinum" on Wine, and pretty much unable to be run at all on Windows 11.

        • tubs 11 minutes ago
          Isn’t this because the wine db has those tweaks pre configured?
  • rickcarlino 1 hour ago
    Building GUI utilities based on VB6 instead of status quo web technologies might actually be more stable and productive.
    • andsoitis 33 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.

      • Imustaskforhelp 8 minutes ago
        > 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.

        Wait you can make Android applications with Golang without too much sorcery??

        I just wanted to convert some Golang CLI applications to GUI's for Android and I instead ended up giving up on the project and just started recommending people to use termux.

        Please tell me if there is a simple method for Golang which can "just work" for basically being the Visualbasic-alike glue code to just glue CLI and GUI mostly.

    • pjmlp 1 hour ago
      I would vote for Delphi/FreePascal, but share the sentiment.
      • CWuestefeld 54 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 1 hour ago
        Lua
        • pjmlp 1 hour ago
          Performance?
          • Etheryte 1 hour 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.
    • bobajeff 34 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.
      • jlarocco 6 minutes ago
        That's not really true. Even in the 90s there were large libraries of 3rd party widgets available for Windows that could be drag-and-dropped into VB, Delphi, and even the Visual C++ UI editor. For tasks running the gamut from 3D graphics to interfacing with custom hardware.

        The web was a big step backwards for UI design. It was a 30 year detour whose results still suck compared to pre-web UIs.

    • andy_ppp 1 hour ago
      Honestly, it’s probably faster and less resource intensive through emulation than your average Electron app :-/
      • jeremyjh 43 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.
        • ndiddy 10 minutes ago
          Whenever people bring this up I find it somewhat silly. Wine originally stood for "Windows Emulator". See old release notes ( https://lwn.net/1998/1112/wine981108.html ) for one example: "This is release 981108 of Wine, the MS Windows emulator." The name change was made for trademark and marketing reasons. The maintainers were concerned that if the project got good enough to frighten Microsoft, they might get sued for having "Windows" in the name. They also had to deal with confusion from people such as yourself who thought "emulation" automatically meant "software-based, interpreted emulation" and therefore that running stuff in Wine must have some significant performance penalty. Other Windows compatibility solutions like SoftWindows and Virtual PC used interpreted emulation and were slow as a result, so the Wine maintainers wanted to emphasize that Wine could run software just as quickly as the same computer running Windows.

          Emulation does not mean that the CPU must not be handled natively. For example, the DOSEMU emulator for Linux from the early 90s ran DOS programs natively using the 386's virtual 8086 mode, and reimplemented the DOS API. This worked similarly to Microsoft's Virtual DOS Machine on Windows NT. For a more recent example, the ShadPS4 PS4 emulator runs the game code natively on your amd64 CPU and reimplements the PS4 API in the emulator source code for graphics/audio/input/etc calls.

  • nialv7 2 hours ago
    Unironically, yes. It's time that Microsoft taste their own medicine of embrace, extend, and extinguish.
  • mikewarot 37 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.

  • bobajeff 42 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.

  • haunter 26 minutes 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

  • 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 35 minutes ago
      Using Linux gets you much more hardware compatibility especially for the consumer desktop and laptop systems this is targeted towards.
  • the__alchemist 1 hour 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.
  • antirez 57 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 46 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 42 minutes ago
        There really isn't that much GNU on a modern Linux system, proportionately.
  • 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.
  • jimbobthrowawy 50 minutes ago
    I think there's a quote from Linus himself saying this.
  • ezoe 1 hour ago
    But would you want to run these Win32 software on Linux for daily use? I don't.
    • keyringlight 1 hour 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 45 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 1 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.

      • cromka 1 hour 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 1 hour ago
          CDProjekt releases native linux builds.
          • not_a9 49 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.
      • Goronmon 53 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 33 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?"

      • kaoD 1 hour 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]
  • pjmlp 1 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.

  • 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.

    • hxorr 1 hour ago
      I've also had the same thought...
    • QuadmasterXLII 1 hour ago
      I’m in if this is happening
  • foxrider 1 hour ago
    I mean... isn't that just X11 light compositor (like IceWM) with binfmt enabled?
  • Ygg2 1 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 37 minutes ago
      Thank you. I was contemplating the logo but my brain could not make the connection.
  • 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 1 hour ago
        That is irrelevant to the feasibility of reimplementing the Win32 API on Linux.
        • raddan 1 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 1 hour 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 1 hour ago
          It's already been done, though. Wine has been around for 30 years and has excellent compatibility at this point.
          • aggling 56 minutes ago
            5341 of the 16491 applications listed in the Wine AppDB have a compatibility rating of "garbage". This is not excellent compatibility.
            • winnnd 1 minute ago
              Relative to (64-bit) windows 11, it might be.
  • tosti 1 hour 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 52 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 59 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.