Skip to content

Commit ef4353d

Browse files
committed
Merge branch 'master' of https://github.com/git/git.github.io
* 'master' of https://github.com/git/git.github.io: rn-91: add interview with Jeff King a.ka. Peff
2 parents 7cacc81 + 50347aa commit ef4353d

File tree

1 file changed

+200
-3
lines changed

1 file changed

+200
-3
lines changed

‎rev_news/drafts/edition-91.md‎

Lines changed: 200 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,206 @@ This edition covers what happened during the month of September 2022.
2929
### Support
3030
-->
3131

32-
<!---
33-
## Developer Spotlight:
34-
-->
32+
## Developer Spotlight: Jeff King (alias Peff)
33+
34+
* Who are you and what do you do?
35+
36+
My given name is Jeff, but most people call me Peff. Even in real life.
37+
I've been working on Git since early 2006. For a while it was for fun
38+
and to scratch my own itches (and maybe to avoid doing my school work),
39+
but I joined GitHub in 2011, where my job was mostly about improving
40+
Git. I stopped being a full-time employee earlier this year, but I'm
41+
still working a few hours a week on Git.
42+
43+
* How has your journey been as a long-time Git contributor? Do you
44+
happen to have any memorable experience w.r.t contributing to the
45+
Git project?
46+
47+
One thing I've found with contributing to Git is that it sneaks up on
48+
you over time.
49+
50+
I still remember one moment in 2008 or 2009. In my mind, Git was
51+
something I did to procrastinate on "real" work. Shawn Pearce was
52+
organizing an in-person meeting of developers, and emailed me
53+
specifically to say that I was one of the core developers and should
54+
consider coming. I was really confused. Wasn't this just a thing I did
55+
in my spare time? But running `git shortlog` showed that I was one of
56+
the top few contributors. That really changed my mindset; I realized I
57+
was part of a larger community, and that it was something I did care
58+
about.
59+
60+
And I have that same sense looking at how far Git has come. Day to day
61+
(and especially when you're fixing a bug in code from 2005) it can seem
62+
like nothing changes. But when I look back over the span of 10 or 15
63+
years, I'm amazed at the progress. Not just in terms of features in Git,
64+
but at the overall development process. The way we work and communicate
65+
has matured so much in that time. Some of that is from technical tools
66+
(new Git features, new internal APIs and data structures to avoid whole
67+
classes of bugs) but some of it is in what the people do. In my opinion,
68+
our standards for testing and commit messages have gone up considerably
69+
over the years.
70+
71+
* Git Merge got over a few days ago. Any takeaways from the conference
72+
that you would like to share?
73+
74+
To me, the most important part of Git Merge is making connections
75+
between developers. I'm not convinced that sticking 30 people in a room
76+
is the best way to have a technical discussion, and the real work later
77+
happens solo, or on the list. But I think seeing people in person, and
78+
especially chatting with them over lunch, etc, is so helpful to that
79+
later work. We all know intellectually that there's another person on
80+
the end of every email, but I think having met them face to face helps
81+
us emphathize at a more gut level.
82+
83+
Of course, there were some talks, too. I tend to prefer the more
84+
technical ones, but being so involved in Git development, there doesn't
85+
tend to be anything too surprising for me there. I thought the talks
86+
from Taylor and Elijah were nice dives into new technical material
87+
(though they both also have great blog posts that go even deeper!).
88+
Martin's Jujutsu talk gave a lot of food for thought on different ways
89+
for people to interact with Git.
90+
91+
* Could you share a few words regarding your experience while you were
92+
a member of the Git PLC?
93+
94+
I was the person who led the initial effort in 2010 to join Software
95+
Freedom Conservancy. We had gotten some money for the project as part of
96+
Google's Summer of Code program. It was being passed around like a hot
97+
potato (between countries, even!) as somebody took responsiblity for
98+
handling GSoC each year. I don't even want to think of what we were
99+
_supposed_ to do with it, tax-wise, but we knew it would be better with
100+
some actual structure. So that led to us joining, which led to the PLC
101+
as committee in control of the project as an entity (and the money), and
102+
that led to handling more assets (the git-scm.com domain, donated
103+
hosting agreements from various places, the trademark).
104+
105+
Since the Conservancy entity isn't directly related to code development,
106+
being on the PLC is long periods of nothing, punctuated by big threads
107+
full of boring non-coding stuff. Some of it is fun-ish, like handing out
108+
travel funds so people can come to Git Merge. Some of it I found very
109+
tedious, like discussing trademark enforcement, or code of conduct
110+
issues. I was happy to serve on the PLC for many years, but I'm also
111+
happy that other people are doing that work now.
112+
113+
* What would you name your most important contribution to Git?
114+
115+
I think my biggest contribution is not any one thing, but rather being
116+
there for all of the things. There's hardly a C file in the repository
117+
that I haven't touched at some point, and when fixing a bug I'd often
118+
try to find solutions we could apply to the whole code base (e.g.,
119+
improving an API to be less error-prone and using it consistently in
120+
other callers).
121+
122+
I do sometimes work on bigger features. One of the earliest things I did
123+
after starting at GitHub was overhaul our HTTP authentication and
124+
introduce the credential-helper protocol. I occasionally see other tools
125+
using a similar protocol, proving that it was either a great idea, or a
126+
seductively bad one!
127+
128+
* What are you doing on the Git project these days, and why?
129+
130+
One of my favorite things in Git is to wake up, read an email on the
131+
list that says "why does Git do X when I say Y?", dig it down to some
132+
bug or missing feature, and end up with a nice, tidy patch by lunchtime.
133+
Of course it doesn't always go that way, but I do often enjoy these
134+
little fixes. It's like solving a puzzle.
135+
136+
I also have a backlog of half-finished ideas. Some of them are garbage
137+
that I'll probably throw away, but many of them just need a little
138+
polishing. One of them is more tunable knobs for repacking (which has
139+
been in use on GitHub's servers for a few years already!), and another
140+
is handling negative commit timestamps (so we can finally import
141+
pre-1970 Apollo code).
142+
143+
* If you could get a team of expert developers to work full time on
144+
something in Git for a full year, what would it be?
145+
146+
Arguably I had that already, so maybe past work speaks for itself. Or
147+
maybe I squandered it.
148+
149+
* If you could remove something from Git without worrying about
150+
backwards compatibility, what would it be?
151+
152+
Trees should be sorted in order strictly by name, rather than
153+
directories sorting as if "/" was appended. It's a little thing, I know,
154+
but it's one of the few things that's really impossible to fix because
155+
it's baked so deep into Git's logical model.
156+
157+
* What is your favorite Git-related tool/library, outside of Git
158+
itself?
159+
160+
Definitely [`tig`](https://jonas.github.io/tig/). Its "blame" functionality,
161+
and especially the "re-blame from parent" feature, are so useful. I almost
162+
never run a bare `git blame`.
163+
164+
* What is your toolbox for interacting with the mailing list and
165+
for developing Git itself?
166+
167+
I read the mailing list via mutt. I keep a local archive which I index
168+
with notmuch. I used to actually subscribe to the list, but these days I
169+
just pull the archive every few minutes from lore.kernel.org's
170+
public-inbox Git repository.
171+
172+
I do all of my development with a fairly vanilla vim setup. I have a few
173+
niceties, like terminal hotkeys to cut and paste object hashes, and a
174+
vim function to inline output from a Git command (like converting hashes
175+
into `--format=reference`).
176+
177+
I try to share my scripts when they're not too gross or specific to my
178+
workflows. An example there is [`contrib/git-jump`](https://github.com/git/git/tree/master/contrib/git-jump).
179+
I keep some other Git-specific scripts in the [meta branch](https://github.com/peff/git/tree/meta)
180+
which I check out as the directory `Meta` inside my Git repository (I
181+
stole the name from Junio, who has a similar tree of scripts). I use it
182+
to rebase my topics and make my daily-driver build of Git. There's
183+
probably not much of use there for most people, but some of it has led
184+
to useful features (e.g., our test suite's `--stress` option started as
185+
a script there, though SZEDER Gábor did all the heavy lifting to
186+
integrate it).
187+
188+
* What is your advice for people who want to start Git development?
189+
Where and how should they start?
190+
191+
There are a lot of ways to get involved in open source, but I think the
192+
best one is scratching your own itch. Pick something you want the tool
193+
to do, and work on it. That's probably harder with Git these days than
194+
it was when I started, just because the system is larger and more
195+
complex, and so much of the low-hanging fruit has already been picked.
196+
197+
A similar way is just reading the list and looking for bug reports. Once
198+
you learn about a problem, then it becomes your itch.
199+
200+
Of course it's fine to start work on a much larger project if you like.
201+
But following my "sneaks up on you" philosophy from above, if you work
202+
on enough small things, you will eventually find yourself quite
203+
comfortable with the code base, and able to work on larger things.
204+
205+
* If there's one tip you would like to share with other Git
206+
developers, what would it be?
207+
208+
Re-read your emails before sending! Obviously it's nice to catch typos
209+
and other simple proofreading errors. But it's also a final chance to
210+
make sure you are saying what you want clearly and concisely, and that
211+
you understand what the other person is saying.
212+
213+
I can't count the number of times that I've almost sent out a very
214+
confused explanation in a commit message, and upon re-reading realized
215+
that not only was there a better way to explain it, but a better way to
216+
write the code. It's also one of the reasons I like writing verbose
217+
commit messages. Trying to justify the decisions you've made in writing
218+
a patch is often the moment you realize that your arguments are weak.
219+
220+
Likewise, there have been many times when I'm about to respond to
221+
somebody along the lines of "I think you're wrong, and here's why". And
222+
upon re-reading I realize that I did not understand their point in the
223+
first place. Of course if everybody remains polite, then hopefully the
224+
error works its way to a shared understanding eventually. But besides
225+
saving everybody time, catching a misunderstanding before sending means
226+
you're wrong on the Internet one less time!
227+
228+
Of course, ending the interview with this tip gives an almost certain
229+
probability that I have a typo somewhere above. So maybe one more tip:
230+
be humble. And remember to have fun. Oops, that's two tips.
231+
35232

36233
## Releases
37234
+ Tower for Mac [9.0](https://www.git-tower.com/release-notes/mac) ([What’s New in Tower 9 video](https://youtu.be/CuCCGSlBkis))

0 commit comments

Comments
(0)