[Gonothi] Familiarize more with AI/ML SIG, and Packaging process #150
Labels
No labels
state
ready for review
function
analytics
function
communications
function
docs
function
events
function
onboarding
function
operations
good first issue
help wanted
needs
changes
needs
reporter feedback
needs
team vote
needs
triage
scope
bug
scope
improvement
scope
new
state
approved
state
blocked
state
duplicate
state
invalid
state
wontfix
No milestone
No project
No assignees
3 participants
Notifications
Due date
Dependencies
No dependencies set.
Reference
commops/interns#150
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Get better acquainted with teams and processes that will help with the internship project
Background
A few more onboarding tasks that's targetted for the specific internship project. You can start on it in Sprint 7 but since there are several parts and dependencies, I'll put it in the Sprint 8 milestone and adjust due date accordlingly.
"Learn more" in the deliverables below means getting acquainted with more knowledge/contacts to help your Outreachy project, you don't need to get 100% involved. Reading through the linked pages will suffice as completing the "learn more" tasks. If there are specific actions needed (e.g. reaching out to certain people and joining certain meetings), they will be indicated as separate items below.
Deliverables
@tflink:fedora.imon matrix)Outcome
Success!
[WIP] Familiarize more with AI/ML SIG, and Packaging processto [Gonothi] Familiarize more with AI/ML SIG, and Packaging processHello, @cybette! What's Tim Flink's Matrix username, please?
I see two names on the Matrix channel when I search for the FP nick 'tflink'.
@gtfrans2re Tim Flink is
@tflink:fedora.imThanks for Tim's Matrix username, @cybette. I have reached out to @tflink:fedora.im on Matrix and am waiting for a response.
Hello, @cybette! I have completed the first four deliverables:
#ai-ml:fedoraproject.org.@tflink:fedora.imon Matrix).I'm now getting more acquainted with the SIG and its members. The remaining deliverables (Packaging Committee, Fedora Packaging Guidelines, fedora-review, etc.) are the packaging-process side; I'll work through those next, ahead of the July 6 due date.
The Fedora Packaging Committee is the body that determines the packaging guidelines for Fedora. It also approves exemptions to the guidelines and to the package review process where needed. Importantly, the FPC is an independent subcommittee of the Fedora Engineering Steering Committee (FESCo), so the FPC sets guidelines, with FESCo ratification as an optional step for certain changes.
A few things I picked up that are directly relevant to our project (since the guidelines are the corpus we'll eventually build the RPM RAG tool on):
#meeting-1:fedoraproject.org, with the agenda posted to thepackagingmailing list beforehand and minutes kept in Meetbot.packaging-committee).I'll start attending the FPC meetings on Matrix and keep an eye on the Fedora Calendar so I can sit in, follow the agenda/minutes, and get more familiar with the committee and how they work, which should give me a good grounding for the RPM packaging guidelines project.
Assisted-by: Claude Opus 4.8
The Fedora Packaging Guidelines are the official, canonical rules for packaging software as RPMs in Fedora. (Note: the version I used during the Outreachy application phase was a 2019 fork; this docs.fedoraproject.org one is the current official source, which is an important correction for our corpus.)
What do they cover? a large, structured collection spanning:
License:field must match the actual license)Source:tags, matching upstream via checksums)BuildRequires, automatic vs. manual, versioned deps)%files,-devel/-doc/-staticsubpackages)Key nuance for our tool — the guidelines use deliberate normative language:
This "MUST vs SHOULD" distinction is exactly the kind of thing our RAG tool would need to surface when checking a spec; a packager mostly needs to know which rule is a hard blocker versus a recommendation. Packages must also conform to the separate Review Guidelines, which is the checklist reviewers actually apply.
This is the body of knowledge (the "30 years" of packaging content) the main RPM project builds on, so getting familiar with its structure and that MUST/SHOULD framing is foundational.
Assisted-by: Claude Opus 4.8
fedora-review (package:
fedora-review, originally by Tim Lauridsen) automates much of the "grunt work" of reviewing an RPM package for inclusion in Fedora. Given a package review request, it:--prebuilt),It's plugin-based (checks for C/C++, Python, Java, R, Perl, Ruby, …) and extensible via a simple bash API. It's explicitly not a replacement for a human reviewer; it automates the mechanical checks and produces a structured template, leaving judgment calls to people.
Why it's highly relevant to our project:
I'll experiment with running it against a sample package to see the template output firsthand and then share my findings here.
Assisted-by: Claude Opus 4.8
@gtfrans2re wrote in #150 (comment):
That's the original tool, note that it was last updated 10 years ago. Please refer to the current tooling: https://pagure.io/FedoraReview which I mentioned in the issue, and recently migrated to Forgejo: https://forge.fedoraproject.org/packaging/FedoraReview
Thanks for the correction, @cybette! Noted with thanks. I'll refer to the current tooling at pagure.io/FedoraReview (now migrated to the Forge at forge.fedoraproject.org/packaging/FedoraReview) rather than the original timlau repo. Good to know the maintained version is already on the Forge too; I'll use that as the reference going forward.
I looked into the RPM Packaging Guide (source repo, originally by Adam Miller).
What it is: a general, tutorial-style introduction to RPM packaging that explains the fundamentals (NVR naming, spec file anatomy:
%prep/%build/%install/%files/%changelog, building withrpmbuild, quality-checking withrpmlint, working with macros). It's written in AsciiDoc, publishes HTML + PDF via GitHub Actions, and notably maintains separate community (upstream) and RHEL (downstream) index pages.Is it still relevant? Partly, at least to me, and here is my take:
Recommendation for the corpus: treat it as secondary/contextual rather than authoritative. The authoritative sources for our RAG tool should be the official Fedora Packaging Guidelines and Review Guidelines. This guide could optionally supplement them for "what is a spec file / how does rpmbuild work" background, but we'd want to be careful it doesn't introduce outdated or non-Fedora guidance, so probably best excluded from the authoritative corpus, or clearly weighted below the official docs if included.
Assisted-by: Claude Opus 4.8
For training or evaluating the RPM tool, we'll want a set of compliant and non-compliant spec files. Here's where I think we can source them:
Compliant examples:
hello/bello-style specs) are clean, minimal references.Non-compliant examples:
License:field, missing%license, hardcoded paths, un-versioned deps, non-American-English, etc.); this mirrors the "adversarial test set" idea from the PyData talk in #154.Open question for the packagers (tied to the "ask Justin/Tim" item): is there an existing curated set of good/bad examples they use for training new reviewers, or should we assemble our own from dist-git (compliant) + review tickets (non-compliant)? I'll fold this into the outreach.
This pairs naturally with the eval work in #154; these examples become the test cases for measuring whether the tool correctly identifies compliance issues.
Assisted-by: Claude Opus 4.8
Hello, @cybette! About the output type, this is really a product design question for the tool, and I think the answer depends on the audience. Laying out the trade-offs:
Option A: fedora-review-template style (super detailed):
Option B — summary of issues (actionable / agentic):
My lean: the tool adds the most new value as Option B, because the mechanical pass/fail checking is already well covered by fedora-review/rpmlint. Where a RAG approach shines is in turning "this fails check X" into "here's the relevant guideline, here's why your spec violates it, and here's how to fix it", for instance, the explanatory, actionable layer on top.
A possible best-of-both: lead with a prioritized issue summary (B), with an option to expand into the full detailed template (A) for reviewers who want the complete checklist. That keeps it newcomer-friendly without losing comprehensiveness.
Happy to align with mentors on which direction to prioritize first, as discussed today via Matrix voice notes with @jflory7; this also connects to @cybette's note on the fedora-review template format in the deliverables.
Assisted-by: Claude Opus 4.8
I discussed potential sources for the RPM packaging guidelines RAG corpus with Tim. He recommended considering Maximum RPM as an additional historical resource and suggested using package review bugs as a potential source of compliant vs. non-compliant spec file examples.
We also discussed output formats, with Tim favoring a concise summary of issues over generating a full fedora-review template. Additionally, he raised questions about ROCm and Radeon GPU support in the planned tooling stack, highlighting hardware compatibility as an area to validate.
Takeaway: Expand corpus research beyond official guidelines to include historical and review-related sources where practical, focus on actionable issue summaries as the primary output, and verify GPU/ROCm compatibility assumptions during implementation.
Assisted-by: Claude Opus 4.8
Closing: Onboarding phase complete
The exploration and onboarding work tracked here has served its purpose — @gtfrans2re is now familiar with the AI/ML SIG, packaging processes, and the tools relevant to the internship project. Closing this to shift focus to the core project deliverables (#159, #160, #161).
Assisted-by: Claude Opus 4.6 (1M context)
Thanks for reviewing and closing this issue, @jflory7. I will use the insights I gained from this to improve my work on the main project.