Что такое хакатон?

Piers Cawley, “What happens at a hackathon?”, public translation into Russian from English More about this translation.

Translate into another language.

В прошедшие выходные группа разработчиков Birmingham Perl Mongers[1] организовала и выступила главным спонсором мероприятия QA Hackaton 2009[2], которое прошло в отеле Birmingham City Inn. На трёхдневную встречу, посвящённую языку программирования Perl и архиву кода CPAN, собрались известные программисты в области Perl Quality Assurance со всего света: из Сиднея, Портленда (штат Орегон) и самого Бирмингема. Хакатон подтвердил простую истину: время в Интернете течёт быстро, а при личной встрече — ещё быстрее.

(картинка)

Вы не представляете, на что способна собравшаяся в одном помещении группа хакеров, у которых горят сроки.

Далеко не все помнят, что разработка ПО с открытым кодом широко разветвлённой сетью программистов, разбросанных по всему миру, держится, прежде всего, на людях, решающих свои собственные проблемы.

Ускоряемся с Test::Aggregate

Возьмём, к примеру, Кёртиса По (Curtis Poe). На его страничке в CPAN[3] представлен целый набор модулей, от игрушек для души, таких как Acme::Code::Police[4], до более полезных, например, Test::Aggregate[5]. Перед приездом на хакатон Кёртис работал над набором, состоящим из тысяч независимых тестов. Раньше на запуск всех тестов уходило 52 минуты, а с помощью Test::Aggregate это время удалось сократить до 11 минут. Огромный выигрыш. Но результат мог быть ещё лучше, если бы не особенности протокола Test Anything Protocol (TAP), текстовой сердцевины программных средств Perl QA. Эти особенности затрудняют обнаружение программой внезапных остановок тестовых сценариев.

Вложенные TAP-потоки

Та же проблема у Эдриана Говарда (Adrian Howard). Он занимается библиотекой модульного тестирования Test::Class[6] — интерфейс типа xUnit[7] для тестовых библиотек на языке Perl . Но принцип работы самой среды xUnit отличается от Test::Class. Результаты работы Test::Class отображались бы в более понятном виде, если бы можно было вкладывать TAP-потоки друг в друга. Это избавило бы от головной боли и Кёртиса с Test::Aggregate.

(картинка)

Майкл Шверн (Michael G. Schwern) рассказывает об успехах проекта Test::Builder2

Майкл Шверн заведует модулем разработки библиотек TAP Test::Builder. В отличие от Кёртиса и Эдриана, Шверну вложенный TAP не нужен, но его поддержку придётся добавить в Test::Builder.

Энди Армстронгу (Andy Armstrong), разработчику модуля Test::Harness[9] и утилиты prove, которые дают подробную статистическую информацию о тестовых прогонах, идея вложенных потоков нравится, однако он настаивает, чтобы доработанный протокол TAP поддерживал старые версии модулей и был лёгок в парсинге.

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

К полудню воскресенья у Кёртиса были серьёзные наработки по решению наболевшей проблемы. Он загрузил Test::Builder на Github, поработал сам, а потом начал курсировать со своим ноутбуком между Шверном, Эдрианом и Энди, периодически проверяя код на ошибки перед загрузкой изменений на Github. К концу дня Шверн внёс изменения в Test::Builder, а Эдриан Говард перетряс свой Test::Class. Ближе к полуночи Энди тоже сумел добавить «сырую» поддержку вложенных TAP-потоков к своему модулю Test::Harness.

Повышение производительности

Одна из самых замечательных особенностей хакатона состоит в том, что когда в одном месте собираются профессионалы своего дела, их производительность устремляется в небеса. Я приехал в субботу утром после 4 часов сна и неблизкой дороги из Гейтсхеда, но атмосфера хакатона была так заряжена позитивом и стремлением к достижению поставленной цели, что я просто достал ноутбук, воткнул штепсель в розетку и погрузился в работу. Время на то, чтобы поздороваться с участниками, удалось выкроить только во время обеда.

(картинка)

Джос Буманс (Jos Boumans, слева) обсуждает что-то с Давидом Голденом (David Golden).

Давид Голден заявил в беседе со мной, что ещё одной полезной особенностью хакатона он считает ограничение по времени. За те несколько дней, на которые рассчитано мероприятие, можно решить только одну или две задачи, а это невероятно повышает концентрацию на каждой из них. Давид вместе с Рикардо Сигнесом (Ricardo Signes) собрали группу разработчиков для работы над базой данных MetaBase, которая заменит NNTP-сервер, нынешнюю основу сайта интеграционного тестирования CPAN Testers[10]. Трудно себе представить объём работы, проделанный Давидом и Рикардо, чтобы на три дня превратить группу независимых программистов в сплочённый коллектив. Похоже, главное в этом деле благожелательный настрой участников, единство целей и взглядов, доверие и, как это ни удивительно, трёхдневный срок. Вначале только у двоих из семи членов группы было хоть какое-то представление о базе данных MetaBase, но уже через три дня они выдали, пусть незаконченный, но продукт со всеми главными модулями, готовыми к использованию на сайте CPAN Testers. Давид полагает, что им не хватило каких-то шести часов, чтобы собрать рабочую версию, и пары месяцев до тестового запуска на сайте.

Другие проекты

(картинка)

Рикардо Сигнес рассказывает о базе данных Metabase.

Конечно, вложенный TAP и база данных Metabase были не единственными проектами на хакатоне.

Например, Майкл Питерс (Michael Peters) целиком ушёл в работу над своим сервером непрерывной интеграции Smolder[11]. В понедельник он выложил первую версию на CPAN.

Джон «JJ» Аллен выпустил Perldoc::Server[12] — код, на котором работает perldoc.perl.org[13]. После установки и запуска он открывает HTTP-доступ к документации всех модулей Perl в системе.

В рамках инициативы по утверждению спецификации TAP в качестве стандарта IETF над её черновым вариантом работала Антония Мейер (Antonia Mayer).

В перерывах между разработкой вложенного TAP Шверн работал с Колином Ньюэллом над модулем Test::Builder2 — новой, более простой в использовании версией Test::Builder[14].

Остальные вовсю пользовались присутствием ведущих программистов, чтобы прояснить непонятные моменты с MYMETA.yml, ключом 'configure_requires' и другие. Скучно тратить время на мелочи, но дьявол кроется именно в них.

А я эти выходные проработал над p5-cucumber[16]. Это спортированный Евгением Зислисом(Evgeny Zislis) [15] на Perl фреймворк интеграционного тестирования Cucumber[17]. Кроме того, я опубликовал на CPAN первый модуль за 6 лет.

Рецепт успешного хакатона

(картинка)

На хакатоне даже табличку хакнули.

В чём же секрет такой высокой производительности хакатона? Пожалуй, рецепт успеха выглядит так: «Сформулируйте цели мероприятия. Найдите самый маленький конференц-зал, вместите в него пару дюжин толковых программистов. Обязательно пригласите ведущих специалистов в выбранной области, возьмите на себя их расходы на поездку. Каждое утро проводите брифинг о целях нового дня и о достигнутых результатах, чтобы участникам было к чему стремиться и чего добиваться. В течение трёх дней кормите, поите и выдавайте программистам столько кофе, сколько они потребуют. В конце последнего дня подведите итог и отведите работяг в кафе или бар. Если сделаете всё правильно, то результат вас ошеломит». Всего-то делов. Участники подобных мероприятий уже отлично замотивированы на максимально эффективное использование времени среди своих компетентных товарищей.

Это действительно просто. Хорошие, знающие люди + ограниченное пространство + концентрация + доверие = потрясающие результаты.

Ссылка на оригинал статьи на английском языке:

http://www.h-online.com/open/features/What-happens-at-a-hackathon-746561.html

Ссылки в статье:

[1] http://birmingham.pm.org/

[2] http://www.qa-hackathon.org/

[3] http://search.cpan.org/~OVID

[4] http://search.cpan.org/~OVID/Acme-Code-Police-2.18281/lib/Acme/Code/Police.pm

[5] http://search.cpan.org/dist/Test-Aggregate

[6] http://search.cpan.org/dist/Test-Class

[7] http://wikipedia.org/wiki/XUnit

[8] http://search.cpan.org/dist/Test-Simple/lib/Test/Builder.pm

[9] http://search.cpan.org/dist/Test-Harness

[10] http://testers.cpan.org/

[11] http://search.cpan.org/dist/Smolder

[12] http://search.cpan.org/dist/Perldoc-Server

[13] http://perldoc.perl.org/

[14] http://github.com/schwern/test-more/tree/Test-Builder2

[15] http://blog.kesor.net/

[16] http://github.com/pdcawley/p5-cucumber

[17] http://cukes.info/

Original (English): What happens at a hackathon?

Translation: © Passerby, Maxim Duyunov, kkapp, dionys, id.rambler.ru .

translated.by crowd

Like this translation? Share it or bookmark!