Hacker News new | ask | show | jobs
by saidinesh5 1114 days ago
At one point we have had to maintain support for 3 different versions of libpng in an application we were working on - just to make it work on 3 different popular distros. (Ubuntu via PPA, Arch via AUR, OpenSuse iirc).

For the popular applications, it maybe that distro maintainers send you the pull request. But for small time applications, all you get are bug reports that the application is crashing on X distro, fix it.

We ended up moving to AppImages to not deal with all these headaches anymore.

Distros themselves run on very few volunteers. So it's usually a painful process to even get your application packaged into distros like Debian etc .. when dealing with public domain libraries that aren't available in their repositories but you aren't allowed to statically link to them.

1 comments

This sounds susp. Why was there not a common denominator for libpng? Were you using some cutting edge features that weren't back ported?
I think we were using libpng 1.2 because some distros weren't packaging 1.5. Then we decided to move to 1.5 and not care for distros without 1.2.

https://github.com/vovoid/vsxu/search?q=libpng&type=commits

I remember there were some undefined reference errors too that were causing these issues across distros..

But why couldn't you just use 1.2, is the question?

I've been bit by this style thing plenty of times. Just recently, I started a python project and used 3.11, only to realize I was targeting AWS Lambda and at the time 3.9 was the best they offered. I could have tried maintaining two versions and worked around that, or I could change completely to 3.9. (Now 3.10)

Did I lose on some things? Yeah, the switch stuff, in particular. That said, it was far preferable to a complicated build chain that tried to support both.

It was a decade ago, so my memory is a little fuzzy on this.. but that's one of the commits I shared above. Trying to force it to use 1.2. But there was a Gentoo user who ran into issues with that and i had to revert it.

But you do see the problem right? How distros end up creating this weird situation of certain libraries not being available in certain places. They won't even let you statically link your program to those libraries to it into their repositories. It was easier to just give up.

This isn't really a "distros" problem as it is a "dependencies are hard" one. Having many targets for deployment makes it visible, but just look at the complexity of targeting all browsers to see how it is dealt with for ostensibly simpler requirements.
I imagine at some point people were like "is it more work to investigate this (and similar future questions) or switch to shipping AppImages instead". :(