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