Hi Nathaniel, Thanks for the clarifications. Is the governance document committed to the repository? I keep looking for it and have a hard time finding it --- I think I read it last in an email.
In this way, I could make Pull Requests to the governance document if there are concrete suggestions for change, and then have them reviewed in the standard way. I'm hopeful that a few tweaks to the document would satisfy all my concerns. Thanks, -Travis On Wed, Sep 23, 2015 at 1:04 PM, Nathaniel Smith <n...@pobox.com> wrote: > Hi Travis, > > On Tue, Sep 22, 2015 at 3:08 AM, Travis Oliphant <tra...@continuum.io> > wrote: > > > > > > On Tue, Sep 22, 2015 at 4:33 AM, Nathaniel Smith <n...@pobox.com> wrote: > >> > >> On Tue, Sep 22, 2015 at 1:24 AM, Travis Oliphant <tra...@continuum.io> > >> wrote: > >>> > >>> I actually do agree with your view of the steering council as being > >>> usually not really being needed. You are creating a straw-man by > >>> indicating otherwise. I don't believe a small council should do > anything > >>> *except* resolve disputes that cannot be resolved without one. Like > you, I > >>> would expect that would almost never happen --- but I would argue that > >>> extrapolating from Debian's experience is not actually relevant here. > >> > >> > >> To be clear, Debian was only one example -- what I'm extrapolating from > is > >> every community-driven F/OSS project that I'm aware of. > >> > >> It's entirely possible my data set is incomplete -- if you have some > other > >> examples that you think would be better to extrapolate from, then I'd be > >> genuinely glad to hear them. You may have noticed that I'm a bit of an > >> enthusiast on this topic :-). > >> > > > > > > Yes, you are much better at that than I am. I'm not even sure where I > > would look for this kind of data. > > > >>> > >>> > >>> > >>> So, if the steering council is not really needed then why have it at > all? > >>> Let's just eliminate the concept entirely. > >>> > >> > >> In my view, the reasons for having such a council are: > >> 1) The framework is useful even if you never use it, because it means > >> people can run "what if" scenarios in their mind and make decisions on > that > >> basis. In the US legal system, only a vanishingly small fraction of > cases go > >> to the Supreme Court -- but the rules governing the Supreme Court have a > >> huge effect on all cases, because people can reason about what would > happen > >> *if* they tried to appeal to the Supreme Court. > > > > > > O.K. That is a good point. I can see the value in that. > > > > > >> > >> 2) It provides a formal structure for interfacing with the outside > world. > >> E.g., one can't do anything with money or corporate contributions > without > >> having some kind of written-down and enforceable rules for making > decisions > >> (even if in practice you always stick to the "everyone is equal and we > >> govern by consensus" part of the rules). > > > > > > O.K. > > > >> > >> 3) There are rare but important cases where discussions have to be had > in > >> private. The main one is "personnel decisions" like inviting people to > join > >> the council; another example Fernando has mentioned to me is that when > they > >> need to coordinate a press release between the project and a funding > body, > >> the steering council reviews the press release before it goes public. > > > > > > O.K. > > > > > >> > >> That's pretty much it, IMO. > >> > >> The framework we all worked out at the dev meeting in Austin seems to > >> handle these cases well AFAICT. > > > > > > How did we "all" work it out when not everyone was there? This is > where I > > get lost. You talk about community decision making and yet any actual > > decision is always a subset of the community. I suppose you just rely > on > > the "if nobody complains than it's o.k." rule? That really only works > if > > the project is moving slowly. > > By "all" I just meant "all of us who were there" (which was a majority > of the active maintainers + a number of other interested parties -- > the list of attendees is in the meeting notes if you're curious). > > In general I totally agree with your concern about only including a > subset of the community. That's why we followed up by posting to the > list a full set of notes on tentative-decisions-made, and the draft > governance document in particular, for further discussion. We've > already had multiple threads talking about it, even before this one. > And it's pretty explicit in the document itself that no non-trivial > decision can be considered final unless it's *at least* been posted on > the mailing list. > > We didn't try to legislate the exact review requirements for every > decision, because it's impossible to have a set of rules that scales > from trivial typos (which just get merged, only github subscribers > even know it happened) to foundational discussions like this one. This > means that one of the things we trust contributors (esp. senior > contributors) to do is to use their knowledge of the project to make > judgement calls about how risky or controversial a given change will > be, or if there's some particular expertise that should be consulted. > (E.g. we might make sure to ping Robert Kern if there's some np.random > change being discussed; I'm hesitant to finalize the PyUFunc ABI > changes being discussed in the other thread until Ralf gets back, > because I know that among the core maintainers he's particularly > critical of the idea of breaking ABI.) > > And if we new information later comes to light then a decision can > always be revisited -- people may get grumpy if you try to re-open an > issue that's been considered settled for a year, but if you have a > good reason and nothing irrevocable has happened (e.g. a veto > obviously can't remove code from an existing release), then, well, > it's annoying but what can you do, let's hear your reason. > > It's could certainly happen that sometimes the steering council + > mailing list readers will all miss something important. But this is > unavoidable in any system -- we're obviously not going to, like, > institute a one month waiting period on every single decision or > something. Ultimately you have to trust the core maintainers to have > good judgement about which changes to accept, together with good > meta-judgement about how controversial or broad-reaching any given > change is likely to be, and then hope that the rest of the community > will also supplement as they can. > > >>> But there are real questions that have to have an answer or an approach > >>> to making a decision. The answer to these questions cannot really be a > >>> vague notion of "lack of vigorous opposition by people who read the > mailing > >>> list" which then gets parried about as "the community decided this." > The > >>> NumPy user base is far, far larger than the number of people that read > this > >>> list. > >> > >> > >> According to the dev meeting rules, no particularly "vigorous > opposition" > >> is required -- anyone who notices that something bad is happening can > write > >> a single email and stop an idea dead in its tracks, with only the > steering > >> council able to overrule. We expect this will rarely if ever happen, > because > >> the threat will be enough to keep everyone honest and listening, but > about > >> the only way we could possibly be *more* democratic is if we started > phoning > >> up random users at home to ask their opinion. > > > > > > O.K. so how long is the time allowed for this kind of opposition to be > > noted? > > See above. For regular discussions, there are some rough guidelines > (uncontroversial bug fixes can just be merged; substantive API changes > need at least a few days review on the mailing list). This governance > discussion has been left open for a few weeks, and: "worst case, if a > change is more controversial than expected, or a crucial critique is > delayed because someone was on vacation, then it's no big deal: we > apologize for misjudging the situation, [back up, and sort things > out]( > http://producingoss.com/en/producingoss.html#version-control-relaxation)." > > (I think we all thought the governance discussion was done, actually. > But then you posted, and so now we're talking about it some more. No > worries; if there's an issue, we'd rather know, right?) > > For formal council votes (the ones we expect will rarely if every > happen), then we do have a slightly more formal rule: that the vote > "should be held open for long enough to give all interested Council > Members a chance to respond -- at least one week." The words "at > least" are in there to emphasize that the goal is to get an honest > read of the council; e.g. it's not legitimate to play games by > scheduling a vote when you know someone is on vacation. > > >> > >> This is actually explicitly designed to prevent the situation where > >> whoever talks the loudest and longest wins, and to put those with more > and > >> less time available on an equal footing. > >> > >>> > >>> For better or for worse, we will always be subject to the "tyranny of > who > >>> has time to contribute lately". Fundamentally, I would argue that > this > >>> kind of "tyranny" should at least be tempered by additional > considerations > >>> from long-time contributors who may also be acting more indirectly > than is > >>> measured by a simple git log. > >> > >> > >> I guess I am missing something fundamental here. Who are these long-time > >> contributors who will sit on your council of 1/3/5 but who don't even > read > >> the mailing list? How will they know when their special insight is > >> necessary? > > > > > > The long-time contributors wouldn't necessarily sit on that council. > But, > > I would support the idea of an advisory council that could act if it saw > > things going the wrong direction. This is where those people would sit. > > In the draft governance document, anyone who cares enough to pay > attention effectively has a seat on this advisory council. I assume > this is a superset of the people that you would nominate? > > > In the case of a 1 / 3 / 5 member council -- I would not argue to be on > it > > at all (but I would argue that some care should be taken to be sure it > has > > people with some years of experience if they are available). I'm only > > asking to be on a steering council that is larger than 5 people, and I > don't > > actually prefer that the steering council be larger than 5 people. > > > >> > >> No, absolutely not. The proposal is that these issues are decided by > open > >> discussion on the mailing list. (With the possible exception of #4 -- I > >> suspect that given an extreme situation like this, then once all other > >> efforts to mitigate the situation had failed the steering council would > >> probably feel compelled to talk things over to double-check they had > >> consensus before acting, and likely some part of this would have to be > done > >> in private.) > > > > > > O.K. Then, I am misunderstanding. > > Oh good, I'm glad when things turn out to be misunderstandings, > because those are (relatively) easy to solve :-). > > >> > >> This is pretty explicit in the document (and again, this is text and > ideas > >> stolen directly from Jupyter/IPython): > >> > >> "During the everyday project activities, council members participate in > >> all discussions, code review and other project activities as peers with > all > >> other Contributors and the Community. In these everyday activities, > Council > >> Members do not have any special power or privilege through their > membership > >> on the Council. [...] the Council may, if necessary [do pretty much > >> anything, but] the Council's primary responsibility is to facilitate the > >> ordinary community-based decision making procedure described above. If > we > >> ever have to step in and formally override the community for the health > of > >> the Project, then we will do so, but we will consider reaching this > point to > >> indicate a failure in our leadership." > > > > > > Granting commit rights to the repo does not seem to me to be an "everyday > > project activity" --- so I suppose I was confused. I suppose that > could > > happen with no serious objections on the list. It seems that the people > > who actually have the commit bit presently should be consulted more than > the > > general public, though. > > I see, right, slight miscommunication here -- I was thinking about the > decision of "what process do we [in general] use to decide who gets a > commit bit", not the decision "should [this person] get a commit bit". > Currently, yeah, the general process is that commit bits get given out > by a somewhat informal private discussion among active committers (or, > presumably, the "the steering council" if it does get formalized). But > if someone wants to suggest that we switch to some other process > instead, or formalize the current process, then anything like that > would be proposed and debated on the mailing list. > > (One of my favorite wacky policies is that there are projects like > Rubinius which automatically grant commit bits to everyone who submits > a successful patch. I guess the theory is that worst case, they go and > merge something they shouldn't have, more senior folks see it going by > and they revert it again, no biggie! Usually the problem is just the > opposite -- there are never enough reviewers. But I have not quite had > the guts to seriously propose this for numpy ;-).) > > -n > > -- > Nathaniel J. Smith -- http://vorpus.org > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > https://mail.scipy.org/mailman/listinfo/numpy-discussion > -- *Travis Oliphant* *Co-founder and CEO* @teoliphant 512-222-5440 http://www.continuum.io
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion