I, Mitchell Augustin, apply for upload rights for ubuntu-drivers-common and for the CUDA package-set (and for the creation of a new CUDA package-set).
Contact Information:
| Name | Mitchell Augustin |
| Launchpad Page | Mitchell Augustin in Launchpad |
| Matrix username | @mitchellaugustin:ubuntu.com |
| mitchellaugustin@ubuntu.com |
I am applying because:
-
I would like to reduce sponsorship delays for ubuntu-drivers-common and the CUDA packages I help maintain
-
I’d like to reduce the number of sponsorship requests I ask of sponsors
-
I’d like to sponsor my teammates’ work
Who I am
I am the Technical Lead of Canonical’s NVIDIA DGX squad and an Ubuntu Contributing Developer. I am based in St. Louis, Missouri. Computers and technology have been my passion for as long as I can remember. I began learning about web design and scripting when I was seven, and I quickly moved on to writing desktop software with Java around age ten. During my teenage years and into adulthood, I created and maintained a plethora of different applications for various platforms, which collectively acquired several thousand users, and allowed me to gain some experience as the leader of my own app/project communities. Many of these applications were developed or hosted on Ubuntu systems. Prior to joining Canonical, I was a student at Purdue University, where I received my B.S. and M.S. in Computer Science in '22 and '23 (also focused mainly on operating system development and research).
Outside of technology, I am also an avid rock climber.
My Ubuntu story
I’ve been an Ubuntu user since around 2014, when I first installed Trusty on an old computer that I wanted to repurpose into a server. From around 2014-2019, I continued to daily drive Ubuntu as my server operating system of choice, and from 2019 onward, I became a more active user of various Linux desktops, eventually resulting in all of my devices running Ubuntu as their primary OS after a bit of distro-hopping.
In 2024, I joined Canonical as a software engineer on our Nvidia DGX squad in Partner Engineering, where I am now the technical lead. Earlier this year, I became an Ubuntu Contributing Developer.
CUDA Packageset
CUDA packages in Ubuntu originate from source packages whose names include their major and minor version, in order to enable us to distribute multiple simultaneous CUDA version tracks in a single Ubuntu release. Thus, today, this package set should consist of the following source packages:
cuda-cccl-13-1
cuda-documentation-13-1
cuda-nvrtc-13-1
libcufft-13-1
libnvjitlink-13-1
cuda-crt-13-1
cuda-gdb-13-1
cuda-nvtx-13-1
libcufile-13-1
libnvjpeg-13-1
cuda-ctadvisor-13-1
cuda-meta-13-1
cuda-opencl-13-1
libcuobjclient-13-1
libnvptxcompiler-13-1
cuda-cudart-13-1
cuda-nsight-13-1
cuda-profiler-api-13-1
libcurand-13-1
libnvvm-13-1
cuda-culibos-13-1
cuda-nvcc-13-1
cuda-sandbox-dev-13-1
libcusolver-13-1
nsight-compute-13-1
cuda-cuobjdump-13-1
cuda-nvdisasm-13-1
cuda-sanitizer-api-13-1
libcusparse-13-1
nsight-systems-13-1
cuda-cupti-13-1
cuda-nvml-dev-13-1
cuda-tileiras-13-1
libnpp-13-1
cuda-cuxxfilt-13-1
cuda-nvprune-13-1
libcublas-13-1
libnvfatbin-13-1
with this list expanding with new CUDA major/minor version additions.
Examples of my work / Things I’m most proud of
-
My Ubuntu Sponsorship Miner Page. Some of my common sponsors/collaborators include (with uploaders for CUDA / u-d-c in bold)
- Kuba Pawlak
- Skia
- Lena Voytek
- Ken VanDine
- Andreas Hasenack
- Nick Rosbrook
- Lukas Märdian
- Frank Heimes
- Alessandro Astone
-
CUDA 13-1 packaging in Ubuntu 26.04 - Enables native archive installation of cuda-toolkit, and enables other apps to depend on CUDA components.
-
Prepared/uploaded cuda-gdb-13-1, libcuobjclient-13-1, libcufft-13-1, nsight-systems-13-1, cuda-cccl-13-1, cuda-nvcc-13-1, cuda-culibos-13-1, cuda-cudart-13-1, cuda-ctadvisor-13-1, cuda-crt-13-1
-
Worked with the team to review the rest of the packageset, establish our testing strategy (including autopkgtests), and to build our repackaging infrastructure, which makes the update process smooth and reproducible
-
-
ubuntu-drivers: I led a major rework of ubuntu-drivers for the past cycle, all of which has landed now:
-
Fixes for Noble’s autopkgtests, which were broken: Bug #2071829 “ubuntu-drivers-common/1:0.9.7.6ubuntu3 ADT test fa…” : Bugs : ubuntu-drivers-common package : Ubuntu
-
Fixes for undefined behavior caused by allowing invalid command flag ordering: https://github.com/canonical/ubuntu-drivers-common/pull/134
-
gpgpu flag documentation updates / help text: Update gpgpu help text in Noble by MitchellAugustin · Pull Request #130 · canonical/ubuntu-drivers-common · GitHub / Bug #2115537 “[SRU] gpgpu help text is unclear” : Bugs : ubuntu-drivers-common package : Ubuntu
-
Unused component removal / refactoring: Remove unused NvidiaDetector components and deprecated ‘autoinstall’ command by MitchellAugustin · Pull Request #127 · canonical/ubuntu-drivers-common · GitHub / Bug #2120588 “Remove unused NvidiaDetector module” : Bugs : ubuntu-drivers-common package : Ubuntu
-
Fix to ensure that conflicting nvidia-driver branch versions are never coinstalled : Prevent attempts to coinstall conflicting nvidia-driver-* packages (LP: #2125156) by MitchellAugustin · Pull Request #138 · canonical/ubuntu-drivers-common · GitHub
-
Enhancement to add a welcome page that displays current status of u-d-c installed drivers and any recommendations if unexpected (essentially your suggestion about an “ubuntu-drivers verify” feature): Add new ubuntu-drivers welcome page by MitchellAugustin · Pull Request #133 · canonical/ubuntu-drivers-common · GitHub
-
Enhancement to add kernel version and MOK status checks that should prevent unintended behavior with SB-enabled systems: Implement kernel version and secure boot warnings and fix test cases by MitchellAugustin · Pull Request #126 · canonical/ubuntu-drivers-common · GitHub
-
Refactor to move all driver detection functionality into correct part of codebase: Consolidate GPGPU apt filtering functionality into detect.py by MitchellAugustin · Pull Request #128 · canonical/ubuntu-drivers-common · GitHub
-
Various improvements for maintainers, such as Black/MyPy linting and static typing annotations
-
-
OVMF/edk2 - Eliminated 5+ minutes per boot of extra boot time in VMs with large GPUs
-
Bluez improvements:
-
- I contributed to testing / root causing this issue internally, and also contributed to the SRU justification and verification. This SRU was considered critical from Nvidia’s standpoint, and our work in resolving it helped unblock a platform release.
-
-
MAAS: Fixed bug that caused MOK enrollment process initiated by DKMS driver installations to result in unbootable systems: Bug #2111335 “MOK enrollment flow is disrupted on (at least) DUT…” : Bugs : MAAS
-
gnome-shell / Ubuntu Desktop:
-
gnome-control-center patches:
-
Fixed a data loss issue which caused the user’s RDP password to be unexpectedly reset: Bug #2000063 “RDP password is silently reset to a random passphrase if using autologin”
- Noble version was a nontrivial backport, requiring reworking to be portable to the pre-upstream-refactor codebase
-
-
gnome-keyring patches:
-
Fixed an issue that caused a hang/crash in g-c-c when keyring wasn’t loaded (LP: 2065296, 2125590)
- Also involved helping to debug an arch-specific issue we encountered in the initial upload, which only impacted armhf
-
-
gnome-shell patches:
-
Fixed broken WPA enterprise connection menu: Bug #2120331 “[SRU] status/network: Fix connecting to WPA[2] Ent…” : Bugs : gnome-shell package : Ubuntu
-
Improved icon update speed on adapter disconnection: Bug #2120734 “Update Wi-Fi icons between disconnect and adapter …” : Bugs : gnome-shell package : Ubuntu
-
-
I’ve also verified and written several gnome-shell test plans for other users’ patches:
-
gnome-remote-desktop verifications:
-
-
NetworkManager and wpa_supplicant bug fixes:
-
network-manager merge into Resolute (1.54.2-2ubuntu1)
- Merge with Debian that required mitigating a relatively large delta with multiple historical versions of our network-manager repo
-
wpasupplicant: Fixed a bug that caused not all APs to be displayed in high-density areas: Bug #2117180 “wpa_supplicant DEFAULT_BSS_MAX_COUNT is too low fo…” : Bugs : wpa package : Ubuntu
-
wpasupplicant: Found root cause / fixed an issue that prevents the password re-entry prompt from appearing on WPA3 networks: https://bugs.launchpad.net/ubuntu/+source/wpa/+bug/2125203
-
Wi-Fi hotspot doesn’t work with UFW or Docker: https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/2128668
-
-
Curtin & DKMS:
-
Co-authored workaround for Curtin to unblock broken MAAS Resolute deployments, and helped with root cause analysis for underlying MAAS image issue
-
Fixed issue that caused installer hang on high core count systems: https://bugs.launchpad.net/curtin/+bug/2037682
-
-
LXD: Identified solution to eliminate unintuitive extra steps required for GPU passthrough: Improve VM GPU passthrough support by enabling automatic OVMF MMIO window sizing when attaching device · Issue #15872 · canonical/lxd · GitHub
-
screen-resolution-extra: Fixed bug with “save settings” functionality: https://bugs.launchpad.net/ubuntu/+source/screen-resolution-extra/+bug/2090974
-
texinfo: Fixed a bug that caused an error due to incorrect parsing of /etc/environment
-
ipmitool: SRU’d support for new sensors on DGX hardware: https://bugs.launchpad.net/ubuntu/+source/ipmitool/+bug/2076173
-
Maintainer of anytree python library (via Debian):
-
linux-firmware SRUs:
-
Fixed broken Asus ROG Zephyrus keyboard backlight control on Oracular: Bug #2089113 “Keyboard backlight controls do not work on Asus RO…” : Bugs : linux package : Ubuntu
-
Commentary and analysis related to ubuntu-release-upgrader bugs: Bug #2126679 “FTBFS due to removal of nvidiadetection from ubunt…” : Bugs : ubuntu-release-upgrader package : Ubuntu
-
Blender 5 in Resolute:
-
Updating to Blender 5 in Resolute was a long process, due to the introduction of dependencies like minizip-ng which would have forced a transition from minizip. I collaborated with Antoine, Matteo, Paride, Erich, and others in Ubuntu and Debian to determine the path forward on this.
-
Created initial minizip-ng packaging in Debian, which was eventually consumed by us for Blender
-
Participated in discussions about how to handle the transition in Matrix. (one learning from this: We opted to treat minizip-ng as claiming minizip compatibility via provides/replaces, but in retrospect this needed to be changed in 4.0.10+dfsg-2 since it wasn’t fully compatible with chromium (see linked debian bug) - so in the future we will investigate those relationships more carefully).
-
-
-
“Non-archive” work:
-
Gaming enablement:
-
Improving ease-of-use of FEX & Steam for arm64 users: arm64 Steam Snap enablement and Tutorial: Running Steam games on arm64 with FEX - #2 by mitchellaugustin
-
-
Bug Reports: Was the first user to report a missing audio issue with the discord snap, which was promptly resolved: https://github.com/snapcrafters/discord/issues/274
-
Areas of work
Working on the DGX PE squad, most of my work is focused on fixing bugs and implementing enhancements that impact users of Nvidia’s DGX server hardware (and more recently, the DGX Spark).
Individually, I am also deeply interested in improving the state of the Ubuntu desktop and gaming stories, which has aligned well with our priorities of improving the Ubuntu desktop experience on DGX Spark. Since becoming an Ubuntu Contributing Developer, I have ramped my efforts in the desktop space further (especially arm64 desktop), by contributing more to gnome-shell bug fixes, and via my leadership on the Steam snap enablement for arm64.
Things I could do better
I am making an effort to be a bit more patient, and to ping the sponsors and SRU team less frequently unless it is really truly urgent that an upload happens quickly. (thanks for all you do, sponsors and SRU team!)
Improvements since my Contributing Developer application:
Sometimes, I’ll forget to update the version code correctly on a development release upload that has just recently become a stable release.
I think I can continue to work on double- and triple-checking the version codes for my PRs for cases like this.
- I have not made this mistake since before I mentioned this as an area of improvement
Every once in a while, I’ll also run into some edge case with the SRU process that I didn’t realize was documented somewhere - so I’m always making sure to add that to my personal knowledge doc to create less unnecessary back-and-forth.
- Continuing to do this
Plans for the future
General
-
I’m continuing to work heavily with other arm64 developers in Canonical to improve arm64 game/application compatibility in the distro. The Steam snap for arm64 has been a great success story for our arm64 offering, so I’m making sure to keep that up-to-date and to respond to user feedback quickly.
-
I’d like to get back to fixing the version of asusctl that I packaged originally for Oracular, since the end goal was for this to be part of a larger effort to improve accessibility of hardware control applications for various OEMs. (However, this has taken a backseat to my other priorities, since it requires some significant reworks that weren’t present when were initially building in a PPA).
What I like least in Ubuntu
As a developer: I don’t like that, while Launchpad is meant to be our central source of truth for the source in Ubuntu, there is no clear indication on Launchpad itself for some major subsystems whose maintainers have different source management preferences. (ex: some maintainers prefer individual bug fixes per upload, some prefer multiple, some have source trees / patch ingress in different locations than LP itself). It would be good if LP had a place on the main landing page for a project (ex: Ubuntu in Launchpad) where maintainers could put their maintenance instructions, and if there was a widespread directive for that to actually be documented there.
As a user: There are some very common GNOME quirks which hinder the UX for desktop users coming to Ubuntu from other OSes. Most notably, I recently realized that creating desktop icons is a rather convoluted process with GNOME. This is because GNOME lacks the concept of a desktop icon, and this is enabled via a gnome extension - but there is no easy way to “right click”->“create icon” from our app launcher, so new users need to manually copy things from an obscure directory (to them) to enable this.
Another area that I think has some potential for optimization is the dual-boot story. In particular, one thing I always do for new users who want to trial-run Ubuntu on a dual-boot environment is to set their personal files and game disks to auto-mount into an easy to find location in Ubuntu, so it feels more at home out-of-the-box. I think it’d be nice if we had a way to do this directly from the installer, so novice users don’t have to know someone who can comfortably manipulate /etc/fstab for them.