Skip to content

Commit 1a3e457

Browse files
committed
rn-109: add interview with Linus Arver
1 parent 07eaac7 commit 1a3e457

File tree

1 file changed

+219
-3
lines changed

1 file changed

+219
-3
lines changed

rev_news/drafts/edition-109.md

Lines changed: 219 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,225 @@ This edition covers what happened during the months of February 2024 and March 2
2929
### Support
3030
-->
3131

32-
<!---
33-
## Developer Spotlight:
34-
-->
32+
## Developer Spotlight: Linus Arver
33+
34+
* Who are you and what do you do?
35+
36+
I'm one of those so-called "self-taught" developers. My educational
37+
background is in English and tax law (I know, boring right?). Over a
38+
decade ago I thought I would be a corporate attorney, but in law
39+
school I discovered programming and fell completely in love with the
40+
craft, and never looked back! In hindsight it was the second-best
41+
decision I've made in life (the first being getting married to my
42+
lovely wife four years ago).
43+
44+
I said that I fell into programming during law school. But actually my
45+
original journey started in 7th grade when I tried to pick up C++. I
46+
remember learning control flow, structs and pointers in the first few
47+
chapters of the book I was using, but when it came to the chapter on
48+
OOP and classes, I could not understand why OOP was necessary.
49+
The book I was using just explained why OOP was great, and not
50+
why it would ever be bad.
51+
52+
Of course, years later I realized that OOP is one of several
53+
paradigms, so perhaps my instinct to question OOP as a panacea was
54+
onto something. In high school and university I remember tinkering
55+
with HTML and websites before smartphones became popular. What a
56+
simpler time it was, back then!
57+
58+
Fast forward to law school, where I had the idea of writing class
59+
notes using plaintext. Soon after I had the idea of converting these
60+
plaintext notes to prettified outlines, so I needed a way to convert
61+
them to HTML. For better or worse, all this happened before I
62+
discovered Emacs and Orgmode (or even Markdown).
63+
64+
Anyway I first wrote a plaintext-to-HTML converter in Ruby. Then I
65+
rewrote it in C just for fun. Then again in Haskell (using a minimal
66+
subset of Orgmode syntax). As you can see I sort of got carried away,
67+
haha.
68+
69+
I would go on to write dozens of pet projects (rudimentary chess
70+
engine, game modding tools, etc) where I got to write tons of code.
71+
I've had the "ugh, did I really write this?" moment too many times to
72+
count. I like to believe that I did the tech industry a favor by not
73+
entering it until I was well versed in fundamental programming and
74+
architectural concepts. 😉
75+
76+
Since those law school days I've taken an interest in learning more
77+
languages/ecosystems (e.g., Elixir and Rust). Recently, I've taken a
78+
renewed interest in Literate Programming. I'm toying with the idea of
79+
using it in a somewhat large scale in a future project. It takes a ton
80+
of work to do LP right, but in many ways it's the best possible way to
81+
document code (case in point, the absolutely stellar documentation
82+
standards of the TeX community, such as the glorious TikZ user
83+
manual).
84+
85+
And I believe that readability is the most important attribute when it
86+
comes to code --- even before correctness! Because at least if the
87+
intent of the author is clear, we can have a fairly (easy) way to fix
88+
things to make it correct. The other way around (correct, but
89+
unreadable code) suffers from stagnation because people become afraid
90+
of touching it, because it's hard to understand. It becomes harder to
91+
extend and grow, which is required of any software worth maintaining
92+
(we call it _soft_ ware for a reason).
93+
94+
Going back to the question (sorry for rambling a bit there), in my
95+
$DAYJOB I work on microservices, APIs, and backend systems.
96+
Professionally I've always been a backend/infra engineer. In my spare
97+
time I contribute to this wonderful community!
98+
99+
* What would you name your most important contribution to Git?
100+
101+
I would say my contributions to the documentation come out on top.
102+
At the end of the day, Git is meant for human consumption.
103+
So getting a bit more polish here and there for user-facing docs is
104+
well worth the trouble, and I am most proud of my work in this area so
105+
far.
106+
107+
If I had more time I would overhaul the documentation to make things
108+
easier to understand. Truly, Git has a very simple conceptual model
109+
(thanks to the brilliance of its original author). You just have to
110+
understand that commits come from one or more other commits (sort of
111+
like family trees). That's it! But sadly we have a reputation of
112+
having absolutely terrible user-facing docs, so much so that it pushed
113+
people away to Mercurial and other more friendly VCSs. We need to fix
114+
that.
115+
116+
* What are you doing on the Git project these days, and why?
117+
118+
Last year I started trying to add unit tests to the (perhaps obscure)
119+
`git interpret-trailers` command, but this effort has morphed into
120+
"let's also overhaul the entire subsystem around how trailers are
121+
handled, with the aim of creating a reusable C library around it".
122+
123+
I'm afraid I've bitten off more than I can chew, but I do have a
124+
backlog of about 60 patches that I need to get sent up for review. Not
125+
all at once, of course haha. Hopefully I can get these sent up and
126+
merged over the coming months. The review process can be lengthy you
127+
see, but for good reason --- we take time to try to make sure things
128+
are right the first time.
129+
130+
* If you could get a team of expert developers to work full time on
131+
something in Git for a full year, what would it be?
132+
133+
At the risk of being unoriginal, it would be libification (see
134+
[Calvin Wan's interview](https://git.github.io/rev_news/2023/08/31/edition-102/#developer-spotlight-calvin-wan)
135+
from edition 102). But to be more precise, it would be the complete
136+
banning of "shelling out" which we do in many places (where Git
137+
spawns another Git process to do something). Instead we could
138+
(and should) be using libraries internally inside Git's own codebase.
139+
I believe that once we can get Git to start treating itself
140+
as a library, that external library consumption will soon follow.
141+
142+
There are many others interested in this area as Git has a massive
143+
footprint in our industry. I hope that the many large companies that
144+
benefit from Git can grow their roster of Git contributors.
145+
146+
* If you could remove something from Git without worrying about
147+
backwards compatibility, what would it be?
148+
149+
`git checkout`. I believe `git switch` and `git restore` replaced the
150+
need to have `git checkout`. I believe in the "there should be only
151+
one way to do the right thing" camp when it comes to the CLI, so I don't
152+
like how we have multiple commands with a lot of overlap.
153+
154+
I say this even though personally I've been using Git for over 15
155+
years and have always used `git checkout` (even after the introduction
156+
of `git {switch,restore}`). Simplicity matters!
157+
158+
* What is your favorite Git-related tool/library, outside of
159+
Git itself?
160+
161+
[tig](https://jonas.github.io/tig/). I use it all the time, every
162+
suday. It's so good that I basically never use `git log`, unless I'm
163+
piping it through to search it.
164+
165+
Every time I see someone proudly showing off their latest "git-log"
166+
incantation (with all its bells and whistles), I think to myself "I
167+
guess they've never heard of tig".
168+
169+
Being an Emacs user, I tried to get into [Magit](https://magit.vc/)
170+
but could not get used to the keybindings that conflicted with my
171+
Vim-styled bindings. (Yes, I use Evil mode if you're into that sort
172+
of thing.) OTOH I get so much done with the basic git-* commands and
173+
tig that I'm rather happy with my workflow.
174+
175+
* Do you happen to have any memorable experience w.r.t contributing to
176+
the Git project? If yes, could you share it with us?
177+
178+
Nine years ago, I contributed my first patch series. I was so proud of
179+
this work that I wrote [a blog post](https://funloop.org/post/2014-09-09-my-first-contribution-to-git.html)
180+
about it.
181+
182+
The TL;DR of that post is that anyone can contribute to Git, and
183+
really we are a welcoming community. Junio goes out of his way to
184+
accommodate new contributors (I admire his patience), so please, feel
185+
free to join us!
186+
187+
* What is your toolbox for interacting with the mailing list and for
188+
development of Git?
189+
190+
So my first contribution 9 years ago was via (the traditional)
191+
`git send-email` command. These days there is this very neat service
192+
called [GitGitGadget](https://gitgitgadget.github.io/) that allows
193+
you to create pull requests on GitHub and does all the housekeeping
194+
work of keeping mailing list discussions in sync (you'll get comments
195+
on your PR which come from mailing list responses). Plus you can get
196+
previews of your patch series (exactly how they'll look like on the
197+
list) before you submit it, which is always nice.
198+
199+
For local Git development, honestly I don't do anything special or
200+
unusual. One window for Emacs, one window for (re)compiling Git and
201+
running tests, and maybe one more for tig. From Emacs I use [notmuch](https://wiki.archlinux.org/title/Notmuch)
202+
to browse the mailing list emails (which I sync to Gmail with
203+
[lieer](https://github.com/gauteh/lieer).
204+
205+
I use Orgmode in Emacs heavily for organizing code snippets and ideas.
206+
207+
Lastly but not least, I use tmux to organize terminal windows and
208+
nagivate quickly across them, even if I'm not using SSH.
209+
210+
* What is your advice for people who want to start Git development?
211+
Where and how should they start?
212+
213+
The hard part is figuring out which area you want to work on. Git has
214+
a large codebase, so I recommend starting out with documentation
215+
changes to familiarize yourself with the current state of things.
216+
There's always a typo or grammofix hiding in there!
217+
218+
Many of our manpages read like dictionaries, when they should read
219+
more like user guides. Some manpages have helpful "EXAMPLES" sections
220+
to show you how to actually use various options and commands, so if
221+
you can think of additional examples, that would be most welcome.
222+
Getting familiar with how things work with user-facing docs should
223+
help you understand the intent behind the large C codebase we have.
224+
225+
Try to make your contributions as small as possible, but make an
226+
effort to write good commit messages. Copy the style of veterans like
227+
Junio, Peff (Jeff King), Christian Couder, and others I am forgetting
228+
(sorry!) who've been doing this for a long time.
229+
230+
Once your change is submitted, nag people weekly to get things moving
231+
(yes, we need prodding occasionally). But also don't get offended if
232+
there are a lot of review comments for seemingly small things ---
233+
we're just trying to maintain a certain level of quality. Git is used
234+
by almost everyone in the software industry, so it's important for us
235+
to keep a high bar for quality, that's all.
236+
237+
* If there's one tip you would like to share with other Git
238+
developers, what would it be?
239+
240+
Junio has been our maintainer for over a decade. It's a tough job and
241+
somehow he's kept going at it all this time. Still, let's do our best
242+
to help make his job easier, because honestly we are truly lucky to
243+
have someone of his caliber lead our project.
244+
245+
More concretely, this means helping out with code reviews. If you're
246+
not sure which ones to review, see the "What's Cooking" emails that
247+
Junio sends out regularly to look for patches that need help from
248+
reviewers. They are commented as "Needs review" or "Comments?", so
249+
they're easy enough to spot.
250+
35251

36252
## Other News
37253

0 commit comments

Comments
 (0)