SRUDeveloperApplication
I, Matthew Ruffell, apply for SRU Developer upload rights.
Name |
Matthew Ruffell |
IRC |
mruffell |
Launchpad Page |
|
Wiki Page |
I am applying because:
- I would like to eliminate delays in getting my work sponsored, making delivering fixes faster.
- I would like to provide sponsorship coverage for the APAC region, and help my APAC colleagues in Sustaining Engineering get their patches sponsored without having to rely on other geolocations.
- I would like to reduce the burden on my sponsors. I feel like I constantly burden Mauricio and Heitor with my patches, and while they do like reviewing them, not all my bugs are super interesting. I also heavily leaned on Eric and Dan in the past, and want to help spread the load.
Who I am
I have been using computers ever since I was two or three years old, when my parents brought me a Macintosh IICX along with a Macintosh LCII shortly after. I was always fascinated by these machines, how word processors worked, floppy disk storage, and eventually this moved into binary hex editing in ResEdit. System 7.5.5 was where it was at. These days one of my hobbies is collecting vintage Apple computers, and everyone I interview is greeted with my background of machines.
Later on my passion for computing grew, and I especially liked Computer Security, and started doing basic CTF competitions, which led me to enroll in a Computer Science degree at University. I worked hard, studying 80 hour weeks, but got straight A+ marks in every single Computer Science, Software Engineering and Computer Engineering course, with A/A+ average in the rest of my discrete Mathematics courses.
In my PhD Student years I would keep a keen interest in Security, doing CTFs and writing papers on Security and Privacy. I had a lot of time on my hands, and made my own Linux Distro called Dapper Linux, which focuses on being highly secure, while trying not to hurt user experience too much. The features of Dapper Linux was a full grsecurity kernel with all options enabled, correct PAX flags for binaries, most graphical applications were sandboxes with Oz (seccomp containers with separate X server, with xrpa to join to host X server), then later on Flatpak.
Dapper Linux taught me distro engineering, packaging, and when the grsecuirty patchset went private, I took over maintenance of it, which got me started headfirst into kernel development and maintaining a stable distro kernel, for the 4.9 series. I learned that distro engineering takes patience and grit, but was always very proud to be running my own distro on my computer, and would tell anyone who listened.
These days I have a keen interest in Reverse Engineering, Malware Analysis, Kernel Dev, and Security.
My Ubuntu story
I was introduced to Ubuntu in 2007 by one of my good friends, who used Ubuntu on his desktop. He was using 7.04 with gnome2, will full compiz effects of cube and flaming windows. I was impressed, and intrigued that you could "apt install" any package you wished, and didn't need to download installers and run them.
From there I would run Ubuntu in VMs and play around, but I was still a Macintosh user at the time.
After Apple dropped support for my Macbook Pro 2,2 I decided to install Quantal in January 2013. From there I have been using Linux full time ever since, and I love installing the latest release every six months.
Late in my PhD Student days, I arrived to the conclusion that I didn't like academia, and wanted to contribute to the world. Dapper Linux had like 6 users at the time, and I wanted my work to have more impact, so I took my distro engineering experience and looked for a job. I happened to run into Trent at linux.conf.au where I was speaking about maintaining the grsecurity patchset, and he told me about opportunities in Sustaining Engineering.
Shortly after in March 2019, I was welcomed to Canonical as a member of SEG, and I have been digging into and fixing some quite complex customer bugs, some critical to the functioning of the core distro itself, or a high profile regression etc.
I love Linux, and I love Ubuntu, and especially like the community aspects of working on bugs, and seeing people happy to have their bugs fixed.
My involvement
Examples of my work / Things I'm proud of
Server Bugs
* libvirt: blockcommit fails - disk not ready for pivot yet
* d-i netinstall fails due to missing apt-transport-https package
* nfsiostat broken and exits with traceback
* update-rc.d: enabling or disabling S runlevel services incorrectly modifies runlevel
* libvirt-bin: during shutdown libvirt-bin is stopped before libvirt-guests causing hang
* Ibus causes gnome-shell to freeze when password fields are selected in Firefox
* nvme-cli 1.5 in Bionic does not support Micron NVME drives
* Xenial images won't reboot if disk size is > 2TB when using GPT
* gnome-calendar: Hits assert when timezone set to Etc/UTC
* Support "ad_use_ldaps" flag for new AD requirements (ADV190023)
* GSS-SPNEGO implementation in cyrus-sasl2 is incompatible with Active Directory, causing recent adcli regression
* liburcu: Enable MEMBARRIER_CMD_PRIVATE_EXPEDITED to address performance problems with MEMBARRIER_CMD_SHARED
* Add support for VMware Horizon SSO to gnome-shell
* rsyslog-relp: imrelp module leaves sockets in CLOSE_WAIT state which leads to file descriptor leak
* named: TCP connections sometimes never close due to race in socket teardown
* Please merge librelp 1.9.0-1 (universe) from Debian unstable (main)
* /var/log/dmesg is 0644, should be 0640 to match new DMESG_RESTRICT restrictions
* librelp is FTBFS on riscv64 on Focal
* ldap_install_tls occasionally fails due to watchdog timeout when using ad_use_ldaps with tls
* QEMU hits assertion when virtual disk is stored on NFS server and is not 4 kib byte aligned
* Opening new tab in gnome-terminal launched from nautilus loses most environment variables
* dhclient: thread concurrency race leads to DHCPOFFER packets not being received
* x509 Certificate verification fails when basicConstraints=CA:FALSE,pathlen:0 on self-signed leaf certs
* dpkg-source: error: diff 'openssl/debian/patches/pr12272.patch' patches files multiple times; split the diff in multiple files or merge the hunks into a single one
* GCE instances drop to a grub prompt when GRUB_DISTRIBUTOR=Debian is set
* glib2.0: Uninitialised memory is written to gschema.compiled, failure to parse this file leads to gdm, gnome-shell failing to start
* The ras-mc-ctl script does not match the SQLite structure
* mysqli: Using a cursor with get_result() and prepared statements causes a segmentation fault
* libvirtd crashes when creating network interface pools in 6.0.0-0ubuntu8.13
* FIPS cannot be enabled on non usrmerged 20.04 systems
* Removing unattended-upgrades removes ubuntu-server-minimal
* openssh-server: PubkeyAcceptedAlgorithms missing RSA/SHA2 Certificate signing algorithms under fips mode breaking newer openssh clients
* armv8 paca: poly1305 users see segfaults when pointer authentication in use on AWS Graviton 3 instances
* libsmartcols: Revert back to previous behaviour of non-shell parsable column output (lsblk -P)
* libhwloc.so will segmentation fault when attempting to modify static string in environ
* Hibernation fails when an additional swapfile is added due to priority mismatch
* snmptrapd Segmentation Faults When Calling my_load_defaults()
* Quirks: Add upgrade quirk for FIPS enabled systems to work around libgcrypt hmac file placement
* systemd-udevd: Run net_setup_link on 'change' uevents to prevent DNS outages on Azure
* arm64: broken c++ exception handler support leads to std::terminate() being called and program abort
* Don't throw an error when serializing uninitialized typed properties with sleep() * Multiple options= are parsed incorrectly making setting persistent options impossible * VM detection is broken, leading to prompt to restart for microcode updates * Properly convert DNS names with '-' characters to valid dbus object paths * mount.nfs: sloppy options processing is broken on 5.15 HWE kernel * stash: git does not recover untracked files during a pop/apply on conflict * mount.nfs: fix version negotiation laddering with parameters '-t nfs4' or '-o vers=4' * ls -l triggers mount of autofs shares when --ghost option is present or browse_mode is enabled * mount.nfs: Fix minor version parsing when '-t nfs4' and '-o vers=4.x' are used together * drop rb_safe_level() from ruby-curses to fix irqtop from missing symbols and deprecation warnings * nvme-cli: fguid is printed as binary data and causes MAAS to fail erasing NVME disks * php-xml: Regression in parsing XML introduced due to CVE-2023-3823
* hibmc-drm Causes Unreadable Display for Huawei amd64 Servers * NFSv4.1: Interrupted connections cause high bandwidth RPC ping-pong between client and server * Performance degradation when copying from LVM snapshot backed by NVMe disk * Fix nf_conntrack races when dealing with same origin requests in NAT environments * sched: Prevent CPU lockups when task groups take longer than the period * KVM: Fix zero_page reference counter overflow when using KSM on KVM compute host * skb_warn_bad_offload kernel splat due to CHECKSUM target not compatible with GSO skbs * mlx5_core reports hardware checksum error for padded packets on Mellanox NICs * SUNRPC: Use after free when GSSD credentials are invalid causes oops * Infinite loop in Kernel Bugs
* mlx5_core reports hardware checksum error for padded packets on Mellanox NICs
* cifs: DFS Caching feature causing problems traversing multi-tier DFS setups
* Reapply "usb: handle warm-reset port requests on hub resume"
* QEMU/KVM display is garbled when booting from kernel EFI stub due to missing bochs-drm module
* smpboot: don't call topology_sane() when Sub-NUMA-Clustering is enabled
* Enabling DMESG_RESTRICT in Groovy Onward
* NFSv4.1: Interrupted connections cause high bandwidth RPC ping-pong between client and server
* clock: overriding the clocksource should select the requested clocksource
* btrfs: trimming a btrfs device which has been shrunk previously fails and fills root disk with garbage data
* nbd: requests can become stuck when disconnecting from server with qemu-nbd
* raid10: Block discard is very slow, causing severe delays for mkfs and fstrim operations
* bcache: Issues with large IO wait in bch_mca_scan() when shrinker is enabled
* qede: Kubernetes Internal DNS Failure due to QL41xxx NIC not supporting IPIP tx csum offload
* kvm: Windows 2k19 with Hyper-v role gets stuck on pending hypervisor requests on cascadelake based kvm hosts
* btrfs: Attempting to balance a nearly full filesystem with relocated root nodes fails
* btrfs: Automatic balance returns -EUCLEAN and leads to forced readonly filesystem
* amd_sfh: Null pointer dereference on early device init causes early panic and fails to boot
* Enable speakup kernel modules to allow the speakup screen reader to function
* Jammy / Kinetic: Enable Hibernation for Xen Based Instance Types
* cifs: Double free in cifs_smb3_do_mount() when mount fails in cifs_get_root()
* iavf: SR-IOV VFs error with no traffic flow when MTU greater than 1500
* LSM: Configuring Too Many LSMs Causes Kernel Panic on Boot
* btrfs/154: rename fails with EOVERFLOW when calculating item size during item key collision
* vmwgfx fails to reserve graphics buffer on aarch64 leading to blank display
* xfs: Preallocated ioend transactions cause deadlock due to log buffer exhaustion
* scripts/pahole-flags.sh change return to exit 0
* kvm: Running perf against qemu processes results in page fault inside guest
* smb: wsize blocks of bytes followed with binary zeros on copy, destroying data
* AMD GPUs fail with null pointer dereference when IOMMU enabled, leading to black screen
* Removing legacy virtio-pci devices causes kernel panic
* i915: Fixup regressions introduced with enabling single CCS engine
* Linux 6.8 fails to boot on ARM64 if any param is more than 146 chars
* md: nvme over tcp with a striped underlying md raid device leads to data corruption
* isolcpus are ignored when using cgroups V2, causing processes to have wrong affinity
* zap_pid_ns_processes() gets stuck in a busy loop when zombie processes are in namespace
* turbostat fails with too many open files on large systems
Cloud Bugs
* cc_grub_dpkg: determine idevs in a more robust manner with grub-probe
* Backups fail if port is changed
Rejected / Too High Risk
* fanotify07 in LTP syscall test generates kernel trace with T/X kernel
* [SRU] Focal: TLS 1.3 doesn't work on strict firewall/middlebox
Areas of work
I mostly work on maintaining Stable Releases as part of my work on the Sustaining Engineering team. I work closely with customers to reproduce and root cause issues they experience in production, and then determine a fix, provide test packages and get patches sponsored and into -proposed for verification and eventual release.
My interests and duties are mostly split between Kernel and Server/userspace work. I work closely with my colleagues in the Sustaining Engineering team, like Mauricio, Heitor, Gerald and Jay. I have regular discussions with Security, and speak to Alex and Evan. The Kernel Team review a lot of my submissions, and Andrea, Tim, Stefan and Marcello are happy to reply.
Things I could do better
I have a lot of things going on on the backburner, and sometimes a particular bug goes a bit unloved for a few months while I work on higher priority things. One particular example of this is: * gvfsd process does not have the KRB5CCNAME environment set
My goal is to reduce the amount of these unloved bugs, and maybe try make progress on them each week, even if it is the smallest movement forward.
I also think I could be more active on community channels. When Canonical moved from IRC to Mattermost I stopped renewing my IRCCloud subscription, and fell off public IRC channels. I will try maintain a public presence from now on. I only got reminded of this during the Ubuntu Uploaders meeting in Riga.
Plans for the future
I plan to keep working on squashing tough bugs, to keep the user experience of Ubuntu as best as it can be. Working with my colleagues to debug tough issues, and giving them advice on Debian packaging and SRU requirements.
What I like least in Ubuntu
I think the series upgrade story needs some work. Each time I have release-upgraded in the past, something had broken to the point where it was a thorn in my side until I clean installed. I have clean installed every release since 12.10, since I just can't trust upgrades. I see customers experience the same level of pain, particularly with their OpenStack deployments, trying to go between OpenStack releases and distribution series to reach a new supported OpenStack release with feature X available. The only way around this is to get more testing coverage on upgrades, and when something breaks on upgrade, we need to sit down and fix it instead of clean install and forget. Maybe I try upgrade to Noble from Mantic this cycle, and see what happens.
Comments
If you'd like to comment, but are not the applicant or a sponsor, do it here. Don't forget to sign with @SIG@.
Endorsements
As a sponsor, just copy the template below, fill it out and add it to this section.
Dan Streetman
General feedback
I worked with Matthew for several years in the Sustaining Engineering team, and he is a very smart engineer with close attention to detail and is able to pick up technical concepts very quickly. While he lives in the opposite timezone from me, so we rarely had much realtime interactions outside of sprints, I did work with him through the normal asynchronous channels and have sponsored 8 packages for him. In all cases where I had any questions or concerns, Matthew provided well thought-out replies and always handled all steps of the SRU process with care and adherance to the process.
I have full trust in Matthew to be an excellent member of the SRU developers team.
Specific Experiences of working together
The specific list of sponsored packages is here. For most of those, the SRU was done cleanly and I was able to upload without requesting any changes or clarification. I did have questions for some, for example this bug required some discussion among several people, and Matthew provided excellent responses and analysis throughout the process.
Areas of Improvement
I haven't worked with Matthew since I left Canonincal around a year ago, but the only area for improvement I know of from our previous time working together is that Matthew is probably taking too long to apply for higher acl in Ubuntu; I think he should have applied for SRU developer a few years ago
Heitor Alves de Siqueira
General feedback
Matthew and I have worked together for a few years now in the Sustaining Engineering team, and he's a dedicated engineer with a good eye for details. He's eager to learn and asks very thoughtful questions, always being mindful of the bigger picture that goes beyond his individual SRU items. Whenever I had any questions about his uploads, Matthew was quick to address them with care.
I believe Matthew will be a great addition to the SRU developers team, and a great asset to the Ubuntu community in general.
Specific Experiences of working together
The specific list of sponsored packages is here. For almost all of Matthew's uploads, the SRU was handled neatly and I didn't require any changes. Matthew and I handled more interesting corner cases such as adsys bug 2020834, where he dedicated more time on testing and analysis due to other issues being uncovered during proposed testing.
Areas of Improvement
Matthew does excellent work on the technical side of SRUs, the only area of improvement I've seen is that he can sometimes let minor things slip (e.g. the use of 'backport' vs 'upstream' on DEP-3 headers). I do believe these are mostly one-off items that will improve as he continues working on his uploader experience, and shouldn't prevent him of continuing with his good work.
Eric Desrochers
General feedback
I have had the pleasure of working with Matthew in the Sustaining Engineer Group (SEG) at Canonical for many years, where Matthew's expertise in identifying and resolving issues in stable releases significantly contributed to the overall success of the projects. Matthew is very serious, motivated and dedicated.
Specific Experiences of working together
https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1821261 https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1838358 https://bugs.launchpad.net/cloud-init/+bug/1840686 https://bugs.launchpad.net/ubuntu/+source/sssd/+bug/1868703
Areas of Improvement
It's been a couple of years since I last sponsored a debdiff from Matthew so areas of improvement that I have noted back then (which were only nitpicks) could have already improved since then. For that reason, I'll defer to other endorsers who recently worked with Matthew to identify them.
-- slashd 2023-12-19 08:30:00
Mauricio Oliveira
General feedback
Matthew and I have worked together in the Sustaining Engineering Group (SEG) team at Canonical for ~5 years now (2019/03/11).
I have always appreciated the quality, depth, and efficiency of his work -- in everything he picked up to do (he's very dedicated and attentive), that I know of.
He's one of my first go-to persons for that mix of difficult/complex/urgent problems. Well, other people learned that too, so he is often busy with high-priority or high-urgency work, which of course might cause some delay on other items, but again, he's one of the best I've seen, including the juggling tasks of all priorities.
I have sponsored 11 uploads for him (8 unique changes in the context of 7 bugs; including autopkgtests fixes, and security superseded).
Again, it's high-quality work from the SRU bug template to the debdiff, and I only had minor changes/suggestions over time (usually DEP-3 details, e.g., the Description: field's line continuation per deb822, that I'd only explain to a few people), and only once repeated something (which in fact he promptly fixed up in the next debdiff after security superseded our upload).
He's been attentive to the process and follow-on work, not letting things get stuck, working on autopkgtests regressions/fix-ups (LP#1772556, LP#1908473/LP#1912969), and being there for regressions from his uploads when it happened (LP#2049262, LP#2059197). He's also worked on improving Ubuntu in the development release too (LP#1912122 and LP#1910307).
Conversely, I've been lucky to have Matthew review my work/patches a few times in internal processes to deliver fixes elsewhere.
This confirmed my observations about his attention to detail, consistency and adherence to the source code for correct backports, perception for risks, consideration for regression potential, and velocity to come up to speed on new contexts and code bases.
I fully trust Matthew to become an SRU Developer, based on direct experience and feedback from other SRU Developers.
I'm sure that, all such traits he applied to successfully produce his own SRUs, he will also apply to review others' SRUs as well,
to the improvement of correctness and maintenance of stability in Ubuntu Stable Releases.
I also trust that Matthew would ask for help if unsure or if it's needed or prudent (as seen for the resolution of a high-profile regression in LP#1988119, for which he asked for input/reviews from multiple teams, to ensure quality and identify potential issues early).
P.S.: I'm pleased with this point in his motivation for applying; from the start, it's not just unblocking himself, but also others:
> I would like to provide sponsorship coverage for the APAC region,
> and help my APAC colleagues in Sustaining Engineering get their
> patches sponsored without having to rely on other geolocations.
Specific Experiences of working together
There's a lot more that goes on internally in our work in SEG, which is not in Launchpad.
In LP, an example I'd like to call out is LP#1926139, in which we collaborated on several stages to fix a race condition in dhclient, abandoned upstream, with considerations for regressions (critical package) and precision for test steps/synthetic reproducers, and quality assurance from affected cloud providers as well. It's been a pleasure working with Matthew on this one, and other bugs as well.
There's also LP#1960863, which showcases his exceptionally well-balanced skillset (depth and breadth), with a great undertanding of computer architecture, system software and userspace applications (and kernel, in other cases), from my observations.
That SRU received very positive review feedback from Robie Basak (comment #7), whose reviews I'm a fan of and have been a great source of education for me:
'This was a perfectly researched and written up bug and patch and made SRU review easy. Thank you!'
Areas of Improvement
Very minor, and this probably has already been addressed since the SRUs I reviewed/noted this on, but as I have to write something here: the DEP-3 nitpicks (it's important to not only know DEP-3, but actually understand the fields and reasons in it, why some are required/optional, and format details).
-- Mauricio Oliveira, 2024-06-17
TEMPLATE
== <SPONSORS NAME> == === General feedback === ## Please fill us in on your shared experience. (How many packages did you sponsor? How would you judge the quality? How would you describe the improvements? Do you trust the applicant?) === Specific Experiences of working together === ''Please add good examples of your work together, but also cases that could have handled better.'' ## Full list of sponsored packages can be generated here: ## https://udd.debian.org/cgi-bin/ubuntu-sponsorships.cgi === Areas of Improvement ===
mruffell/SRUDeveloperApplication (last edited 2024-08-27 02:43:42 by mruffell)