вторник, 14 февраля 2017 г.

Google Summer of Code

          Генеральный директор компании Postgres Professional Олег Бартунов считает участие российских студентов в программе Google Summer of Code очень полезным для становления их самих, как опытных программистов-разработчиков, способных найти интересный проект в Open Source сообществе и развить его. Вместе с этим, количество студентов, которые сумели пробиться в крупные проекты через GSoC, является хорошим показателем развитости айтишной инфраструктуры и потенциала страны.

          Наш блог предлагает Вам сегодня подборку публикаций о том, что такое Google Summer of Code, чем он полезен и как в нем участвовать.


Еще раз о Google Summer of Code

          Я уже писал про Google Summer of Code (GSoC), что это прекрасная возможность для студентов и аспирантов попробовать себя в опенсорсе. Сегодня наткнулся на свою фотографию в гугловой майке из которой видно, что я был гугловым ментором от постгреса в самый первый год этой программы (2006 год), а руководил я работой Сергея Копосова, нашим студентом, который работал над дипломом в нашем отделе. Надо сказать, что тогда формальности было меньше, Сергей Копосов совершенно самостоятельно работал над проектом "Enhanced Aggregate Support" и начиная с версии 8.2 результаты этого проекта доступны пользователям. Сергей был одним из 12 российских студентов (всего 630), которых приняли в GSoC в 2006 году.

          Группа российских астрономов в Праге, 2006. Сергей Копосов слева.

          Если в студент-аспирант и хотите попробовать свои силы, принести пользу опенсорсу, то вот вам хорошая возможность, а если вы владеете языком "C" и имеется интерес к алгоритмам и серверному программированию, то можете обращаться к нам в Postgres Professional, где работают много постгресовых разработчиков и которые помогут вам с темой и менторством.

          Пруф.

          Его патчи для 8.2 ревьюил и комитил Tom Lane:

commit 108fe4730152058f9b576969d08898b39bf7fc38
Author: Tom Lane 
Date:   Thu Jul 27 19:52:07 2006 +0000

    Aggregate functions now support multiple input arguments.  I also took
    the opportunity to treat COUNT(*) as a zero-argument aggregate instead
    of the old hack that equated it to COUNT(1); this is materially cleaner
    (no more weird ANYOID cases) and ought to be at least a tiny bit faster.
    Original patch by Sergey Koposov; review, documentation, simple regression
    tests, pg_dump and psql support by moi.

commit 1249cf8f386828ea6590920da345a334bf226041
Author: Tom Lane 
Date:   Fri Jul 28 18:33:04 2006 +0000

    SQL2003-standard statistical aggregates, by Sergey Koposov.  I've added only
    the float8 versions of the aggregates, which is all that the standard requires.
    Sergey's original patch also provided versions using numeric arithmetic,
    but given the size and slowness of the code, I doubt we ought to include
    those in core.

          Сергей еще известен, как автор Q3С - пространственный индекс для астрономии, но который прекрасно может использоваться и для земных данных. Однажды в пятницу мы с ним сидели в комнате и думали про быстрые поиски по миллиардам записей в астрономических каталогах. В те годы признанным стандартом был HTM (Hierarchical Triangular Mesh) от Microsoft, одним из автором был сам Jim Gray. Я немного попереписывался с ними в надежде получить исходники, чтобы портировать HTM в постгрес, но понимания не получил, Jim Gray предложил подарить лиценизию SQL Server и рекомендовал не тратить время на это, ибо майкрософт потратил кучу времени и денег на эту работу. Сергей был в то время студентом 4-го курса, выпускник 2-й школы, победитель разных математических олимпиад, амбиций и упертости было выше крыши, и эта задача так его захватила, что за выходные он придумал идею и набросал прототип. Довольно быстро Q3C (статья) стал использоваться сначала у нас в институте, а потом и в мире. Сергей сейчас работает в Кембридже, занимается проектом Gaya, где постгрес используется на все 100%. Посмотрите его замечательный доклад "Астрономия в эпоху больших обзоров неба", чтобы понять грандиозность современных задач астрономии.



Призываю к участию в Google Summer of Code

          Недавно Саша Коротков поднял тему про участие сообщества PostgreSQL в GSoC.

          Слайд из моего доклада про национальную СУБД на совещании по национальной программной платформе летом 2011 года (пост 2014 года, пост 2015 года).

          Я хочу объяснить, почему участие в GSoC так важно и чем наша компания Postgres Professional может помочь студентам и аспирантам.

  1. Я рассматриваю GSoC как своего рода "социальный лифт", который позволяет молодому человеку заявить о себе в сообществе разработчиков и сделать карьеру как в сообществе, так и в компании. Отмечу, что карьера в сообществе дает немалую независимость от компании, ибо подтвержденная компетенция много стоит.

              Действительно, кривая входа большого проекта обычно довольно крутая и требуется немало времени и настойчивости, чтобы начинающий программист стал "своим" в команде. В реалиях нашей страны это означает, что много способных ребят, которые мечтали стать разработчиками, жить в мире интересных проектов, прославиться своими работами, вынуждены не только учиться, но и зарабатывать на жизнь, а иногда и на саму учебу, просто напросто не могут себе позволить этого. Летний USD 5500 дают этот шанс любому, без каких-либо ограничений ! Вы должны быть легальным студентом или аспирантом и только.

  2. GSoC вскрыл реальную проблему нашего айтишного сообщества - у нас не так много ребят, которые "совместимы" с опенсорсным миром, а именно:

    • умение "найти" задачу интересную для сообщества, которую реально решить и в строго определенные сроки;
    • умение описать ее, предложить пути решения и вести дискуссию;
    • знать английский язык, которые де-факто является языком общения в опенсорном сообществе (в основном, нужно читать и писать, но иногда требуется обсуждение в онлайне);
    • уметь пользоваться основыми инструментами коллективной работы, принятые в сообществе;
    • писать публичный код в стиле сообщества - это означает, что ваш код будет виден всем, любой может его проверить, протестировать, написать ревью. Код должен быть соответствующим образом документирован, предоставлены тесты.
    • быть исполнительным и соблюдать workflow как GSoC, так и сообщества, что означает НЕ ПРОПАДАТЬ, а работать со своим руководителем, не пропускать дедлайны.

              Таким образом, количество студентов, которые сумели пробиться в крупные проекты через GSoC, является хорошим показателем развитости айтишной инфраструктуры и потенциала страны. Если посмотреть на статистику GSoC, то мы увидим довольно печальную картину - в топ 15 учебных заведений мира не попал ни один российский вуз, в то время как в 2016 году от России в программу попало 52 студента - это 6 место в зачете, что лучше, чем в 2011 году, но все же. Если мы говорим о важности айти в современном мире и стремлении России занимать лидерские позиции в мире, то нашим руководителям образования в правительстве и деканам релевантных факультетов надо задуматься над этими цифрами.

          Моя практика общения с деканами айтишных факультетов говорит о том, что никто из них про GSoC не знает и не понимает его важность. Очень мало студентов/аспирантов знает про GSoC, я много выступаю на конференциях и практически никто не мог ответить на мой вопрос, что такое GSoC, не говоря уже об участии в нем. Это конечно печально, поэтому я призываю студентов/аспирантов принять участие в GSoC 2017, для этого вам не нужно ничье разрешение, максимум вам надо взять справку из вашего ВУЗа. Оптимально, если ваш научный руководитель сможет понять важность GSoC, поддержит вас и поможет вам определиться с темой вашей научной работы и заявкой в релевантное сообщество. Я думаю, что любой нормальный руководитель пойдет на встречу, а если он этого не поймет, то стоит задуматься о работе с ним.

          Более того, наша компания Postgres Professional - активный участник международного сообщества PostgreSQL, готова помочь студентам и аспирантам, которые готовы принять участие в GSoC. У нас в компании работают много разработчиков постгреса, признанных в сообществе, которые могут помочь с темами и быть менторами. С нами можно общаться в оффлайне и на русском языке :) И еще, мы готовы помочь поговорить с вашими руководителями и убедить в необходимости поддержки вас на кафедре. И даже более того, вы можете поработать над темой, которая нам будет интересна, в нашей компании или пройти практику у нас, и все это можно будет засчитать вашей научной работой. Для примера статья "Применение машинного обучения для увеличения производительности PostgreSQL" студента ВМиК МГУ Олега Иванова, который занимается очень интересными исследованиями у нас в компании, сейчас он исследует алгоритмы выполнения приближенных запросов в PostgreSQL для BIG DATA.


          Мой практический вклад состоит в двух гаишевских студентах (ГАИШ МГУ), которых я сподвиг еще на заре GSoC, плюс мой старший сын - студент ВМиК МГУ, который пробился в проект машинного обучения Apache Mahout и это сильно повлияло на его карьеру, сейчас он работает в весьма крутом проекте Гугла по искусственному интеллекту - Deepmind. Кстати, нашел его пропозал и обсуждение, думаю полезно посмотреть реальный пример работы студента. Еще один живой пример - это Саша Коротков, который участвовал в GSoC 2012 (Better indexing for ranges, руководитель Heikki Linnakangas), за три года пробился в сильное постгресовое сообщество и стал ведущим разработчиком проекта (major contributor), и в 2015 году стал со-основателем нашей компании Postgres Professional. С тех пор он сам стал ментором в GSoC и руководил двумя российскими студентами.

          Резюмируя, участие в GSoC важно для студента/аспиранта - поможет его профессиональному росту и карьере, для нашей системы образования - хороший показатель успешности вуза, хороший мотиватор для студентов и преподавателей, в целом для страны - профессиональные кадры, хорошее присутствие россиян в крупных проектах и как следствие, влияние на их развитие, для всего мира - это еще один важный канал межнационального общения, который даст развитие технологиям будущего.

          Я очень благодарен Гуглу, который уже 12 лет поддерживает и развивает этот проект, очень надеюсь, что никакие политические проблемы не заставят Гугл остановить этот проект. Я надеюсь, что когда-нибудь у нас в России будет аналогичная программа, которая позволит талантливым ребятам присоединиться к международному сообществу разработчиков, причем независимо от того, где он живет. Для России это важно, где молодежь стремится в центральные города, вместо того, чтобы жить в родном городе, в привычной среде.



Участие в Google Summer of Code

Приветствую всех!

Думаю, многие слышали о студенческой программе Google под названием Google Summer of Code (GSoC). Если кратко, то суть программы заключается в следующем: проекты с открытым исходным кодом подают заявки, Google их рассматривает и выбирает определённое количество для участия, а затем к участию отбираются студенты силами самих проектов. Естественно, людей надо как-то мотивировать к участию, поэтому в течение тех 3-х летних месяцев, в течение которых студент будет работать, ему выплачивается стипендия в $5000 (в случае удачного завершения работы), его руководителю — $500. Лето уже близится, а это значит, что студентам скоро можно будет подавать заявки на GSoC 2012. Так как я не помню, чтобы на Хабре делились опытом участия в данном мероприятии, я решил это исправить и расскажу подробно о том, что необходимо для подачи заявки, как ее подавать и о дальнейшем участии. Буду рассказывать на примере своего участия в 2010 году. Кому интересно — прошу под кат.

Условия участия

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

  • участник должен быть студентом (или аспирантом) на момент оглашения принятых к участию, т.е. возможен вариант, что к концу проекта вы уже не будете студентом (в этом году студенты подают заявления на участие с 26 марта по 6 апреля);
  • помимо этого, вам должно быть как минимум 18 лет.

Как видите, условия достаточно просты. Поэтому переходим к следующему этапу.

Выбор организации (проекта)

Следующее, что вам необходимо сделать — это выбрать проект (или организацию), от имени которой вы хотите участвовать (и на которую вы будете работать). Я в своё время выбрал GNOME. Обычно у многих (особенно больших) проектов на сайте есть уже какие-то списки идей, который они хотели бы реализовать в рамках данной программы. Например, вот так список GNOME выглядел в 2010 году, сейчас новый список доступен здесь. Я не стал долго думать и взялся за ту идею, которую разработчики хотели бы реализовать в первую очередь (плагин для Totem, обеспечивает поддержку частей в видеофайлах вне зависимости от формата, он же Totem chapters plugin в списке). Но вовсе не обязательно выбирать идеи из имеющегося списка — вы можете сами их предлагать проекту, и, зачастую, это больше приветствуется.

Подготовка к подаче заявления

После того, как вы выбрали проект для участия, необходимо подготовиться к подаче заявления. Так уж сложилось, что количество желающих студентов со всего мира достаточно велико (по моим оценкам в 2010 году было 4-5 человек на место), а отобрать надо порядка 1000 человек. И так как количество студентов от каждого проекта ограничено, то у каждого проекта есть свои условия для подачи заявления. В большинстве случаев это обычная проверка на то, что вы действительно умеете программировать и общаться с людьми (например, исправить какой-нибудь баг), а также хоть немного знакомы с теми инструментами, которые используются в проекте при разработке. У GNOME в свое время было достаточно простое условие: исправить любой баг в их багзилле. Это достаточно легко выполняется за день-два, поэтому не бойтесь с чего-то начинать. Я написал патч для fileroller (архиватор GNOME), а позднее и другой патч для поддержки архивов lrzip. Причём первый так и не был принят, а вот второй приняли. Постарайтесь заранее ознакомиться с тем, как ведется разработка в проекте, какие инструменты используется — их знание будет безусловным (но не решающим) плюсом в вашу пользу при выборе из нескольких участников.

Не бойтесь идти на контакт с участниками проекта до подачи заявления: во-первых, выясните насколько ваша идея актуальна, а во-вторых, о вас уже будут знать в проекте (по крайней мере, о вашем стремлении).

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

Подача заявления

Собственно, процедура подачи заявления достаточно проста. Напишите само заявления по требуемому шаблону (пример моего заявления) и до момента окончания приёма отправьте на рассмотрение через сайт Google (смотрите самую первую ссылку в тексте, там можно зарегистрироваться для участия). Большим плюсом будет, если вы в заявлении опишите примерный план ваших работ на лето — это помогает оценить объём работ и намерения участника. Главное при отправке заявления правильно выберите свою организацию из списка (если выбранная вами организация, конечно же, была допущена к участию). В заявлении постарайтесь показать, что именно вы достойны участия, потому что на ваше место могут претендовать несколько участников — выбор за самой организацией. После этого вам остаётся только ждать результатов.

Вас выбрали к участию

Если ваше заявление прошло — поздравляю! На ваш почтовый ящик должно прийти подтверждение от Google. Кстати, было забавно, что у некоторых людей GMail посчитал это письмо спамом, и была у некоторых лёгкая паника. Но радоваться ещё рано — впереди вам предстоит большая работа.

Вот что вам надо сделать в первую очередь:

  • вы будете подписаны на внутреннюю рассылку Google для участников GSoC — внимательно ознакомьтесь с правилами поведения, там же вас будут информировать о всех новостях и о том, что нужно сделать, где какие формы заполнить, главное правило — не пишите всякую чепуху и спам в рассылку, сперва внимательно прочитайте FAQ, потому что студентов — много, а сотрудников Google — всего несколько человек;
  • пришло время предоставить в Google подтверждение вашего студенчества — для этого возьмите в университете справку о том, что являетесь студентом (справка на русском языке, либо на другом официальном в вашей стране);
  • на своей персональной странице GSoC загрузите специальную форму о том, что вы согласны с правилами участия, распечатайте и подпишите её ручкой, затем отсканируйте (именно отсканируйте);
  • когда в рассылке будут оглашены сроки подачи подтверждений студенчества — отправьте по указанному адресу копию вашей справки (лучше снабдить её переводом на английский — это ускорит процесс проверки) вместе со сканом подписанного соглашения, и не спрашивайте потом в рассылке о том, проверили ли ваши документы — если вам ничего не пишут, то либо все устраивает, либо проверяют (лично мне пришло письмо с тем, что документы приняты и с ними всё в порядке).

Как только ваши документы приняты — вы становитесь полноправным участником GSoC, а в качестве подарка Google вышлет вам вступительный пакет участника (в 2010 году в него входило: поздравительное письмо, блокнот, ручка, наклейка на машину, дебетовая карточка Citibank для зачисления денег). Инструкция по активации карты прилагается. Деньги можно снимать в любом банкомате Citi. Если мне не изменяет память, то на карте были стартовые $500. Совет: снимайте деньги как можно скорее после их зачисления, так как в прошлом году были случаи взлома Citi, и студенты оставались без денег.

Начало работы над проектом

Теперь настало время поговорить со своим наставником от организации (на каждого студента организация выделяет наставника), а также с участниками самой организации. Подпишитесь на их рассылку, поприветствуйте всех и расскажите о себе и своих планах. Чем лучше вы наладите контакт на начальном этапе, тем легче будет вам работать дальше. На это у вас есть порядка месяца (собственно, на это месяц и даётся). Почитайте о правилах для участников (в каждой организации они свои). Например, в GNOME были следующие правила:

  • каждый участник раз в неделю отписывается о том, что он сделал во внутреннюю рассылку, чтобы администраторы от организации видели ход работы;
  • каждый участник заводит для своего проекта страницу на wiki и заполняет её информацией о проекте, о текущем ходе дел, об итогах работы в конце и другую полезную информацию (пример моей страницы)
  • блог, в котором описывается ход работы, заводится по желанию, но плюс в том, что он добавляется в аггрегатор всех блогов разработчиков GNOME, и о вашей работе узнает много людей, как и о вас самих, среди участников организации (пример моего блога с недельными отчётами);
  • студентов спонсировали на поездку на GUADEC (европейская конференция GNOME), где можно познакомиться с основными разработчиками, а также вам даётся право на свой доклад о вашей работе;
  • по завершении работы вы должны сделать сводку того, что было сделано, и то, чем вы будете заниматься в дальнейшем.

На первом пункте остановлю внимание поподробнее. Дело в том, что в середине лета вы проходите так называемый midterm evaluation, то есть справляетесь ли вы со своей работой или нет. Решает это организация, на которую вы работаете, и выносит она это решение на основе того, что скажет о вас руководитель, но сама организация может вынести иное решение. Поэтому ваша работа должна быть на виду, о ней должны знать. Если у вас сессия — предупредите в рассылке об этом.

Также в этот вступительный месяц вы можете начать изучать инструменты, которые будете использовать в работе, смотреть кодовую базу, думать о возможных решениях. Никто не запрещает вам начать писать код уже сейчас (я так и делал). В общем, не теряйте этот месяц зря.

Три месяца работы

Собственно, где-то с конца мая и начинаются три основных рабочих месяца. Старайтесь изучить как можно больше за это время. Не бойтесь спрашивать своего руководителя, даже если вопрос кажется вам глупым. Спрашивайте у сообщества. Вам подскажут как сделать то или иное действие лучше. Планируйте как минимум 4 часа в день на GSoC, а лучше больше. Поэтому если у вас есть основная работа — то участие в GSoC будет не самой лучшей затеей (в том же GNOME несколько проектов были провалены). Главное для вас пройти контрольную точку в середине (на карточку после этого зачислят половину общей суммы), и аналогичную контрольную точку в конце (перечислят остатки денег). Также в случае вашего успешного завершения вы будете обязаны всю свою работу предоставить в виде архива в Google (все ваши патчи, исходники и т.д.) — видимо, для отчётности.

Теперь немного о том, почему не стоит бояться участия. Я, например, перед подачей заявления, вообще не работал с GLib, GObject, GTK+, GStreamer и прочими технологиями GNOME. Я начал активно читать литературу и примеры в первый месяц, пытался что-то написать и отладить. Каждую минуту старался провести с пользой, чтобы взять максимум информации. Читал даже в электричке пока ехал домой. Поэтому я считаю этот месяц очень важным. Вы должны почувствовать проект, чтобы работа шла в удовольствие. В итоге часть знаний пришли до начала работы, часть пришла во время работы. Не бойтесь лезть в код и пробовать — руководитель тоже понимает, что проект для вас новый, и вам нужно время.

Завершение работы

Если вы удачно прошли две контрольный точки, то, как я уже говорил выше, отправляете результаты работы в Google и выбираете размер футболки у себя в профиле. Потому что вам придёт поздравительный пакет (да, ещё один) от Google, в котором в 2010 году была фирменная футболка (тираж которой всего лишь порядка тысячи) и именной сертификат, подтверждающий ваши успехи в GSoC. Думаю, не нужно объяснять, что данный сертификат может сыграть одну из ключевых ролей при приёме на будущую работу (всё-таки у студента с сертификатом от Google шансы на приём повышаются). Ну и просто приятно повесить его в рамку :) Из других очевидных плюсов:

  • получите хороший опыт работы;
  • познакомитесь с компетентными людьми;
  • хороший шанс влиться в сообщество разработчиков;
  • вместо выпитого летом пива получите $5000.

Как видите, мотиваторы неплохие. Если понравится — можете продолжить участие в проекте. Для примера, чему я научился за три месяца:

  • GLib/GObject;
  • GTK+;
  • libxml2;
  • форматы CMML и Annodex;
  • OGG/liboggz;
  • GStreamer;
  • формат Matroska/EBML;
  • формат FLAC;
  • git;
  • немного autotools.

Согласитесь, достаточно неплохая летняя практика для студента. Плюс я познакомился со многими людьми. В общем, время у вас ещё есть — думайте, участвуйте, приносите пользу open source.





Поделись этим