Начиная с первой версии Python, развитием языка занимался его создатель — голландский программист Гвидо ван Россум, нареченный в рамках языка неофициальным, но очень солидным для open-source сообщества титулом Benevolent Dictator for Life (BDFL), что можно перевести как Бессрочный Великодушный Диктатор. По мере усложнения Python всё большую роль в его развитии стало играть комьюнити, и в июле 2018 года Гвидо отказался от титула. Начиная с версии 3.8, за будущее Python отвечает руководящий совет в составе нескольких известных разработчиков. В этом посте мы подробней расскажем о том, кто и как направляет развитие одного из главных языков программирования в современном мире.
Итак, в июле 2018 Гвидо сложил BDFL-полномочия и «ушёл на каникулы». Единоличного преемника он не объявил, а вместо этого попросил нескольких ключевых разработчиков языка определять, как он будет развиваться в дальнейшем.
К тому времени уже 18 лет Python успешно развивался с помощью PEP (Python Enhancement Proposal) — предложений по улучшению языка. Предложение должно быть оформлено как дизайн-документ с описанием новой фичи и пояснениями для сообщества. За обсуждение и правки предложения отвечает его создатель. Предложения загружаются в виде текстовых файлов в репозиторий текущей версии — таким образом можно отследить всю историю работы над ним.
Новую модель управления также выбирали через PEP. Было предложение выдвинуть нового BDFL — ему даже придумали аббревиатуру GUIDO (Gracious Umpire Influencing Decisions Officer), в честь имени создателя. Думали и о том, чтобы полностью децентрализовать управление, полагаясь на консенсус в результате голосования — как это делают в DAO. Но в результате было выбрано нечто среднее — модель руководящего совета. Работа совета еженедельно логируется в отдельном репозитории (правда, на момент написания статьи логи заканчивались июлем 2023 года).
Руководящий совет состоит из пяти человек и переизбирается после каждого мейджор-релиза языка группой разработчиков ядра Python. Общий список проголосовавших доступен в репозитории. Они же и выдвигают кандидатуры; никто не запрещает выдвинуть самого себя. В ноябре 2022 года прошли последние на данный момент выборы: новый состав совета отвечает главным образом за версию 3.12, которая сейчас находится в предрелизной стадии.
В ноябрьских выборах участвовали восемь кандидатов. Каждый из них опубликовал пост, где изложил свой опыт, а также свои приоритеты в случае избрания. Пятёрка лидеров, сформировавших новый руководящий совет, выглядит так:
Пабло Галиндо Сальгадо (Pablo Galindo Salgado) — 61 голос. Более 5 лет работает в Python Software Foundation и чуть дольше — в Bloomberg.
Грегори П. Смит (Gregory P. Smith) — 48 голосов. Мастодонт Python, помогающий развивать язык уже лет 20.
Эмили Морхаус (Emily Morehouse) — 47 голосов. Основатель и глава разработки Cuttlesoft, пятилетний опыт разработки ядра Python.
Бретт Кэннон (Brett Cannon) — 42 голоса. Старожил команды Python, как и Грегори Смит, с опытом в 20 лет. Также руководит разработкой направления Python для Visual Studio Code в Microsoft.
Томас Вутерс (Thomas Wouters) — 39 голосов. Опытный разработчик, участвовавший еще в советах первого созыва. А также разработчик в Google, в команде поддержки Python-инфраструктуры компании.
Недавно Пабло Сальгадо, член действующего управляющего совета и уверенный лидер последнего голосования, стал гостем подкаста StackOverflow, где рассказал о себе и о своей работе.
«Я думаю, многие удивятся, что по образованию я не разработчик, я физик. Да, сейчас я разработчик, но изначально это не моя сфера. Сначала программирование было частью моей работы в физике. Большинство физиков в качестве основного языка изучают Fortran — это дает интересный старт в программировании. И это даже не актуальный Fortran, а Fortran 77, релиз 1978 года.
Моя докторская была связана с вращением черных дыр. Эта область связана с очень сложными уравнениями, и чтобы люди вообще поняли, о чем речь, часто приходится прибегать к моделированию. Тогда мне пришлось изучить C и C++. Затем я решил поменять сферу деятельности на разработку ПО и начал работу в Bloomberg, в команде Python-инфраструктуры. Сейчас моя задача — сделать так, чтобы 8 тысячам питонистов компании было максимально комфортно работать. Но еще с начала карьеры в Bloomberg я был большим фанатом open-source движения и начал вкладываться в сообщество Python. Помню свой первый пул-реквест, он был связан с опечаткой в документации VR 2.0, там не хватало кое-каких импортов.
С тех пор я занимался в основном парсером и компилятором Python. Особенно запомнился этап перехода со старого парсера на новый. Три года назад я первый раз попал в руководящий совет. Я также успел побывать релиз-менеджером версий 3.10 и 3.11. Да, это просто человек, который пушит бинарный файл, но это все-таки ответственная работа, которую кто-то должен делать. Помню, как-то мы уронили репозиторий: переименовали master domain, и GitHub какое-то время выдавал ошибку 500. Но через некоторое время всё удалось поправить.
Путь от корректорских пул-реквестов до пул-реквестов в ядро прошел незаметно. Есть такой мем: «Инструкция как нарисовать сову. Шаг 1. Нарисуйте два овала. Шаг 2. Нарисуйте остальную чертову сову». То есть ты просто понимаешь, как делать что-либо, а потом делаешь без всяких инструкций.
Исправления опечаток и тому подобного — это очень хороший старт для такой деятельности. Людям, которые долго работают над одним проектом, порой не хватает свежего взгляда на документацию, они видят ее иначе.
Начав вкладываться в Python, я познакомился с прекрасными людьми из команды ядра, которые научили меня почти всему, что я знаю об open source. Но чтобы «нарисовать сову», этого недостаточно. Помимо хороших людей вокруг, нужна страсть к работе. Никто не платит тем, кто развивает открытый исходный код — по крайней мере в теории — так что необходимо получать кайф в процессе. Когда open source становится второй работой, да еще и бесплатной, нужно четко представлять, что тебя драйвит. В моем случае это новые знания и друзья. А также крутое ощущение от того, что я улучшаю основной компонент самого́ языка, на котором работаю. Без open source такая возможность появляется у очень немногих людей.
Моя основная работа в Bloomberg и вторая в Python дополняют друг друга. С первой работы я собираю обратную связь для второй, а благодаря знаниям, полученным на второй, формирую векторы развития на первой. Мне очень повезло, что Bloomberg позволяет мне половину рабочего времени проводить над ядром Python.
Долгое время Bloomberg полагался исключительно на C++, как финансовый гигант, требующий максимальной производительности. Но сейчас мы используем Python даже больше, чем «плюсы». Компания вкладывается в развитие языка, создает инструменты, библиотеки… и некоторые, вроде PyStack, становятся очень популярными. Убедить работодателя, что в этом есть смысл, — тоже один из этапов «рисования совы».
Со временем это начинает отлично работать на HR-имидж компании. Когда мы официально выкатили 3.11, то Bloomberg перешёл на неё почти сразу. После этого я не раз слышал на собеседованиях: «Я выбрал Bloomberg, потому что большинство гигантов сидит ещё на 3.10 или вообще на 3.8». Кстати, некоторые вообще ещё сидят на Python 2, потому что на нём завязаны очень критичные системы. Но сегодня мы гарантируем нормальную работу, начиная только с версии 3.5.
Вообще, долгое время развитие Python было сильно ограничено — из-за того, что в языке использовался синтаксический анализатор типа LL(1). Он работал исключительно в построчном режиме, и в своем понимании происходящего был ограничен только следующим токеном. Да, сейчас мы заменили парсер, но большая часть истории Python прошла под диктовку требований LL1 — и поэтому язык получился сравнительно простым для начинающих; чтение кода Python сопоставимо с чтением псевдокода или даже книги на английском.
Изменение парсера было большим шагом, который мы долго обсуждали. Не всё, что удобно читать человеку, удобно читать компьютеру, так что, в конце концов, мы это сделали. Но вместе с тем решили сохранять ту дружелюбность и читаемость, которую невольно обеспечил LL1. Теперь каждое изменение мы оцениваем и в ракурсе того, насколько сильно отступаем от этих принципов — насколько то или иное изменение будет «питонским» (pythonic). Нет однозначного ответа на то, как это можно охарактеризовать, но команда ядра Python разделяет здесь общие ценности, поэтому мы находим решения».
Ответ на самый интересный вопрос — «как успевать работать на второй бесплатной работе в open source» — в случае Пабло оказался совсем прост. Интересы его основного работодателя совпали с интересами сообщества Python. Как повторить такой успех? Можно искать основного работодателя, который активно использует уже интересный вам open source — здесь наверняка поможет нетворкинг в комьюнити — и договариваться с ним «на берегу». Либо, если вы уже закрепились в компании, искать ее точки соприкосновения с open source и попробовать закрепиться на них. Второй способ выглядит более туманным, но если ваш работодатель — крупная компания с разнообразнейшим стеком, то почему бы и нет?