UbuntuCoreDeveloperApplication

Revision 10 as of 2023-11-09 16:09:46

Clear message

I, Lena Voytek, apply for the Ubuntu Core Developer status within the Ubuntu community.

Name

Lena Voytek

Launchpad Page

~lvoytek

Wiki Page

https://wiki.ubuntu.com/LenaVoytek

I am applying because:

  • I'd like to eliminate delays in getting my work sponsored.
  • I'd like to reduce the burden on ubuntu-sponsors and the server team.
  • There are many packages outside the server package set that I currently manage or would like to help with.
  • I'd like to help sponsor packages for others as a patch pilot member.

Who I am

I am a software engineer on the Ubuntu Server team, and a Debian Maintainer on the Debian Python team. My focus is on maintaining packages including and related to MySQL, Django, Libvirt, data platforms, web, and email.

I have two bachelors degrees from the University of Arizona in electrical engineering and computer science. Prior to working at Canonical, I was an embedded firmware engineer for Garmin and Jacobs Engineering. In my previous positions I focused on RF communication, RTOS development, and sensor integration.

My Ubuntu story

My first endeavor into Ubuntu and Linux in general was with Precise Pangolin. On the day I turned 14, I convinced my parents to purchase me an old Dell workstation from the local University hardware surplus store. The computer did not have an OS installed, and I refused to pay for Windows, so I looked online for alternatives. Luckily for me, Ubuntu 12.04 had been released exactly one day earlier and was free to Download. I burnt the os onto a CD, installed it, and have been running Linux ever since.

Over the last 11 years I have explored various distros, but in the end Ubuntu has just been the best for me, both in the desktop and server spaces. It also feels nice to be not only a user, but a developer of Ubuntu, helping to release the version arriving a decade after my first.

My involvement

Examples of my work / Things I'm proud of

New Packages

  • virtualbmc development (Kinetic) Package

    • Uploads: 2.2.2-0ubuntu3, 2.2.2-0ubuntu2, and 2.2.2-0ubuntu1 sponsored by ~corey.bryant

    • While creating DEP-8 tests for ipmitool, I found a need for virtualbmc to test controlling a qemu vm. I used other Python packages as a guide to set up the debian folder. After completing and testing the packaging, I worked with the OpenStack team on final touches and let them take over future maintenance since virtualbmc is an OpenStack repository.

Package Merges and Syncs

Bug Fixes and SRUs

  • bind9 update + SRU (Lunar | Jammy) LP: #2028413

  • python-django bug fix (Lunar) LP: #2002012

    • Upload: 3:3.2.16-1ubuntu1 sponsored by ~sergiodj

    • Merge Proposal: MP: #435306

    • Django required special modifications in Lunar since it was still on version 3.2 while the default Python version moved to 3.11. Upstream only officially supported up to Python 3.10 for the release, so I patched Django to work properly. For mantic and onward this has been fixed by migrating Django to 4.2.
  • mysql-8.0 bug fix (Lunar | Kinetic | Jammy | Focal) LP: #1999076

    • Merge Proposal: MP: #443372

    • One of the upstream unit tests running through autopkgtest failed fairly consistently for MySQL on the ppc64el architecture. I found out that this was actually due to a lack of resource allocation. As such, this was fixed by adding this architecture to the big_packages in the cloud autopkgtest configs.
  • net-snmp bug fix + SRU (Lunar | Kinetic | Jammy) LP: #1998461

  • libvirt bug fix + SRU (Lunar | Kinetic) LP: #1997269

    • Uploads: Lunar: 8.6.0-0ubuntu5, Kinetic: 8.6.0-0ubuntu3.1 sponsored by ~paelzer

    • Merge Proposals: MP: #433429, MP: #433443

    • This bug was fixed in co-uploads with Christian along with some other items in Lunar and Kinetic. When working alongside swtpm, libvirt failed to delete pid files that were no longer in use. I found an upstream change that fixed it and provided my commits to the set being uploaded together.
  • dnsmasq bug fix + SRU (Kinetic | Jammy) LP: #1981794

    • Uploads: Kinetic: 2.86-1.1ubuntu2 sponsored by ~vorlon, Jammy: 2.86-1.1ubuntu0.2

    • Merge Proposals: MP: #431166, MP: #431606

    • This bug involved adding a patch directly from upstream. It was a special case though as dnsmasq did not use quilt-based patching. I updated the code directly instead, adding the description to the commit message instead of a header.
  • ruby-mysql2 bug fix + SRU (Jammy) LP: #1981343

    • Upload: 0.5.3-3ubuntu4.22.04.1 sponsored by ~lucaskanashiro

    • Merge Proposal: MP: #426650

    • The MySQL transition to 8.0.29 stalled due to an autopkgtest failure in ruby-mysql2. This was due to a change made alongside the move to 8.0.28 when MySQL had a behavior regression. I fixed the issue by reverting the autopkgtest change and getting it into proposed. A full SRU migration was not actually needed though.
  • mysql-8.0 bug fix + SRU (Mantic | Lunar | Jammy | Focal) LP: #1980466

  • mysql-8.0 bug fix + SRU (Jammy | Impish | Focal) LP: #1899248

    • Uploads: Jammy: 8.0.28-0ubuntu4, Impish: 8.0.28-0ubuntu0.21.10.4, Focal: 8.0.28-0ubuntu0.20.04.4 sponsored by ~bryce

    • Merge Proposals: MP: #416902, MP: #416904, MP: #416826

    • The fix for this issue was fairly small, but required a lot tangential work to create. Due to a limited shutdown timeout in MySQL's postinst file many users would run into an apport crash when installing, which piled up into many bug reports. Over the last few months I have compiled the bugs reported by MySQL into various categories based on their outputs, and this ended up being the most common. Using the set of duplicate reports I determined a more reasonable shutdown timeout that would limit apport to activating when there are actual problems.
  • mysql-8.0 bug fix + SRU (Jammy | Impish | Focal) LP: #1964969

    • Uploads: Jammy: 8.0.28-0ubuntu1, Impish: 8.0.28-0ubuntu0.21.10.4, Focal: 8.0.28-0ubuntu0.20.04.4 sponsored by ~bryce

    • Merge Proposals: MP: #414368, MP: #416904, MP: #416826

    • When categorizing MySQL bug reports I found that many were often mistriaged due to a lockfile error that appeared in the logs. In reality this error appeared for everyone and did not cause any crashes. However, this was still a bug, and was fixed by creating and setting the proper permissions for a folder when MySQL is installed.
  • swtpm + libvirt bug fix (Jammy) LP: #1968187

    • Uploads: 0.6.3-0ubuntu3, 8.0.0-1ubuntu7 sponsored by ~paelzer

    • Merge Proposals: MP: #419328, MP: #419329

    • When running swtpm with libvirt, an apparmor notification would show up stating a denial happened when trying to access openssl.conf. After looking deeper into the issue, I found this was due to swtpm using libvirt's apparmor profile rather than its own. To fix it, apparmor profiles had to be fixed in both libvirt and swtpm.
  • swtpm bug fix (Jammy) LP: #1968335

    • Upload: 0.6.3-0ubuntu3 sponsored by ~paelzer

    • Merge Proposal: MP: #419328

    • With the swtpm apparmor profile in place, a user found the need for additional allowances so this was added in alongside the above libvirt + swtpm apparmor fix.
  • libqb bug fix + SRU (Jammy) LP: #1978955

    • Upload: 2.0.4-1ubuntu0.1 sponsored by ~ahasenack

    • Merge Proposal: MP: #425251

    • Pacemaker was occasionally running into errors due to a race condition during posix_fallocate. By adding in a patch containing a fix from upstream the function would be retried multiple times, avoiding crashes.
  • caja-extensions bug fix + SRU (Kinetic | Jammy) LP: #1972057

  • mini-buildd bug fix + merge (Jammy) LP: #1965724

    • mini-buildd is a special case as a bug fix and merge from Debian combined. This package was holding back the python-django transition for Jammy as it specified a maximum version in its control file. To fix this I had to update to the newest version in Debian. However this version also came with an issue where the program would fail based on the hostname of the system. I fixed this with an additional patch, attaching it to the bug report and sending it upstream.
  • clamav bug fix + SRU (Bionic) LP: #1925182

    • Upload: 0.103.2+dfsg-0ubuntu0.18.04.3 sponsored by ~bryce

    • Merge Proposal: MP: #411886

    • The fix for this issue was handled in various files in the debian directory. I worked with control, rules, and postinst files to change when an apparmor profile is deployed during installation.
  • munin bug fix (Jammy) LP: #1680975

    • Upload: 2.0.57-1ubuntu2 sponsored by ~sergiodj

    • Merge Proposal: MP: #411872

    • The fix for this package was related to documentation. Many of the commands and arguments had changed slightly over time and the documentation needed to be updated to reflect that.
  • rsync SRU (Focal | Bionic) LP: #1896251

Feature Freeze Exceptions

  • bind9 update (Mantic) LP: #2034367

    • Upload: 1:9.18.18-0ubuntu1 sponsored by ~ahasenack

    • Merge Proposal: MP: #450738

    • As part of the minor release update needed to get Lunar and Jammy to version of bind9 to 9.18.18, Mantic needed to be updated first. Since this was needed after the feature freeze date, the Mantic update required a feature freeze exception. I dug into upstream commits, going over any items that could be considered features, and listed them alongside all bugs being fixed. Once accepted I got the update uploaded then moved on to the SRU exception.
  • swtpm update (Lunar) LP: #2012028

    • Upload: 0.7.3-0ubuntu1 sponsored by ~racb

    • Merge Proposal: MP: #439532

    • To fix TPM 2.0 support in swtpm prior to the release of Lunar, a version update was required. I went over the updates and the test suite results, then sent in the fix once the FFe was accepted.
  • swtpm development (Jammy) LP: #1950631

    • Upload: 0.6.1-0ubuntu6 sponsored by ~paelzer

    • Merge Proposal: MP: #415813

    • As part of the effort to add swtpm to main for the Jammy release, an apparmor profile needed to be added for extra security. To develop the profile I ran Jammy naitively on a laptop with full restraints on swtpm, and had apparmor complain whenever a permission error was encountered. I tested swtpm by running it alone and while running a Windows 11 virtual machine.

Autopkgtest & DEP8

  • lua5.4 development (Mantic) LP: #2028192

    • Upload 5.4.6-0ubuntu1 sponsored by ~ahasenack

    • Merge Proposal: MP: #447350

    • As a part of the MIR of lua5.4 for Mantic, the package needed some cleanup including non-trivial DEP-8 tests. I ended up adding two new tests. The first tested the lua interpreter by running a few basic programs and comparing outputs. The second compiled code through the Lua C api then ran it and did the same.
  • bind9 development (Lunar | Kinetic | Jammy) LP: #2003584

  • net-tools development (Jammy) LP: #1679346

    • Upload 1.60+git20181103.0eebece-1ubuntu4 sponsored by ~bryce

    • Merge Proposal: MP: #410677

    • Although net-tools is such a widely used package, when I first joined Canonical it had no DEP-8 tests. As such this ended up being my first contribution to an Ubuntu package. For the package I added two unit test sets for confirming the hostname and ifconfig commands are working as intended.
  • ipmitool development (Kinetic) LP: #1982786

    • Upload 1.8.18-11ubuntu3 and 1.8.18-11ubuntu4 sponsored by ~ahasenack

    • Merge Proposal: MP: #427443

    • As a part of the process for promoting ipmitool into main, some DEP-8 tests were needed. The first one I added was a simple smoke test that checked that the version and help arguments worked successfully. The second was more in-depth, creating a qemu vm and using virtualbmc to allow ipmitool to control it, skipping for architectures other than amd64. At the time virtualbmc was not a package in Ubuntu, so I ended up working with the OpenStack team to get it into universe to allow the test to work.

Main Inclusion

  • lua5.4 MIR (Mantic) LP: #2026608

  • python-asgiref MIR (Jammy) LP: #1953173

    • The Django 3.2 sync for Jammy was blocked by python-asgiref since the package was in universe and became a dependency with the new version. To fix this I filled out an MIR application in the above bug report. It was approved by the MIR team then checked by the security team. They were worried about a lack of data validation in a certain part of the code. I tested it extensively and found an issue with Unicode validation. After talking with upstream we confirmed this is an issue but not exploitable due to checks elsewhere. Afterward the MIR was fully approved and python-asgiref was added to main in Jammy.

Areas of work

  • Data Platforms
    • I am currently working alongside the Database Platforms Engineering team to maintain and build new packages for Ubuntu related to database charms. This includes packages related to MySQL and PostgreSQL, such as mysql-shell, percona-xtrabackup, and pgbouncer-exporter.
  • MySQL
    • I am focused on maintaining MySQL and its presence in Debian Unstable with Lars Tangvald and Robie Basak since it is otherwise unsupported.

    • Alongside this I am working on keeping Ubuntu and Debian's MySQLs up to date with each other, especially when new security updates are added.
    • I have written some documentation on the maintenance of MySQL in the Ubuntu Maintainers Handbook.

    • I fixed and am fixing various bugs that show up in MySQL.
  • Django
    • I transitioned python-django to the 3.2 LTS release for Jammy, and the 4.2 LTS release for Mantic.
    • I have worked on related packages to maintain the Django ecosystem, such as mini-buildd and python-asgiref.
  • Virtualization
    • I often work alongside Christian Ehrhardt and Sergio Durigan Junior on bugs and development in libvirt

    • I created an apparmor profile for swtpm, and work with upstream to provide Ubuntu-related fixes.
  • Inclusive Naming
    • I previously acted as the main contact for the server team on Canonical's inclusive naming project
    • I set up and monitored tasks for cleaning up the code and documentation in our projects
    • I cleaned up the documentation for most of the Ubuntu Server Guide

Things I could do better

A major part of the packaging workflow that I need to improve on is reviews. I've benefited greatly from my peers on the server team and the Ubuntu Sponsors group in getting my packages reviewed and uploaded swiftly. I plan on giving back as a member myself of Ubuntu Sponsors and to my peers more in the future, especially while having upload permissions.

I could also work more on communicating with others outside my team. It can be difficult to interact with people in the open source community sometimes, especially when it comes to volunteer projects. I'm currently working to develop better lines of communication with those working on Debian and various upstream projects to benefit packages in all areas.

Plans for the future

General

In the future I would like to focus on the longevity and maintenance of the areas I am in charge of. For MySQL I would like to add additional packages such as MySQL-Shell and Percona Xtrabackup to the archive and keep it up to date. Whenever a new major release of Django happens I also plan to get all associated packages working with it. I also plan on keeping various packages alive in both Debian and Ubuntu, as I have seen many in need of some TLC as a part of the Debian Python team.

What I like least in Ubuntu

I believe the workflow for development on Ubuntu is quite daunting at first. It can be difficult to find documentation on what to do in the specific situations one encounters when creating or fixing a package. Launchpad can be hard to navigate, there are many commands to remember, and many packages have to be dealt with in unique ways. There are a few ways to make this better though, and I have seen improvements already in a few places. The Ubuntu Maintainers Handbook which is updated often has helped me immensely. Likewise, the addition of all main and universe packages to git ubuntu has made things much easier. I think this can all be made even better with standardization and centralization of documentation.


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.


Bryce Harrington

General feedback

I've worked closely with Lena and have had many opportunities to review and sponsor her packaging merge proposals. Lately it's been quite rare that I have any feedback to give, since she's very thorough and attentive to issues, and respectful of established procedures. Back when I did have feedback to give, it was rarely needed to be given more than once. I have a very high degree of trust in her judgement and her work quality.

She didn't mention it in her application, but she also developed a Python tool, dsctriage, that we use for tracking and triaging discourse posts. In addition to packaging skills she has an aptitude for Python development that I look forward to seeing her pursue further.

Specific Experiences of working together

I particularly appreciate her attentiveness to analyzing bugs to drive them to root cause and not simply settle on quick fixes; this has been particularly important for mysql since its installation errors are often quite subtle and hard to reproduce; since Debian is not actively maintaining the packaging Lena doesn't have the option of forwarding complex bugs to them, as we usually do!

I'd like to also highlight the work she did on Lua. Things had been out of sync with Debian and upstream for a long time, and while we've all be working on closing the gap there was still quite a variety of tasks still to be done. As can be seen in her application, she tackled a wide variety of packaging issues to close the gap and enable us to get back in sync.

Areas of Improvement

Lena mentioned she'd like to be more active in sharing her expertise via MP reviews, and I agree - I've very much appreciated her reviews of my own python code MPs in particular.

Athos Ribeiro

General feedback

I Work with Lena in the Ubuntu Server team. She has been doing a great job maintaining MySQL and related packages.

Lena performed SRUs, MIRs, MREs and requested FFes. Her thorough work shows she has the experience with several different processes within Ubuntu which a core-dev should understand.

IMHO, her recent work on django is a great example to show that she is ready to get core-dev upload rights.

Specific Experiences of working together

This is a list of packages I have sponsored for Lena:

https://udd.debian.org/cgi-bin/ubuntu-sponsorships.cgi?render=html&sponsor=*ribeiro*&sponsor_search=name&sponsoree=*voytek*&sponsoree_search=name

While I only sponsored 4 packages for Lena, I am familiar with her work. I believe she would be a great addition to the core-devs group and her skill set would definitely sum up on +1 maintenance, patch piloting and other development activities throughout the development cycles.

Areas of Improvement

It would be nice to see Lena working with other contributors performing reviews, providing feedback and even sponsoring packages to other people with no upload rights. It would be nice to have her participating on other areas of the distro, joining discussions on IRC and in our mailing lists.

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 ===


CategoryCoreDevApplication