Re: [RFC/PATCH] point pull requesters to Git Git Gadget
- Date: Wed, 13 Mar 2019 21:50:53 +0100 (STD)
- From: Johannes Schindelin <Johannes.Schindelin@xxxxxx>
- Subject: Re: [RFC/PATCH] point pull requesters to Git Git Gadget
On Tue, 12 Mar 2019, Roberto Tyley wrote:
> On Tue, 12 Mar 2019 at 21:34, Jeff King <peff@xxxxxxxx> wrote:
> > I feel a little bad sending this, because I really value the work that
> > Roberto has done on submitGit. So just dropping it feels a bit
> > dismissive.
> Oh, you're very kind, that's ok! Very glad submitGit could help for a
> while, sounds like it was a good proof that GitHub could become part of
> the contribution process.
TBH I also felt quite bad for starting GitGitGadget rather than extending
submitGit. It's just that I faced too many obstacles with that:
- submitGit is stateless. I have *no* way of automatically including a
- I remember that there were rather huge concerns about giving Amazon the
keys to your email. This is so intricate a part of submitGit's design
(even if you would change it to use another service to send mails in
your name, you would still have to trust *some* service with your
- One of the things I *really* wanted was to have the tool mirror the
replies on the mailing list back to the PR. Since submitGit does not
*really* integrate with the GitHub interface (it might read some
information, but it won't interact with the user there, opting instead
on its own web interface), that was not something I could see submitGit
- Since submitGit does not write any state, there was no way to persist
previous iterations in the form of the tags that GitGitGadget publishes.
- Finally, I never hid my concern about the choice of language (Scala
might be a nice language to learn, even for me, some day, but trying
to force people like me to learn a language that they did not plan on
learning is probably a bad idea). I probably was too vocal about this,
at times. And I still feel very strongly about this. Choosing a language
that many developers of the target audience do *not* speak already is
(in my mind) putting an unnecessary hurdle in front of contributors.
another not-quite-mainstream language. But Scale is not even mentioned in
while Typescript is definitely an "up-and-coming language".
Also, I always wanted to learn how to write web applications, and this was
a perfect excuse to do so.
Nevermind that I had to convert this to a serverless part (an Azure
Function) with a user-visible backend (an Azure Pipeline that updates the
PR Check on GitHub and makes it easy to review the log, just in case
anything failed during the mail sending process). Due to the environment
(see below) this conversion was relatively painless, and you have *no*
idea how pleased I am that *nobody* realized that GitGitGadget underwent
such a rather dramatic architecture change. I essentially replaced the
engine of a Nascar machine with a differently-sized one, while the race
was still on.
In addition, I wanted to know what all this Typescript hype was all about,
and I was surprised just how many bugs were caught in my original
Typescript, by the mere fact of converting to Typescript. I also have to
admit that it felt quite pleasant to be able to use object-oriented
scripting, with an infrastructure of dependencies at your fingertips
(npm), and almost pain-free, portable, fast, intuitive unit testing
So I am thankful for submitGit, and at the same time I still feel that it
was necessary to pit GitGitGadget against it. Almost as if (from my
perspective) the purpose of submitGit was to prod me into starting
GitGitGadget, to show what is possible.
Footnote *1*: I originally used a shell script called
`mail-patch-series.sh` to submit my patch series, and later even published
it at https://github.com/dscho/mail-patch-series in the hopes that it
would benefit others (and that I'd get PRs to improve it). I learned,
however, that nobody wants to use anybody else's shell script to submit
their patch series, just like I found e.g. Lars Schneider's automatic
reviewer Cc:ing too broad, others did not like my choices like storing the
cover letter in the branch description (which is by definition not