Hello all!
I’d like to apply for Ubuntu Membership . Though I work for Canonical, all of my work on Snaps has been in my own time, and I’ll try to make it very clear throughout this application the things which I have done while “on the clock” for Canonical, but which I feel are in addition to my core role.
Links
- Launchpad: Jon Seager in Launchpad
- Github: https://github.com/jnsgruk
Contributions
-
Terraform Snap: I took over maintenance of the Terraform snap around May 2022. At that time it was very far behind in terms of releases with around ~3000 daily active users. Today it’s up to date with over 15,000 daily active users. I implemented a bunch of automated testing and an mechanism to bump the version and automatically release so that the snap is always fresh. I recently transferred the snap to the Snapcrafters org, but will still be the primary maintainer.
-
Mattermost Desktop Snap: I started helping maintain the Mattermost Desktop snap around Sept 2021. I started with just version bumps, but have since migrated the snap from
core18
→core20
→core22
. I’ve also done work on bugfixes, additional interfaces, and implemented a new command-chain script which is able to migrate between versions of Mattermost’s config file to prevent a common issue upon upgrade. You can see my list of contributions in the history. -
Signal Desktop Snap: I took on the task of converting the snap to build from source such that we could provide an
arm64
build. This was done across two commits (1, 2). I’ve subsequently fixed a couple of issues that had been stale, and provided some better automation, outlined below. -
Snapcrafters CI: I only recently joined the Snapcrafters “formally”. The first thing I tackled after the Signal Desktop
arm64
work was a centralised CI setup for the Snapcrafters org that could handle automated version bumps, promotion of snaps between channels, automatic build/release across architectures, automated testing with screenshots of desktop applications and automated call for testing. The resulting repository can be found on Github. It contains 8 re-usable Github Actions that are slowly rolling out across the Snapcrafters projects (signal-desktop workflows, example release flow, automated call for testing with screenshots). I also did a full write up more recently on my blog: https://jnsgr.uk/2024/03/simplifying-snap-gui-testing/. The Snapcrafters Dashboard is based on my Charm Engineering Releases page, which I set up a couple of years ago. -
Parca Snaps: I did the initial implementation of the Parca Snap. The upstream chose to use Goreleaser to build the snap, and I implemented their automated release/promotion mechanism, as well as some basic documentation of the snap’s configuration options. We also integrated this with their existing release flow. You can see my contributions here. Shortly after they took over maintenance and became verified publishers. I did the same for Parca Agent, you can see the contributions here. This one was actually a little more complex as I also needed to provide a patch for
snapd
to update an interface. -
OpenTofu Snap: When OpenTofu was first announced I helped them add snap support as it was very close (essentially identical) to Terraform. They preferred to use Goreleaser to build, and I guided them through the process of adding an alias and having classic confinement granted. Commits seen here.
-
Zinc Charm: ZInc is a lightweight Elasticsearch alternative written in Go. When it was first announced (on Hacker News, I think) I wrote a quick charm, which has subsequently been used in various demos both inside and outside Canonical. The source code is on Github, and includes both the charm code, and a ROCK for Zinc.
-
Parca Operators: Around the time that I wrote the Parca snaps, I also wrote handful of charms to simplify the deployment across multiple clouds. I wrote a blog post about that which you can see here: https://jnsgr.uk/2022/08/continuous-profiling-juju/. Earlier this year, I transferred the charms to the Canonical Github org for maintenance by the Observability team. Links for repos: parca-operator, parca-k8s operator, parca-agent-operator, polar-signals-cloud-integrator-operator
-
Ubuntu Matrix: I was instrumental in the early decision making that kicked off our work on Matrix as a comms solution for the community, and for Canonical. Since then, all of the good work has been done by others, but I’m still frequently in touch with Mauro and the implementation team here to help steer the technical roadmap.
-
Performance Engineering in Ubuntu: Outside of my regular Canonical responsibilities, I have been involved with the re-enablement of frame pointers in Ubuntu, and been a driving force behind ensuring that we include more performance tooling by default in Ubuntu - ably assisted by those in the Kernel and Foundations team who have executed the actual implementation! I recently gave a talk on these topics at FOSDEM 2024.
-
Craft Tooling for Nix: I maintain a Nix Flake that packages Snapcraft, Rockcraft and Charmcraft with Nix, making these tools available to anyone on NixOS and enabling contributors from other ecosystems: https://github.com/jnsgruk/crafts-flake. I’m in the process of having these applications upstreamed into nixpkgs.
-
Evangelism: I have appeared on multiple podcasts over the past year including the “Ask Noah Show” (talking about Juju, Charms and the Ubuntu Summit), the “Self Hosted Show” (talking about Juju and Nix) and “Nerding out with Viktor” talking about Nix, Snaps and Ubuntu Core. I also gave talks at the first of the renewed Ubuntu Summit on Juju and the state of the Charm ecosystem
-
Broader Canonical Involvement: I’m lucky enough to work for Canonical and do what I love for a living, and even luckier to get the broad exposure to Canonical products that my role permits! My day to day role is to drive the development of Juju & Charms, but I’m frequently involved with the Desktop, Server, Foundations teams, cloud-focused teams such as LXD, Openstack and MAAS, and core product teams like snapd.
Plans
Over the coming months, I plan to:
- Roll out updates and automation across Snapcrafters’ snaps (Dashboard)
- Onboard and mentor new Snapcrafters, guiding them through their first contributions and beyond
- Aim to get more first-party vendors into the store as verified publishers
- Keep increasing the attractiveness of Ubuntu to performance engineers and SREs
- Raise the profile on how combining Snaps, Charms & Rocks can supercharge software operations
Thank you for your consideration!