Батарейки в python есть, но они протекают - Эмбер Браун в дискуссии с Гвидо




Перевод ранее опубликованной заметки

 

Amber Brown (контрибьютор в Twisted) поделилась своей критикой стандартной библиотеки Python. Это оказалось самой спорной дискуссий дня; Гвидо ван Россум буквально выбежал из зала во время панели вопросов и ответов.

 

Подробнее о саммите на языке Python в 2019 году.

 

Приложениям нужно Больше, чем “Стандартная Библиотека”

 

Есть утверждение, что Python поставляется с включенными “батарейками”, но, по словам Браун: без внешних пакетов это очень “этого не достаточно". Например, asyncio требует, внешнию библиотеку для подключения к базе данных или для работы с HTTP. Браун утверждала, что было много таких зависимостей от стандартной библиотеки до PyPI: типизация лучше всего работает с mypy, модуль ssl требует monkeypatch для подключения к доменным именам, отличным от ASCII, datetime нуждается в pytz, а six не является достаточным для написания кода для Python 2 и 3.

 

Другие стандартные библиотечные модули просто уступают альтернативам на PyPI. Документация по протоколу http, рекомендует клиенту использовать запросы, а модуль datetime сбивает с толку по сравнению со своими конкурентами, такими как arrow, dateutil и moment.

Низкое качество, отстающий функционал и устаревший код

 

- У "питона" батарейки протекают, - сказала Браун. Она думает, что некоторые ошибки в стандартной библиотеке никогда не будут исправлены. И все равно даже когда ошибки будут исправлены, библиотеки PyPI, такие как Twisted, не могут быть уверенными, что они будут работать на последнем Python, поэтому они должны сохранить свои хуки и обходные пути навсегда в своем коде.

 

Существует много библиотек, которые используются в очень небольшом количестве приложений, и но нет способа установить круг стандартных библиотек. Как Рассел Кейт-Мэги описывала ранее в тот же день - на своем докладе, размер стандартной библиотеки затрудняет запуск PyBee на большом круге устройств. Браун также отметила, что некоторые стандартные  библиотеки, были оптимизированы для классического СPython3 - но потом их пришлось переопределить для других реализациях Python

 

Стандартные библиотеки тормозят “инновации”

 

Наиболее спорное мнение Браун, по ее собственной оценке, заключается в том, что добавление новых модулей в стандартную библиотеку - подавляет инновации, препятствуя программистам пользоваться конкурирующим пакетам PyPI. Даже когда стандартные библиотечные модули вытесняют внешние проекты, они отстают от них. По словам Браун,” стандартная библиотека-это то, где код иногда умирает", потому что трудно и медленно вносить изменения в стандартную библиотеку языка. Она признала недавние улучшения, в частности, от усилий Mariatta Wijaya, но Python по-прежнему сложнее внести свой вклад, чем пакеты PyPI.

 

“Итак, я знаю, что многое из этого, по сути, пустая болтовня, - заключила она, - но с проблемой надо что-то делать.”

 

Обсуждение

 

Ник Коглен интерпретировал предложение Brown как обобщение модели "ensurepip", чтобы гарантировать, что некоторые пакеты всегда доступны, но могут быть обновлены отдельно от стандартной библиотеки, и он подумал, что это разумно.

 

Van Rossum был менее убежден. Он спросил снова: “Эмбер, какая ваша точка?" Браун сказал, что ее целью было переместить asyncio в PyPI вместе с большинством новых функций. “Мы должны поддерживать PyPI, - настаивала она. Некоторые экосистемы, такие как npm в Javascript, слишком полагаются на пакеты, признала она, но есть и другие, такие как Rust, которые имеют небольшие количество стандартных библиотеки и высококачественные репозитории пакетов. Она считает, что питон должен двигаться дальше именно в этом направлении.

 

Вместо этого ван Россум утверждал, что если команда Twisted хочет, чтобы экосистема развивалась, они должны прекратить поддерживать старые версии Python и заставить пользователей обновиться. Brown признал этот момент, но сказал, что половина пользователей все еще на Python 2, и им трудно отказаться от него. Спор на этом этапе стал личным для Ван Россума, и он сердито ушел.

 

Nathaniel Smith прокомментировал: "Я замечаю некоторую напряженность здесь."Он предположил, что Brown и основная команда говорили друг с другом, потому что у основной команды были разные проблемы с другими программистами Python. Brown пошела дальше, добавив, что, поскольку немногие разработчики Python core также являются основными хранителями библиотеки, жалобы авторов библиотеки обесцениваются или игнорируются.

 

Остальные основные разработчики продолжили техническую дискуссию. Барри Уорсо сказал, что основная команда обсуждала устаревшие модули в стандартной библиотеке или создание тонких дистрибутивов с подмножеством, но это требует тщательного проектирования. Другие возражали, что уменьшение стандартной библиотеки рискует нарушить нисходящий код или сделать работу для программистов на предприятиях, которые доверяют стандартной библиотеке, но не доверяют PyPI.

 

Пабло Галиндо Сальгадо был обеспокоен тем, что перенос модулей из стандартной библиотеки в PyPI создаст колапс конфигураций для тестирования, но, по мнению Браун, “мы уже живем этой жизнью”. Некоторые дистрибутивы Linux и Python имеют выборочные функции и исправления, что приводит к гораздо более сложному набору конфигураций, чем понимает основная команда.

 

перевод заметки https://pyfound.blogspot.com/2019/05/amber-brown-batteries-included-but.html