Traditionally packaging for Ubuntu is via .deb packages but much as I try, I never find it straight forward to create or maintain deb packages and I find creating snap packages much easier.
One use case of snaps which doesn’t get talked about much is using snaps to bring no longer supported software back to life. For example, in Ubuntu 20.10 (Groovy Gorilla) which is soon to be released there is no longer support for python2 by default and many other packages have been deprecated too in favour of newer and better replacements. This does mean though that packages which depended on these deprecated packages are not installable and will not run. Snaps can fix this.
Snaps have the concept of Base snaps where is snap can specify a runtime which is based on a previous release of Ubuntu.
- core20 base is based on Ubuntu 20.04
- core18 base is based on Ubuntu 18.04
- core base is based on Ubuntu 16.04
As such you can create snap packages of any software that is installable on any of these previous Ubuntu releases and run that snap on newer releases of Ubuntu.
My workflow relies on many applications, most of which are still installable on Ubuntu 20.10 but I have found three that are not.
To unblock my workflow I created snaps of these @ https://github.com/philroche/bzr-explorer-snap, https://github.com/philroche/syncthing-gtk-snap and https://github.com/philroche/kitematic-snap which are all snaps using the core18 and core20 base snaps.
Note that these snaps are classic snaps and are not confined as is recommended for most snaps but it does unblock my workflow and is a neat use of snap packaging.
If you need help packaging a deprecated deb package as a snap please reach out.