Как стать автором
Обновить

Как я стал core-разработчиком Python в 19 лет

Время на прочтение5 мин
Количество просмотров33K

20 сентября 2024 года я стал одним из участников команды разработки CPython.

Что значит CPython Core developer?

CPython Core Developer — это core-разработчик, имеющий официальные полномочия вносить изменения в исходный код интерпретатора CPython, который является самой распространённой реализацией языка Python. Коротко говоря, это те люди, которые могут мержить пул-реквесты в репозитории CPython.

Мои первые шаги в CPython

Первым моим пул-реквестом был фикс для документации. Это может показаться странным, но на самом деле такие изменения имеют смысл.

Именно такие небольшие изменения позволяют познакомиться с workflow проекта: как правильно оформлять коммиты, как устроена система CI, как проходит процесс ревью, как добавлять записи в раздел What's New, и в целом — как построено взаимодействие с другими участниками разработки.

Этот первый шаг особенно важен, потому что он снижает порог входа и помогает понять не только технические, но и социальные аспекты участия в проекте: как сообщество относится к новичкам, насколько оно открыто к диалогу и как формируется культура совместной работы. В случае с CPython всё оказалось очень здорово — core-разработчики оказались дружелюбными, терпеливыми и охотно шли навстречу.
Сейчас я понимаю, что если бы сообщество было менее дружелюбным, я бы скорее всего забросил этот путь.

Ревью пул-реквестов в основном делают triager'ы (о них я расскажу позже) и core-разработчики. Тем не менее, комментировать и ревьювить может абсолютно любой человек — это приветствуется. Однако чтобы пул-реквест был принят и влит в основную ветку, требуется как минимум одно одобрение (approve) от core-разработчика.

Выбор направления

После того как я освоился с процессами в проекте, встал вопрос: чем именно хочется заниматься? CPython — огромная кодовая база. Разобраться во всём просто невозможно. Даже среди core-разработчиков нет людей, которые досконально понимают каждую его часть.

Меня привлекли две темы — утечки ссылок и сегфолты. Всё своё дальнейшее время я посвятил именно им: поиску, анализу и исправлению. Это не только интересно, но и критически важно. Утечка ссылок почти всегда означает утечку памяти, а увидеть segfault при запуске своего Python-кода — то, чего не хочет никто.

Не буду лукавить: иногда такие баги выводят из себя. Они сложные, коварные, и требуют десятки часов, чтобы просто понять, в чём суть. Но каждый раз, когда мне удавалось что-то пофиксить, ощущение было сильнее любой усталости. Я знал, что это реально кому-то помогает. И это ощущение пользы заставляло меня двигаться дальше.

Становление участником Triage team

К середине 2023 года я уже чувствовал, что освоился с проектом и начал задумываться о следующем шаге — стать участником Triage Team. Но кто такие triager'ы? Это промежуточная роль между обычным контрибьютором и core-разработчиком.

У triager'а есть ряд привилегий, которые отличают его от рядового контрибьютора:

  • Возможность редактировать название PR/issue

  • Возможность закрывать PR/issue

  • Возможнось добавлять labels к PR/issue

Кроме того, triager'ов добавляют в организацию Python на GitHub и приглашают в закрытый канал Discord, где общаются другие triager'ы и core-разработчики. Эти два аспекта становятся своего рода признанием твоей активности и вовлеченности в сообщество CPython.

После компиляции в голове всей информации, я решил написать одному из core-разработчиков по поводу участия в triage team. К этому моменту я уже прекрасно понимал workflow и был готов помогать новым контрибьюторам.
И мне повезло! Мое предложение одобрили и добавили в triage team.

Для меня это было важным шагом, подтверждающим, что сообщество CPython видит мои усилия и ценит их.

Следующие 7 месяцев прошли в плотном темпе. Каждый день я старался выделить хотя бы час для работы над CPython, понимая, как важен постоянный прогресс. В марте 2024 года, после множества мелких фиксиков, улучшений и взаимодействий с сообществом, я получил заветное письмо. Оно пришло от самого Виктора Стиннера — одного из самых известных разработчиков CPython.

Менторство

В письме было предложение о менторстве. К тому моменту, я уже достаточно много работал над CPython с Виктором, и исходя из этого опыта он решил взять меня под свое крыло.
Конечно же я не мог отказаться от такого предложения. После моего согласия Виктор стал ревьювить каждый пул-реквест который я отправлял и давал мне советы по поводу того, как их улучшить.

На самом деле, я ожидал что менторство будет более формальным, но оказалось все куда дружелюбнее, чем я представлял. С ментором можно пообщаться на любые темы, а не исключительно на тему CPython, что безусловно снимает градус напряжения.
Летели дни, и я все лучше понимал свою зону ответственности и то, что ожидают от тебя другие core-разработчики.

В один прекрасный день...

В начале сентября 2024 года Виктор написал мне с предложением стать одним из core-разработчиков. Признаюсь, это было невероятно вдохновляюще. Я всегда понимал, что когда-то это случится, но в тот момент всё казалось каким-то недостижимым. В моей голове не было ни одного варианта, где я мог бы сказать "нет" на его предложение.

10 сентября 2024 года, после того как я дал согласие, Виктор создал специальный опрос по поводу моего становления core-разработчиком. Голосовать в нём могут только текущие core-разработчики, и для того чтобы стать официальным членом команды, нужно было набрать две трети положительных голосов.

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

Спустя ровно неделю голосование завершилось, и... да! Оно завершилось с результатом 31/1 (где 31 - голоса "За", и 1 голос "Против"). На самом деле я и ожидал такого результата, так как никогда и ни с кем из core-разработчиков не вступал в конфликты. К сожалению, голосование анонимное и узнать кто проголосовал против не представляется возможным.

Через пару дней мне выдали все необходимые привилегии, и таким образом я стал полноправным core-разработчиком.

Итоги

Примерно через два года после моего первого коммита в CPython я стал частью команды, которая имеет право вливать изменения в основную ветку проекта, а так же имею более ста коммитов.

Стоило ли это того? Безусловно, да. За это время я познакомился с множеством выдающихся людей: Гвидо ван Россумом (да, с самим создателем Python!), Виктором Стиннером, Никитой Соболевым и многими другими.

Теперь, как core-разработчик Python, я могу претендовать на гранты для участия в core-спринтах по всему миру, а также на другие привилегии, которые раньше казались недостижимыми. Одной из самых забавных была возможность получить e-mail на домене python.org, что я, конечно же, не мог упустить: eclips4@python.org.

Все те часы, которые я потратил на CPython, определённо окупились. Конечно, иногда это выматывает. Бывают моменты, когда чувствуешь, что выгораешь — это неизбежно. Такие моменты случаются, и, честно говоря, не всегда легко с ними справляться. Но каждый раз, когда я вижу, как мой вклад помогает сообществу, и осознаю, что я стал частью чего-то большого и значимого, эти усилия кажутся совершенно оправданными.

А также я веду канал в телеграме о новостях, связанных с CPython: t.me/cpython_notes :-)

Теги:
Хабы:
+216
Комментарии47

Публикации

Работа

Data Scientist
46 вакансий

Ближайшие события