Skip to content

Commit da2531b

Browse files
committed
rn-127: include interview with Toon Claes
1 parent b023148 commit da2531b

File tree

1 file changed

+131
-3
lines changed

1 file changed

+131
-3
lines changed

rev_news/drafts/edition-127.md

Lines changed: 131 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,137 @@ This edition covers what happened during the months of August and September 2025
2929
### Support
3030
-->
3131

32-
<!---
33-
## Developer Spotlight:
34-
-->
32+
## Developer Spotlight: Toon Claes
33+
34+
* Who are you and what do you do?
35+
36+
I'm Toon from Belgium. My name is pronounced like "tone" (rhymes with
37+
"bone"), and not like the "toon" in "cartoon", but usually I'm already
38+
happy if people remember my name 😉
39+
40+
I'm employed by GitLab for more than 8 years, and since late 2024 I've
41+
been part of the Git team, contributing to the Git project. I've started
42+
my professional career in 2008 building software for a payment terminal
43+
running embedded GNU/Linux using C & C++. Later I've transitioned into
44+
doing web and mobile development for a while. And now recently, I've
45+
been circling back to more lower-level programming, contributing to Git
46+
using C.
47+
48+
* What would you name your most important contribution to Git?
49+
50+
I'm fairly new in the Git community, but recently I've been working on
51+
adding [`git last-modified`](https://git.github.io/htmldocs/git-last-modified.html).
52+
It's a sub-command that will be released in Git v2.52. This command
53+
finds the commit that last modified each path in a tree. This can
54+
be used on forges (like GitLab, GitHub, Codeberg), to show commit
55+
data in a tree view.
56+
57+
* What are you doing on the Git project these days, and why?
58+
59+
The subcommand [`git last-modified`(1)](https://git.github.io/htmldocs/git-last-modified.html)
60+
was recently merged in the 'master'. But there's more work to be
61+
done to improve it's performance.
62+
63+
* If you could get a team of expert developers to work full time on
64+
something in Git for a full year, what would it be?
65+
66+
Once data is committed to Git, and it's made part of the history (i.e.
67+
committed or merged into the default branch), it's trapped forever. This
68+
is a core principle of Git: you cannot rewrite history without changing
69+
commit hashes. This is very powerful, but also problematic in some
70+
scenarios.
71+
72+
For example, at my $DAYJOB we receive commonly the request from
73+
customers to remove confidential or sensitive information from a Git
74+
repository. This is not possible without rewriting history. Or when, by
75+
accident, large files are committed to Git, you cannot get them out
76+
(without rewriting history). Or people might want to remove/change
77+
their personal information in a repository, for example when they
78+
transition genders.
79+
80+
Can we (and should we?) build something that removes and overwrites
81+
pieces of history, without changing commit hashes? It's a slippery
82+
slope, because from experience I know Git users are very creative and
83+
might use this feature in ways that were not intended for.
84+
85+
* If you could remove something from Git without worrying about
86+
backwards compatibility, what would it be?
87+
88+
The use of the double `..` and triple `...` dot notation in
89+
[`gitrevisions(7)`](https://git-scm.com/docs/gitrevisions#_dotted_range_notations)
90+
and `git diff(1)`. I even once ranted about it in [a video](https://www.youtube.com/watch?v=phThP8DwJVs).
91+
92+
* What is your favorite Git-related tool/library, outside of
93+
Git itself?
94+
95+
I'm a big fan of [Magit][1]. It's arguably the best tool to interact
96+
with Git and I also learned a lot from it. I consider myself an
97+
advanced Git user, but I wouldn't be able to split up changes in
98+
several commits without [Magit][1].
99+
100+
[1]: https://magit.vc/
101+
102+
* Do you happen to have any memorable experience w.r.t. contributing
103+
to the Git project? If yes, could you share it with us?
104+
105+
One of my earliest contributions to Git was a bug fix in the code used
106+
by `git bundle create`. We noticed sometimes references didn't end up in
107+
the bundle. After a lot of digging I submitted a patch that removed
108+
about 30 lines of code written way back in 2007. The code from 2007,
109+
caused references to be skipped if they were modified while the
110+
`git bundle create` process is running. But it wasn't needed anymore
111+
due some changes made in 2013, although no one ever realized that.
112+
You can read more about it [in the patch][2].
113+
114+
It was really satisfying to submit a patch that was nothing more than
115+
code deletion of really old code (and adding some tests). And it taught
116+
me to write a good commit message, which I was praised for by
117+
[the maintainer][3]. It was a very nice experience as a newcomer in the
118+
community.
119+
120+
[2]: https://lore.kernel.org/git/[email protected]/
121+
[3]: https://lore.kernel.org/git/[email protected]/
122+
123+
* What is your toolbox for interacting with the mailing list and for
124+
development of Git?
125+
126+
I mostly live in Emacs and my terminal (zsh). I consume email in Emacs
127+
using [notmuch][4]. To submit patches I use [b4][5], which I also
128+
sometimes use to pull in patches. But I also sometimes pull in
129+
the branches from [Junio's fork][6] or the fork shared across
130+
my colleagues.
131+
132+
In Git, I compile and unit test changes using Meson. It's use was
133+
introduced in the Git project around the [end of 2024][7]. It's
134+
reliable, because it prevents me from forgetting to recompile
135+
before running tests; it's fast, because it parallelizes compilation
136+
by default and automatically [uses Ccache][8]; it allows out-of-tree
137+
builds, which is really convenient if you want to benchmark various
138+
revisions of Git.
139+
140+
[4]: https://notmuchmail.org/doc/latest/notmuch-emacs.html
141+
[5]: https://github.com/mricon/b4
142+
[6]: https://github.com/gitster/git
143+
[7]: https://lore.kernel.org/git/[email protected]/
144+
[8]: https://mesonbuild.com/Feature-autodetection.html#ccache
145+
146+
* What is your advice for people who want to start Git development?
147+
Where and how should they start?
148+
149+
Learn to navigate [the mailing list archive][9]. It lacks structure so
150+
things can be hard to find, but there's so much information up there. If
151+
you're interested in a topic, or you think you find the bug, start digging.
152+
Use [`git blame(1)`][10] to find the commit that introduced the changes
153+
and look up the conversation around it in the mailing list archive.
154+
This will help you understand why some decisions are made. Also it
155+
familiarizes you with the people in the community, how they think,
156+
how they communicate, and what's expected from you. Having the
157+
knowledge from those conversations can help you build a strong case
158+
whenever you're submitting a feature change or bug fix.
159+
160+
[9]: https://lore.kernel.org/git
161+
[10]: https://git-scm.com/docs/git-blame
162+
35163

36164
## Other News
37165

0 commit comments

Comments
 (0)