Hi debian-devel, I'd like to share a quick recap of my work during GSoC 2025 with Debian, where I focused on enhancing Salsa CI. My work began on May 8 and officially concluded on September 1. From May to mid-July I worked about 28 hours per week, and from mid-July until September 1 I treated it as a full-time commitment (~40 hours/week). In total, I spent about 530 hours on the project. Overall, it was a very productive experience and I'm happy with the results.
Contributions Salsa CI improvements =================== Build reverse dependencies job A major addition is a new job that automatically rebuilds all reverse build dependencies of a package, powered by ratt. * Issue: https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/178 * MR: https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/613 * Docs: https://salsa.debian.org/salsa-ci-team/pipeline#build-reverse-dependencies This lets maintainers catch regressions earlier in CI and make transitions smoother, since maintainers can proactively rebuild reverse build dependencies and check for failures. The job is now fully functional, available in Salsa CI, and can be enabled on demand. To make this job possible, I also improved ratt ("Rebuild All The Things") in multiple areas so it could become CI-friendly and gain new features. There's a dedicated section below detailing those contributions. This merge request was reviewed in person during DebConf25 by Bastien Roucariès, who suggested useful features for the job. Further feedback from Santiago Ruano Rincón and Otto Kekäläinen also helped shape the final result. Big thanks to all of them for support and collaboration! Autopkgtest on more architectures Added support for optional autopkgtests on i386, arm64, armel, and armhf * Docs: * https://salsa.debian.org/salsa-ci-team/pipeline#enable-autopkgtest-on-i386 * https://salsa.debian.org/salsa-ci-team/pipeline#enable-autopkgtest-on-arm [1] Licenserecon job Added a job that checks for mismatches between debian/copyright and upstream. * Docs: https://salsa.debian.org/salsa-ci-team/pipeline#enable-licenserecon-job Debdiff job Compares Salsa repo source with archive version and generates a debdiff. * Issue: https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/397 * MR: https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/605 _(final details pending)_ Faketime job Introduced two opt-in jobs that inject libfaketime during builds and tests, helping identify Year 2038 issues. * Issue: https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/411 * MR: https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/599 _(final details pending)_ Document how to run Salsa CI locally gitlab-ci-local I'm also currently looking into the possibility of running Salsa CI pipelines locally with gitlab-runner exec. At the moment I'm waiting for some upstream bugs to be fixed before moving forward. Once those bugs are fixed, I'll document the steps to run the pipeline locally. * Issue: https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/169 * Upstream pending bug: https://github.com/firecow/gitlab-ci-local/issues/1473 Ratt (rebuild-all-the-things) ====================== As mentioned above, the new reverse build dependencies job in Salsa CI is powered by ratt. While working on this integration, I found several limitations that made ratt less practical for CI use. To address this, I contributed a series of improvements that expanded its functionality and made it more reliable. These enhancements not only support the new job in Salsa CI but also make ratt a more useful tool for Debian contributors in general. * Use apt-helper cat-file to handle compressed APT index files * https://github.com/Debian/ratt/pull/25 [2] * Add -chdist option and refactor APT index retrieval logic * https://github.com/Debian/ratt/pull/27 [3] * Filter out reverse dependencies tagged as FTBFS by udd.d.o * https://github.com/Debian/ratt/pull/29 * Add manpage and option to limit reverse dependency depth * https://github.com/Debian/ratt/pull/30 * Add JSON output support for dry-run mode * https://github.com/Debian/ratt/pull/31 * Add -sbuild-keep-build-log option * https://github.com/Debian/ratt/pull/32 * Add support for experimental, stable, and oldstable * https://github.com/Debian/ratt/pull/33 * Add reverse_dep_count to JSON output and fix typo * https://github.com/Debian/ratt/pull/35 I also closed two BTS bugs in ratt: * https://bugs.debian.org/1065733 [4] * https://bugs.debian.org/1040187 [5] Seeing ratt evolve over the summer from a CLI-only helper to a CI-friendly tool was one of the most rewarding parts of my work. Many thanks to Michael Stapelberg for thoroughly reviewing everything along the way. Reviews ======== I also reviewed MRs from others. For instance, I helped review Santiago Ruano Rincón's _Switch to sbuild (and unshare) _merge request, which has since been merged and improved our build infrastructure. * Switch to sbuild (and unshare) [6] Other reviews I contributed to include: * Disable arch-specific autopkgtest if corresponding builds are disabled [7] * ubuntu: disable the autopkgtest i386 job [8] * Support piuparts and blhc arguments containing spaces or quotes [9] * Revert "Workaround reprotest bug #1108550 by disabling some variations" [10] * missing-breaks: Use SALSA_CI_EXTRA_REPOSITORY [11] Packaging contributions ==================== Alongside CI work, I contributed to Debian packaging: - openvr: Fixed #1067724 [12], library transition. Upload: https://tracker.debian.org/news/1660410/accepted-openvr-2121ds1-1exp1-source-amd64-into-experimental/ [13] Thanks to Dylan Aïssi for the sponsor and Sergio Durigan Junior for the review. - ratt: Uploaded new upstream version to experimental, then unstable. Co-maintaining with Otto Kekäläinen. Upload: https://tracker.debian.org/news/1650881/accepted-ratt-00git20250702ac6eb62-1-source-into-experimental/ [14] Upload: https://tracker.debian.org/news/1654081/accepted-ratt-00git20250812e11cf12-1-source-into-unstable/ - curl: Fixed copyright inconsistencies. Upload: https://tracker.debian.org/news/1660098/accepted-curl-8160rc2-1-source-into-unstable/ [15] Thanks to Samuel Henrique. - waymore: Packaged _6.1-1~exp1_ with improvements. Upload: https://tracker.debian.org/news/1652226/accepted-waymore-61-1exp1-source-into-experimental/ Thanks to Samuel Henrique. Running these packages through Salsa CI gave me the maintainer's perspective, confirming that the new CI jobs solve real daily packaging issues. Team participation =============== Throughout the summer I engaged actively with the community: * Weekly mentor calls with Otto for steady guidance * Discussions on Salsa CI Matrix chat and mailing list * Attended DebConf25 in Brest, meeting my mentor and Salsa CI team in person * Weekly Debian Brasil calls, always really helpful for debugging and sharing insights This mix of async chats, weekly syncs, local calls, and in-person exchanges made the project much richer and helped me feel integrated into Debian. Reflections ========= Looking back at this cycle of work, what stands out most are not only the technical results but also the lessons learned along the way. In the Debian ecosystem, progress does not come from isolated effort, it comes from communication, reviews, and compromise. Learning to navigate different perspectives, accept feedback, and refine ideas based on community input has been as important as writing the code itself. I realized that even small changes, when multiplied across Debian, make a big difference. Improvements in Salsa CI or packaging may look minor alone, but together they strengthen workflows and help maintainers, a reminder of the value of collaboration and steady progress, and something I'll carry forward. Next steps ========= Even though GSoC 2025 has ended, my work continues. I plan to: * Keep contributing to Debian packaging and CI * Create a new job to run autopkgtests of reverse dependencies, extending coverage beyond build-time checks Acknowledgments =============== I'm very grateful to my mentor Otto Kekäläinen for his steady guidance, and to Santiago Ruano Rincón for valuable reviews. Thanks also to the Salsa CI team for feedback, and to Aayush Raj for collaboration this summer. Finally, special thanks to Debian and Google for making this program possible. This summer was just the beginning. I'll keep hacking on Salsa CI so Debian contributors get stronger quality checks, users receive well tested packages, and downstream distributions benefit from these improvements. Best regards, Aquila For those interested in a bit more detail, I also wrote a blog post about my final report: https://aquilamacedo.xyz/gsoc/debian/salsa-ci/2025/08/31/gsoc-report-final/ Blog: https://aquilamacedo.xyz Salsa: https://salsa.debian.org/aquilamacedo Salsa MRs submitted (150): https://salsa.debian.org/dashboard/merge_requests?scope=all&state=all&author_username=aquilamacedo [16] Salsa MRs Approved-by (10): https://salsa.debian.org/dashboard/merge_requests?scope=all&state=all&approved_by_usernames[]=aquilamacedo [17] GitHub: https://github.com/aquilamacedo Links: ------ [1] https://salsa.debian.org/salsa-ci-team/pipeline#enable-autopkgtest-on-arm [2] https://github.com/Debian/ratt/pull/25 [3] https://github.com/Debian/ratt/pull/27 [4] https://bugs.debian.org/1065733 [5] https://bugs.debian.org/1040187 [6] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/569/ [7] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/643 [8] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/640 [9] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/636 [10] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/625 [11] https://salsa.debian.org/salsa-ci-team/pipeline/-/merge_requests/618 [12] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1067724 [13] https://tracker.debian.org/news/1660410/accepted-openvr-2121ds1-1exp1-source-amd64-into-experimental/ [14] https://tracker.debian.org/news/1650881/accepted-ratt-00git20250702ac6eb62-1-source-into-experimental/ [15] https://tracker.debian.org/news/1660098/accepted-curl-8160rc2-1-source-into-unstable/ [16] https://salsa.debian.org/dashboard/merge_requests?scope=all&state=all&author_username=aquilamacedo [17] https://salsa.debian.org/dashboard/merge_requests?scope=all&state=all&approved_by_usernames[]=aquilamacedo