Disclaimer
This is just a proposal, not an announcement. We encourage you to provide constructive ideas, just building a proof-of-concept as part of GSoC '25 under the mentorship of František Lachman with strict timelines, we encourage you to provide realistic feedback in a constructive way.
Modernising Fedora Package Submission Process: GSoC Project
This initiative reduces the entry barrier for new Fedora packagers, aligns Fedora’s developer experience with modern Git-centric workflows, and enables package reviewers to focus on actual review rather than manual triage.
There are a number of platforms and tools that one must go through to prepare their package for Fedora and also a lot of work for reviewers as well.
Traditionally, the Fedora package submission workflow involves multiple disconnected systems:
- Manual spec validation using
rpmlint
andfedora-review
. - Bugzilla tickets for initiating package reviews.
- Manual status tracking and reviewer updates all disconnected from git.
This project introduces a GitOps-inspired approach that integrates these steps into a single automated pull request flow but without changing any of the existing process and providing an easier and more ergonomic alternative.
Idea
We will build an event-driven service that is triggered from a git-forge and sits between Fedora infrastructure and your favorite git forge, let’s say GitHub for example here.
Invoke with Command
Contributors will create a PR with their spec file in their own project repository and trigger the bot in the PR thread.
The GitHub App parses these commands and enqueues the appropriate tasks.
Stage 1: Spec Validation
- Fetch the
.spec
file from the PR head - Run
rpmlint
against it - Post any warnings or errors as inline comments on the changed spec lines
Stage 2: COPR Scratch Build
- If
rpmlint
passes, trigger a COPR scratch build via the COPR API - Inside the build, run
fedora-review
undermock
to surface policy or license issues - Upon completion, post a summary comment with links to the scratch build logs, or allow the maintainer to iterate if the build fails
Stage 3: Post-Build Inspection
- On successful RPM creation, enqueue a TMT job that runs
rpminspect
- Aggregate the test outputs and post a concise report (with log URLs) back to the PR thread
Automated Review Ticketing
- When all CI stages report success, the service calls uses Bugzilla API to file a new ticket for review and posts the status and report of the CI
- The new ticket number and direct link are added to the PR thread back to GitHub
Live Status Sync
- The App subscribes to
fedora-messaging
to listen for any state change - Any state change is mirrored as a GitHub status check or PR comment
Merge & Bootstrap (Optional not in scope right now)
- After reviewer approval (tracked in PR), the maintainer merges the PR
- Optionally, the service can scaffold the
dist-git
repo and add a basic Packit config for future updates
Reviewers receive only validated submissions and can conduct reviews directly in the PR, where all necessary context (logs, build status, test results) is available. This eliminates the need to switch platforms. The existing Bugzilla process serves as a log or database for new package submissions, while all activity occurs in the project repository tracked by git.
NOTE: Another direction, we can take is to have a central repository for packages instead of having each of their own where the contributors will file PRs instead very much like how nixpkgs does it.
Timeline
- June 13, 2025 – Begin development: scaffold the GitHub App and Celery worker, explore integration points with Fedora CI, Bugzilla,
fedora-review
, andfedora-messaging
. Coordinate with Fedora Infra, Packit, and QA teams to align on requirements. - June 27, 2025 – Start prototyping: design the CI workflow, integrate initial
rpmlint
checks, and experiment with triggering jobs from GitHub events. - July 11, 2025 – Continue implementation: write tests and build out the bot’s logic for
rpmlint
execution, GitHub comment handling, and command parsing. - July 25, 2025 – Extend the pipeline: integrate COPR scratch builds,
rpminspect
execution, and automate Bugzilla ticket creation with syncing to PRs. - August 8, 2025 – Finalize integration: complete end-to-end testing of the full flow, deploy to an OpenShift environment, and collect feedback from early users.
- August 22 – September 4, 2025 – Polish and prepare for adoption: refine workflows, improve documentation, and create onboarding guides for contributors and reviewers.
FAQ
Q: What happens if someone doesn’t want to use GitHub?
A: For now, GitHub is the target platform for the MVP because of its popularity and developer-friendly APIs. Support for Pagure or GitLab can be added later.
Q: How does this fit into Fedora Packaging Guidelines?
A: This doesn’t alter any guideline or policy. It simply wraps the existing tools (rpmlint, fedora-review, rpminspect, COPR) into a smoother flow that lives closer to where contributors work (their upstream repo or fork).
Q: How does this differ from the Packit + dist-git + Bugzilla flow?
A: This wouldn’t replace the existing flow but provides an optional interface for new package submissions only. It automates steps like spec validation, scratch builds, and CI feedback before filing the Bugzilla ticket. Packit focuses more on updates and syncing dist-git with upstream.
Q: Will this change what reviewers do?
A: No. Reviewers still decide whether to approve a package. This only reduces boilerplate work for both submitters and reviewers by surfacing issues earlier and gathering logs in one place.
Please share your feedback in the comment below.
The project will be built in public here .