duplicity-team team mailing list archive
Mailing list archive
Re: Ubuntu deb packaging instructions
On Oct 4 2018, at 3:07 pm, Kenneth Loafman <kenneth@xxxxxxxxxxx> wrote:
> Here's the checklist I use. Launchpad handles the build process to make .deb's. What's a snap package?
Very helpful, thank you.
Snaps are conceptually similar to Flatpak packages, if you are more familiar with those, but are the preferred choice for Ubuntu users (though they run on most distributions), are generally considered easier for developers to create and the tools to make them look to be built into Launchpad (I see a "recipe" option for Snaps similar to how it sounds like you are building the debs). Compared to what we do today, I see the following advantages:
All dependencies are included within the package, so we can be sure all users/bug reporters are using the same set of packages we are using/testing on. This includes all the runtime requirements, including the exact versions of system libraries and the Python interpreter (https://docs.snapcraft.io/build-snaps/python).
We can ship the same version of the app (using whichever versions of dependencies we like) for nearly all distros and versions of Ubuntu: https://docs.snapcraft.io/core/install - we may still choose to build selected .debs, but I am hoping this will stop all the work you have to do each release for all the old Ubuntu versions.
It is easy (and more secure) for users to install up-to-date versions of our app on old releases (e.g. "snap install duplicity --classic"), as compared to adding PPAs and keys.
Snaps have a built-in channel model (https://docs.snapcraft.io/reference/channels), so we can manage the concepts of stable, beta and edge as distinct from our 0.7, 0.8 series concepts. We can discuss this separately, but we could, for example, move to a model where we have a single series (0.8) and declare a version "stable" if it has been in Beta with no issues for x months. Maintaining two series is more work and all the backporting risks breaking our "stable" with changes that have not had much testing.
If you are interested more generally in the advantage of snaps, this old talk by Mark Shuttleworth: https://www.youtube.com/watch?v=0z3yusiCOCk and the Snapcraft site https://snapcraft.io/ are good resources.
Snaps are the recommended app package for anything that traditionally changed enough to warrant a PPA (instead of people using the version that shipped with the release) and actually a lot of the apps that ship with Ubuntu are moving that way to disconnect app updates from OS upgrades (similar to how things work in smartphones etc).
While I have been looking at this for a while, I have not personally ever built a substantive Snap package, so no promises. I will let the list know if I manage to put together anything usable.