Decision-Making Process Improvements (or My Frustrations With How PEP 734 Has Played Out)

FTR, I’m allowing myself to voice my frustration a little. Feel free to disregard the following if it isn’t constructive. Hopefully, though, it helps inspire us to make some changes.

My motivating complaint here is that the request from the Steering Council to put the PEP 734 module under concurrent was a complete, total surprise, and at the last minute no less. There was zero discussion. Using a different name than interpreters had never come up in years of discussion and the consensus was that the name worked.

[Clarification]

tl;dr communication is hard!

I say it was a complete surprise but that is not strictly true. Barry had approached me privately a week or so earlier about the concurrent.interpreters name. I misunderstood his intentions and it did not register in my mind that the name change was something the Steering Council was discussing, much less, seriously. In that regard it was a complete surprise, but, to be fair to Barry, he did bring it up earlier and thoughtfully asked for my opinion. At the time, I gave him a mild rejection and mostly didn’t think about it again. (My mind was occupied elsewhere.) For my part, I claim responsibility for not understanding the situation that week before and thus not prioritizing a stronger response. That hindsight makes the whole situation extra frustrating.

[End Clarification]

The complete surprise I felt at this requirement genuinely canceled out the huge excitement I felt at having the PEP accepted, this at the very realization of a years-long goal and investment. It was a gut punch when I was expecting a hug and I’m still trying to make sense of it. (My internal reaction seems silly to me in terms of “it’s just a name”, and yet here I am. Clearly there’s more to it than “it’s just a name”.) It’s taken me until today to feel comfortable even writing down words for my thoughts here.

At the same time, I know very well the challenge inherent to the operation of the Steering Council. I hope that’s evident from my language summit talk this year (slides). They are doing a hard job with limited resources, which stands as a testament to their feelings for the community. I hope more people understand this clearly.

I also recognize that there wasn’t much time, relative to 3.14, for the Steering Council to start a discussion about the name of the module. Notably, they put in extra effort to make acceptance for 3.14 possible, for which I’m very grateful. It’s a hard situation and I can see where they’re coming from. They had a concern and made an executive decision in the face of an imminent deadline. In my mind, they decided to skip discussion for the sake of landing this in 3.14 and relate to that line of thinking.

That said, those challenges and that tricky situation don’t make the decision right (or wrong). In fact, the conclusion that concurrent.interpreters is the best name still doesn’t make sense to me. I’m still arguing that it’s not a good place for the module. See my other thread for that discussion.

I’ll also point out the reason we even have a Steering Council is because, back in 2018, so many people objected (vigorously) to Guido supposedly making executive decisions without consensus. PEP 13 calls this out specifically. Yet here I’ve twice run into a situation with PEP 734 where the Steering Council mandated sudden, specific, unexpected changes without any discussion: first with putting the module on PyPI (to which I agree in general, but not for PEP 734, but I did anyway) and now with concurrent.interpreters. This is not to insinuate some abuse of power or a deliberate attempt to circumvent our traditional (heavily discussion-based) process. I honestly think the way things are set up right now lends itself to inadvertent situations like this with the Steering Council.

FWIW, I tried to not resist the concurrent.interpreters requirement too much, for worry that the PEP would get bumped to 3.15 (due to the extra time needed for discussion), but maybe sorting out the challenges the Steering Council faces, which contributes to the friction, is more important than not waiting yet another year for stdlib support for multiple interpreters. (To me, the feature is important enough to make that calculus non-trivial.)

Finally, I don’t want to end this with any misunderstanding. I really appreciate the hard work that the members of the Steering Council do. I do not feel like there is any malice or ego involved here either. They genuinely want what’s best for Python and its people, just like all of us do. My frustration lies in there being too little communication and in the consequent surprises, just like I talked about at the language summit. (Ironically, this most recent point of frustration for me took place a few weeks after my language summit talk.) I continue to attribute a fair portion of that (though not all) to insufficient support for the Steering Council’s operation.

I’m a firm believer in our capacity to find solutions to existing friction in our processes, especially given how much we care about each other and this community.

Perhaps this would be a good point to pick up where our language summit discussion left off. Let’s find a way to avoid big surprises in the future.

Anyway, thanks for hearing me out.

21 Likes

My impression was that the main goal of the Steering Council was to free Guido from his duty to make decisions.

1 Like

I quit in 2018 because people stabbed me in the back on Twitter over decisions they didn’t agree with.

In this instance I am with the SC.

9 Likes

We have a Steering Council because Guido got so weary of the abuse he got (peaking with PEP 572) that he just walked away from making any more “executive decisions”. Nobody asked him to, and it wasn’t discussed in advance. This wasn’t a populist revolution, it was a dictator abdicating his position because he was fed up with it.

He just announced he was stepping down, and did so. That left a giant void, and he offered no suggestions for how to fill it. It was up to the community to work it out on their own, and the current structure won a vote among competing proposals.

The “Python community” is sometimes a deeply unpleasant place for many people, for many reasons. Most communities are, after all. Comes with being human. That didn’t really change either when Guido stepped down. We have far more layers of codified “rules” now, but human nature hasn’t changed.

I understand your frustration at having a name imposed on your project that you disapprove of, and seemingly without your participation in the decision-making process - but also understand that the Steering Council likely believes that “the name” was the least of their concerns, not worth delaying action over.

There’s no cure for that, although I think it self-evident that it “would be nice” if the SC had engaged with you directly about this decision, before it was made.

I happen to agree that concurrent.interpreters is a strange name for it (for reasons you already spelled out elsewhere), but like just about everyone else expect I’ll get used to it quickly.

I don’t think changes to procedures can help with this. People need to have sensitivity to how others will take their actions, and the will and the time to “do something” about possibly unpleasant consequences.

Toward that end, I think too it’s important that people speak up when they feel short-changed, as you did here. People are not telepathic, and the alternative to being explicit is passive-aggressive dysfunction of various kinds.

20 Likes

I want to clarify something about my point here:

tl;dr communication is hard!

I say it was a complete surprise but that is not strictly true. Barry had approached me privately a week or so earlier about the concurrent.interpreters name. I misunderstood his intentions and it did not register in my mind that the name change was something the Steering Council was discussing, much less, seriously. In that regard it was a complete surprise, but, to be fair to Barry, he did bring it up earlier and thoughtfully asked for my opinion. At the time, I gave him a mild rejection and mostly didn’t think about it again. (My mind was occupied elsewhere.) For my part, I claim responsibility for not understanding the situation that week before and thus not prioritizing a stronger response. That hindsight makes the whole situation extra frustrating.

12 Likes