Notes for DLang maintainers

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Tue Feb 28 07:49:56 PST 2017


On 02/28/2017 10:04 AM, Vladimir Panteleev wrote:
> On Tuesday, 28 February 2017 at 14:52:36 UTC, Andrei Alexandrescu wrote:
>> Thanks. I'd replace "changes should be split into as many commits as
>> is reasonable" with "changes should be split into as many pull
>> requests as is reasonable", which is a natural consequence of "most
>> pull requests should consist of one commit upon merging". (Of course
>> there may be several commits during PR review.)
>
> Well... not always. For example, introducing a private function that is
> not called from anywhere is something that doesn't really make sense as
> a pull request of its own, but does make sense as a separate commit.
>
>> One vs. several commits per merged pull request is a matter in which
>> reasonable people may disagree, and we can't do both ways. The
>> Foundation fosters that github pull requests are squashed upon
>> merging, with exceptions that need to be justified.
>
> Sorry, but I don't think that's reasonable at all.
>
> I have seen no arguments to support this way of doing things, only
> downsides. Established major projects seem to agree.
>
> As far as I can see, this is not about a subjective point regarding
> which reasonable people may disagree. It seems to be a poorly justified
> mandate, that's all.
>
> As I've mentioned previously, you will need to provide some arguments
> which would outweigh those supporting the opposite position.

There can be any amount of discussion about this, to no conclusive 
results, and any argument may be responded with "I don't buy that". 
That's simply because, again, there's some subjective factor and there 
is no perfect approach that proves the others wrong. To wit, I have 
stated my argument several times in public and private but somehow it 
did not count.

Here we are simply applying a way of doing things that has worked at 
Facebook over six years and two orders of magnitude increase in team 
size. (They use phabricator there, which has a similar workflow.) It is 
obvious to me that other organizations use similar approaches; and also 
that other organizations use different approaches, also with good 
results. I should add that Facebook is one of the most successful 
software companies in history, and that may count for something.

Also, obviously the Internet can be used to find support for anything, 
and with that caveat allow me:

* "Why does every serious Github repo I do pull requests for want me to 
squash my commits into a single commit?" 
http://softwareengineering.stackexchange.com/questions/263164/why-squash-git-commits-for-pull-requests

* "I’ve been contributing to more projects in which it is expected that 
I should submit a pull request that contains a single commit." 
http://ndlib.github.io/practices/one-commit-per-pull-request/

* "Squashing your branch's changes into one commit is "good form" and 
helps the person merging your request to see everything that is going 
on." https://github.com/projecthydra/hydra-head/blob/master/CONTRIBUTING.md

* "But one thing occasionally bothers me, and that's pull requests that 
come loaded with several temporary commits. I often find myself asking 
contributors to squash those into a single descriptive commit." 
http://eli.thegreenplace.net/2014/02/19/squashing-github-pull-requests-into-a-single-commit

I'll stop here. Sure enough, there'd be other links to pages describing 
how many commits per PR work fine. Our organization happens do things 
this particular way, and it's not the only one. Moreover, we are are not 
rigidly enforcing it; within reason, definitely leeway exists.

Vladimir, I am gathering that this makes you unhappy and are close to 
getting ultimative about this. I have made all attempts I could to 
publicly and privately explain matters. I kindly ask you to consider the 
following:

* Any organization, be it for profit (company) or not (university, oss 
project) has certain rules in place. In all likelihood not all 
participants would choose the exact same rules if they could, yet they 
choose to walk (factually or virtually) in there every day and 
contribute to the organization. A simple way to look at things would be, 
would you quit a job or start a protracted argument with the CEO if the 
coding guidelines contained "please squash your github commits"?

* The leader of an organization (in this case me) cannot afford the time 
to justify and debate every single minor decision they make. No 
organization works that way. I am under enormous pressure to bring money 
in the Foundation, organize DConf, mentor students, write articles, 
contribute code, all while keeping things running.

* You seem to frame things as an arbitrary imposition made by an 
oppressive leadership. Think of it - ever since we have worked together 
(your first post is dated 2007-01-06!), is this the pattern by which 
matters have been conducted? Do you think it would be a fair 
characterization of Walter and my philosophy and values?

The short of it is we simply cannot work this way, as a simple matter of 
my own human limitations; I can't spend hours in the forum justifying 
every little thing, especially those that ten people do in eleven ways. 
I mean I _literally_ can't: I don't have the time because I am spending 
it making the D language more successful. Which I hope you'll help me 
with, too. To scale, we need to focus on the real problems and abandon 
debating the small things again and again.



Thanks,

Andrei



More information about the Digitalmars-d mailing list