OK, so in modern, sensible development platforms you have a means to specify dependencies and install them.

From what I’ve seen, the world of Linux/C/Vala development currently doesn’t have such a thing. Folks list their dependencies in readme files and you’re supposed to install them one by one, e.g., using apt. (Please someone correct me if I’m wrong, as I’d LOVE to be wrong on this.)

So, question, before I shave yet another yak: do any dependency management systems exist for this?


Hmm, so to somewhat answer my own question, there’s a project called Vanat that apparently has been around for ~4 years that aims to do this for Vala. Anyone know why it doesn’t seem to have almost any uptake within the GNOME ecosystem or within elementary OS?


· · Web · 2 · 1 · 1

@aral I'd say a difference in philosophy. Instead of fragmented dependency versioning and management on per-project level (like with npm based web) it's handled centraly by the distribution.

Granted, this may change in the future (for example with the move towards flatpak on the latest elementary release). But in the past I've gotten distinctly different vibes from these communities. It's hard for a new tool to gain traction if it goes agains the community it's trying to serve.

@antolius I get a sense that these difficulties are seen as features as they form rights of passage that allow only the really determined to persevere so they can rewarded with the privilege of contributing to a project.

I guess you have to ask if there’s a correlation between having people who don’t mind (or enjoy dealing with) complexity designing software and that software being hard to use.

@aral shifting dep. management to a whole other set of people (distro maintainers) benefits app devs. No version clashes, no ungodly node_modules dirs, no "left pad" type shenanigans.

Coming from Java, where I do enjoy per-project dep management, I get your barrier to entry argument.

Perhaps the issue is in "multi target" mindset? My desire to control my own deps deminished once I committed to targeting only elementary. Now it's a question of what libs do I get on this platform?

@antolius I was probably not clear: I’m talking about going from this:

1. Clone repo
2. Spend fifteen minutes figuring out what the dependencies are and manually installing them
3. Build and run the app

To this:

1. Clone repo
2. Run dependency install command
3. Build and run the app

@aral yeah, that part is ripe for improvement! 😅

Hm... It would be interesting to solve it in a way that still respects the environment of the distribution it's running under.

@antolius @aral I guess one obstacle would be that dependencies aren't always known by the same names in the various package/software managers, and each manager having different commands for installing and updating packages.

For app developers to keep track of this would mean a lot of repeated/duplicated efforts, so you would indeed kind of need a separate tool for it.

@FiXato @aral yeah. It's the cross platform builds where distro managed dependency model fails.

If I'm building my app on elementary OS I can easily tell you how to build it on that platform. But if you are rocking e.g. GNU Guix I don't even know how to talk to you.

Flatpak and other "containery" packages help distribute the app to users on other platforms. But supporting cross platform dev environments is the tricky part. Perhaps it's not even worth solving? 🤔

@antolius @FiXato My approach is: support it well for one platform. If others see that it works, they might be inspired to implement something similar for theirs.

Sign in to participate in the conversation
Aral’s Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!