Hi all (and especially the Steering Council and our 3.14 RM),
The new module from PEP 734 is happily part of 3.14 now, the culmination of the primary phase of a project I started over a decade ago. I’m excited at the possibilities that are now open to our users. Thanks to all who have helped!
Now on to the bikeshed! I added the module as concurrent.interpreters
per the instructions of the Steering Council. If we hadn’t been up against the 3.14 deadlines, I would have focused on making my case against the name change. However, I’m still concerned that concurrent.interpreters
isn’t the right place for the module and I still hope there’s a chance to rename it to just interpreters
.
Here’s why:
interpreters
says exactly what it’s about- it doesn’t feel (to me) like the right place for the module (isn’t where I’d expect to find it)
- the module is about exposing a core runtime feature, like
sys
,gc
,atexit
, orimp
/importlib
, so top-level makes the most sense - the module is only vaguely concurrency related, in the same way
exec()
orsubprocess
is related to concurrency - there’s a strong likelihood that users will be confused about what the module is for, because of “concurrent”
concurrent.interpreters
vs.concurrent.futures.interpreter
is confusing- it’s a longer name than
interpreters
- I’ve put a lot of thought, time, and effort into the module and the underlying runtime functionality, and with that context
concurrent.interpreters
makes no sense to me - the proposed module name has been
interpreters
since before 2018, with consensus and no suggestions to do anything else until literally the last minute, in the Steering Council’s acceptance message
Overall, the justification for the change to concurrent.interpreters
(counter to the author’s intention and to the long-standing consensus) is unclear.
I’ve heard the following arguments in favor of concurrent.interpreters
:
- we should make better use of the
concurrent
namespace (agreed, but not with PEP 734) - discoverability (I’m still unclear on how
concurrent.*
helps with that here) - if you squint just right, it’s sort of concurrency-related
(I don’t mean to misrepresent the opposing position to my own; I literally don’t know more than this about the arguments in favor of concurrent.interpreters
.)
Here are some public comments core devs have made both ways about the module name:
- (me) PEP 734: Multiple Interpreters in the Stdlib - #37 by eric.snow
- (Petr) PEP 734: Multiple Interpreters in the Stdlib - #38 by encukou
- (Alyssa) PEP 734: Multiple Interpreters in the Stdlib - #39 by ncoghlan
- (Petr) PEP 734: Multiple Interpreters in the Stdlib - #40 by encukou
- (Antoine) PEP 734: Multiple Interpreters in the Stdlib - #41 by pitrou
- (Alyssa) PEP 734: Multiple Interpreters in the Stdlib - #42 by ncoghlan
- (Steve) PEP 734: Multiple Interpreters in the Stdlib - #44 by steve.dower
- (me) PEP 734: Multiple Interpreters in the Stdlib - #48 by eric.snow
- (neonene) PEP 734: Multiple Interpreters in the Stdlib - #53 by neonene
and some relevant comments from others:
- PEP 734: Multiple Interpreters in the Stdlib - #43 by TobiasHT
- PEP 734: Multiple Interpreters in the Stdlib - #45 by gerardw
- PEP 734: Multiple Interpreters in the Stdlib - #46 by TobiasHT
Ultimately, I’d like to change the name back to interpreters
(for 3.14+).
I realize it’s awfully late in the 3.14 cycle to be making this change. I’ll understand if we’re already past the point of no return. That said, I’ll also note that changing the module name before beta4/rc1 would be unlikely to introduce any instability nor be disruptive.
Thoughts?
p.s. Sorry I didn’t write this sooner. It’s been hard for me to process the situation (and I have a lot going on) and I’m only now comfortable with writing this down.