DeveloperPerPackageUploadApplication

I, James Falcon, apply for upload rights for package cloud-init.

Name

James Falcon

Launchpad Page

https://launchpad.net/~falcojr

Wiki Page

https://wiki.ubuntu.com/JamesFalcon

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 James Falcon. I work for Canonical on the Ubuntu Server team on cloud-init. I have been working on cloud-init since 2020 and have made many additions, both upstream and downstream. Prior to working at Canonical, I have worked as a Python engineer in many industries, but always developing on and deploying to Linux.

My Ubuntu story

I first encountered Debian Linux in the school computer lab while studying for my CS degree. While still at school, I saw news about this new distro that was "like Debian but better". I burned my own Ubuntu 7.10 CD and have been using Ubuntu ever since. I was drawn in by the initial ease of use but have stuck around because of the community and support. While I always enjoyed tinkering with various aspects of the operating system, I didn't work on Ubuntu until I came to Canonical.

My involvement

Examples of my work / Things I'm proud of

  • Worked on cloud-init for 2.5 years.
  • Added hotplug (1, 2, 3) functionality which was a long-awaited cloud-init feature.

  • Contributed heavily to making cloud-init's cloud-config adhere to jsonschema.
  • As of this writing, reviewed 670 community Pull Requests to the project

  • Started cloud-init's integration testing framework, reducing the manual testing work by dozens of person-hours every release.

  • Invested heavily in pycloudlib, including adding Oracle and Openstack support. The project was almost abandoned when I arrived and it now being utilized by cloud-init, Pro, and CPC teams for common cloud instrumentation testing.

  • Active member in cloud-init's IRC channel.
  • Primary upstream maintainer of cloud-init project for a period of 6 months while the team experienced attrition.

Areas of work

  • Primary driver for a number of recent cloud-init SRUs and SRU verification for the project (1 2 3 4 5)

  • Have a number of cloud-init sponsored uploads

  • Fixed dozens of bugs

Things I could do better

I could do more towards making cloud-init development more transparent and involving community. At times we have let some major bugs slip through SRU testing and I could do a better job thinking through testing to build a higher quality product. We have also had some missteps in our release process, and I could do a better job making that a more streamlined experience.

Plans for the future

General

  • Evolve our schema validation to make it easier to find errors before launching instances.
  • Address more high priority bugs that need attention.
  • Improve cloud-init's documentation to be more friendly to newcomers.
  • Invest in integration testing and pycloudlib.
  • Continue improving community interaction.

What I like least in Ubuntu

Since this is a per-package application, I will keep these thoughts specific to cloud-init.

I wish that cloud-init were better recognized in the industry as a tool for cloud provisioning and configuration management (CM). Prior to joining Canonical, I hadn't even heard of cloud-init even though I was working with cloud provisioning and CM services. If there are technical reasons cloud-init isn't used, I would like to find and address those. I also dislike cloud-init's size and boot time. If we could prioritize and optimize the pieces of cloud-init absolutely necessary to get a cloud instance provisioned, we could improve boot time and size of minimal images.


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.

Chad Smith

General feedback

James has been a driver for all aspects of cloud-init development lifecycle for the last 3 years and was the primary owner of the project for around 6 months when we were short-staffed.

He has been involved in owning all elements of the cloud-init project:

  • development of generic solutions for complex network needs (hotplug/duplicate MAC handling/Oracle network config source ordering/defining generic network activator layer to communicate with multi-distro network configuration stacks)
  • Better schema validation support enabling end-users to better understand failures in user-data
  • improvements to our package upload and publishing processes, tooling and documentation

  • he is efficient and engaged in community communication through mailing list, pull request reviews and IRC/support questions

In his approach to software development and design on cloud-init James:

  • programs defensively and looks at the potential broad impacts of change sets before pursuing them
  • gives thorough discussion and points out potential gaps of pitfalls in peer and community work in a gracious tone
  • seeks to make any API simple, generalized and avoiding unnecessary complexity
  • looks to refine and improve upon our project maintenance through improved/simplified release processes, increased automation and reduction of tools

Specific Experiences of working together

Please add good examples of your work together, but also cases that could have handled better.

Getting JSON schema coverage for our 60+ cloud config modules was a big set of tasks. James was able to help us design, prioritize, review and merge that work in parallel easily because his PRs typically also provide additional context or event comments inline to anticipate questions reviewers might have or advertize reasons behind a decision or bit of code. 13661385.

In meetings with partners such as Azure, James represents cloud-init well, can describe succinctly the architecture and design decisions for most cloud-init features and he ensures that partner needs are prioritized and met.

He also has a keen eye toward keeping branches reviewable and carrying and tracking backlog items as separate tasks to ensure the work actually gets done: 1365. James has been influential in making sure we review our work backlogs in JIRA and assists in keeping us on task during our 6 month development cycles to make sure we are meeting the goals that we set out for our project.

Cloud-init relies on a number of scripts to package and publish our project in cloud-init. James is constantly looking to improve our workflow and reduce pain points in our packaging release flow by simplifying our release tooling.

While it is not cloud-init proper source repository, pycloudlib is a library core to the health of the cloud-init project because we rely on it for effective integration tests on all cloud platforms. James has contributed about a quarter of the commits to that project and has introduced significant improvements such as common config in pycloudlib.toml, continuous deployment and semantic versioning which makes it easier to configure, consume and share this library with other projects such as the Ubuntu PRO and Certified Public Cloud teams.

Areas of Improvement

I trust James architecture and design decisions in cloud-init. He is careful to avoid introducing bugs and security-related concerns. He raises discussions when anything comes across as feature requests or bug fixes that are questionable. I would like to see him continue to grow his involvement in the following ares:

  • increase his influence in generalizing APIs for cloud-init datasources and config modules making our code easier to maintain and extend
  • grow his involvement in other distribution support in test infrastructur and tooling for cloud-init to ensure we continue to improve the development processes where possible for other distribution downstreams.

Paride Legovini

General feedback

I am familiar with James Falcon work on the cloud-init package, including his upstream work at the package and his contributions to the Ubuntu packaging. I believe James Falcon can be trusted with PPU permissions for the package right now, and I strongly support this PPU application.

James is knowledgeable in all the aspect of the package. Being one of the lead upstream developers he's is aware of the design choices and implementation details of new features and bug fixes. This is especially important for cloud-init because of the SRU exception the package is under: new upstream versions are packaged and uploaded to all the supported Ubuntu releases. James is also familiar with the packaging, he drove several new upstream releases, including the required packaging changes. I count over 20 sponsored uploads.

Other than being a skilled and experienced developer and package maintainer, James is also an excellent person to work with. I hope to see him grow his involvement in Ubuntu development even outside of cloud-init.

Specific Experiences of working together

We mostly worked together at cloud-init QA, which includes upstream CI and integration testing done on containers, VMs, and on the major clouds. This testing is used in day to day development and to test new upstream releases, including SRU validation. This testing includes building packages (directly from git or via PPA recipes) and covers basically all the aspects of cloud-init.

James also worked at defining and documenting processes and tools to aid cloud-init development and cutting releases targeting primarily Ubuntu, demonstrating full familiarity with the package and with the packaging concepts required to maintain it in excellent shape.

Areas of Improvement

From the Ubuntu Developer point of view, I'd suggest the following:

  • cloud-init currently does not have any autopkgtest, so that could be an area of improvement for the package and for James' experience as an Ubuntu Developer.
  • Should James want to grow his involvement with Ubuntu development outside of cloud-init, which I hope, I suggest getting packaging experience outside of clout-init, maybe looking at the ubuntu-server or ubuntu-cloud packagesets.

-- paride 2023-02-27 16:45:00


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


CategoryPerPackageUploaderApplication

JamesFalcon/DeveloperPerPackageUploadApplication (last edited 2023-02-27 17:49:22 by paride)