Outreachy 'guix git log' internship wrap-up
Magali Lemes joined Guix in
for a three-month internship with
Outreachy. Magali implemented a
guix git log command to browse the history of packaging changes, with mentoring
from Simon Tournier and Gábor Boskovits. In this blog post, Magali and
Simon wrap up on what's been accomplished.
The first tasks I had to do were pretty simple and were mainly meant to both get
me acquainted with the source code and set the building blocks of the
project. They were very important so that I could gradually build the
subcommand. For starters, I created a Guix repository on
Gitlab, so that I could push all the work
I had done there, tweaked a little bit of the source code, and then proceeded to
guix git log subcommand show the default channel checkout path.
From there on, I started adding options to the subcommand. The
option was the first and simplest option, and it pretty much emulates what
git log --oneline does: it displays the commit short hash id and
title. Afterwards, other options such as
along. The possibility of retrieving commits from other channels---and not
only from the default one---was also implemented. An example of invoking the
subcommand would be:
guix git log --oneline --grep=guile-git
The road to doing all of this wasn't always smooth. Right at the beginning of the internship, for instance, I struggled with getting a segmentation fault error. It was a known bug, and I was able to overcome it.
I also got to participate in the one-day Guix workshop---a FOSDEM 2021 fringe event---and presented the work I had done so far. It was quite nice demonstrating the subcommand, receiving feedback and questions, and I could also get to know other things that were being worked on in Guix.
In the post I wrote three months ago, I mention that I wish I could gain meaningful experience and improve my communication skills. I'm glad to say that I feel like I was able to achieve that. Sending emails, explaining what I had done, and asking questions about what I had to do during the weekly meetings were a few of the situations I had to face, and that made me improve these skills. I also had a taste of what it's like to take part in a free software project, got to know a few people, and learned quite a lot about Guile Scheme.
One thing, though, that I wasn't able to implement in due time was the commit
limiting options, such as
guix git log --after=YYYY-MM-DD and
guix git log --before=YYYY-MM-DD.
Hopefully, soon users will be able to invoke
guix git log, and have the
commit history from all Guix channels they have.
It was my first experience mentoring for the Outreachy program and now I am glad I did it. I have learnt a lot on various topics. I had already mentored interns occasionally, though it was the first time fully remote, not on the same timezone, and with code on which I am not expert. Thanks Gábor, Ludovic and Ricardo for pushing me to jump in this journey.
Reading back the initial
coming from a 2019
I am happy by the insofar Magali's internship. It paves the way for
or the implementation of other
guix git subcommands.
Next Outreachy round & acknowledgment
Guix is participating in the upcoming Outreachy round. If you are eligible, please get in touch with us and consider applying by April 30th!
In light of recent changes at the Free Software Foundation (FSF) and Outreachy’s subsequent decision to refuse funds coming from the FSF, we are grateful to Software Freedom Conservancy (SFC) for their decision to sponsor our upcoming internship. We are working on a longer-term solution so we can keep participating in Outreachy. In the meantime, thanks a lot, Conservancy!
About GNU Guix
GNU Guix is a transactional package manager and an advanced distribution of the GNU system that respects user freedom. Guix can be used on top of any system running the kernel Linux, or it can be used as a standalone operating system distribution for i686, x86_64, ARMv7, and AArch64 machines.
In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. When used as a standalone GNU/Linux distribution, Guix offers a declarative, stateless approach to operating system configuration management. Guix is highly customizable and hackable through Guile programming interfaces and extensions to the Scheme language.