GSoC 2021 Report #1 - Coding I
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi, everybody!
For those who don't know me, my name is Leandro Doctors (allentiak on
IRC), and I'm the Debian Clojure Team's GSoC 2021 intern. My mentor is
Louis-Philippe Véronneau[*] (pollo on IRC). My co-mentor is Utkarsh
Gupta (utkarsh2102 on IRC). My 'no-mentor' :) is Elana Hashman
(ehashman on IRC).
In this message, I will summarize what I've been up to during the
Coding I period (June 7th - July 16th).
***************************************************************************************************
TL;DR: my updated `data-xml-clojure` package was accepted[1] in
experimental on Wednesday night :-)
***************************************************************************************************
[1] https://tracker.debian.org/news/1244465/accepted-data-xml-clojure-020alpha6-1-source-into-experimental/
Now, let's tell the full story.
During the first days of the "Coding I" phase, I did some research on
the `clj` dependencies. And after the precious feedback from
Louis-Philippe, Elana, Utkarsh, and Alex Miller (the upstream
developer of `clj`, among many other libraries), I came up with the
following packaging strategy.
1) update `org.clojure:data.xml` (`data-xml-clojure`) to 0.2.0-beta6.
2) package `org.clojure:tools.gitlibs` (`tools-gitlibs-clojure`).
3) consider updating `libjsch-agent-proxy-java`, `jgit`,
`libtools-cli-clojure` (all of them already in Debian).
4) consider packaging `com.cognitec.aws:*` packages.
According to my original proposal, I should have completed all four
tasks during Coding I.
Looking back, the main lesson from these past weeks is a known
classic: my timeline was too optimistic: I definitely underestimated
the difficulty of the packaging process. Out of the four tasks, I only
finished the first one.
There were many challenges I had to overcome in order to update the
library from version 0.0.8 to 0.2.0-alpha6:
This what I did:
First, I patched the source code so:
- - we avoid needlessly packaging `data-codec-clojure` (not currently
in Debian).
- - we can ignore Clojure-Script-related dependencies.
Then, I completely overhauled the packaging code (this is, what goes
inside `debian/`).
- - added support for automatically tracking newer releases.
- - the package now builds with Leiningen, instead of plain Java.
- - it now actually supports autopkgtest (the existing test was trivial).
All this improved the quality of the package.
I also improved the Clojure Packaging Tutorial[2] to make the process
easier to follow.
[2] https://wiki.debian.org/Clojure/PackagingTutorial
Looking back, it is almost as if I had started packaging the library
from scratch...
But, more that what I produced, I think the most important part of all
this is what I learned during these weeks.
As it was the first time I ever packaged anything in Debian, I had to
learn the basics, bump by bump. (And, oh my, I surely did bump quite a
few times!)
- - Basic packaging workflow.
- - Setup `sbuild`[3] to make it work with `gbp`[4] (when I had
rebuilt bidi-clojure from scratch, I had used plain `sbuild`.)
- - Learn how to patch upstream files with `quilt`[5] (actually, via
the `dquilt` frontend). This was the first really difficult task to
do, since it took me quite some time to grasp it. Looking back, I
think I was simply scared of breaking something :)
- - Understanding `debian/` files.
- - Understanding `debian/tests` (autopkgtest) files. This was
particularly difficult, since the doc wasn't clear about it. So I then
improved the Clojure Packaging Tutorial[2] to make the process easier
to follow.
[2] https://wiki.debian.org/Clojure/PackagingTutorial
[3] https://wiki.debian.org/sbuild
[4] https://manpages.debian.org/unstable/git-buildpackage/gbp.1.en.html
[5] https://wiki.debian.org/UsingQuilt
Definitely, all this was worth it. After all, my updated
`data-xml-clojure` package was accepted[1] in experimental on
Wednesday :-)
[1] https://tracker.debian.org/news/1244465/accepted-data-xml-clojure-020alpha6-1-source-into-experimental/
Now that I've ~~learned the basics of packaging~~ bumped enough to get
my package accepted, I'm hopeful I can ramp up and catch up with (at
least most of) my original schedule during Coding II.
`tools-gitlibs-clojure`, you're next :-)
Thank you very much Louis-Philippe, Elana, Utkarsh, and Alex for your
precious support during the last few weeks!
Best,
Leandro
[*] As far as Google is concerned, my official GSoC mentor is Utkarsh,
not Louis-Philippe. But that's for administrative reasons.
-----BEGIN PGP SIGNATURE-----
Version: Mailvelope v4.4.1
Comment: https://www.mailvelope.com
wsFcBAEBCAAGBQJg9g8QAAoJED4EAsO6whyAQ/8P/0CscF0EcY2AtJ5cpP0d
UgGE5FV++t/a2CgbWErFVkyuO0kE4qxG1rxU+YfmJsj9+gvGjy6D9FFqon4x
rCQdPsEQs9FG80mhJLfeDSlGNKmekxh1fd5QB6wXYGgQThe85JdCSk0e/42y
Lbk5n3Ytkd65g25XAeCmhqKf8WpedS/rE8sxaBLOj02jQtCTN8ojk48eOCCb
Tlda9dOUD7Q/jmcfCi2DYCfh6Pk40lv9gBozMPry2G1SqBRJpSic2UoWb7U+
ZNQ/XkpxrtvwCW6KlmhqI7fzJgS3zg8ZpOzpB1INt0HC858jfnRsF5rFt5uw
roNHFzuiBirb5QSMlFCMtX9zz5zXGWVrZn5y4P37TMeMkr6XwV+RSAx1Ro+f
9fDilYfTXQy86rPu2F1Z6yIUlpJo9LQ1NyH0ZAlYxqRSAzRIyYUn+RFALryW
XeBOI+naLom2da0oW8TzkAdXxVezL3J96joqjE/XAF0QR/cPpbOeHsCSXmLm
pAHvxiI9GYFb0/R6PjBps99mu7kstBczL87bgXhhhbAvPbWQX9I67CuiKBcJ
UdCEAnnCQtcyoi6sHq4J/61Lae4srkEqRZc/qK6TrwbnCYabWFyBkkYyFIMX
PORcXgIjn2kjvPhQMV7cml3EPT2HXJe3HOpHUTl9/HB2+lMg8HAQG1tnyYt3
5b4Q
=fkRN
-----END PGP SIGNATURE-----
Reply to: