понедельник, 4 марта 2013 г.

Python Sprint во Львове


Как я уже писал, 6 апреля будет Kyiv.py #10, на который уже зарегистрировались два докладчика: Ростислав Дзинько (Sockets from the ground up) и Тарас Ляпун (Cython - close to the metal python). Приходите, будет интересно.

А 7 апреля (да-да, на следующий день) во Львове пройдёт спринт по Питону, который организовывает Юля Савьюк @juljetta. Моя роль в этом мероприятии — sprint leader.

Регистрация, место и время

UPD:
Форма регистрации: здесь.
Место проведения: офис Lohika, Лемківська 15, 3 этаж.
Начало в 11.00. Заканчиваем когда устанет последний боец. Реально, думаю, часов через шесть.

Что такое sprint?

Это практически субботник — сознательный организованный бесплатный труд на благо общества в свободное от работы время. Работать предлагается над CPython. Берем готовую issue в багтрекере или создаём свою новую. Если есть трудности с выбором — я помогу и поскажу. Когда вся работа будет сделана — я просматриваю код и, если всё хорошо, тут же делаю push в hg.python.org.

Зачем это делается? Не для того, чтобы решить большую серьёзную проблему. Главное — показать процесс работы над Питоном, объяснить и рассказать. Спринт — отличная возможность для новичка стать python contributor. 

Обычная проблема Open Source: нужно довольно долго переписываться, при этом работа может затухнуть сама собой просто потому что вам никто не отвечает.

Наличие sprint leader (т.е. меня в данном случае) позволяет максимально всё ускорить. 

В результате — приятное чувство: решил проблему (пусть и небольшую)  и принёс пользу Python Community. Хочется продолжать работать дальше в том же духе.

Инструкция

Чтобы спринт был удачным, к нему нужно подготовиться.
Приходим со своими ноутбуками (думаю, это не проблема).

На ноуте может быть любая система: Linux, Windows, Mac OS X.

Нужно установить компилятор С
- gcc на Линуксе идет в комплекте
- на Маке не знаю (там вроде бы можно еще и clang использовать, Питон должен его понимать)
- для Windows нужно установить Visual Studio, Visual Studio Express доступна для бесплатного скачивания и использования. Для работы нужны обе версии 2008 и 2010.

Также требуется Mercurial HG: http://mercurial.selenic.com/

Работа ведется над CPython repo, установленный из коробки Питон не подходит.

Подробные инструкции на английском языке здесь: http://docs.python.org/devguide/

Делаем:

$ hg clone http://hg.python.org/cpython
$ cd cpython
$ ./configure --with-pydebug
$ make -j4
make install делать не нужно

Далее. Чтобы не тратить время зря советую зарегистрироваться на bugs.python.org и просмотреть заранее список issues.
Выбирайте помеченные как easy — они как правило действительно простые.

Если у вас уже есть темы, над которыми хотите поработать — добро пожаловать.
Если не сможете определиться — тоже не беда, я подскажу.

Работа выглядит так:
- создается issue или берется готовая
- готовятся исправления
- делается патч: $ hg diff > issueXXX.diff
- он заливается через форму на bugs.python.org Там же добавляете меня (asvetlov) в nosy list
- я закачиваю патч и применяю его: $ curl http://path-to-patch|patch -p1
- если всё нормально — делаю push в repo

У Питона сейчас открыты для патчей четыре ветки: 2.7, 3.2, 3.3, default (3.4).
Новые фичи принимаются в default, баги и правки по документации могут попасть и в остальные три.
Если кто не знает как работать с ветками — я покажу на месте.

Юниттесты запускаются так:
$ make test
или
$ ./python Lib/test/regrtest.py

Отдельный тест можно запустить
$ ./python Lib/test/test_xxx.py

Перед отсылкой патча настоятельно рекомендую запускать чекер
$ make patchcheck
Эта процедура как минимум убирает лишние пробелы — постоянная головная боль при приеме патчей.

Заключение

Я буду на месте всё время, помогу вам советом, правкой кода и т.д. Все затруднения быстро порешаем.