Gunicorn is a Python WSGI server. Gunicorn can be configured using a Python module that is loaded with
exec. Gunicorn was not closing the file handle after opening the provided module, which resulted in a
ResourceWarning: unclosed file warning. GH-1889 addresses the leak by opening and reading the module using a
ansible-role-lets-encrypt-route-53 is an Ansible role that uses Amazon Route53 for the
dns-01 challenge with the
acme_certificate module. Ansible 2.7 deprecated using
with_items to specify packages with package modules, e.g.
apt. GH-14 updates the tasks to supply the list of packages directly to the module.
futures-locks is a Rust crate that provides Futures-aware locking primitives.
futures-locks depended on Tokio, which is a fat dependency.
tokio is intended to be an application crate dependency; a library crate should depend on tokio sub crates. GH-10 reduces the number of crates that
futures-locks depends on from 51 to 3.
All of my PRs in 2018 are linting and warning shaped. By using these libraries, I experienced some of their unfinished edges first-hand. This helped narrow the scope of my first contributions to the projects. Narrowed scope breeds two benefits: the changes are good first issues and the changes are easier to merge.
Making an open source contribution has similar motivations to creating a startup: solve a problem you have in an environment you know. Sending a PR requires familiarity with the project; it requires you to have used the code. To send more PRs in 2019, I need to use more libraries, which means broadening scope and taking on projects in new domains.