Application - CUDA packageset - Antoine Lassagne

I, Antoine Lassagne, apply for upload rights for the CUDA package-set (and for the creation of a new CUDA package-set).

Contact Information:

  • Name: Antoine Lassagne

  • Launchpad Page: https://launchpad.net/~antoinelassagne

  • Matrix username: @antoinelassagne:ubuntu.com

I am applying because:

  • I’d like to help the Ubuntu project live and grow

  • I’d like to reduce the burden on my sponsors, sponsor others, and help with the packages in whatever ways I can.

  • I’d like to reduce the burden of sponsors for CUDA in particular, because it is a lot of work that I am very familiar and confident with


Who I am

I am french and I’m based near Paris. My first linux experience being Ubuntu 11.04, I’ve always be passionate about messing around with computers and hardware in general. I’ve worked in the automotive industry, in robotics, and I’m now working at Canonical. I recently became a Ubuntu Contributing Developer. At Canonical, I’m working in Partners Engineering and I am responsible for the hardware enablement of the workstations based on NVIDIA’s chips (like DGX Spark). This involves a lot of packaging, including CUDA, and requires a good understanding of the separation of Canonical and Ubuntu and the conflicting strategies between them.

On the personal side I’m married to a wonderful wife and I have 3 kids, aged 3, 2 and 0. I’m happy when I’m busy :slight_smile:

My Ubuntu story

My first Ubuntu experience was a triple windows-nattynarwhal-macos boot on a macbook, just for the sake of doing it. I was so amazed to could receive a CD for free at that time. With no wifi drivers out of the box, of course.
Then I never stopped using Linux, and mostly Ubuntu. In personal projects, in containers, in servers, on every computer I have, and of course on anyone’s machine when one dares to ask me (or not) to install it.

Now that I work at Canonical in Partners Engineering, I often need to improve the Ubuntu / Linux experience for specific partners, mine being NVIDIA. That makes me touch a bit of every packages that are customer-facing in the distro, and improving tiny bits of the user experience feels great.
Here is my Ubuntu sponsorship miner page.

Examples of my work / Things I’m proud of

I’ve been working on a little bit of everything, more or less to pursue objectives from my day to day job. This is a list of noticeable packages I’ve been working on.

  • Some package updates: wpa 2.10 to 2.11 was an important one for Wifi 7 support. I was my first update with that many tricky patches. I’ve also done more simple one, sometimes on debian like vulkan-memory-allocator, spirv-reflect

  • A lot of SRUs. Some were by the book, some where a bit more wild. For example on this very uncommon wireplumber one, the impact was visible and the patch required to be entirely rewritten to apply to Noble. All these SRUs showed me how stability is (and should be) the major focus when backporting patches. They also made me build up my experience and confidence with the tooling. It involved alsa-lib, livecd-rootfs, gnome-remote-desktop. I also had SRUs blocked, for livecd-rootfs and wpa, and refusals taught me just as much as accepted ones. I recently resurrected the wpa 2.11 SRU request now that most concerns are addressed, finger crossed. My latest SRU is for autopkgtest, this is in progress.

  • I’ve sometimes helped fix packages without directly being the one working on the update, when I had the opportunity to help, like with network-manager or vulkan-tools

  • Some end-to-end patching. That involved developing the patch, submitting it and having it merged upstream, pushing it to devel, SRU’ing it. For example network-manager, or gnome-shell , or network-manager again

  • I worked on several NEW packages:

    • I added spirv-reflect, vulkancapsviewer, after the organization behind the vulkan SDK (called lunarG) stopped delivering debian packages. directxshadercompiler took a bit longer, but it was accepted in the NEW queue for Stonking in early may.

      • I had the 3 vulkan ones open as ITP to debian, with ongoing sponsorship. vulkan-caps-viewer was a funny one, because I first packaged it, then during the review a debian developer developed and uploaded its own packaging, then it was rejected, I fixed it, and now we have the version from debian.
    • dgx-desktop-sbsa-gwdt-loader was an initiative to make the generic images work with DGX Spark. NVIDIA did not care much about this, since these device where running their own OS but it is important to me that the generic image works with all the devices. After it was accepted, I had a MIR request accepted for it. It required some more autopkgtests development. But in parallel I was still looking for a cleaner way to make the devices work without an additional hacky package. I had it fixed at kernel level and was able to retire the package before it was even released in any ISO. It’s a shame that all my packaging effort went to trash but I don’t regret pursuing the better solution in parallel, because the better solution is, well, better.

    • dgx-desktop-defaults contains quite a few binary packages (~15) and some hwe-*-meta that can be picked automatically by ubuntu-drivers during Subiquity. That involved some bugfix in ubuntu-drivers. This package contains some services, udev rules, grub configuration files, etc. and I have an ongoing MIR request for it to enable offline installations (I’d like it in the ISO). The package even required an upstream kernel patch.

    • libnvidia-container and nvidia-container-toolkit are two broadly used golang packages. They enable NVIDIA GPU pass-through within docker containers. I had them accepted in the NEW queue.

    • mig-parted is still in the pipeline, waiting for the reviewer to discuss the applied changes he required.

  • I recently did a few reviews, when I felt bad about my sponsors and wanted to reduce their load:

  • I worked on having the cutting edge blender on resolute

    • Blender 4.3 was old and FTBFS

    • Blender 5.0 required an updated dependency stack, a FFE, and an architecture drop

      • opencolorio 2.3 was required and synced with a FFE

        • it required a new minizip-ng that was initially break/replace for old minizip, which was bad. this entire story was a mess :slight_smile:
      • openimageio and krita where no changes rebuilds

        • … and both required to be rebuilt, rebuilt again because they were at the wrong place at the wrong time during a python transition
      • Blender was synced from debian. I had to introduce a new patch because architecture-dependant files where in architecture-independant binary packages and path. This is still discussed upstream, and should be properly fixed with 5.3

    • I’m now working on Blender 5.1. I have it built on a PPA but it requires libimath to transition. This is not going to be easy but I’m on it.

  • And of course; the elephant in the room; CUDA

    • I have my name on a lot of the prior uploads (see any -13-1 package in the sponsoring report), even so that does not mean much, it was a team effort.

      • I led the team through the delivery of the 13-1 version of CUDA. Given the

        • closed source nature

        • amount of packages

        • fact that new minor releases are new source packages,
          I made sure we were always working on a packaging framework and not on individual packages. I made our testing strategy, supported by autopkgtests, to give us confidence about the deliveries, and worked a lot on the or maintainers tooling, to automate everything we could

    • This was a bit wild and I’m well aware that it is probably not a good packaging experience. I have to erase from my brain every memory of a good practice that we had to ignore.

    • I worked on the archive admins reviews to improve our packaging as much as possible for the next upload. With the team we upstream’d 116 issues to NVIDIA. We are also working with them on getting rid of the problematic policy violations (the usr/local installation path)

    • I submitted CUDA 13-2 to the archive, and built a submission framework so that every future submission looks the same.

    • I drafted the CUDA SRU exception request that is under review

    • We are now asking for a CUDA packageset to be created. Every minor version of CUDA is a new source package so, to make this package set even more useful, we are going to request the addition of new packages in the packageset prior to their creation. We would like to mimic how the OEM metapackage works, maybe with a similar (script+PPA)-based mecanism. But this is not the object of this application and will require further discussions.

Areas of work

My work on partners machines made me interact with the release management team, to figure out the best way to customize the distro without impacting other users and to build images the right way. It also involves side-by-side work with the OEM team, and understanding their process, since some of the partners machines are packaged by OEMS.
My work on various userspace packages made me interact with the uploaders, sometimes to get some help about how to tune behaviors, sometimes for opinions about bugs, or for their knowledge of a given package, and of course to get sponsored.
Lately I also had to interact with archive admins more, for package removal, architecture removal, universe->main transition, NEW reviews, etc. And of course I have to interact with the SRU team to discuss SRUs and SRU exceptions.

Things I could do better

As I’m getting more and more confident with the packaging itself and the knowledge of the distro, I feel like I still need to do more packaging to encounter more weird cases. There are so many dh_* tools whose documentation I did not have to read yet.
The Blender 5.0 work was quite good for that. I need to work on packages that I haven’t worked before, probably with transitions and merges from debian. libimath will be a great exercise for that.

Plans for the future

General

These permissions will allow me to make the CUDA delivery smoother. This is a very parner-specific problem resolution. Longer term, I will apply for PPU for more packages:

  • the hwe packages that I’m maintaining (dgx-desktop-defaults),

  • the nvidia docker container stack (libnvidia-container, nvidia-container-toolkit)

  • Blender (and maybe a few of its core dependencies? I’ll see which one I have to work on on a regular basis.)

And then, hopefully one day, core-dev :slight_smile:

What I like least in Ubuntu

I don’t like that so many of our partner machines are requiring dedicated Ubuntu image, and not the classic ones. the partners are pushing very hard to get dirty stuff in the distro, which we can’t have. We end up having all these custom images. It’s a matter of managing the partners, having packaging resources, having easy and fast sponsoring, and of course there is a bit that is out of our control. I’d like to help this situation not to become completely out of hands.

The second thing I don’t like is the fact that we are all expert users, and not always putting ourselves in the shoes of newbie users. We could instead consider them all newbies and make the system work for newbies. For example we could have an action of writing down every situation where opening a terminal is necessary, and reduce the list one item after the other.

2 Likes

I strongly support Antoine application for upload rights for the to-be-created CUDA packageset (and implicitly I support the creation of the packageset itself).

I have direct experience in working with Antoine:

  • We worker together at shipping the latest Blender with Resolute. This was a non-trivial piece of work, which started with an FTBFS blender package outdated in both Ubuntu and Debian, requiring a library transition and interacting with the current Blender maintainer in Debian and upstream. Everything got done in time for Resolute, but this work is continuing, as there are open issues and new upstream releases to be packaged. Antoine demonstrated to be able to handle the packaging, with very high quality standards, but also to interact with the wider ecosystem.
  • I sponsored the first dgx-desktop-sbsa-gwdt-loader upload for Antoine, a package he prepared from scratch; the package passed NEW, and worked as intended. The package was then retired in favor of a different technical solution, a process that Antoine also handled and brought to completion. The package included autopkgtests.
  • I reviewed and accepted several NEW cuda packages uploaded by Antoine. These packages need to deviate from the current Ubuntu best practices on packaging. In discussing these deviations, Antoine demonstrated to know what the best practices are, he is able to justify why and how the cuda packages are different, and is actively working with upstream to bring those packages more in line with our standards.
  • As a Release Team member I reviewed and accepted FFe requests from Antoine, and I informally reviewed the cuda SRU exception and dgx-desktop-sbsa-gwdt-loader MIR. Antoine is aware of these Ubuntu processes and demonstrated to be able to work with them.
  • I sponsored 8 upload to Ubuntu for Antoine, plus Debian experimental uploads for Blender.
  • Even if given unsupervised upload rights, I fully trust Antoine to ask for peer reviews when needed.

I hope this is only the beginning of Antoine’s Ubuntu upload journey.

Actually, I suggest the DMB to consider the possibility of “upgrading” this packageset application to a full MOTU application.

1 Like

I endorse Antoine for CUDA packageset upload rights.

Sponsoring feedback

From my perspective, Antoine was the main driver behind the inclusion of the CUDA stack in the main Ubuntu Archive (see this insane bug he opened) (not to disregard the work of the others, you all did great, but he opened the bug :smile:).
Throughout that endeavour, I’ve uploaded quite some packages for Antoine, without having much to say on the package preparation itself, since it was (almost? can’t remember) always ready to go, within the obvious constraints of the CUDA stack itself and the contract with Nvidia, that made some things quite painful. But even within those constraints, Antoine always aimed at having the highest possible quality, and worked hard to address even the most complicated problems.

Packages I’ve uploaded:
ubuntu-cuda-packaging-tools/1.0.0ubuntu
ubuntu-cuda-packaging-tools/1.0.1ubuntu
cuda-cudart-13-1/13.1.80-0ubuntu2
libcurand-13-1/10.4.1.81-0ubuntu1
libcusparse-13-1/12.7.3.1-0ubuntu1
cuda-nsight-13-1/13.1.115-0ubuntu1
libnvvm-13-1/13.1.115-0ubuntu1
libnvptxcompiler-13-1/13.1.115-0ubuntu1
libcusolver-13-1/12.0.9.81-0ubuntu1
cuda-nvrtc-13-1/13.1.115-0ubuntu1
libnpp-13-1/13.0.3.3-0ubuntu1
libnvjpeg-13-1/13.0.3.75-0ubuntu1
libnvfatbin-13-1/13.1.115-0ubuntu1
cuda-nvtx-13-1/13.1.115-0ubuntu1
cuda-opencl-13-1/13.1.115-0ubuntu1
cuda-meta-13-1/13.1.1-0ubuntu1

Specific experiences of working together

The whole CUDA adventure actually started with an hour long call with Antoine explaining to me all the bits and details of the project to upload the stack to the Ubuntu archive. He was very clear, had a great spec prepared, answered my questions as best as he could, and took good notes on my feedback from the start.
The whole process was iterative, with many back and forth, interesting discussions, hard problems, and every time Antoine kept the bigger picture in mind, thinking about the upcoming SRU exception definition for CUDA, and how to cope with the pace of releases.
I fully trust him to do a great work at packaging both very specific vendor tools, and also more “normal” open-source software, all while keeping in mind the Ubuntu-specific process that we have and care about.

Areas of improvement and next steps

I already see Antoine regularly show up in the various discussion channels, sometimes with questions and sometimes with answers for others, so that part is already great. With upload rights, I would encourage him to start sponsoring work for others, and to quickly aim at least at MOTU, or even core-dev, as I believe he’s definitely on the right track!
It’d be nice to have him join the patch pilots and help out reduce the sponsoring reports length soon, instead of growing it!

1 Like

I’m also giving a strong +1 to grant upload rights for Antoine to the CUDA set.

I’ve been reviewing and uploading non CUDA packages for Antoine over the past cycle and his work has been high quality, he demonstrated that he knows packaging well and understand the Ubuntu release cycle, freezes and processes. He’s also not afraid to ask for guidance when he’s unsure.

More specifically on the CUDA packages, I’ve followed his discussions with his other sponsors and the launchpad bug and reviewed some of the uploads from the NEW queue as an Archive Admin. His work has been high standard and I strongly believe he can be trusted for uploads in this set.

1 Like

Strong +1 for me! I’ve been sponsoring DGX related packages for him, and his work has been great. Also looking for feedback, and is always responsive. He has not only done great work on the packages he’s been working on, but he has shown discipline in doing what’s right for Ubuntu, something I always appreciate.

1 Like

I won’t be able to write an endorsement as good as Skia’s, but I fully support all the points raised.

I have sponsored a number of NEW package uploads for Antoine (spriv-reflect, vulcan-caps-viewer, directxshadercompiler, libnvidia-container, nvidia-container-toolkit , and those were handled well with good communication and prompt feedback response.

Antoine has done a diverse range of distro work - packaging new software, patching existing one in the development and stable releases, and Main Inclusion Requests. He also actively interacts with upstream (NVIDIA) to improve the quality of Ubuntu.

I would like to give a strong +1 for CUDA packageset upload rights.