website: Add Outreachy wrap-up draft.

* website/drafts/outreachy-guix-git-log.md: New file.
This commit is contained in:
zimoun 2021-04-08 11:15:10 +02:00 committed by Ludovic Courtès
parent c2272d28b7
commit 02fe28da6e
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,99 @@
title: Outreachy 'guix git log' internship wrap-up
date: 2021-04-10 12:00:00
author: Magali Lemes, Simon Tournier
tags: Outreachy
---
After three months of working on the implementation of the `guix git log`
subcommand, as part of the [Outreachy](https://www.outreachy.org/) December
cohort, here's a wrap-up of what's been accomplished so far.
#### Magali says
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](https://gitlab.com/magalilemes/guix), so that I could push all the work
I had done there, tweaked a little bit of the source code, and then proceeded to
have the `guix git log` subcommand show the default channel checkout path.
From there on, I started adding options to the subcommand. The `oneline`
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 `format`, `pretty`, and `grep` came
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](https://gitlab.com/guile-git/guile-git/-/issues/21), and I was able to
[overcome
it](https://lists.gnu.org/archive/html/guix-devel/2020-12/msg00226.html).
I also got to participate in the one-day [Guix
workshop](https://guix.gnu.org/en/blog/2021/meet-guix-at-fosdem-2021/)---a
[FOSDEM 2021](https://fosdem.org/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](https://guix.gnu.org/en/blog/2020/add-a-subcommand-showing-gnu-guix-history-of-all-packages/)
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](https://www.gnu.org/software/guile/).
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.
#### Simon says
It was my first experience mentoring for the Outreachy program and now I am
glad to have done it. I have learnt a lot on various topics. I have already
mentored time to time interns, though it was the first time full remote, not
on the same timezone, and using code I am not expert. Thanks to Gábor,
Ludovic and Ricardo to push me to jump in this journey.
Reading back the [initial
proposal](https://lists.gnu.org/archive/html/guix-devel/2020-09/msg00108.html)
coming from a 2019
[question](https://lists.gnu.org/archive/html/help-guix/2019-06/msg00098.html),
I am happy by the insofar Magali's internship. It opens the road for
[future](https://lists.gnu.org/archive/html/guix-devel/2020-12/msg00141.html)
[proposals](https://lists.gnu.org/archive/html/guix-devel/2020-12/msg00170.html)
or the implementation of other `guix git` subcommands.
#### About GNU Guix
[GNU Guix](https://guix.gnu.org) is a transactional package
manager and an advanced distribution of the GNU system that [respects
user
freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.html).
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](https://www.gnu.org/software/guile)
programming interfaces and extensions to the
[Scheme](http://schemers.org) language.