DeveloperPerPackageUploadApplication
I, Alberto Contreras, apply for upload rights for package(s) cloud-init.
Name |
Alberto Contreras |
Launchpad Page |
|
Wiki Page |
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.
Who I am
I am Alberto Contreras. I have a BSc in Mathematics from University of Granada and a MSc in Computer Science from University of Malaga.
Prior to working at Canonical, I worked as a software/scientific engineer during 5 years in the fields of Monte-Carlo simulations, smart cities, reconciliation in banking and digital marketing using technologies as C/C++, Matlab and Python.
I joined Canonical in 2022 as part of the Canonical Public Cloud (CPC) team as a software engineer with focus on a good integration of Ubuntu in Public Clouds, mainly working on Ubuntu Server projects, as cloud-init, ubuntu-pro.
My Ubuntu story
My first contact with Linux was with a mini laptop provided by my school, which had Debian installed. My first contact with Ubuntu was in 2008, when I downloaded an Ubuntu 8.04 ISO and installed it in my workstation. I was impressed by the performance, cohesiveness and beauty of the OS. I maintained a dual-boot system with Windows (mainly for gaming and windows-only compatible programs for my studies) during some years.
I used Debian / Ubuntu during my university studies and in an internship I did contributing to Normaliz. My professional career was full of Ubuntu too, either as a target and/or a development systems.
Since I joined Canonical in 2022, I have improved how Ubuntu behaves, adding features, fixing bugs, improving its perfomance and adding documentation. Working mainly in cloud-init upstream and downstream (Ubuntu), and ubuntu-pro.
My involvement
Examples of my work / Things I'm proud of
- Worked on cloud-init more than 2 years.
Performed 195 commits in cloud-init upstream.
Reviewed 333 Pull Requests in cloud-init upstream.
- Active member in cloud-init's IRC channel.
25 sponsored cloud-init uploads
- Features:
SC-1028 - [RM 22.10] [CPC] Oracle Datasource network config from env and IMDS when not iSCSI
- CPC-2351: GCE Activate network config on every boot to allow cold transferring of instances across VPCs.
CPC-2578 - gce improve ephemeral fallback NIC selection. This enabled A3 instance type on GCE.
SC-1642: [RM] Automated Management of Multi-NIC Setups for AWS
- Performance:
SC-1021 - [RM 22.10] [CPC] schema: boot speed skip inapplicable modules
- CPC-2848: Found 5s delay of time to ssh on GCE due to udev rules config in google-compute-engine
- Pycloudlib (library for testing in clouds used by cloud-init, pro and cpc teams):
- 3fb4664 refactor: migrate to ruff (#374)
- 177c437 feat(PEP561)!: distribute type hints (#370)
- 073c30a, 789549f, 5e9ed90: feat(ec2): add ipv6 support
- 4f4017b pep517 compatible and static pkg definition (#279)
- 87c8195 exceptions: specialize base exceptions (SC-1436) (#282)
- 7562367 lxd: drop simplestreams dependency (SC-1437) (#290)
- dbcff43 Enable mypy type checking and add more type definitions.
- f929364 azure: integrate azure-cli-core new API (#209)
- c423419 Implement OCI network interface methods (#203)
- Cloud Config validation service
- Explore / POC for http service to validate cloud-configs.
- Present it in cloud-init summit 2023. Didn't get much interest and got cancelled.
- SC-1321 and SC-1485
Areas of work
lp2045582: example of full upstream + downstream cloud-init release 23.4.
- Triaged and fixed dozens of upstream and downstream bugs.
25 sponsored cloud-init uploads:
- I have worked doing releases, adding / refreshing / maintaining quilt patches, adding/maintaining/removing dependencies, fixing lintian issues, extending the maintainer scripts. All this work has had the intention to either improve cloud-init or maintain backward and forward compatibility across stable releases.
- Examples of non-releasing work:
57bb32388 d/cloud-init.postinst: change priority of hotplug rules
f66adafc9 debian/cloud-init.templates: enable Akamai by default
739ec7381 d/cloud-init.preinst: Oracle to remove network disabling config file
93f96d613 d/control: drop python3-httpretty from Build-Depends
22f7e457c d/cloud-init.postinst: change priority of hotplug rules
9c7fd8e01 d/p/status-retain-recoverable-error-exit-code.patch:
db8e692d2 d/p/retain-apt-pre-deb822.patch: - Disable apt source list generation with DEB822 style
73561bfd0 debian/cloud-init.templates: enable Akamai by default
3854e62fa d/cloud-init.preinst: Oracle to remove network disabling config file
- Distro work on other packages:
Migrate python-boto to python-boto3 in simplestreams: #2052437
- This led to me performing 3 MIRs for their dependencies:
[FFe] Update ec2-ami-tools to 1.5.19 for Oracular. For this upgrade I did:
- Request a FFe
- Migrate from cdbs to dh and update debian packaging tooling and standards
Discover and fix: missing required dependencies
Discover and fix: undefined method `exists?' for File:Class
Upgrade ec2-ami-tools to the latest version: https://bugs.launchpad.net/ubuntu/+source/ec2-ami-tools/+bug/2078046
Things I could do better
Sometimes, while focused on planned features / bug fixes, is hard to find time to work more on code quality / refactorings for cloud-init.
Plans for the future
General
- Improve boot performance.
- Implement cloud-specific ubuntu cloud-init packages to reduce images size.
- Close gaps in AWS multi-NIC auto-configuration.
- Improve cloud-init's code quality, typing, documentation, release process, testing, etc.
- Help more new contributors, either from the community or Canonical, to cloud-init.
- Squash more old bugs.
What I like least in Ubuntu
(Specific to cloud-init) While we have improved and are working on boot performance, I still think it is probably the thing that I most dislike about cloud-init. We will continue working on it in future cycles.
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.
James Falcon
General feedback
Alberto has been a solid contributor to cloud-init for over two years. He came up to speed quickly and has taken on many tasks that have improved cloud-init and that require deep knowledge of the cloud-init codebase. Even though Alberto works on the CPC team, I consider him one of cloud-init's core contributors. He always contributes resilient, well designed, and well tested code.
Alberto's knowledge of and work with EC2 has proven to be especially helpful in understanding the best ways to approach cloud-init's hotplug feature on EC2. He has also been a strong contributor to our testing and quality efforts, including help maintaining the testing library pycloudlib. He has spearheaded new efforts for the project, such as the cloud config validation service.
Alberto is also regularly involved in releases and has prepared our releases for upload many times. This includes upstream snapshots as well as many separate packaging changes.
Specific Experiences of working together
I have reviewed dozens of his PRs and vice versa (not all are represented here).
His PRs are always top quality and the feedback on my PRs is always valuable. This includes packaging PRs for changes in cloud-init packaging.
Alberto also regularly attends the cloud-init meetings, including standups. He contributes valuable technical expertise and ideas when discussing architecture and thorny bugs.
Areas of Improvement
I could see value in having Alberto mentor other CPC members. Others from CPC are involved in cloud-init, and I think Alberto could provide a unique and more relatable perspective to help others come up to speed on the project.
Chad Smith
General feedback
Alberto has been a key asset in this upstream cloud-init project with his ability to development of simple, efficient and defensive solutions, thorough reviews for peers and community and investment in automation, tooling and documentation to improve the quality of our project.
I've sponsored 9 cloud-init package uploads from Alberto. In each upload, he shows vigilance in verification of expected versioning for releases across multiple series, the ability to clearly represent changed content succinctly in debian/changelog and run through full set suites to verify the quality of the package build. He has kept end-users needs front-of-mind by providing quilt patches (retain ec2 net events, retain status exit 0 on warnings, disable APT deb822 formatted sources to retain original behavior on stable releases.
The cloud-init project uses a set of tools, documentation and processes to create and validate our package uploads. In the event of packaging-related questions or inconsistencies in cloud-init's packaging tools, documentation or process, Alberto has typically provided pull requests or process improvements to our docs to resolve those issues or raises awareness with peers so we can collectively refine our processes.
He has touched most aspects of our package development, tooling and publication life-cycle:
- Authored downstream quilt patches for stable releases to retain original behavior by setting feature flags in our product
- He has maintained elements of our postinst/preinst scripts with defensive shell programming practices to avoid pitfalls of upgrade errors
- integration with apport for better data collection during bug filing
- managed introduction of depends/suggests in debian/control as our product evolves
- fixed lintian warnings across our release support boundary
spent time extending our packaging tooling, release process and documentation to ensure our process is easy to follow and less prone to errors
- consistently evaluated each upload he proposes with significant package build testing and verification of quilt patches
Has alternated as the upstream release manager for cloud-init which involves assessing and fixing integration test suite across all target platform prior to release, cutting that release, communicating, organizing and verifying all testing and verification prior to upload to meet our SRU exception
- coordinated with SRU reviewers the review, resolution and acceptance of cloud-init uploads.
Alberto also has experience resolving regression-proposed conditions in LP: 20445582 . In this instance, he communicated clearly and succinctly the regression conditions, informed necessary parties, organized the fixes and the plan for resolution and the fix publication with engaged external customers to unblock our release.
In all of his involvement with the cloud-init project he shows:
- a willingness to own very complex feature development and deliver simple, modular and well-tested solutions
- the ability efficiently and correctly determine solutions to complex problems with appropriate error handling
- as a reviewer of pull requests he provides thoughtful consideration in support of corner cases, avoidance of regressions and introduction of adequate automated testing.
- clear communication and responsiveness, setting expectations, improving documentation and driving best practices to ensure we retain a supportable product.
Specific Experiences of working together
Please add good examples of your work together, but also cases that could have handled better.
Alberto's work on UA auto-attach integration shows the ability communicate clearly to reach resolution, breakdown complex solutions into reviewable separate pull requests, communicate outstanding bugs and followup to resolve them. He prioritizes customer stability and thinks through corner-cases for users in his use of feature flags for APT deb822 format support. He invests in quality of community pull requests by providing test coverage in community PRs where lacking.
Areas of Improvement
Alberto historically has introduced additional tooling, test and CI automation to the cloud-init project and our test library pycloudlib such as mypy, static analysis tools, hypothesis testing I would like to see him continue to propose and drive project level changes/improvements to aid in automation to improve the maintainability of our projects.
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 ===
AlbertoContreras/DeveloperPerPackageUploadApplication (last edited 2024-09-05 12:14:26 by aciba)