Бретт Кэннон (Brett Cannon)

Канадский программист и инженер, один из core-разработчиков Python. Внёс значительный вклад в: систему импортов (importlib), переход с Python 2 на Python 3, развитие стандартной библиотеки документацию, участвовал в разработке ключевых PEP.

6 Марта, 2026 г.

Гвидо: Я пытаюсь собрать воедино раннюю историю сообщества core-разработчиков Python и личные воспоминания людей о том, как они нашли Python или как Python нашёл их. Бретт, как ты впервые услышал о Python или узнал о нём? Не когда начали вносить свой вклад, а когда ты впервые прочитали или написали первую строку кода на Python?

Бретт: Осенью 2000 года я искал язык, который мог бы научить меня объектно-ориентированному программированию, потому что, когда я был в университете, я планировал пройти вводные курсы по CS(Computer Science).

Гвидо: Тогда ты ещё продолжал учиться в университете, верно?

Бретт: Верно. Я готовился к получению степени бакалавра. Я собирался изучать философию, но одновременно хотел изучать и компьютерные науки. По каким-то причинам я не мог получить вторую специальность, но всё равно хотел пройти эти курсы. Вводный курс CS 61A включает вступительный экзамен и я боялся, что там могут возникнуть вопросы по объектно-ориентированному программированию. К тому времени я уже изучал C. Так что я искал язык, на котором можно было бы немного подучить программирование, прежде чем сдавать этот экзамен.

Гвидо: Ну, можно было выбрать C++ или Java.

Бретт: Да, возможно.

Гвидо: В 2000 году это были бы очевидные варианты.

Бретт: Я начал искать языки для изучения объектно‑ориентированного подхода.

Гвидо: Ты просто искал в Google?

Бретт: Не помню точно, как я тогда искал. Возможно, это был Alta Vista или HotBot, один из ранних поисковиков.

Гвидо: Alta Vista был хорошим.

Бретт: В общем, я натыкался на советы вроде «Perl пусть будет твоим шестым языком, а Python — отличный первый язык». Я попробовал Python и он мне сразу понравился. Прочитал руководство в документации, а ещё, кажется, книгу O'Reilly: не «Programming Python» Марка Лутца со змеёй на обложке, а «Learning Python» с мышью. Не уверен, была ли она уже в продаже, но если была, я её прочитал — я всегда предпочитал книги. [Она была. — Гвидо]

Гвидо: Это была книга Алекса Мартелли?

Бретт: Нет, это был Марк Лутц.

Гвидо: А, у Мартелли это была «Python Cookbook».

Бретт: Да, верно. Так я познакомился с Python и полюбил его. Ирония в том, что ООП мне для вступительного экзамена так и не понадобилось. Но Python мне понравился настолько, что я продолжал его использовать — и использую до сих пор. Вот так я нашёл Python, и Python нашёл меня.

Гвидо: А ты всегда был тем человеком, который пишет небольшие скрипты? Или ты предпочитал писать большие программы?

Бретт: Я постоянно принимал участия в разных небольших проектах, или мне нужно было что‑то сделать для задания[в университете], и для этого проще было писать код на Python. Так что всякий раз, когда у меня появлялась возможность выбрать язык программирования, я в то время выбирал Python.

Гвидо: Какие языки ты знал до Python?

Бретт: C.

Гвидо: Только C?

Бретт: Немного Pascal, но не много. В основном — только C.

Гвидо: К 2000 году Pascal уже практически вышел из моды.

Бретт: Мой курс по Pascal был почему‑то коротким, даже не полный семестр. У них были проблемы с компилятором, и мы мало что могли с ним сделать. Так что в тот момент для меня это был, по сути, просто C. Переход на Python был совершенно другим миром — никаких проблем с компилятором, а REPL [Read‑Eval‑Print Loop] стал для меня настоящим открытием.

Гвидо: Как скоро после этого ты стал участников сообщества? Когда впервые начал читать рассылку или новости Python?

Бретт: Это зависит от того, что именно можно называть сообществом. По‑моему, в следующем году ActiveState запустила веб‑сайт Python Cookbook — место, где можно загружать и делиться полезными фрагментами кода, вещами, которые не стоили того, чтобы помещать их в хранилище Parnassus. Это то, что О'Рейли в конечном итоге превратил в кулинарную книгу по Питону. Я представил несколько рецептов, и именно так я познакомился с Алексом Мартелли — я представил рецепт, который в итоге попал в первое издание кулинарной книги.

«Vaults of Parnassus» в контексте Python — это неофициальное, шутливое название старого архива примеров и полезных скриптов на Python, который существовал в начале 2000-х. Его замена это PyPI. Само выражение — литературная игра: Парнас (Parnassus) в греческой мифологии — гора, где жили музы и хранились источники знаний. То есть, «Vaults of Parnassus» буквально можно перевести как «Сокровищницы Парнаса» — место, где хранились «сокровища» знаний о Python.

Гвидо: Какой рецепт это был?

Бретт: Это был самый большой и последний рецепт в книге: чистая Python‑реализация strptime, которого тогда не было на Windows. Мне не понравилась моя первая версия, потому что нужно было указать всю информацию о локали, но я придумал, как ее переделать. Именно это привело меня к core-разработке: в мае 2002 года, через неделю после выпуска, я спросил Алекса, как включить это в стандартную библиотеку. Он посоветовал мне python-dev. Я отправил электронное письмо в середине июня, Франсуа Пинар ответил и помог мне с оформлением, и примерно через месяц появился time.strptime. Я никогда не отписывался от этой рассылки.

python‑dev — это официальная рассылка для core‑разработчиков Python, где обсуждались: новые функции и изменения в языке, исправления багов, предложения по улучшению стандартной библиотеки, вопросы по совместимости и дизайну.

Изначально, сейчас рассылка в архиве, это был главный канал общения для core‑разработчиков, до того как GitHub и другие платформы сделали обсуждения кода публичными. Любой, кто хотел влиять на язык на уровне ядра, мог подписаться и участвовать в обсуждениях.

Гвидо: Когда ты начал публиковать свои обзоры на python‑dev?

Бретт: Август 2002, кажется.

Гвидо: В том же году. Быстро!

Бретт: У меня бакалавриат по философии, я взял вводный курс по CS и курс по AI для бакалавров в Калифорнии. Хотел двойную специализацию, но не получилось из‑за лимита единиц в системе UC. Решил пойти в аспирантуру по CS, но отсутствие диплома могло помешать, поэтому взял год перерыва, чтобы улучшить резюме и подаваться в аспирантуру. Так я получил время для участия в python‑dev. Когда я закомиттил изменения для strptime - этот опыт мне понравился и я решил остаться и следить за python‑dev. Мне нравилось взаимодействовать со всеми. Потом я заметил, что обзоры python‑dev больше не ведутся — их раньше делал Эндрю Качлинг, но у него не хватало времени. Я вызвался.

Гвидо: Эндрю делал обзоры до тебя?

Бретт: Да. Он перестал, а я продолжил. Думаю, тогда он работал в CNRI с Нилом над Quixote — их веб‑фреймворком. Там была специальная DSL для строк [пример], где их не нужно было выводить на экран, чтобы они появлялись в выводе.

Гвидо: Многие пробовали что‑то подобное, обычно это не очень удобно.

Бретт: В любом случае, я счёл обзоры для рассылки python-dev хорошей возможностью учиться — я читал письма и мог задавать «глупые» вопросы, на которые все охотно отвечали. Я начал в августе или сентябре 2002.

Гвидо: Отличный пример того, как можно стать участником сообщества.

Бретт: Да, все быстро узнали меня, и задавать вопросы было легко.

Гвидо: Все ценят такие обзоры, но мало кто хочет добровольно это делать.

Бретт: Верно. Это была не основная цель, но благодаря обзорам разработчики ядра меня узнали, а остальные могли следить за событиями. Я делал их несколько лет — кажется, пока учился в аспирантуре, до PhD. Два‑три года.

Гвидо: Что еще ты помнишь из раннего периода твоей активности в сообществе? Кто еще там был и что обсуждалось?

Бретт: Тогда это было в начале версии 2.x — сразу после выхода 2.2 или, может быть, 2.1. Кто там был? Мартин [фон Левис], Нил Норвиц, Марк‑Андре [Лембург], Эндрю Кюхлинг, Алекс Мартелли, Тим [Питерс], Джереми [Хилтон]. Все оригиналы. Там был Рэймонд [Хеттингер]. Грег [Штейн] был там. Джек [Янсен] все еще был рядом. Это все еще была небольшая группа. Я присоединился к ней незадолго до первого PyCon US в Вашингтоне в 2003 году. Я помню, как пришел на это мероприятие и встретился со всеми в зале для спринта. Очевидно, там был Барри [Ворсоу]. Это было еще то время, когда многие люди просто не знали языка вообще или просто говорили: «О, этот язык с пробелами». Он был не слишком популярным, чтобы все были страстными энтузиастами. Многие из нас, возможно, использовали его на работе, а многие и вовсе не использовали.

Гвидо: Я сам был страстным любителем.

Бретт: Точно. Он все еще был достаточно мал, чтобы, если вы хотели что‑то изменить, вы просто делали это. Если вам нужна была помощь, вы просто просили. Обсуждения никогда не были слишком масштабными — иногда они становились масштабными, но к тому времени у нас уже были PEP'ы.

Гвидо: Думаю, Барри начал PEP почти сразу после ухода из CNRI.

Бретт: Ты придумал это в BeOpen, до всего этого.

Гвидо: Помнишь Пинга?

Бретт: Да, Ка-Пинг Йи(Ka‑Ping Yee) был активным участником сообщества. Он пришел в PyCon и сказал мне, что ему не понравилось, что я избавился от распаковки кортежей в параметрах

Гвидо: Это появилось в Python 3. Я был за то, чтобы убрать это.

Бретт: Я тогда спросил тебя, могу ли я это сделать. Это обсуждалось в 2007 году, когда PyCon US проходил в Техасе. Пинг подошёл к микрофону и сказал: «Не удаляйте это». Тогда он определенно активно работал с pydoc и cgitb.

Гвидо: Inspect был тоже его проектом. И он участвовал в редизайне исключений — создании цепочки: «это исключение возникло во время обработки того».

Бретт: Да, он всё тщательно продумал.

Гвидо: Надо пригласить его на интервью. Мы до сих пор друзья.

Бретт: Это было бы здорово. Но да, тогда команда была меньше. Было немного проще. На тот момент у нас никогда и сотни разработчиков — может быть, 50, и, вероятно, половина из них не была активна. Число активных разработчиков составляло около 20 человек.

Гвидо: Сейчас у нас больше активных участников.

Бретт: Я помню, что долгое время я следил за этим как за способом подтолкнуть компании к тому, чтобы люди были более активными на работе. Например: "Пожалуйста, позвольте своим сотрудникам, которые являются основными разработчиками, делать больше, потому что у нас не так много активных." или "Пожертвуйте в PSF, чтобы когда‑нибудь мы могли нанять людей, как мы, наконец, делаем сейчас, для оказания постоянной помощи, потому что у многих из нас просто не было времени на работу."

Гвидо: Да, у нас сейчас как минимум четыре штатных разработчика. Это Лукаш, Петр, Сергей и Сет — специалист по безопасности.

Бретт: Инженер по безопасности в штате. С точки зрения PSF, Сета не называют разработчиком‑резидентом, потому что он финансируется в рамках проекта Alpha‑Omega — инициативы в области безопасности, реализуемой совместно с Google и другими компаниями с целью повышения безопасности важных проектов с открытым исходным кодом. Они делают пожертвования в PSF, чтобы покрыть расходы на Сета. Но тогда было нетипично работать над Python в рамках своей основной работы. Почти всё время было посвящено волонтерской деятельности, свободным временем. Не все из нас даже использовали Python на работе. Просто было много увлеченных пользователей.

Python Software Foundation (PSF) — некоммерческая организация, занимающаяся разработкой и распространением языка программирования Python, основана 6 марта 2001 года.

Гвидо: Это всё ещё происходит.

Бретт: Это всё ещё происходит. В общем, PyCon US — тогда я и попал в PSF, сам того не зная. Меня номинировали, а я не знал. На следующий день после голосования все подошли ко мне на PyCon и поздравили! Я спросил: «За что?» Они ответили: «Тебя избрали в PSF». Я даже не знал, что меня номинировали...

Гвидо: И это было тогда, когда в PSF было около 30 членов? Каждый новый член должен был быть одобрен существующими.

Бретт: Это было очень мало. В следующем году, в 2004 году, на моей первой личной встрече PSF мы все просто сидели за парой столов в Вашингтоне.

Гвидо: Не совсем подходящий способ проведения этого мероприятия, способствующий разнообразию.

Бретт: Согласен. А затем, вскоре после этого PyCon, я получил своё право на коммит как core-разработчик. Я сказал, что могу кое‑что исправить, но мне нужен кто‑то, кто бы это закомитил это. Ты спросил: «О, у тебя ещё нет прав на коммит?». Я думаю, Рэймонд зашёл в SourceForge и нажал кнопку. Я сделал свой первый коммит 18 апреля 2003 года.

SourceForge — это один из старейших онлайн-сервисов для размещения и распространения программ с открытым исходным кодом. Он появился в 1999 году и долгое время был одним из главных хабов для open-source проектов, в т.ч. и для Python.

Гвидо: Ещё на SourceForge с CVS?

Бретт: Да, потом перевёл на Subversion, потом на Mercurial, Mercurial на Git, SourceForge на Roundup, потом на GitHub.

Гвидо: Это было в первые дни, когда SourceForge еще не был источником зла.

Проблемы в SourceForge начались в 2012 году, когда сайт купила коммерческая корпорация Dice Holdings. Новым владельцам нужна была прибыль с аудитории, и они начали внедрять крайне токсичные практики. Например, SourceForge запустил программу DevShare. Они стали брать популярные бесплатные программы и оборачивать их в свои собственные установщики. Когда пользователь скачивал, например, утилиту для конвертации видео, установщик SourceForge подсовывал ему тулбары, менял поисковик в браузере на Yahoo и устанавливал рекламное ПО. Часто кнопка «Отклонить» была обманкой.

Когда популярные проекты (например, GIMP или FileZilla) устали от политики SourceForge и переехали на GitHub, SourceForge не удалял их старые страницы. Вместо этого они зеркалили проекты, продолжали обновлять страницы и раздавать старые версии файлов, обернутые в их рекламный установщик. В 2013 году создатели GIMP обнаружили это и написали гневное открытое письмо и потребовал удалить их проект. Это стало громким скандалом — «эффектом Стрейзанд» для SourceForge. За GIMP потянулась масса других проектов, которые начали массово удалять свои аккаунты.

Бретт: Да. Помню ещё Дэниела Берлина.

Гвидо: Кто он? Юрист и программист?

Бретт: Он был юристом в Google. Он был в списке рассылки и однажды говорил о том, что хотел бы, чтобы был способ заставить модули thread и threading работать в непоточных сборках. В итоге я создал модули dummy_thread и dummy_threading в качестве оболочки, основываясь на его идее. У него не было времени, но это было во время моего годового перерыва, так что я нашёл его. Это были мои первые самостоятельные модули в стандартной библиотеке.

Гвидо: Однако он никогда не был core-разработчиком – только участником python-dev.

Бретт: Да, только на python‑dev. Иногда предлагал идеи.

Гвидо: Кто ещё был активным участников в то время?

Бретт: Марк‑Андре, Я думаю, что Пи Джей [Филлип Дж. Эби] к тому времени тоже был на слуху. Мартин, очевидно.

Гвидо: Мартин был гораздо более важной фигурой, но Филлип тоже сделал много полезного для сообщества.

Бретт: Я начал замечать стили написание кода у разных людей. Именно так я понял, что Пинг написал inspect — мне пришлось редактировать код, и я узнал его стиль.

Гвидо: Как распознать стиль Пинга?

Бретт: Просто по структуре. Не слишком сложный, но узнаваемый. Я уже не могу точно это сформулировать — это было во время моей работы над диссертацией, когда я занимался importlib. А Филлип был чем‑то похож в плане сложности. Он писал много кода, но уровень гибкости, который он создал, на мой взгляд, был доведен до крайности.

Гвидо: Я всегда неохотно делаю всё расширяемым. Моя цель — не быть готовым ко всему, что может принести будущее, потому что будущее всегда приносит что‑то неожиданное.

Бретт: Именно. Невозможно точно это предсказать.

Гвидо: Помнишь когда начал Раймонд Хеттингер?

Бретт: Он начал примерно на год раньше меня — он получил свой коммит в 2002 году, я свой. Затем был Python 3: мы с Эндрю Кухлингом помогали писать PEP 3000, который позже стал PEP 3100, когда мы взяли на себя разработку PEP 3000 для мотивации. А потом — переработка стандартной библиотеки.

Гвидо: PEP 3100 представлял собой набор различных функций Python 3 — большой список мелочей. Некоторые из них сами по себе заслуживали бы отдельного PEP.

Бретт: Эндрю изначально начал этот PEP, и я так сильно ему помог, что он сделал меня соавтором. Не знаю, дошёл ли он до конца — это был долгий процесс. У нас с Фредом Дрейком было неофициальное соревнование, кто удалит больше строк из стандартной библиотеки при переходе с Python 2 на Python 3. Мне досталось удалить пакет компилятора, так что, думаю, я победил.

Гвидо: Откуда взялся пакет компилятора?

Бретт: Это было ещё до меня. Мы решили от него избавиться, потому что он не справлялся с задачами. У нас был новый компилятор, над которым работал Джереми, и вы поставили крайний срок его завершения на PyCon в Техасе, возможно, в 2006 году. Я подключился, чтобы помочь, и тогда мы вовремя закончили AST(Abstract Syntax Tree — Абстрактное синтаксическое дерево). Но пакет компилятора мы так и не успели закончить, поэтому в итоге мы добавили модуль ast, чтобы заменить его.

Гвидо: В чём был смысл пакета компилятора?

Бретт: Я думаю, что это был чисто Pythonic‑способ работать с синтаксическим деревом и настраивать использование байт‑кода — потому что мы не раскрывали внутренние компоненты, а модуля ast еще не было. Но, честно говоря, я не помню подробностей. Мы просто устали от необходимости реализовывать все дважды: один раз для интерпретатора и один раз для этого пакета.

Гвидо: У нас все еще есть проблема с модулями, реализованными как на C, так и на Python. Версия Python часто используется только в PyPy.

Бретт: Да, и это моя вина — ускоритель PEP. Я написал это, чтобы сказать: если вы пишете модуль ускорителя на C, у вас должна быть чистая эталонная версия Python, чтобы другие реализации могли работать на нем. В то время это имело смысл, потому что существовали Jython, IronPython и PyPy, которые пытались заново реализовать стандартную библиотеку с нуля. Но поскольку IronPython и Jython не перешли на Python 3, теперь в основном остаемся только мы и PyPy. Я не буду называть это мертвым грузом, но это своего рода бремя.

Гвидо: Я думаю, что PEP был хорошей идеей в то время. Это было улучшением по сравнению с шаблоном, в котором profile и cProfile имели слегка отличающиеся API.

Бретт: Да, лучше, чем subtle различия profile/cProfile.

Гвидо: Часто PEP'ы были написаны на основе какой‑то моей идеи.

Бретт: Иногда. Это была смесь — иногда у тебя была идея, и кто‑то ее излагал, иногда люди приходили со своими собственными идеями.

Гвидо: Хуже всего, когда PEP предлагаются людьми, совершенно не принадлежащими к сообществу. У таких людей почти никогда нет шансов.

Бретт: Вот почему мы представили спонсоров PEP. И именно поэтому мы с Тайтусом Брауном создали python‑ideas — как фильтр для python‑разработчиков, потому что мы получали так много непродуманных предложений.

Гвидо: Что ты помнишь о Титусе Брауне?

Бретт: Титус — профессор эволюционной биологии, широко использующий Python в научных целях. Он был активным участником сообщества, по‑настоящему увлеченным тестированием. Мы с ним вместе основали python‑ideas. Это было, когда мы пытались улучшить соотношение сигнал/шум в python‑dev. Затем python‑идеи сами по себе стали скандальными, и нам впервые пришлось ввести кодекс поведения.

Гвидо: Был ли python-ideas первым списком рассылки с кодексом поведения?

Бретт: Я так думаю. После того, как PSF создал такой кодекс, мы сразу же его приняли. Это было в те времена, когда нужно было обосновать наличие кодекса поведения вообще.

Гвидо: Многие люди были против него.

Бретт: Было много непонимания того, зачем они(кодексы поведения) существуют. Люди боялись, что против них будет использовано оружие. Но мы сказали: цель — защитить людей и заставить их чувствовать себя комфортно. Если мы будем злоупотреблять этим, вы можете пожаловаться в PSF и добиться удаления нас из списка администраторов. В конце концов, люди успокоились, когда увидели, что это используется только против действительно плохих участников.

Гвидо: Если ты посмотришь в настоящие архивы и попытаешься проверить факты, то увидишь, что всё совершенно не так.

Бретт: Я перепутал даты в документальном фильме, верно? Я назвал не тот год для моей стажировки у вас — я знал, что она перешла календарную границу с осени на зиму, но я сказал, что закончилась в 08-м, хотя на самом деле началась в 08-м.

Гвидо: Как тебе эта стажировка?

Бретт: Это было весело. Это была команда разработчиков App Engine. После этого я присоединился к команде на полную ставку. Было здорово пообщаться с вами и остальной командой в SF. Что касается меня лично, то это было зимой, после того как моя девушка бросила меня, а затем покончила с собой... Я все еще восстанавливался, так что было здорово уехать из Ванкувера и сменить обстановку.

Гвидо: Это было до того, как ты встретил Андреа?

Бретт: Да. Я познакомился с Андреа в мае 2009 года, после стажировки. Я вернулся в школу на пару месяцев, и мы встретились, играя в софтбол. Что ещё… Весь этот переход от 2 к 3. Importlib и система импорта — моя переработка, включающая загрузку кода на Python в основные части интерпретатора. А когда я закончил учебу, я два месяца работал в PSF, чтобы написать руководство для разработчиков.

Гвидо: Ты написал руководство для разработчиков с нуля?

Бретт: С нуля. Это было далеко не то, что сейчас, — гораздо меньше. В феврале 2011 года я защитил докторскую диссертацию, до начала работы в Google оставалось два месяца, и все это время я работал подрядчиком в PSF.

Гвидо: Это большая и важная работа.

Бретт: Я записал все это для выступления на EuroPython, и было странно видеть, как огромны эти списки. С другой стороны, я занимаюсь этим уже 22 года. Еще не прошло и половины моей жизни — я думаю, что в октябре 2027 года я достигну середины пути.

Гвидо: Я сам нахожусь примерно на полпути — я начал заниматься Python примерно в 1990 году, когда мне исполнилось 34 года.

Бретт: Я получил своё право коммита в апреле 2003 года, до того, как мне исполнилось 25. Сейчас мне исполняется 47.

Гвидо: Это была «веселая» поездка. Я предполагаю, что для тебя она тоже была напряженной?

Бретт: Что ж, об этом рассказывается в документальном фильме — о твоём уходе на пенсию и голосовании.

«Кризис PEP 572»

В июле 2018 года создатель Python Гвидо ван Россум неожиданно отказался от титула BDFL (Benevolent Dictator for Life — Доброжелательный диктатор на всю жизнь) из‑за сильного выгорания и токсичности многолетних споров вокруг PEP 572 (предложение добавить в язык оператор присваивания :=, известный как «моржовый оператор»). Его уход создал сильный вакуум в руководстве: за 27 лет язык впервые остался без высшего арбитра, что вызвало панику и страх паралича разработки. Попытки сообщества выбрать новую модель управления обернулись хаосом из‑за «бесконечной регрессии» — разработчики не могли договориться даже о том, как именно голосовать, что довело Гвидо до отчаяния и шуточной идеи назначить нового диктатора. В итоге core‑разработчики собрались с силами, применили метод голосования STAR и утвердили PEP 13, внедрив Руководящий совет из пяти человек. Таким образом, Python успешно перешел от единоличного управления к групповой демократии: Гвидо помогал новому совету около года, а затем окончательно отошел от дел. Этот переходный период стал невероятно стрессовым как для Гвидо, пострадавшего от токсичности сообщества, так и для Бретта Кэннона, которому пришлось выступать в роли миротворца и буквально уговаривать разработчиков перестать спорить о процедурах, чтобы спасти язык от развала.

Гвидо: Ты признался, каким стрессом это было для тебя. Я никогда не предполагал, что это может вызвать у кого‑то стресс, потому что я был так сосредоточен на своей собственной ситуации.

Бретт: Моя позиция в отношении правил поведения и выявления плохого поведения привела к тому, что люди приходили ко мне со своими проблемами. У меня были моменты стресса, потому что люди делились своими стрессовыми ситуациями — обычно это были межличностные проблемы в команде. Плюс соблюдение кодекса поведения в python‑ideas, ‑discussy и других местах. Я был членом рабочей группы по ведению бизнеса в PSF. Я всегда воспринимал это как способ вернуть деньги, потому что я находил python‑dev таким гостеприимным и хотел помочь сохранить его таким. Теперь я хочу, чтобы это было достаточно радушно, чтобы, если мой собственный ребенок решит принять в этом участие, я мог сказать: дерзай, без колебаний.

Период твоего выхода на пенсию и выбора того, что делать, был трудным, потому что не было никакой гарантии, что мы сможем действовать сообща. Там было несколько очень сильных личностей с очень твердыми взглядами, и для того, чтобы привести всех в соответствие, требовалось много усилий — то, что я называю мягкой силой. Те из нас, кто проработал в команде некоторое время, пытались сказать: давайте организуемся и доведем дело до конца, давайте не будем ссориться. Но было так много споров по мелочам.

Гвидо: Было пять конкурирующих PEP с разными предложениями по управлению.

Бретт: Честно говоря, соперники были великолепны. Самым напряженным моментом была система голосования. Как только мы поняли, как будем выбирать, все просто записали свои идеи, и мы проголосовали. Кто бы ни победил, он победил.

Гвидо: Никто не возражал против того, как проводилось голосование?

Бретт: В итоге, нет. Но труднее всего было понять, как голосовать.

Гвидо: Проголосовать за то, что я называю конституцией?

Бретт: Да. Помнишь, ты написал нам с Барри по электронной почте о том, как ты был расстроен? Однажды, когда ты ехал на Caltrain на работу, ты написал нам по электронной почте: «Я действительно расстроен, может быть, мне стоит просто назначить Бретта BDFL». Затем вы сели в поезд. К тому времени, как вы добрались до работы, вы успокоились и сказали: «Давайте посмотрим, все ли смогут с этим справиться». Так что, по‑видимому, в течение двух часов я потенциально мог стать представителем BDFL.

Гвидо: В чем заключались разногласия?

Бретт: Мы буквально не могли решить, как голосовать. Мы не могли решить, как принимать решение. Голосование по принципу относительного большинства(голосование только за одного) или по принципу одобрения(голосование за любое количество кандидатов)? Анонимно? Мы быстро согласились использовать PEP'ы для подачи предложений, но механизм голосования постоянно менялся. Настоящая проблема заключалась в том, что, поскольку вы сказали, что все зависит от нас, у нас не было возможности принять окончательное решение. Мы все должны были безоговорочно согласиться, но не было механизма, который позволил бы прекратить дискуссию.

Гвидо: Это и было моей целью.

Бретт: Я знал, что так оно и было. Но это усложняло ситуацию, потому что у нас не было возможности сказать «Хорошо, мы решили» — мы все должны были каким‑то образом решить, что достигли достаточного согласия.

Гвидо: Должен был быть график, администратор выборов. Дело было не в том, проголосовал ли кто‑то дважды, а в том, когда мы будем готовы, по какому вопросу мы голосуем, по какой системе голосования.

Бретт: Точно. Те из нас, у кого был хоть какой‑то авторитет, пытались применить мягкую силу, склоняя всех к решению. Вы не можете голосовать за то, как вы собираетесь голосовать ‑...

Гвидо: Вы получаете бесконечный регресс.

Бретт: Точно. А если кто‑то не согласен, то в какой момент вас это волнует? Если Барри это не нравится, это не похоже на то, что кто‑то только что стал core‑разработчиком. Не было никакой возможности окончательно заявить «мы закончили» — это должно было быть ощущение, что всех все в среднем устраивает и жалоб нет. Я не знаю, было ли это из‑за усталости или мы, наконец, поняли, что нам нужно заканчивать, потому что это было публично и люди следили за этим. Но мы сделали это.

Гвидо: Я вижу, что конфликты напрягают тебя больше, чем самих ссорящихся.

Бретт: Возможно. И я не хотел, чтобы проект прекратил свое существование. У меня здесь достаточно друзей, и было бы очень грустно, если бы мы больше не могли общаться только потому, что проект распался.

Гвидо: Мне никогда не приходило в голову, что Python может умереть. К 2018 году он уже входил в топ-10, если не в топ-5, языков программирования.

Бретт: Дело не в том, что разработка исчезнет. Речь шла скорее о том, что произойдет с командой разработчиков, если мы серьезно не сможем договориться.

Гвидо: Думаю, меня это тоже напрягало. Но все обошлось.

Бретт: У нас есть руководящий совет. Мы с тобой сделали это в один раз, я делал это еще четыре раза, и, похоже, это сработало.

Гвидо: Я бы хотел, чтобы срок полномочий был ограничен пятью годами. У нас это всегда получалось как‑то случайно.

Бретт: Изначально я предлагал пять или десять лет, но меня отвергли. Поэтому, уходя с поста, я остался при своём — отчасти потому, что знал, что скоро стану отцом, отчасти чтобы сдержать слово. Я по‑прежнему считаю, что это хорошая идея. Томас случайно помог сохранить эту традицию. Посмотрим, как поступит Пабло — думаю, он следующий, у него пять лет. А вот со сроком Барри сложнее рассчитаться, так как он взял перерыв.

Гвидо: Я считаю, что ограничения на количество сроков должны суммироваться, как у президентов США — по общему количеству лет пребывания в должности, а не по последовательности.

Бретт: Я тоже это поддерживаю. Возможно, стоит предложить это.

Гвидо: Если ты захочешь это предложить, я буду рад. Не думаю, что это вызовет большие споры.

Бретт: Это одна из особенностей этой системы. Возможно, из-за того, что мы занимаемся этим уже достаточно долго, люди примут это. Нам нужно было бы изменить PEP 13.

Гвидо: Думаю, чтобы изменить PEP 13, достаточно простого голосования. Я ввёл голосование STAR — это не было PEP, просто голосование на Discourse.

Бретт: Верно. Думаю, я бы просто предложил это, и, если есть будет общее согласие, провести опрос в течение двух недель в категории "коммиттеры".

Гвидо: Нужно убедиться, что голосовать могут только коммиттеры, а результаты не будут обнародованы до закрытия голосования.

Бретт: Если я буду это делать, то, вероятно, в следующем месяце, то есть задолго до того, как мы начнем принимать кандидатуры.

Гвидо: Сейчас середина сентября. У нас еще много времени.

Бретт: Я могу это сделать, не проблема.

[Бретт этого не предлагал. В декабре 2025 года Томас Ваутерс был избран на шестой срок после годичного перерыва. – Гвидо]


Перевод был сокращен для читаемости.

Пожалуйста, используйте ⌘/CTRL + Enter для отправки сообщения об ошибке в выделенном фрагменте текста.