[Numpy-discussion] What is consensus anyway

Fernando Perez fperez.net@gmail....
Sun Apr 22 20:39:50 CDT 2012

Hi Nathaniel,

thanks for a solid writeup of this topic.  I just want to add a note
from personal experience, regarding this specific point:

On Sun, Apr 22, 2012 at 3:15 PM, Nathaniel Smith <njs@pobox.com> wrote:
> Usually disagreements are an indication that a
> better solution is possible, even when it's not clear what that would
> be.

I think this is *extremely* important, so I want to highlight it from
the rest of your post.  Regarding how IPython operates, I think we
have good evidence to illustrate the value of this... One of the
members of the IPython team who joined earliest is Brian Granger: he
started working on IPython around 2004 after a conversation we had in
the context of a SciPy conference.  Some of you may know that Brian
and I went to graduate school together, which means we've known each
other for much longer than IPython, and we've been good friends since.
 But that alone doesn't ensure a smooth collaboration; in fact Brian
and I extremely often disagree *deeply* on design decisions about

And yet, I think the project makes solid progress, not despite this
but in an important way *thanks* to this divergence.  Whenever we
disagree, it typically means that each of us is seeing a partial
solution to a problem, but not a really solid and complete one.  I
don't recall ever using my 'BDFL vote' in one of these discussions;
instead we just keep going around the problem.  Typically what happens
is that after much discussion, we settle on a new solution that
neither of us had quite seen at the start. I mention Brian
specifically because him and I seem to be at opposite ends of some
weird spectrum, disagreement between the other parties appears to fall
somewhere in between.

Here's an example that is currently in open discussion, and despite
the fact that I'm completely convinced that something like this should
go into IPython, I'm waiting.  We'll continue the discussion to either
find arguments that convince me otherwise, or to convince Brian of the
value of the PR:


It takes both patience and trust for this to work: we have to be
willing to wait out the long discussion, and we have to trust that
despite how much we may disagree on something, we both play fair and
ultimately only want what's best for the project.  That means giving
the other party the benefit of the doubt at every turn, and having a
willingness to let the discussion happen openly as long as is
necessary for the project to remain healthy.

For example in this case, I'm *really* convinced of my point, and I
think blocking this PR actively hurts users.  Is it worth saying "OK,
I'm overriding your concerns here and pushing this forward"?
Absolutely NOT!  I'd only:

- alienate Brian, a key member of the project without whom IPython
would be nowhere near where it is today, and decrease his motivation
to continue working
- kill the opportunity for a discussion to produce an even cleaner
solution than what we've seen so far
- piss off a good friend.  I put this last because while that's
actually a very important reason for me, the fact that Brian and I are
good personal friends is secondary here: this is about discussion
between contributors independent of their personal relationships.

I hope this perspective is useful...

> 1. Make it as easy as possible for people to see what's going on and
> join the discussion. All decisions and reasoning behind decisions take
> place in public. (On this note, it would be *really* good if pull
> request notifications went to the list.)

If anyone knows how to do this, let me know; I'd like to do the same
for IPython and our -dev list.



More information about the NumPy-Discussion mailing list