@@ -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