3 ms·
As a developer who wants to build an app from source: all the bloody time. Especially problematic if I'm using a distro with an immutable root file system, like
by dylan-m 6y ago
As a developer who wants to build an app from source: all the bloody time. Especially problematic if I'm using a distro with an immutable root file system, like Fedora Silverblue, but let's be honest, sorting through peoples' bizarre build requirements and consolidating that with the distro you're running can be a full time job. Flatpak means your app has a manifest file that describes all of its dependencies precisely. This integrates really well with GNOME Builder[1]. If you're interested: install and run Builder, clone https://gitlab.gnome.org/GNOME/nautilus https://gitlab.gnome.org/GNOME/nautilus, make a change if you'd like, (make sure Builder is using the `org.gnome.Nautilus.json` build configuration), wait for it to fetch dependencies, and run the thing. There's a bit of tedium in fetching bits you might already have[2], but the tedium is reproducible.
And as a developer who wants to release software myself instead of dealing with distros, this is also a vastly better experience. It fits smoothly into a development workflow, and I can just release my thing and have binaries for people to install right away, in a place I control. Distros can still package the thing if they want to for some reason (and Flatpak does a good job encouraging you to use a real build system), but as the developer of the app I get to provide a one click install that actually works (and gets updates, and doesn't pollute your sources.list or give me root access to your system via postinstall scripts).
[1] https://wiki.gnome.org/Apps/Builder https://wiki.gnome.org/Apps/Builder
[2] Flatpak deduplicates things quite well, but it doesn't care if you already have a particular library on the host, and it treats version 1.0.4 of something as completely, entirely different from version 1.0.3, so if you look really closely you'll notice both are on your disk somewhere. But this is the price we pay for reproducible builds, and they're definitely worth it. (See also, Buildstream: https://www.buildstream.build/ https://www.buildstream.build/).