@@ -29,9 +29,225 @@ This edition covers what happened during the months of February 2024 and March 2
29
29
### Support
30
30
-->
31
31
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
+
35
251
36
252
## Other News
37
253
0 commit comments