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

Reply via email to