Hiler is a developer who writes about Wine and Linux, including the essay 'Win32 Is the Only Stable ABI on Linux'.
HN commenters often cite the Win32 stable ABI essay to argue that Wine or Proton gives the best binary compatibility on Linux.
Yeah, I've had pipx break once with a generic error.
It was after a Python version upgrade.
I also ended up reinstalling pipx and the applications to fix it.
I should qualify my recommendation.
With pipx, your application will very likely install and work correctly,
but it won't necessarily stay working when the Python installation changes.
A self-contained binary is better in this way.
I don't see Python packaging and dependency management as a bulldoze-everything-and-start-over disaster anymore.
Thanks to improvements like wheels, manylinux, `pyproject.toml`, https://peps.python.org/pep-0517/, and Poetry/PDM/Flit/Hatch/etc. they are increasingly adequate.
I have compiled a Python application to a native binary with https://github.com/Nuitka/Nuitka.
Once I got it to compile,
it fully worked.
The process was a little fiddly,
although I don't remember the exact problem.
In the end I set up a Docker container for the build,
and then it built.
Maybe Mojo will be what you wish Nim was.
For standalone scripts, there are options.
(My list: https://github.com/stars/dbohdan/lists/python-scripts-with-deps.)
Support for scripts should be coming to pipx.
I have used the development version and liked it.
This is an area where things are actually pretty good but not common knowledge.
> I'm always amazed at the Windows ecosystem. I can download something that was built in the 90s and happily run it in wine.
https://blog.hiler.eu/win32-the-only-stable-abi/ :-)
What do you foresee not working in the future?
If future versions of Proton break compatibility with older Windows apps, you can use different old versions of Proton for individual games. Steam makes this very easy on Linux, but rarely is it necessary.
I don't foresee many Linux distros breaking compatibility with Wine, which is good, as some devs argue Win32 is the only stable ABI on Linux. [1]
I don't foresee legal issues either, as Wine has been around for 31 years, and its corporate sponsors have included Google in the past. I've seen no indication that the project is on shaky legal grounds.
Microsoft could always create a new API that Wine doesn't yet support, but good luck getting developers to use it -- they've tried many times, but not much has stuck, and most devs just stick with Win32. [2]
1. https://blog.hiler.eu/win32-the-only-stable-abi/
2. https://news.ycombinator.com/item?id=36060678
> it would allow huge communities to emerge keeping very old software/games working indefinitely.
That's a completely backwards take though. Windows is practically the only platform in the world that cares about backwards compatibility. On Windows you can run a 20 year old executable and you've got pretty good chance it runs. With Linux operating systems you have no idea if something compiled on the last LTS release runs on the next one.
This is one of the few issues where having a private company control the entire stack and providing a stable ABI for decades is actually a benefit, to the point where your target if you want to build games on linux is...Win32 (https://blog.hiler.eu/win32-the-only-stable-abi/)
> Proton has got so good that the best way of making games work on Linux is to target Proton and all your cross platform challenges are taken care of
There was the famous "Win32 Is The Only Stable ABI on Linux" article last year which pretty much about this https://blog.hiler.eu/win32-the-only-stable-abi/ https://news.ycombinator.com/item?id=32471624
As you said, easier/better to target Win32 and just use Proton.
It's also funny because it kinda became true on another level as "Win32 Is Only Stable on Linux". It's easier to run old games and softwares (XP era and earlier) with Proton under Linux than on current Windows 10/11
> My recommendation for happiness with Linux is: Always use native apps. Don’t use WINE. Don’t try to be compatible to inherent hostile things.
Rather: don't try to be compatible with inherently unstable APIs:
https://sporks.space/2022/02/27/win32-is-the-stable-linux-userland-abi-and-the-consequences/
https://blog.hiler.eu/win32-the-only-stable-abi/
Just to be clear: I consider it to be a good idea to write native apps for GNU/Linux, but first stabilize the APIs so that they stay basically stable for at least 20 years.
> and allow for overall modernisation / forking / maintenance that is needed.
Or, it allows for pointless churn, extra work, and breakage of apps that were still functional until someone yanked their dependencies. This kind of thing is why software rot is even a thing and people remarking that Win32 Is The Only Stable ABI on Linux ( https://blog.hiler.eu/win32-the-only-stable-abi/ ).