This summer I had the opportunity to participate in Google Summer of Code 2025 with Debian, working on a medium sized project to enhance Salsa CI. My work started on May 8 and the program officially concludes on September 1. It really doesn’t feel like 16 weeks have passed, but in this period I have learned a lot and grown as a developer.
During this time I also attended DebConf25 in Brest, France, where I met my mentor Otto Kekäläinen in person, along with members of the Salsa CI team. Some people I already knew, and it’s always nice to have those conversations face-to-face.
Salsa CI, is Debian’s continuous integration system, running pipelines on salsa.debian.org to automatically build, test, and check packages. Its goal is to help maintainers catch issues earlier, ensure policy compliance, and improve package quality before uploads reach the Debian archive.
This post summarizes the main contributions I made during GSoC.
Ratt (Rebuild All The Things) improvements
One of my main GSoC goals was to implement a job in Salsa CI to automatically rebuild reverse build-dependencies. For that, I relied on ratt, the tool that takes a freshly built package and rebuilds everything depending on it.
While working on this integration, I noticed several limitations/bugs in ratt that made it harder to use in CI pipelines. To address this, I contributed a series of improvements that expanded its functionality and made it more reliable for Debian contributors. These enhancements will also be directly useful for Salsa CI, since they power the new reverse build-dependencies job.
For a detailed look at these changes, I wrote a specific blogpost focused on ratt improvements, with examples and commit links, which you can find here.
Salsa CI improvements
Reverse build-dependencies job
One of the most important additions is a new job that can automatically rebuild
all reverse build-dependencies of a package. This feature is powered by ratt
,
with the improvements I introduced earlier in the project.
- Issue: rebuild-all-reverse-dependencies job
- Merge Request: Add reverse dependency build job using ratt (!613)
This job allows maintainers to:
-
Catch regressions earlier in Salsa CI, before uploading to the archive.
-
Make transitions smoother, since maintainers can proactively rebuild reverse dependencies and check for failures.
The job is already functional, but the MR remains open while we discuss the safest way to enable it. Since it can spawn a child pipeline with potentially hundreds of builds, we need to carefully balance its usefulness with the risk of overloading Salsa’s infrastructure.
Autopkgtest on more architectures
Extended autopkgtest coverage in Salsa CI to i386
, arm64
, armel
, and
armhf
, improving package testing across multiple architectures.
Licenserecon job
Added a job that runs
licenserecon, checking for
mismatches between debian/copyright
and upstream source licenses.
Debdiff job
The debdiff job automatically compares the package source in the Salsa repository with the version in the Debian archive, generating a debdiff to highlight changes between them.
-
Issue: Add a debdiff job
-
Merge Request: Add debdiff test job to compare with archive source package (waiting for review)
Faketime job
Introduces two opt-in jobs that inject libfaketime during builds and autopkgtests, helping check if packages are future-proof (e.g. against the Year 2038 problem).
- Issue: Add optional faketime jobs to run build and autopkgtest on arbitrary future date
- Merge Request: Add debdiff test job to compare with archive source package (close to being merged, I’m finalizing the last details)
Bugfixes
Description | Issue | Merge Request |
---|---|---|
Temporarily disable reprotest until #1108550 is fixed | #455 | !619 |
Fix use of deb-check-file-conflicts on unstable/experimental/trixie/questing | #445 | !609 |
Fix apt-get usage in wrap-and-sort job |
#454 | !620 |
Add needs for arch-specific autopkgtest jobs and fix disable rules | #476 | !642 |
Packaging contributions
Besides Salsa CI improvements, I also contributed to Debian packaging during the GSoC period. These uploads not only fixed issues but also gave me the perspective of a maintainer running Salsa CI pipelines in practice.
Package openvr
Closed bug #1067724. Required a small transition (easy since the package has no reverse-dependencies). OpenVR is a virtual reality API by Valve, used by the package gamescope, which had dropped the build-dependency due to incompatibility with the old version. With this update, gamescope will include the build-dependency again in its next release. Thanks to Dylan Aïssi(@daissi) for handling the upload for me.
Package ratt
Uploaded the new upstream version first to experimental, then to unstable. I am now co-maintaining the package together with Otto Kekäläinen, and I would like to thank him for reviewing and handling the uploads for me.
Package curl
Corrected inconsistencies in debian/copyright
. Thanks to Samuel Henrique
for handling this upload.
Package waymore
New upstream version + improvements, uploaded 6.1-1~exp1
to experimental.
Thanks to Samuel Henrique for handling this upload.
By working on these packages and running their Salsa CI pipelines myself, I experienced the workflow from a maintainer’s point of view. This gave me valuable insight into the practical needs of maintainers and confirmed that the CI improvements were solving real problems in day-to-day packaging work.
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
Although GSoC 2025 is ending, my contributions won’t stop here. I plan to:
- Keep contributing to Salsa CI and Debian packaging.
- Work on adding reverse dependency support for autopkgtest, extending coverage beyond build-time testing.
As Seneca once said:
“Every new beginning comes from some other beginning’s end.”
Acknowledgments
I’m really grateful to my mentor Otto Kekäläinen, whose weekly meetings, guidance, and insights were essential throughout the project. Thanks also to Santiago Ruano Rincón for his reviews and insights, as well as to the Salsa CI team and Debian developers for their feedback. I would also like to thank my fellow GSoC participant Aayush Raj, who was also working on Salsa CI for Debian this summer, for the collaboration and exchange of ideas.
Finally, special thanks to Debian and Google for making this program possible.