6 ms·
If you want LTS, target Windows. I have stuff I wrote on NT4 that still runs today. Linux and macos can't get near that.
by baz00 3y ago
If you want LTS, target Windows. I have stuff I wrote on NT4 that still runs today. Linux and macos can't get near that.
- skywal_l 3y agoAssuming you are talking about OS kernel API, what if you static link your libc? My understanding is that the linux kernel API famously does not change [0]. [0] https://lkml.org/lkml/2012/12/23/75 https://lkml.org/lkml/2012/12/23/75
- PlutoIsAPlanet 3y agoWindows has a stable userland API/ABI, Microsoft go above and beyond for backwards compatibility. Linux does not have a stable userland ABI/API, it's very common for binaries built for one distro version to not work in another distro version due to changes in system libraries (curl, ssh, libc are common ones), there's usually ways to work around these but it's a mess that shouldn't be left to the user. The solution the Linux commmunity has come up with to solve this problem is containers, such as Flatpak (for desktop apps) and Docker (server apps). Statically linking libc is heavily discouraged (https://stackoverflow.com/questions/57476533/why-is-statically-linking-glibc-discouraged https://stackoverflow.com/questions/57476533/why-is-statical...)
- Arnavion 3y ago>Statically linking libc is heavily discouraged (https://stackoverflow.com/questions/57476533/why-is-statically-linking-glibc-discouraged https://stackoverflow.com/questions/57476533/why-is-statical...) Your link is about glibc, not libc in general. For example musl is perfectly fine to link statically to.
- stingraycharles 3y agoStatic linking libc is very iffy indeed, it’s much better to just use a very old libc and dynamically link against that. Python’s “manylinux” binary target is a good example on how to do that. We’re currently targeting “manylinux2014”, which is a decent middle ground.
- skywal_l 3y ago> Linux does not have a stable userland ABI/API I don't think that is correct. Do you have an example? Linus is adament that "[they] do not break userspace". > it's very common for binaries built for one distro version to not work in another distro version due to changes in system libraries (curl, ssh, libc are common ones), there's usually ways to work around these but it's a mess that shouldn't be left to the user. But that would be the same thing on windows. If you dynamically link your executable to an old version of libcurl and run your executable on a windows with a newer version containing a breaking change, you'll be in trouble, whatever your OS. > The solution the Linux commmunity has come up with to solve this problem is containers, such as Flatpak (for desktop apps) and Docker (server apps). Flatpak and Docker solves many other problems than kernel API. Actually, it does not solve this problem at all if you think about it because these technologies do not insulate you from the kernel (contrary to a VM). > Statically linking libc is heavily discouraged (https://stackoverflow.com/questions/57476533/why-is-statical https://stackoverflow.com/questions/57476533/why-is-statical...) Statically linking glibc. You can perfectly statically link with any other libc. You can even code without a libc (see zig).
- Snetry 3y ago> I don't think that is correct. Do you have an example? Linus is adament that "[they] do not break userspace". I think you interpreted Linus wrong. When he says "we do not break userspace" he is talking about the Kernel APIs that are exposed to the Userland. Userland APIs would be stuff like glibc, which has a terrible track record in regards to API breakage.
- skywal_l 3y agoThe statement "Linux does not have a stable userland ABI/API" is about the kernel. If you are talking about glibc you are already in the Linux OS/GNU Linux (whatever it is called) domain. I think I correctly interpreted Linus when he talked about the kernel API/ABI facing the user (developer of application). A lot of trouble you are going to get maintaining builds are due to poor tooling, not linux. But we are getting into semantics here. At the end of the day, I think that if you are careful with what you are doing and think a little before choosing your tools and writing code, you should get very good mileage out of your linux binaries. I don't know enough about windows to comment on its stability but I very much doubt I could just slide my original Quake CD or 3DS max 4 install into Windows 10. But I might be wrong!
- the8472 3y agoOn the other hand, old software often runs better (or at all) on dosbox or wine than on windows.
- baz00 3y agoLinus does really well with the kernel ABI and API but the problem is really with literally everything else. It's usually impossible to get something to even compile that's more than a few years old let alone run an old binary.
- kukkamario 3y agoLinux kernel API itself isn't really enough to do eg. any UI software, because things like creating windows or showing notifications, are not part of it directly. You need additional software on top of that for those features. Win32 API is much larger than Linux kernel API and is stable so there is quite large chance that a couple decades old software still works without recompiling or updating libraries. It has its issues with many parts of it being completely horrifying to use, but the stability is something that Microsoft has done well.
- Arnavion 3y agoAll this talk about what is or isn't stable ABI on Linux is irrelevant to the article anyway. The article's author explicitly doesn't want their 15-year LTS to ever update its OS or libraries. So ABI stability is not a concern.
- Dalewyn 3y ago10 years of support is standard on Windows, and they might be longer depending on the situation (see: Windows XP) or if you're enterprise and pay up (see: Windows 7). And then there's what you allude to: A stable Windows environment that will, in most cases, run ancient code mostly fine assuming they were written to specs of the time or it's a very important piece of code (eg: Simcity).
- EddyTests 3y agoIf it’s medical devices I assume they want RTOS? Windows wouldn’t work for that world
- troupo 3y agoDepends on the device. A lot of medical equipment still runs on Windows versions from the beginning of the century.
- baz00 3y agoDepends. Most of the stuff would have an RTOS in the hardware interface and a windows GUI.
- kreetx 3y agoDepends on the device but plenty of old Windows machines (XPs) run in hospitals. edit: Hah, good work, siblings!
- EddyTests 3y agoSure, but I assumed they meant pacemakers rather than desktop apps to manage appointments etc!
- kreetx 3y agoMost of the article is about desktop machines..
- tmottabr 3y agoi guess neither.. this is probably machines that handle special hardware.. like MRI, ECG, or monitor for vitals like pulse, blood pressure, blood oxygenation or other stuff like that.. Those machines need to be certified as a whole package and this include the computer that will control it.. and once you certify you cannot make changes to the package without having to certify again.. So you certify the machine with that software on it.. that specific kernel version, that specific libc version and so on.. if you change anything you need to get a new certification.. and now those machines are no longer air gapped because hospitals want to be able to remote monitor the patients vitals from a central nurse station..
- crabbone 3y agoThat's because you are lucky, not because it's designed to be that way. Windows has very variable support timeline for its releases, and, going forward, Microsoft only looking to cut down on support times, not increase them. So, even if it worked for you during NT era, it's not going to work for people writing for Windows 10 or whatever the present day version is. Not to mention that Windows is just not a player in many major computer markets, so not even an option for someone who eg. wants to provide storage solutions or HPC and many others.