PyCon RU 2013

2013-03-01

24-25 февраля 2013 года под Екатеринбургом прошла первая русская конференция по Python PyCon RU. Я побывал на ней, представляя команду разработчиков IDE PyCharm, наша фирма JetBrains была спонсором конференции.

Я хотел бы поделиться личными впечатлениями о конференции в целом и о докладах, которые я послушал.

Несколько слов об истории PyCon RU. Сообщество питонистов в России формируется медленнее, чем, например, на Украине, хотя потенциальных участников сообщества больше, как мне кажется. Что было до этого:

  • Регулярные встречи Moscow Django
  • Несколько встреч City.py, самая крупная из них Ekb.py в 2012 году

Разговоры о PyCon RU велись уже года два, но всё никак не находилось людей, готовых взяться за это.

И вот наконец-то желающие нашлись. Организаторы Ekb.py после успешного опыта проведения этой встречи взялись за проведение первого PyCon RU. В качестве хэдлайнеров было приглашено несколько известных в Python сообществе иностранных докладчиков. Было много и наших докладчиков, доклады читались в два потока.

Немного спорным могло показаться место проведения конференции: Екатеринбург, загородная база отдыха в 30 км от города. Мне кажется, что решение провести конференцию в Екатеринбурге было удачным: это позволило приехать многим участникам с Поволжья, Урала и Сибири, где находится сразу несколько крупных городов. Нельзя всё время концентрироваться только на Москве. Хотя если конференции PyCon будут потом проходить в различных крупных регионах по всей России, то это пойдёт на пользу нашему Python сообществу. Может стоит проводить конференции, меняя место проведения раз в два года, как это делалось долгое время с EuroPython.

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

Атмосфера самого мероприятия отличалась как от крупных зарубежных конференций вроде EuroPython и PyCon US, так и от украинской PyCon UA. Было меньше социальных активностей: новых знакомств, общения в твиттере, некоторые провели конференцию в общении с теми людьми, с кем они приехали. Это, собственно, одна из сложностей первого PyCon в России: сообщество пока что недостаточно связано, информация распространяется в нём не так широко, как хотелось бы. Сложно ожидать этого от крупных международных конференций, но вот на не самой большой PyCon UA чувствуется более тесная связь людей. Кстати говоря, процентов 15-20 участников PyCon UA приезжают на неё из России.

При этом атмосфера была дружественной, многие были рады возможности пообщаться с коллегами, задать вопросы докладчикам, провести вместе время после докладов. Технических накладок почти что не было, даже wi-fi в основном работал.

В целом организация была на хорошем уровне. Я хотел бы поблагодарить Антона Патрушева из Naumen, Юлию Герасимович и других сотрудников IT-People, участвовавших в проведении конференции.

Расскажу о наиболее запомнившихся докладах (видео докладов вскоре станут доступны на сайте PyCon RU):

  • Armin Ronacher. Advanced Flask patterns

    Армин рассказал о некоторых приёмах программирования с использованием его веб-фреймворка Flask. Всегда интересно послушать о проектах от их авторов, задать интересующие вопросы. Я не использую Flask, так что не входил в целевую аудиторию этого доклада.

  • Russel Keith-Magee. Building a development community: lessons and challenges

    Рассел как президент Django Sofware Foundation рассказал о процессе формирования сообщества вокруг Django. Одной из проблем является систематическая работа над фреймворком: сейчас core Django developers работают над проектом в свободное время, а время находится не всегда. Участники задали Расселу вопрос, почему бы не заняться разработкой Django full-time. На это нужны деньги. Рекламой на сайте они не хотят зарабатывать. Большие компании, использующие Django, не хотят делать пожертвования в адрес Django Software Foundation. Пока что приходится довольствоваться текущим темпом разработки.

  • Андрей Светлов. PEP 3156 — стандарт на асинхронные операции в Питоне

    Андрей познакомил с разрабатываемым стандартом на асинхронные операции PEP 3156. Для Python есть много разных асинхронных библиотек: Twisted, Tornado, Gevent, Eventlet, библиотеки на основе yield. Гвидо ван Россум предложил сделать API, который стал бы общим интерфейсом для разных библиотек.

    Предлагается задать интерфейс event loop, поверх которого может располагаться планировщик со-процедур, позволяющий писать код через yield from вместо callbacks. Также определяются интерфейсы transport и protocol, хотя из доклада я не понял, насколько они соотносятся с транспортным и прикладным уровнями сетевого взаимодействия.

    В общем-то, в этом интерфейсе асинхронных операций заключается, видимо, последовательное введение в Python двусторонних генераторов и yield from. Интересно будет посмотреть за развитием этого направления: удастся ли сделать удобным и понятным использование различных асинхронных фреймворков.

  • Михаил Коробов. Как перейти на Python 3?

    Михаил говорил о портировании приложений на Python 3. Это был доклад с предыдущего PyCon UA с небольшими изменениями, который я уже слышал, так что не узнал для себя чего-то нового.

  • Александр Кошелев. Препарирование работы асинхронного кода

    Александр рассказал об одном эксперименте распараллеливания асинхронной программы на Tornado, которая упёрлась в CPU. Я бы хотел ещё раз посмотреть его слайды и попробовать предложенное решение на практике. Также было бы интересно больше узнать о возможных альтернативах.

  • Константин Лопухин. Подход к версионированию данных в реляционной БД

    Константин познакомил с их разработкой doc-versions, позволяющей удобно работать с версиями объектов для моделей Django. Судя по докладу, их решение неплохо интегрируется с Django и может подойти для многих проектов.

  • Holger Krekel. Re-inventing Python packaging and testing

    Хольгер, автор отличных инструментов py.test, tox и execnet, представил свою новую разработку: альтернативный PyPI-сервер и мета-утилиту управления пакетами devpi (пока не опубликована?). Помимо создания локальных серверов с индексами, содержащими, к примеру, свои внутренние пакеты, он говорил о применении мета-утилит, которые базируются на уже имеющимся наборе решений (setuptools, distribute, pip) и позволяют унифицировать их использование и расширить их за счёт слоя поверх них. Похожий подход реализован в его утилите tox, позволяющей запускать различные тестовые утилиты для подтверждения совместимости с версиями Python.

  • Роман Иманкулов. Celery для внутреннего API в инфраструктуре SOA

    Роман описал использование системы очередей Celery в качестве API в распределённой системе. Часто в таком случае используют RESTful интерфейсы, однако Celery даёт ряд преимуществ в связи с уменьшением связности компонент, возможности асинхронной обработки и т. д.

  • Александр Будкарь. Распределенное исполнение Python кода на 10000+ серверах

    Александр рассказал о системе, разработанной им и его коллегами из Яндекса для параллельного выполнения кода на Python или команд системного администрирования на кластере из порядка 10000 машин. Существуют разные библиотеки для этой задачи (в частности, execnet от Хольгера Крекеля), но описанное решение позволяет достичь намного большей производительности по сравнению с ними: простая команда выполняется на таком кластере за единицы секунд.

  • Jeff Lindsay. Building public infrastructure with autosustainble services

    Джефф сделал очень запомнившийся доклад о самоподдерживаемых сервисах. В нём он рассуждал о том, как было бы хорошо иметь API ко всему, будь то сервисы в интернете или объекты реального мира (телефон, печать, доставка). Для этого, в частности, полезны webhooks, события отправки HTTP-запроса по изменению данных в веб-сервисах, а также быстрое и дешёвое развёртывание своих веб-приложений. Это позволило бы автоматизировать многие повседневные вещи.

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

  • Russel Keith-Magee

    Рассел продолжил начатую им же тему истории проекта и сообщества Django, рассказав о планах на Django 1.6 и более отдалённые версии. Из запомнившегося — возможное использование SQLAlchemy, решения для real-time web.

Сам я выступал с докладом «Статический анализ языка Python» (вот видео и слайды), а также сделал два lightning talks:

  • Генератор статических сайтов Obraz (видео)
  • Сообщество по функциональному программированию FProg.ru (видео)

Я хотел бы сказать спасибо докладчикам и участникам конференции, в особенности тем, с кем я имел удовольствие пообщаться лично. Спасибо за интересное общение! Буду ждать PyCon RU в следующем году!