Hello 0/, Thanks for the constructive feedback, Maxwell. Here is a quick progress update since the initial announcement on September 2nd. We attended the FPC meeting on September 3rd, submitted the guidelines pull request, and refined the packaging architecture based on committee feedback and end-to-end testing in Mock.
Here is a concise changelog of what has changed since the first proposal: # 1. Packaging Guidelines & FPC Review * Guidelines PR Filed: Submitted PR #1568 against packaging/guidelines on Fedora Forge: https://forge.fedoraproject.org/packaging/guidelines/pulls/1568 * Prescriptive AsciiDoc: Authored strictly as prescriptive, sembr.org-compliant AsciiDoc (Crystal.adoc). Tooling tutorials, developer walkthroughs, and CLI references were kept out of the guidelines and remain in our project documentation, following the pattern used in the Go guidelines. * FPC Coordination: Attended the September 3rd FPC meeting to align on package naming conventions and bootstrap workflows. # 2. Package Naming Standards **Compiler SRPM (crystal-lang): Standardized on `crystal-lang` for the compiler source RPM and dist-git repo (producing the native `crystal` binary package via `%package -n crystal`). This avoids unretiring the dead 15-year-old KDE package at `rpms/crystal`, provides a clean Git history, and enables automated SIG co-maintainership via `crystal-*` patterns. * Unconditional Shard SRPM Naming: Adopted the Fedora Rust subpackaging model. All library source RPMs are unconditionally prefixed with `crystal-<shard>` (no deduplication) to prevent collisions between distinct upstreams (e.g. `sqlite3` vs `crystal-sqlite3`). * Application Subpackages: Shards providing CLI binaries emit unprefixed binary packages (e.g. `%package -n ameba`), so users install clean names via `dnf install ameba`. * Compatibility Packages: Formatted as `crystal-<name><version>` preserving dots (e.g. `crystal-kemal1.12`), adhering strictly to Fedora naming guidelines. # 3. Parallel Coexistence & Offline Resolution * Versioned Install Paths: Pure shard libraries install uncompiled source into `%{_datadir}/crystal/shards/<name>-<version>`, allowing multiple versions of a shard to coexist on disk without RPM file conflicts. * Primary vs. Compat Symlinks (LLVM Model): Primary packages drop an unversioned symlink (`%{crystal_shards_dir}/kemal -> kemal-1.13.0`) for quick standalone scripts (`require "kemal"`). Compat packages omit unversioned symlinks (`%crystal_install_lib -c`) to prevent DNF transaction collisions. * Non-Destructive Offline Resolution: Upstream shards is git-first and lacks an offline cache. Running `shards install` with `path:` overrides dirties `shard.lock` with local paths. Our `%crystal_setup` macro and `shards-link` CLI resolve dependencies from `%{crystal_shards_dir}` into `./lib` during `%prep` without touching or mutating `shard.lock`. # 4. Verification & Ecosystem Testing * Mock Chain Builds: Packaged and built 12 packages (compiler, macros, tools, libraries, web frameworks) cleanly in Mock on `fedora-rawhide-x86_64` (42 RPMs in total). * Integration Testing: Validated offline compilation, binary execution with Fedora hardening flags, and live service benchmarks in isolated rootless Podman containers. * Upstream Coordination: Engaged upstream on the Crystal Forum regarding shard discovery and offline caching: https://forum.crystal-lang.org/t/crystal-packaging-in-fedora/8690 Links: * FPC Guidelines PR: https://forge.fedoraproject.org/packaging/guidelines/pulls/1568 * Crystal SIG Repositories: https://codeberg.org/fedora-crystal/ * FPC Meeting Minutes (Sep 3): https://meetbot.fedoraproject.org/meeting-1_matrix_fedoraproject-org/2026-09-03/fpc.2026-09-03-16.00.html Best regards, Rénich -- _______________________________________________ devel mailing list -- [email protected] To unsubscribe send an email to [email protected] Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/[email protected] Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new
