Welcome to Incremental Social! Learn more about this project here!
Check out lemmyverse to find more communities to join from here!

What do you guys do when you want to run unmaintained programs?

I recently wanted to run tegaki, and my experience is pretty much summed up by the meme. I consider myself fairly tech-savvy, but I just couldn't figure out how to compile it. So I just gave up, downloaded the .exe and put it into a fresh wine prefix. After installing CJK fonts, everything ran fine. Now I'm trying to get gpaint to work. My distro recently dropped support for gtk+2 (which I am fairly pissed about, since it's the last good version of GTK+), so I have to set that up manually as well. [[[ EDIT: gtk2 is alive and well. I was just being and idiot and searching for gtk2, when the package is actually called gtk+2. ]]] I installed all of the dependencies that ./configure told me to, but I still kept getting obscure errors when running make.

So, here's my question: what tools make the process of running abandonware easier? Docker containers? Also, what can I use to package abandonware in order to make it easy for other people to run? Flatpak? Appimages? Any advice is appreciated!

Also, inb4 "just find a modern alternative". That would be a reasonable solution. I don't want reasonable solutions!

shalva97 ,

just another Monday

IndustryStandard ,

One day someone's posts how all Linux programs run forever and Windows creates abandonware

Another day someone complains about the Linux version of his program not tuning anyone so he has to use the Windows version

I'm not sure what's going on anymore

renzev OP ,

In the unix world, truly great programs tend to stay around for ever. less has been around since 1983. grep was there ten years earlier. Linux users love vim. What does the "v" stand for, you ask? "Visual", of course, because it was one of the first text editors to offer support for computer monitors. And before that, when we had teletypes, people used ed, which still comes pre-installed with Ubuntu. Not to mention that the modern linux terminal is basically emulating (that's why we called them terminal emulators) an electronic typewriter with some extra extensions for color and cursor support. They're backwards compatible to this day. That's why it says tty (teletype) when you press ctrl-alt-F2.

The caveat is that these examples are all low-level programs that have few dependencies. And they are extremely useful, therefore well-maintained. When it comes to more complex programs with a lot of dependencies, unless there is someone to keep it updated with the latest versions of those dependencies, it will eventually get broken.

The reason this happens less often in W*ndows is because w*ndows historically hasn't had a package manager, forcing devs to bundle all their dependencies into the executables. Another part of the reason is that m*cros*ft would lose a lot of business customers if they broke some obscure custom app with a new update, so they did their best to keep everything backwards compatible. Down to the point of forbidding you from creating a file named AUX in order to keep support for programs written for qdos, an OS from before filesystems were invented.

IndustryStandard ,

The reason this happens less often in Wndows is because wndows historically hasn’t had a package manager, forcing devs to bundle all their dependencies into the executables

Thanks that's pretty informative

Why isn't there a way for Linux users to automatically install every missing dependency for a program? Not sure if this will net me a ban here but the W*ndows way kind of looks superior here. Having old programs break with updates is a massive pain.

currycourier ,

I'm just getting started with nix, if I'm understanding it correctly I think that is kind of what nix package manager does? It keeps packages and their versions separate and doesn't delete them, so that you can update some programs and their dependencies without breaking other programs that depend on other versions of those same dependencies. https://www.linux.com/news/nix-fixes-dependency-hell-all-linux-distributions/

dai ,

Yep, that's the gist. Nix build is reasonably good at spitting out what's missing ( if your packaging a random git ) and nix-init gives you a great starting point, but generally will need some tweaking to get the package running / installing.

TechieDamien ,

There's pros and cons. On one hand, packing your dependencies into your executable leads to never having to worry about broken dependencies, but also leads you into other problems. What happens when a dependency has a security update? Now you need an updated executable for every executable that has that bundled dependency. What if the developer has stopped maintaining it and the code is closed source? Well, you are out of luck. You either have the vulnerability or you stop using the program. Additionally bundling dependencies can drastically increase executable size. This is partially why C programs are so small, because they can rely on glibc when not all languages have such a core ubiquitous library.

As an aside, if you do prefer the bundled dependency approach, it is actually available on Linux. For example, you can use appimages, which are very similar to a portable exe file on windows. Of course, you may run afoul of the previously mentioned issues, but it may be an option depending on what was released.

renzev OP ,

Do you happen to know what (if any?) technical advantages appimage has over "portable" applications (i.e. when the app is distributed as a zipped directory containing the executable, libraries, and all other resources)"? As far as I understand, appimage creates an overlay filesystem that replaces/adds your system libraries with the libraries that the packaged app needs? But why would that be necessary if you can just put them in a folder along with the executable and override LD_LIBRARY_PATH?

IndustryStandard ,

Thanks

paholg ,

Why isn't there a way for Linux users to automatically install every missing dependency for a program?

There is; actually there are several. Every^* distribution has a package manager, that's what it does. But you have to make a package for the program, similar to what the tegaki folks have done for Mac and Windows.

Another option is to statically link everything.

One issue is the fragmentation; because there are so many Linux distributions, it's hard to support packages for all of them. This is one thing that flatpack aims to solve.

I would expect this to be an issue for old closed-source software, but not for old free software. Usually there's someone to maintain packages for it.

Some cursory searching shows no tegaki package on flathub or in nix (either of these can be used on any distro; the nix one is surprising to me; it hosts soooo many packages).

But I do see it in Debian: https://packages.debian.org/search?suite=default&section=all&arch=any&searchon=names&keywords=tegaki

renzev OP ,

isn’t there a way for Linux users to automatically install every missing dependency for a program?

Great question! There is. What you’re describing is a package manager. Overall, they are a great idea. It means devs can create smaller “dynamically linked” executables that rely on libraries installed by the package manager. The w*ndows equivalent of this is using DLL’s. Another advantage is that urgent security updates can be propagated much faster, since you don’t have to wait for each app that uses a vulnerable library to update it on their own. Also, dynamically linked executables can help save on ram usage. With statically linked executables, everyone brings their own versions of some library, all off them off by a few minor revisions (which all have to be loaded into ram separately), whereas a bunch of dynamically linked executables can all pointed to the same version (only needs to be loaded once), which is what package maintainers often do. Finally, package managers eradicate the need for apps to include their own auto-updaters, which benefits both developers and users.

This model goes wrong when software depends on an outdated library. Even if the package maintainers still provide support for that outdated version, often it’s difficult to install two wildly different versions of a library at the same time. And apart from libraries, there are other things that a program can depend on, such as executables and daemons (aka background processes aka services), old versions of which are often even more difficult to get running along with their modern counterparts.

So when you say that the "W*ndows way kind of looks superior here", you are right about the specific edge case of running legacy apps. It just happens that the Linux crowd has historically decided that the other benefits of package managers outweigh this disadvantage.

There are tools for developers to bundle dependencies. Statically linked binaries, "portable" apps, AppImage, and so on... It's just that package managers are so widespread (because of the aforementioned benefits), few developers bother with these. The general attitude is "if you want a statically linked executable, go compile it yourself". And by the time it's time to make an "archiveable" version of an app because it's abandoned... nobody bothers, because it's, well, abandoned.

However, as disk capacity and ram size steadily increase, people are starting to question whether the benefits of traditional package managers really outweigh the added maintenance cost. This, combined with the recent development of a linux kernel feature called "namespaces", has spawned various new containerization tools. The ones I am familiar with are Docker (more suited for developer tools and web services), and Flatpak (more suitable for end-user desktop apps). I personally use both (flatpak as a user, and docker as both a user and a developer), and it makes my life a whole lot easier.

As for what makes it easier for users to get old apps working (which is what you're asking), well... that's sort of what we are discussing in this thread. Again, these tools aren't very widespread, because there is rarely a practical reason for running legacy programs, other than archivism or nostalgia. More often than not, modern and maintained alternatives are available. And when their is a practical reason, it is often in the context of development tools, where the user is probably skilled enough to just Dockerize the legacy program themselves (I did this a couple times at a job I used to have).

dai , (edited )

ive got limited experience however i think ive got tegaki-python to build under nixos:

https://lemmy.world/pictrs/image/8cbe153e-21c1-4a31-b123-6a89c357f08e.png

https://pastebin.com/yCKUBrgG

name to default.nix then run (from the same dir)

nix-build -E 'let pkgs = import { }; in pkgs.callPackage ./default.nix {}' --show-trace

lots more to build but i looks possible to have up and running in nix with some small tweaks from the initial nix-init .nix

a sparceCheckout would trim some fat however minimal on a per-package basis too

looks like its running into perm issues, bit over my head :D

space ,

Or just download an older live CD that is compatible, and use it in a VM.

WaterWaiver , (edited )

A method I have not seen mentioned yet (for when you have an old precompiled version of an app):

  1. Identify the missing libs. You can run the program, but sometimes it's easier to use ldd
  2. Use your web browser to download the missing libs from Debian's repos (stable or older if need be). Unfortunately you often also have to grab their deps too.
  3. Extract the .debs
  4. Move all of the .so files into the same folder as the old program you are trying to run
  5. export LD_LIBRARY_PATH="$(pwd)"
  6. Now try running the app

It often takes a bit of fiddling, but it's worked for me a few times and you only need to fetch the few libraries you are missing. For bigger things however it can be a dependency hell, you might as well use the distro's actual package manager inside a chroot.

Note: You don't need to be using Debian as your host distro, I don't. As long as it's a glibc based distro you should be mostly fine (glibc is mostly backwards compatible)

WaterWaiver , (edited )

My distro recently dropped support for gtk+2 (which I am fairly pissed about, since it’s the last good version of GTK+)

Stuff like this completely throws the shared libraries idea in the bin. There are lots of benefits, sure, but none of them matter when your program won't even start.

Please name and shame your distro. GTK2 is a core component of userspace for many users, just as important as glibc and bash. Maintaining it might be annoying, but it's the lesser of two evils.

My distro (Void Linux) dropped support for qt4 a few years back. Now I'm running QUCS in wine. "win32 is the only stable ABI in Linux"

(And yes you're right 2 is the last good version of GTK+. Gtk3 and 4 look and feel so much worse, they make me feel like I'm being punished.)

renzev OP ,

False alarm! I'm on Void Linux too, gtk2 is alive and well! I was just being an idiot and searching for gtk2 while the real package is called gtk+2. I absolutely agree about gtk3 and gtk4. With gtk4 its like they didn't even bother. Client-side window shadows?!? seriously???. I personally prefer CLI and TUI for my apps, but gtk2 would be my second pick if I ever need to develop a GUI app. Partly because if my app ever gets popular, it would piss off a lot of those updooter types. I would love to use something even more minimalist like nuklear but sadly that's missing a lot of actually useful desktop integration like IME support (as far as I understand).

“win32 is the only stable ABI in Linux”

kek I'll be stealing this one

WaterWaiver ,

Glad you found a fix :)

FWIW I was running "xbps-query -s gtk2" out of curoisity last night and only saw "gtk2-engines", which I thought was odd.

Nobsi ,

I don't run them. Unmaintained Programs are insecure and - unmaintained -

lud ,

What if they are fun games?

Nobsi ,

Then i play them on my windows machine.

renzev OP ,
Nobsi ,

You think this is more of a own than it really is.

renzev OP ,

Haha don't stress it man I'm just messing with u. Of course it's best to use updated software. I only use abandonware for nostalgia/archivism purposes, and only in contexts where it's not a security issue (e.g. non-networked apps) and sandbox it as much as possible. If you even just recognize the supremacy of free software over propr*etary and cl*ud based software, you're already leagues ahead of the people that meme is trying to make fun of

Falcon ,

Well to clarify the two big differences here are that the exe is pre compiled and maybe dynamic libraries.

Heavy tech stacks do suck though

LesserAbe ,

Maybe I'm missing something or don't know how to use wine, but more than 50% of the time if I try to run an old windows program it doesn't work.

LesserAbe ,

Also guess I should say my solution is to run a virtual Windows machine on my Ubuntu laptop

renzev OP ,

Wine tends to work better for W*ndows programs that already have a Linux port, because they depend on fewer m*crosoft-specific libraries... which is not very helpful most of the time, but it is the subject matter of the meme.

Holzkohlen ,

I' been wasting way to much time getting an oldish german game to run. This piece of junk won't even run on windows, not bare metal, not in an XP virtual machine. I guess I'll just try this every year from now it, to see if it runs with wine now.

domi ,
@domi@lemmy.secnd.me avatar

Out of interest, which one is it?

palordrolap ,

Sometimes you can have a similar experience trying to get abandoned Windows software to work too. Found myself in DLL/OCX hell trying to get an obscure old Windows game to work in Bottles.

And if that wasn't bad enough, after installing Bottles' Flatpak (the first and only Flatpak I've ever used), the system decided to activate hourly Timeshift backups despite that being disabled in Timeshift's config. I invoked the power of irony and told Timeshift to take the system back to a pre-Bottles state, and lo, everything behaved again.

renzev OP ,

I love bottles. Especially the flatpak version, since I don't have to worry about w*ndows programs shitting up my filesystem. And the recent per-bottle sandbox feature is also great for running semi-untrusted applications without needing to toggle things in Flatseal every time. I do wish Bottles kept support for winetricks tho. Recently wanted to run M$ Paint (the XP version), and it just wouldn't work with Bottles. Ended up installing the official Wine flatpak and using winetricks from there (it comes pre-installed).

eya ,
@eya@lemmy.dbzer0.com avatar

AUR my beloved

kogasa ,
@kogasa@programming.dev avatar

AUR can't save you from a library needing old versions of dynamically linked libraries

Thcdenton ,

I got Mechwarrior 3 working with wine. That shit was fuckin impossible on modern windows.

frezik ,

A lot of DirectX titles from that time period won't run. It's the biggest reason Wine on Windows makes sense.

callyral ,
@callyral@pawb.social avatar

find an even older, less mantained alternative.

MindSkipperBro12 ,

The left image is what I think of Linux: overly complicated with no real benefit to it.

biscuitswalrus ,

I have to ask, do you think the websites you use or the places you post run on Windows?

unionagainstdhmo ,
@unionagainstdhmo@aussie.zone avatar

I would be very surprised if any major Lemmy instances ran on a MacOS or Windows Server

naeap ,
@naeap@sopuli.xyz avatar

Well, then you assume wrong

Linux just gives you the options. Under windows you'd be just sol

renzev OP ,

Loving those fanboys in your replies getting absolutely triggered haha

MindSkipperBro12 ,

Just let them scream, son, just let them scream.

Holzkohlen ,

Windows user who can't even install an operating system themselves is telling me my linux based os is bad. 😄

MindSkipperBro12 ,

Good for you.

mmcintyre ,

I don't get what the benefits of windows are supposed to be. I just want to play games and ride on the information superhighway. Why would I even want a.. Cortana or paperclip or whatever?

renzev OP ,

The redpill is that there are none. You know how w*ndows search is absolute crap, but you can get actually decent search results with Powertoys Run? You know how instead of trolling through control pannel and Settings, you can just directly search for whatever configuration you need with god mode? You know how w*ndows has a package manager, but it is not even installed by default? Or how it supports hibernation (suspend-to-disk), but hides it from the power menu? Ask yourself, why add all of these useful features, and then hide them far away, while presenting the user with a painfully outdated interface bloated with crap like c*pilot or c*rtana or whatever? The answer is that to remain relevant, M*cros*ft needs to keep the computing experience painful for their users. If they make W*ndows actually nice to use, people will swiftly realize that using your computer can actually be enjoyable. And that leads to trying out alternatives like BSD and Linux. And trying out alternatives leads to finding out that those alternatives are superior. Think about it. They've already lost in the server world. Once the remaining office workers and college students realize that m*cros*ft has been pissing in their mouths while telling them that it's raining, the only userbase that will be left are "capital G" g*ming addicts. And that demographic is also slowly waning thanks to wine and the fact that modern v*deo g*mes are slowly becoming utter trash.

mmcintyre ,

No, I don't know any of that. Some of those words are familiar, tho. Sorry, I ain't had a Windows partition on my own personal computer since... damn I forgot what the one before 7 was called - Vista! We still had the family gaming PC, and I stayed buying games during steam and gog sales (even tho I mostly played on consoles - Nintendos and PlayStations only, lol) but I guess I haven't actually been on it since Windows 8 and I hated it so much! But it's gone now anyway, cannibalized for parts. Only 1 kid left at home, he's got his own PC, and I don't even know what version of windows he's running. It's hilarious, go back a few decades and I was free windows tech support for everyone, but now I don't even know how to Windows.

And look, I'm probably just a trash monster. Like, I'm playing Just Cause 4 on my PS4 right now. And I play plenty of other trash (but also some good games) on my Garuda (it's based on arch, btw - installed by my husband who has only ever installed windows in his life, with very minimal input from me) gaming PC. I also have the steam deck, but once my son donated parts after his latest PC upgrade, the steam deck just mostly gets picked up to do a little update every so often - but I'm about to go on a trip (and the switch has already been claimed)!
To be fair to the steam deck, I mostly don't even power on my gaming PC, as I really love my PS4 (I can't stand the PS5 and usually only get on it to help my grandson when he's here) and my rarely-turned-off MX Linux PC (I don't hate the KDE of Garuda, but there's a reason I use an XFCE-based distro as my daily driver).

I might be a gaming addict.
But Microsoft hasn't had anything to offer me since like, George W Bush was president. And even then, it was steam then gog who really had stuff to offer me on the PC. And in the console department, they ain't ever had anything I've wanted, maybe my hands are too small or something but I've always hated the Xbox controller.

OpenStars ,
@OpenStars@startrek.website avatar

I like how you pointed out: backwards compatibility is a choice.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • linuxmemes@lemmy.world
  • incremental_games
  • meta
  • All magazines