[Python-Dev] Breaking up the stdlib (Was: release cadence)

Steven D'Aprano steve at pearwood.info
Tue Jul 5 23:11:16 EDT 2016

On Tue, Jul 05, 2016 at 08:01:43PM +0200, Petr Viktorin wrote:

> In the tkinter case, compiling for source is easy on a developer's
> computer, but doing that on a headless server brings in devel files for
> the entire graphical environment.
> Are you saying Python on servers should have a way to do turtle
> graphics, otherwise it's not Python?

That's a really good question.

I don't think we have an exact answer to "What counts as Python?". It's 
not like EMCAScript (Javascript) or C where there's a standard that 
defines the language and standard modules. We just have some de facto 

- CPython is definitely Python;
- Jython is surely Python, even if it lacks the byte-code of CPython and 
  some things behave slightly differently;
- MicroPython is probably Python, because nobody expects to be able to 
  run Tkinter GUI apps on an embedded device with 256K or RAM;

but it's hard to make that judgement except on a case-by-case basis.

I think though that even if there's no documented line, most people 
recognise that there are "core" and "non-core" standard modules. dis and 
tkinter are non-core: if µPython leaves out tkinter, nobody will be 
surprised; if Jython leaves out dis, nobody will hold it against them; 
but if they leave out math or htmllib that's another story.

So a headless server can probably leave out tkinter; but a desktop 

> > The other extreme is Javascript/Node.js, where the "just use pip" (or 
> > npm in this case) philosophy has been taken to such extremes that one 
> > developer practically brought down the entire Node.js ecosystem by 
> > withdrawing an eleven line module, left-pad, in a fit of pique.
> > 
> > Being open source, the damage was routed around quite quickly, but 
> > still, I think it's a good cautionary example of how a technological 
> > advance can transform a programming culture to the worse.
> I don't understand the analogy. Should the eleven-line module have been
> in Node's stdlib? Outside of stdlib, people are doing this.

The point is that Javascript/Node.js is so lacking in batteries that the 
community culture has gravitated to an extreme version of "just use 
pip". I'm not suggesting that you, or anyone else, has proposed that 
Python do the same, only that there's a balance to be found between the 
extremes of "everything in the Python ecosystem should be part of the 
standard installation" and "next to nothing should be part of the 
standard installation".

The hard part is deciding where that balance should be :-)


More information about the Python-Dev mailing list