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