I don’t think that implication holds. Saving the developers of
DodgyPython
the work of reimplementing the python-only part of the
stdlib does not mean they have to have write access.
And Windel Bouwman likewise objected:
The developers of DodgyPython can use the shared standard library, but
do not require write access to it. They can copy paste the folder into
their own sourcecode, or they could bundle it upon installer/package
creation.
But that’s precisely what they can do now. If they don’t have write
access, it’s not shared access, is it?
The status quo is that any Python implementation can re-use the Python
only parts of the std lib, all they need to do is “copy paste the
folder into their own sourcecode”, just as you say.
If that’s the only problem you want to solve, the Time Machine strikes
again and its already solved. (At least for the portion of the stdlib
that is in pure Python.)
But just as you said, copying is a one-off process, and the two copies
will eventually get out of sync. To avoid that:
-
each implementation has to periodically refresh their copy of the
stdlib from the CPython version;
-
and submit any changes they make to their copy back to CPython;
-
and hope that CPython accepts the changes.
In other words, in the world we live in today, CPython’s version of the
std lib is the “master copy” and has a priviledged position as the One
True version of the modules. Anyone can submit PRs to modify the stdlib,
but implementations other than CPython have no priviledged status.
Sharing the code implies that those who share it have equal status. It
won’t be just CPython that has the One True version, all implementations
will have equal write access. Otherwise, it’s not shared, it’s just
copied, which is what they can do now.
If PyPy modify a module, it will automatically be seen by all Python
implementations, not just PyPy.
(I’m not saying that the changes will appear by magic. Presumably they
will appear in seperate branches of seperate repos, or something like
that. The details of interoperability between repos will presumably need
working out. The technical details might be hard to solve, or easy to
solve, I don’t know.)
But if PyPy has write permission to the shared parts of the repo, they
effectively have write permission to the shared parts of everyone’s
repos, since that’s what shared means.
And the same applies to DodgyPython unless we act as gatekeepers,
splitting the world of Python interpreters into “trusted” and
“untrusted” implementations.
(By the way, in case it wasn’t obvious, I made up the name “DodgyPython”
to avoid singling out any actual existing implementation as untrusted.)