Projects¶
Selected projects¶
Out of all my open source work, I have devoted significant time to these projects.
fedrq¶
Author
Website | Source Code (Sourcehut) | Github Mirror
fedrq is a repository querying for Fedora and all other RPM-based distributions.
- Developed Python-based tool that enables Fedora package maintainers to query all versions of the Fedora package repositories
- Wrote extensive documentation — including UNIX manpages, API documentation, and an mkdocs-based documentation site
- fedrq was widely adopted by the Fedora community and included in the official Package Maintenance Guide
- Other developers incorporated fedrq’s Python API in their own tooling to improve performance and correctness
- Evangelized fedrq at conferences
tomcli¶
Author
Website | Source code (Sourcehut) | Github Mirror
tomcli is a CLI tool for working with TOML files.
- Developed CLI tool for querying and modifying data in the TOML format while preserving formatting
- Designed simple interfaces to perform different types of queries and modifications for all TOML types
- Over 50 Fedora packages have adopted tomcli to patch upstream packaging metadata and replaced convoluted regular expressions and patch files
- Wrote extensive unit tests, achieving 98% code coverage
sourcehutx¶
Author
Sourcehutx is a typed, asynchronous Python API client to the Sourcehut code hosting, ticket tracking, CI, and mailing list platform’s GraphQL API.
- Developed Python API client for an emerging software development platform
- Translated GraphQL API conventions into an easy-to-use, Pythonic interface
- Utilized Pydantic framework for data validation and HTTPX for asynchronous HTTP requests
- Wrote extensive unit and integration tests, achieving 95% code coverage
antsibull¶
Co-maintainer
antsibull is the build tool, linter, and policy compliance checker for the Ansible Community Package.
- Implemented tooling to verify that component collections adhere to package requirements surrounding release tagging, repository management, and automated testing
- Revamped antsibull’s own continuous integration and developer tooling
- Managed releases to Python Package Index
- Facilitated communication with Steering Committee and Release Working Group stakeholders to ensure project met each groups’ needs
Git forges¶
My code is spread over a couple git forges. That’s the beauty of open source. My personal projects are primarily hosted on Sourcehut, and the Community projects I participate are hosted elsewhere.
- Sourcehut — personal projects
- Github — Ansible-related code and general open-source contributions
- Fedora Distribution Git — Fedora RPM packages; I have a lot of packages, and the page takes a while to load
- Gitlab, in particular the Fedora go-sig namespace
Personal projects¶
fedrq¶
A tool for querying the Fedora and EPEL repositories
fedrq makes it easy to query any branch of Fedora or EPEL. It uses the dnf
Python bindings and does not shell out to dnf repoquery
. It allows querying
for reverse dependencies, packages that contain a certain Provide or file,
subpackages of an SRPM, and package metadata.
The tool doesn’t seek to replace every feature of dnf repoquery. It provides a
more user friendly interface than dnf repoquery
for certain common tasks.
fedrq is written in Python and has extensive documentation — including UNIX manpages, API documentation, and an mkdocs-based documentation site.
tomcli¶
CLI for working with TOML files. Pronounced “tom clee.”
This tool was inspired with my frustrations with packaging Python and Rust
projects and having to manually patch pyproject.toml
and Cargo.toml
.
It supports reading and writing TOML and supports tomllib
, tomli
,
tomli_w
, and tomlkit
.
go-vendor-tools¶
I wrote go-vendor-tools
, a set of scripts and RPM macros to help package
vendored Go software in a Guidelines-compliant manner.
See Go SIG for my other contributions to Go packaging in Fedora.
sourcehutx¶
sourcehutX provides an async python client for the Sourcehut API implemented using httpx and pydantic.
forge-srpm-macros¶
These macros simplify the packaging of forge-hosted projects. They automatically compute the Source urls based on macros set in the specfile. This code has been split out from redhat-rpm-config to ease maintenance.
ansible-content¶
Various ansible roles and collections. Most roles are in maintenance mode.
mappie¶
Python library with collections, frozen mappings, and more. Experimental.
libdnf5-shim¶
libdnf5 shim module for usage in virtualenvs. Inspired by https://github.com/packit/rpm-shim.
fedora-scripts¶
My collection of scripts for Fedora package maintenance and other miscellaneous things.
Ansible Community projects¶
Steering Committee¶
I have been a member of the Ansible Community Steering Committee since 2022. I wear various hats around the Ansible Community.
antsibull¶
I co-maintain the 5 antsibull tools used to build Ansible source distributions, docs, changelogs, and more. I mainly focus on antsibull and antsibull-core.
ansible-documentation¶
I am an ansible-documentation committer. I help review PRs and help with our development tooling.
Ansible release engineering¶
I am a release manager for the upstream ansible
community package PyPI releases.
Fedora packaging¶
I maintain several packages in the Fedora Linux repositories. Some of them are listed below.
Ansible stack¶
I maintain ansible
, ansible-core
, ansible-builder
, ansible-packaging
,
and several ansible collection and other ecosystem packages.
See Flock 2023: Ansible in Fedora and EPEL.
yt-dlp¶
I maintain the yt-dlp
package, the successor to youtube-dl
.
hut¶
I maintain the hut
package, the blessed CLI tool for the Sourcehut code forge.
python-orjson¶
orjson is a PyO3 Rust Extension module for (de)serializing JSON.
I still prefer the builtin json
module…
Miscellaneous Python libraries¶
I (co-)maintain other essential Python libraries and tools, including python-flit, python-flit-core, and python-trove-classifiers.
Go SIG¶
I am an active member of the Golang Special Interest Group. I maintain a couple library packages and have taken over maintainership of our packaging tools.
go-rpm-macros¶
I am an upstream maintainer of go-rpm-macros
, the RPM generators and macros
used to build Go software in Fedora.
go2rpm¶
I am an upstream maintainer of go2rpm
, the RPM specfile generation tool for
Go projects.
go-vendor-tools¶
I wrote go-vendor-tools
, a set of scripts and RPM macros to help package
vendored Go software in a Guidelines-compliant manner.
package-data¶
I maintain the tooling for the Go Package Data repository, a set of data about Go packages and dependencies in Fedora. This was initially developed for the Mass_Retire_Golang_Leaves Change.