Skip to content

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.

Personal projects

fedrq

builds.sr.ht status

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

builds.sr.ht status

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

CI Badge

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

builds.sr.ht status

sourcehutX provides an async python client for the Sourcehut API implemented using httpx and pydantic.

forge-srpm-macros

builds.sr.ht status

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

builds.sr.ht status

Python library with collections, frozen mappings, and more. Experimental.

libdnf5-shim

builds.sr.ht status

libdnf5 shim module for usage in virtualenvs. Inspired by https://github.com/packit/rpm-shim.

fedora-scripts

builds.sr.ht status

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

CI Badge

I am an upstream maintainer of go2rpm, the RPM specfile generation tool for Go projects.

go-vendor-tools

CI Badge

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.