На конференции Russian Python Week 2020 мы пообщались с двумя людьми, от которых непосредственно зависит будущее Python.  На наши вопросы ответили Core-developer community on Google Cloud Дастин Инграм и Director at Python Software Foundation Кэрол Виллинг. Заглянув под кат, вы узнаете, чего не хватает языку, и как он будет развиваться дальше. Многие Python разработчики не очень много знают про PSF, чем он (фонд) занимается?  Дастин Инграм: Python Software Foundation (PSF) — американская некоммерческая организация, работающая по всему миру. Ее цель — продвижение Python. PSF принадлежат связанные с Python права интеллектуальной собственности, включая права на логотипы. Кроме того, организация привлекает средства, обеспечивающие дальнейшую разработку Python, а также финансирует сопутствующие проекты.  В PSF всего пара оплачиваемых сотрудников: исполнительный директор, директор по инфраструктуре и несколько бухгалтеров. Организацию возглавляет совет из 11 директоров, работающих на добровольных началах.  Python — язык с открытым исходным кодом. Как финансируется организация разработки и деятельность постоянных сотрудников, поддерживающих работу Python-сообщества? Кэрол Виллинг: Python, как язык программирования, не приносит прибыли. Но я была директором PSF и занималась привлечением средств через проведение конференции PyCon. Основная часть финансирования приходится на пожертвования и поступления от организаций в США. Именно они позволяют нам оплачивать множество вещей, включая работу персонала и гранты, которые мы реализуем по всему миру Дастин Инграм: Да, сам Python не приносит денег, а PSF получает большую часть средств (а это несколько миллионов долларов США в год), главным образом, благодаря конференциям PyCon. PyCon US приносит около 85% прибыли, за счет которой и работает PSF. Оставшаяся часть финансирования обеспечивается пожертвованиями и поддержкой спонсоров. Также среди соучредителей PSF есть крупные компании, такие как Google, Microsoft и Amazon. Они финансируют проекты в большей или меньшей степени и помогают PSF держаться на плаву. Как стать директором PSF?  Кэрол Виллинг: Раньше совет директоров переизбирался ежегодно в полном составе. Со временем мы поняли, что переизбирать отдельных директоров через определенные промежутки времени намного эффективнее.  Дастин Инграм: Номинироваться на должность директора может любой желающий. Это легко — достаточно написать заявление на участие в выборах. Гораздо сложнее в них победить. Как правило, сообщество выбирает на должности директоров людей, которые постоянно и на добровольных началах участвуют в деятельности сообщества Python и уделяют много времени развитию организации. С другой стороны, хотя директора и руководят деятельностью PSF, они, как и штатные сотрудники, небольшая часть того, что необходимо для деятельности организации. Большая часть работы выполняется людьми на добровольных началах. Эти люди не избираются и не получают денег за свою работу по развитию экосистемы. Но они участвуют в разработке ядра Python и всего, что с этим связано. Именно их вклад обеспечивает дальнейшее развитие и продвижение языка. Как конкретный человек может участвовать в деятельности PSF?  Кэрол Виллинг: Во-первых, вы можете быть представителем Python в сообществе вашей страны. Со временем вы можете участвовать в жизни сообщества все больше, брать на себя ответственность за организацию или выбрать то, что интересует вас. Дастин Инграм: По-моему, многие считают, что единственный способ участвовать — стать основным разработчиком или работать непосредственно с ядром Python. Но существует множество других способов участвовать в жизни сообщества. Например, заниматься сторонними проектами в репозитории PyPI или экосистемами. Можно участвовать в рабочих группах, которые не занимаются ядром Python. Такая деятельность не менее важна, чем работа над языком.  Кэрол Виллинг: Вам не обязательно участвовать в разработке ядра. Многие участники экосистемы Python организуют работу сообщества, проводят конференции и выступают на них. Они занимаются обучением, а также пишут документацию. Внести ценный вклад можно по-разному. Дастин Инграм: Особую роль играет обучение. Python становится чрезвычайно популярным. В следующие десять лет появятся миллионы новых разработчиков. Поэтому чем больше мы делимся своими знаниями, делая сообщество более привлекательным, тем более успешным будет Python в будущем. Расскажите про статус, цели и проекты организации PSF на GitHub. Дастин Инграм: Наша организация на GitHub поддерживает множество проектов PSF, которые не относятся к ядру Python, включая такие масштабные проекты, как PyPI. Одновременно мы  поддерживаем проекты сообщества. Например, недавно нам был передан популярный проект Requests. Хотя такие проекты не относятся напрямую к языку Python, они очень важны для экосистемы. Также мы предоставляем репозитории для различных рабочих групп, которые не участвуют в разработке ядра Python. Например, мы недавно организовали рабочую группу по финансированию критически важных проектов языка. Эта рабочая группа успешно привлекает внешнее финансирование от организаций и компаний для реализации конкретных проектов Python. Так, за последние пару лет большие суммы пожертвовала компания Mozilla. Что изменилось после выхода Гвидо Ван Россума на пенсию? Дастин Инграм: Выход Гвидо на пенсию связан и с PEP, и с моделью управления разработкой Python в целом. В предыдущей модели управления Гвидо был пожизненным диктатором, имеющим решающее слово по все вопросам, связанным с Python. Так не могло продолжаться вечно. В какой-то момент ситуация должна была измениться, хотя многие не ожидали, что перемены наступят так быстро. Гвидо работал над Python большую часть жизни и просто устал, в том числе от всех дополнительных забот. Поэтому когда он вышел на пенсию, то заставил оставил сообщество задуматься, что делать и как создать новую модель управления, потому что после ухода диктатора всегда остается вакуум. Кэрол Виллинг: Отставка Гвидо была полной неожиданностью. Мы надеялись, что с у нас впереди есть еще несколько лет.  Однако жизнь продолжается, и мы создаем новую модель управления разработкой Python. В течение пары месяцев мы изучали другие проекты с открытым кодом, в которых мы участвовали или о которых нам было известно. После чего сформулировали PEP с описанием различных моделей. Основные разработчики Python собрались на мозговой штурм в Сиэтле. На круглом столе, в котором принимал участие и Гвидо, мы обсудили, что нам нравится в Python, и как нам необходимо развиваться в будущем. Большинство проголосовало за модель под управлением Наблюдательного комитета, чтобы обеспечить максимальную автономность разработчиков. Процесс обсуждения открыл нам глаза на то, как много лежало на плечах Гвидо — организация совместной работы разработчиков, решения о выходе из технических тупиков, пересмотр предложений по расширению и т. д. Сейчас эта работа распределена между пятью членами руководящего комитета. Они еженедельно обсуждают возникающие вопросы, в том числе касающиеся культуры и сообщества основных разработчиков. Мы планируем выбрать новый руководящий комитет вскоре после выпуска следующей версии Python. В настоящее время опубликовано много новых PEP-предложений по расширению. Какие из них вам запомнились больше всего, а какие вы считаете спорными? Дастин Инграм: Я обычно шучу, что мое любимое предложение то, которое я подготовил сам. Из недавних мне больше всего нравится PEP 615, которое добавляет базу данных часовых поясов в стандартную библиотеку Python. Мне кажется, этого очень не хватало. Мне также очень нравится новое предложение PEP 632, которое удаляет из основного кода Python модуль distutils. Этого мы ждали уже очень давно. Модуль хоть остается в стандартной библиотеке, но не рекомендуется и фактически не поддерживается. Удаление этого модуля упростит жизнь пользователей, которые не очень хорошо разбираются в экосистеме репозитория. Кэрол Виллинг: Я читаю очень много поступающих предложений по расширению. И мое мнение основано на идеях о том, как бы я использовала конкретное предложение в Jupiter или в рамках научного программирования. Меня заинтересовало предложение по сопоставлению с образцом (pattern matching). Мы встречались с группой, которая его разрабатывает, чтобы обсудить существующие возражения. Фактически мы уменьшили количество новой информации в предложении и сделали его более понятным. Я хочу быть уверена, что мы можем научить миллионы пользователей языка Python использовать сопоставление с образцом и предложить им самые передовые методы.  Другое интересное и заинтриговавшее меня предложение относится к удалению некоторых модулей из стандартной библиотеки или выносу за ее пределы. Одно из преимуществ Python — отличная экосистема сторонних библиотек. Если у модуля из стандартной библиотеки есть лучшая сторонняя альтернатива, нет смысла его там держать функциональность в стандартной библиотеке и создавать у пользователей впечатление, что мы ее активно поддерживаем. Дастин Инграм: Многие функции были добавлены в стандартную библиотеку еще до появления PyPI или до того, как он стал надежно работать. Сегодня PyPI предоставляет множество интересных проектов, поэтому спрос на такую же функциональность в стандартной библиотеке уменьшается. В наших PEP мне очень нравится раздел «Как этому научить». Он есть даже в шаблоне PEP и должен описывать способы донесения новых предложений до широкой аудитории. PEP предназначены для технических специалистов, и их авторы обычно не надеются, что каждый пользователь Python сможет понять суть предложения. Но нам необходим способ доступно излагать новые идеи для более широкой аудитории. Кэрол Виллинг: Мне очень нравится раздел PEP о том, как объяснять новые предложения. Если вы не можете пояснить идею, никто не будет ей пользоваться, кроме очень опытных пользователей, и только в определенных случаях. Но если вы можете предоставить хотя бы рекомендации о том, как и когда вашу идею можно применить, это упростит жизнь всем остальным. Сопоставление с образцом — достаточно спорная концепция в Python, и ее очень сложно объяснить. Даже некоторые специалисты с опытом функционального программирования не понимают, как и когда правильно ей пользоваться. Кэрол Виллинг: Это целый букет проблем. Сопоставление с образцом имеет как базовые, так и факультативные элементы. Оно использовалось в индустрии телекоммуникаций — в, в Erlang, Elixir, Scala и почти всех функциональных языках. Мне кажется, что принципы сопоставления с образцом отлично разъясняются в документации по Elixir. Иногда объяснение сложнее, чем необходимо, из-за терминологии. И все становится намного понятнее, если привести понятные примеры. Я думаю, что все противоречия больше связаны с PEP, чем со сложностью сопоставления с образцом. Что вы думаете о Global Interpreter Lock? Это проклятие или преимущество? Кэрол Виллинг: Это концепция из другого времени. Python уже 30 лет, и некоторые решения, которые сделали язык гибким, простым и успешным, относились к его объектной модели. Раньше Python отличался от таких языков, как C, C++ или Java намного более четким синтаксисом, даже визуально. Сейчас для ускорения некоторых операций Python можно использовать, например, Cython. Если оценивать производительность разных языков программирования, все зависит от того, что вы под ней понимаете. Если речь идет о скорости выполнения, выиграет C. А если о продуктивности разработчиков, Python выигрывает благодаря легко читаемому коду, богатой экосистеме библиотек, опытному и готовому делиться знаниями сообществу Python ищет способы увеличить скорость выполнения, в том числе благодаря финансированию, я надеюсь, PSF и основная команда смогут это предложить. Дастин Инграм: Будет здорово, если Python сможет обеспечить высокую производительность, удобство и безопасность. Но он также предлагает очень мощные инструменты для перехода на более производительный язык, в случае необходимости. Это одно из основных свойств Python, которое сделало этот язык популярным, а также повлияло на известность сторонних проектов, таких как NumPy.  Кэрол Виллинг: Я параллельно работаю над проектом Jupiter Project. Jupiter Notebook, один из важнейших инструментов Python, стал намного более популярным, чем мы ожидали. Я думаю, что причина этого заключается в легкости использоваться библиотек. Особенно для пользователей, далеких от программирования, которые приходят из области естественных, общественных и других наук. Причина заключается, скорее, в описании и визуализации, чем в коде. Это также демонстрирует важность сообщества. Несколько лет назад в команде проекта Jupiter Project было меньше 20 человек, из которых только 10 работали постоянно. Рост его популярности, в основном, обеспечило именно сообщество. Также как оно обеспечивает развитие Python в целом. Вы собираетесь увеличивать скорость Python, например, как PHP? Планируете ли расширять типизацию, добавлять финализированные классы, интеграцию ABC? Будет ли что-то новое в обработке исключений? Кэрол Виллинг: Я думаю, мы достаточно подробно обсудили производительность и скорость. По поводу типизации у меня смешанные чувства. Я признаю ее преимущества в системах больших компаний, где необходим статический анализ до выполнения кода. Поскольку я проверяю код чаще, чем пишу, для меня применение статической типизации является непростым делом. Много лет назад Python меня заинтересовал именно отсутствием обязательной типизации. Она не обязательна и сейчас, и я считаю это правильным решением. Однако в некоторых случаях, например, в Pydantic, где вы используете API, типизация позволяет намного проще и быстрее создавать основные документы. Она важна также для производственного ПО, но для разработки и экспериментов с CircuitPython или MicroPython в ней нет необходимости. Я надеюсь, кто-нибудь когда-нибудь создаст редактор, который позволит включать и отключать типизацию по желанию.  Дастин Инграм: Мне нравится статическая типизация. Это мощный инструмент в Python. Но мне также нравится, что она не обязательна, и ее можно добавлять постепенно. Я не думаю, что такое положение дел изменится. По-моему, участники сообщества еще недостаточно часто используют типизацию в своих рабочих процессах. Для обычного пользователя Python, который не работает в крупных компаниях, она не нужна. Возможно, через некоторое время, когда статическая типизация будет использоваться шире, мы будем добавлять новые инструменты, например, типизацию для сторонних пакетов.  Когда нам стоит ждать Python 4.0? Кэрол Виллинг: Python 4.0 выйдет в отдаленном будущем. Сейчас мы будем выпускать Python 3.10, 3.11, 3.13 и т. д. В настоящее время нет масштабных проектов, которым нужен 4.0. И я уверена, что выпускать следующую версию в таких условиях не в интересах сообщества. Поэтому сейчас мы поэтапно развиваем язык, концентрируясь на его стабильности. К тому же в прошлом году было опубликовано предложение, предлагающее сократить цикл выпуска новых версий. Обновления каждые полтора-два года приводят к слишком ощутимым изменениям для людей, использующих их в исследовательских лабораториях или в компаниях. Так что Python 4.0 можно ждать, пожалуй, к 2100 году.  Что нужно делать, чтобы войти в основную команду разработчиков Python? Кэрол Виллинг: Стать основным разработчиком Python очень круто, если вы помешаны на языке и стремитесь заниматься именно им. Энтони Шоу (Anthony Shaw) в своей новой книге отлично объяснил, как работает Python. Но если вы не хотите заниматься именно языком, у вас есть огромное количество возможностей участвовать в развитии экосистемы проектов, включая, например, PyPI и NumPy. Но не забывайте, что основной целью Python является стабильность, и только потом — широта возможностей. В других проектах цикл от идеи до внедрения намного короче, и вы можете более свободно принимать решения о том, что следует добавить в проект. Нет, я не отговариваю от участия в разработке ядра Python. Нам, конечно же, нужны разработчики, и их число постоянно увеличивается. Но я уверена, что опыт, полученный при работе над другими проектами тоже может быть очень богатым и ценным. Дастин Инграм: Чем больше времени и сил вы тратите на внешние проекты, тем больше пользы вы приносите. Например, я принял решение не участвовать в разработке ядра, потому что могу быть больше полезен для проектов, которым нужна поддержка, а с другой стороны — они могут оказать больше влияния на сообщество. Я считаю, что это, например, инструменты разработки пакетов и PyPI, и я уже вижу большие изменения. А если бы я был основным разработчиком, это сильно повлияло на экосистему Python. Кэрол Виллинг: Еще с 2014 года я говорю о том, что нам нужно улучшать процесс разработки ядра Python и делать его более современным. Поэтому мы перенесли код на GitHub. Это был только первый шаг, но он оказался правильным, потому что открыл для нас все инструменты непрерывной интеграции. Сегодня можно намного проще участвовать в разработке благодаря возможности тестирования и оценки результатов CI. Я надеюсь, когда мы перенесем список задач и ошибок на GitHub, желающим стать основным разработчиком, станет еще проще. Перенос система отслеживания ошибок — это большой проект. Вы планируете реализовать его на платной основе? Кэрол Виллинг: Вспомните 30-летнюю историю развития языка — историю исправления ошибок, версий, продвижения, перехода на новые платформы. Это не самый простой процесс. Кроме того, нам приходится поддерживать открытый формат, чтобы иметь возможность, если GitHub вдруг перестанет существовать, переместиться на другую площадку или создать собственную. И сделать это надо будет без прерывания процессов, к которым привыкли пользователи. Напротив, мы должны добавлять рабочие потоки. Кроме того, появилось много новых инструментов, в том числе благодаря более широкому использованию JavaScript, и я думаю, что дополнительное финансирование и правильное управление проектами позволит сделать переход более плавным.  Иногда работа на добровольных началах означает, что вы не можете уделить проекту достаточное количество времени. Поэтому лучше отдать его под руководство менеджеру, который сможет обеспечить его непрерывную реализацию. Оплачиваемое управление проектом в таком случае — самое эффективное решение. Многие уверены, чтобы стать разработчиком ядра Python, нужно знать язык C. Дело обстоит именно так или можно сосредоточиться на чем-то еще? Кэрол Виллинг: C требуется, только если вы углубляетесь во взаимодействие с оборудованием или управление памятью. Как я уже говорила, блог и книга Энтони Шоу отлично демонстрируют случаи, когда необходим C. Но, например, большая часть стандартной библиотеки его знания не требует. Дастин Инграм: В настоящее время почти все проекты, встроенные в стандартную библиотеку, написаны на Python. Как должность разработчика Python и директора PSF изменила вашу жизнь и повлияла на вашу карьеру? Кэрол Виллинг: У меня стало намного меньше свободного времени, потому что я работаю на добровольных началах. Но для меня в этой работе важно не то, как она влияет на мою карьеру, а то, что я участвую в создании языка, который используется многими. Здорово, что я могу дать людям с отличными идеями инструменты для реализации. Да, меня теперь больше приглашают на конференции, в том числе в качестве докладчика. Но я не думаю, что это как-то влияет на мою карьеру. Дастин Инграм: Я недавно стал директором PSF. Иногда во время собеседований на новую работу я рассказывал, что очень активно участвую в сообщества Python на добровольных началах, работодателя волновало только, не занимаюсь ли я этим в рабочее время. Я думаю, что многие просто не понимают, как поощрять работу над открытым кодом. Однако свою текущую работу в качестве Developer Advocate for the Python community в Google я получил благодаря моему опыту работы с сообществом Python. От меня требовались знания о том, как работает сообщество, как оно построено и какие инструменты использует. Однако мои должностные инструкции не предусматривают, что началах. Кэрол Виллинг: Я хочу быть уверена, что тем, кто хочет участвовать в разработке Core Python, следует быть вежливыми, но настойчивыми. Мы работаем с огромным количеством людей, у которых очень мало времени. Поэтому время, которое они посвящают Python, нужно использовать эффективно. Чтение руководств для я должен быть директором и выполнять дополнительную работу на добровольных разработчиков и просмотр вебинаров на YouTube о разработке на Python могут помочь вам стать участником сообщества. Присоединяйтесь к нам!  Видео доклада можно посмотреть здесь.  Профессиональная конференция для Python-разработчиков пройдет 27 и 28 сентября в Москве. Но посмотреть расписание и выбрать самые интересные доклады можно уже сегодня. Не забудьте купить билеты. Встречаемся в офлайне в конце сентября!   Контент-редактор