Application - SRU Developer - Wesley Hershberger
I, Wesley Hershberger, apply for Ubuntu SRU Developer.
Contact:
- Name:
Wesley Hershberger - Launchpad Page: ~whershberger
- Matrix:
@whershberger:ubuntu.com
I am applying because:
- I’d like to eliminate delays in getting my work sponsored
- I’d like to reduce the burden on my sponsors
- I’d like to be able to sponsor the work of others (those in my Canonical team and more broadly)
Who I am
Hi friends,
My name is Wesley Hershberger; I currently work for Canonical in the Support Engineering department. In my tenure I’ve worked hands-on with our customers as a Support Engineer, as a developer on loan to the LXD team, and now as a Sustaining Engineer bridging the gap between support and the rest of the engineering organization. Currently I work as a Dedicated Services Engineer with one of Canonical’s cloud partners.
I grew up in Illinois but am currently based in Wisconsin; when I’m not tinkering on my homelab I enjoy making music and riding my bike on the excellent local trail system. I especially enjoy short bikepacking trips to nearby county and state parks.
My Ubuntu story
My dad introduced me to Linux while I was still in middle school; my first laptop was quickly converted to Ubuntu Trusty (14.04), and my next one ran Wily (15.10) to work around a kernel bug that hadn’t been fixed in Trusty. I tinkered with a bunch of distributions in high school and landed on Manjaro for a while; at this time I was also learning programming (D first, a bit of Python). I got hooked on contributing to RedoxOS as a way to learn Rust, and owe a lot to the maintainers for coaching me through my early Rust days.
My work on Redox got me in the door at a large insurance company where I was an intern with their Linux Engineering team during the summers of 2019 and 2020; during those few months I implemented a self-service Debian repository API for use on their Ubuntu infrastructure.
In college I chased deeper knowledge in programming languages (assembly all the way to Haskell), compilers, dipping a toe in Computer Science pedagogy and finishing it all off with a notable but ill-fated foray into distributed systems. By this time I had wandered back into the Debian/Ubuntu fold, daily driving PopOS.
I joined Canonical in 2023 as a Cloud Support Engineer, where I was quickly drawn to cases involving Ubuntu packaging: customers sorting out dependency issues, wanting clarification on CVE mitigations or trying to understand the status of bugfixes going through the SRU process.
I spent most of 2024 on a part-time secondment with the LXD team, getting to experience the role of an upstream developer. I landed a few features and fixed a small mountain of bugs.
Since early 2025 I have been working with Canonical’s Sustaining Engineering team to fix bugs in any software that falls under our scope of support. Our largest volume of bugs comes from OpenStack but we work on packages throughout the archive. Most recently my focus has been on QEMU and libvirt.
Examples of my work / Things I’m proud of
- Uploaded packages:
~whershberger/+uploaded-packages, UDD - Chronological upload highlights (not the full list):
opensc 0.22.0-1ubuntu2.1- My first SRU/upload. All the style issues here sent me on a search for a better way to manage patchesnetplan.io 1.1.2-2ubuntu1.1- I found a better way to manage patches! Lukas got me hooked ongbp pq, which I’ve used to prepare all my uploads since.horizon 4:24.0.0-0ubuntu1.3- First OpenStack SRU. This is not my best work - I never was able to identify the root cause.tcpdump 4.99.5-2ubuntu1- This upload was not associated with any work for Canonical, I just wanted to better understand the merge process for when I will (inevitably) need to get upstream changes intoubuntu/develdconf 0.40.0-4ubuntu0.1- A long saga of upstream and downstream engagement to finally land this fix for our customers using DISA-STIG. This was a good learning experience both technically (version number corner case, different changes landing in stable than in devel) and socially (work with a dedicated Debian/Ubuntu maintainer and getting buy-in from sponsors)devscripts 2.22.1ubuntu1.1- Quick response tormadisondown as a result of PS5 scream test; build in -proposed failed due to lack of dilligence on my part. Began writing a tool to auto-build SRU submissions in PPAs.qemu 1:10.1.0+ds-5ubuntu2.5- I fixed an upstream race condition in QEMU and eventually submitted an SRU for Ubuntu. My uploads were superceded by a security fix, requiring a rebase.rclone 1.60.1+dfsg-4ubuntu3.1- Medium CVEs sponsored to the security pocket by the security team
- Ubuntu Collaboration
- LP: #2119987 Upstream OpenStack bugfix & SRU template. I had to hand this off to a colleague due to shifting responsibilities & challenges for verifying OpenStack SRUs.
- LP: #2126923 While there isn’t much public-facing evidence, I helped Leah on her first SRU submission.
- LP: #2155048 I did the first rounds of review on Alex’s first SRU.
- Ubuntu Misc:
- curtin docfix
- Unblock ceph 19.2.3 for Caracal UCA
- Updating links in britney2
- sru-lint
- rclone sync and related mess; this is still WIP
- Debian:
ripgrep 15.1.0(see MR) - I use ripgrep every day and also wanted to learn about Rust packaging in Debian (knowledge that has been useful in more recent SRUs).crc-fast- First new package in Debianautopkgtest- Fixing autopkgtest’s LXD virt provider for LXD remotes & adding support for LXD projectsgbp- I’ve been working on preventinggbp pq exportfrom touching patches other than the ones that the user is interested in. While that work hasn’t landed (I’m still unhappy with the semantics I’ve chosen), I’ve worked on the CI, added Python type annotations and fixed a bug.
- An honorable mention to my work in LXD, where I fixed many bugs, landed many improvements, implemented a feature in the storage subsystem and overhauled the procedure for Raft cluster recovery in case of permanent quorum loss.
Things I could do better
- Always always always do PPA builds for every series before submitting an upload for sponsorship. I know that our SE sponsors typically do this anyway so I’ve let it slip in the past. Every miss like LP: #2142712 is an opportunity for better tooling.
Plans for the future
General
I will add myself to the Sustaining Engineering sponsorship rotation and begin to sponsor the work of my colleauges for the stable releases. I plan to be very conservative in what I pick up to sponsor for the first while, so as to maintain a high quality of uploads landing in unapproved.
What I like least about Ubuntu
The convoluted maze of build tools and the lack of high-quality, up-to-date, (non-conflicting,) documentation for building and testing packages in Ubuntu. This makes it very challenging for potential contributors (including new colleauges) to contribute and makes one-off contributions extremely rare.
Personally, I finally landed on autopkgtest for iterating & gbp + custom sbuild wrapper to build packages using LXD. But it has taken a year of accumulated knowledge of the ecosystem to arrive at a solution that just “does the right thing” in one command:
- Revision control using git
- Run directly on my workstation without requiring build-deps
- Pack
.dscwithdpkg-source - Produces a
..._source.changesthat’s suitable for upload to PPA/archive - Test build the package in a container with optional lintian & autopkgtest