A good sign of maturity and confidence in software is when said software utilizes its own components for future development and enablement. Snapcraft is a command-line utility that allows developers to package and distribute their applications as snaps. But Snapcraft itself is also distributed as a snap, and built in the same manner!
Today, Snapcraft is built using the core18, based off of Ubuntu 18.04 LTS. Very soon, Snapcraft will move to the latest LTS base, core20, both to ensure forward support and updates, as well as to make use of various improvements in the snappy ecosystem. This migration will bring a number of important changes, so we’d like to share our roadmap and plan for Snapcraft, and how these changes may affect you.
Goodbye i386, hello riscv64!
Ubuntu 20.04 LTS introduces support for a new family of CPU architectures, riscv64. At the same time, the support for i386 was reduced to a skeleton list of 32-bit compatibility libraries. This means that the Snapcraft migration to core20 would entail the addition of riscv64 and the removal of i386 in the list of supported build and run architectures.
At a first glance, this may sound alarming, but it is not:
- Snapcraft already maintains two tracks in parallel, the mainstream version in the latest track, starting with version 5.x, and the legacy track 4.x, specifically designed for use with developers and publishers who require the use of ESM base (core), and cannot migrate to the newer bases. The legacy track supports core, and the i386 architecture.
- Similarly, builds for core20 are already configured not to use and build for the i386 architecture, which reduces any potential disruption in development workflows for those already building their snaps with core20.
The change primarily impacts those publishers and developers who are building their snaps with core18 and are targeting the i386 architecture. However, much as we did with the introduction of the ESM support for Ubuntu 16.04 LTS, we want to make the change as seamless as possible. Indeed, the 32-bit compatibility libraries remain in the Ubuntu 20.04 archives, and are not affected by this migration.
Core18 will still be around
The latest version of Snapcraft will use core20 and be published in the 6.x track. The feature set available in the 5.x track will be frozen at the time of the split, and any new features and options will be published in the 6.x track.
Launchpad will automatically dispatch core18 + i386 builds using a new 5.x/stable channel, while dispatching other core18 builds using 6.x. The version of Snapcraft in this channel will remain built on core18 and will retain i386 support.
Individual publishers will have the option to stay on the 5.x track, with its set of features and capabilities, or move on to core20 and adjust or edit the set of architectures they want to support, which would essentially give them the option to drop i386 support. Staying on the 5.x track (for i386 support) implies that publishers will not be able to utilize any new features (like new keywords or extensions) that may become available in the 6.x channel in the future.
For most developers and publishers, the release of Snapcraft 6.x will not cause any change to their existing processes. They will be able to continue building snaps as before, and utilize the latest features in the 6.x channel. For those who still need to support the i386 architecture, they can use the 5.x channel. Moreover, Launchpad will retain the ability to dispatch core18 tasks, with or without the i386 architecture.
We hope the outlined plan clarifies any questions that may arise around Snapcraft 6.x, and that you will continue having a good, efficient experience with snaps. If you have any concerns or suggestions, please reach out to us via the forum. We are always interested to learn more on how we can make our products better.
Photo by Pravin Rahangdale on Unsplash.