¿Hay que revisitar el diseño de la librería estándar?


#1

Hace unos días se publicó este artículo que da cobertura a una de las charlas del Python Language Summit de este año:

En ella, Amber Brown (RM de Twisted) alega que la librería estándar es a veces “coja” en funcionalidades y lenta en actualizarse (bugs tardan mucho tiempo en ser solucionados) entre otras cosas.

También propone un modelo de librería estándar más parecido al que tiene Rust. Rust viene con una librería estándar muy pequeña pero ofrece unos repositorios con librerías de alta calidad.

¿Cuál es vuestra opinión acerca del tema?


#2

Estoy un poco sesgado porque @pablogsal, que estuvo allí (como se recoge en el artículo) ya me habló de esto :slight_smile:

Pero ciñéndome a tu pregunta y a lo que está escrito ahí, estoy en desacuerdo con algunos argumentos.

Python claims to ship with batteries included, but according to Brown, without external packages it is only “marginally useful.” For example, asyncio requires external libraries to connect to a database or to speak HTTP.

En Satellogic usamos asyncio en órbita y no necesitamos ninguna dependencia externa. asyncio no es solo para leer HTTP.

datetime needs pytz

No si te ciñes a UTC: https://docs.python.org/3.6/library/datetime.html#datetime.timezone

and six is non-optional for writing code for Python 2 and 3.

Eso es mentira directamente :slight_smile: Puedes “vendorizar” six, puedes no usarlo y hacer tus propios if PY2, o puedes tirar a la basura Python 2 :wink:

Other standard library modules are simply inferior to alternatives on PyPI. […] She thinks that some bugs in the standard library will never be fixed. And even when bugs are fixed, PyPI libraries like Twisted cannot assume they run on the latest Python, so they must preserve their bug workarounds forever.

Creo que a nadie le ponen una pistola en la cabeza para usar la biblioteca estándar, ¿no? No entiendo esto.

Brown called out the XML parser and tkinter in particular for making the standard library larger and harder to build, burdening all programmers for the sake of a few. As Russell Keith-Magee had described earlier in the day, the size of the standard library makes it difficult for PyBee to run Python on constrained devices. Brown also noted that some standard library modules were optimized in C for Python 3, but had to be reimplemented in pure Python for PyPy to support them.

Esto sí que me parecen argumentos para sacar cosas de la biblioteca estándar, o al menos para repensar cómo se distribuyen.

Although Python 2 is nearly at its end of life, this only holds for the core developers, according to Brown, and for users, Red Hat and other distributors will keep Python 2 alive “until the goddam end of time.”

Un poco confrontacional ¿no? Si corporaciones mastodónticas quieren seguir usando Python 2 están en su pleno derecho pero me parece que forzar a gente voluntaria a seguir dando soporte no está justificado. Que empiecen a mandar dinero a espuertas y hablamos.

Ever since asyncio was announced she has had to explain why Twisted is still worthwhile, and now that data classes are in the standard library Hynek Schlawack must defend his attrs package.

No entiendo por qué esto es malo. La gente que quiera seguir usando Twisted usará Twisted, y la gente que necesite asyncio, trio o curio usará eso. Me parece desviar la atención.

“We should embrace PyPI,”

No. https://github.com/pypa/pip/issues/988

Van Rossum argued instead that if the Twisted team wants the ecosystem to evolve, they should stop supporting older Python versions and force users to upgrade. Brown acknowledged this point, but said half of Twisted users are still on Python 2 and it is difficult to abandon them.

Sin comentarios.

Pablo Galindo Salgado was concerned that moving modules from the standard library to PyPI would create an explosion of configurations to test, but in Brown’s opinion, “We are already living that life.” Some Linux and Python distributions have selectively backported features and fixes, leading to a much more complex set of configurations than the core team realizes.

Concedido.

En resumen: esta argumentación me parece muy floja o directamente engañosa, pero más allá de eso, coincido en que se podrían quitar (“sacar”, como dicen los argentinos) algunas cosas de la stdlib que sean muy pesadas o estén poco mantenidas.