Python conf in Kharkiv, Nov 16 with Intel, Elastic engineering leaders. Prices go up 21.10

Google Summer Of Code 2017 — почему это важно и как в этом поучаствовать

TL;DR: Сегодня начался «студенческий» период Google Summer of Code, и если вы — студент какого-нибудь ВУЗа, вполне возможно, что это именно то, чем вы хотите заняться этим летом!

Привет.

27 февраля Гугл объявил, какие опенсорсные проекты приняты в программу в этом году. И теперь для всех студентов, которые хотят принять участие, наступил момент приложить усилия, чтобы поучаствовать в этом занятном мероприятии.

Я попытаюсь объяснить, как и зачем это делать — частично пересказать (очень вкратце) официальный сайт, частично поделюсь своими собственными наблюдениями, как ментора этой программы.

Но, для начала...

Ты кто?

Ruby-программист, 15 лет опыта, 10 лет программирования на Ruby, энтузиаст opensource, бла-бла-бла. С прошлого года — я один из менторов в Google Summer of Code для opensource-организации SciRuby.

А теперь — к делу.

Что вообще такое этот Google Summer of Code?

Расклад простой:

  • опенсорсные организации, которые разрабатывают большие и важные проекты, заявляют о своей готовности принимать студентов;
  • студенты подают заявки «я готов написать для этого проекта код, который будет делать то-то и то-то»;
  • лучшие из них принимаются в программу;
  • те, кого приняли, всё лето пишут код и получают стипендию от Google;
  • ...а опытные программисты из «принимающей» организации помогают им в этом, дают советы, критикуют код и вообще занимаются тем, что называется «менторством».

ОК, и зачем оно мне?

По множеству причин!

Во-первых, это опыт и взаимодействие с зачастую очень крутыми программистами, в реальных и сложных проектах. И при этом, насколько я могу судить, менторы GSoC — это люди, которые заведомо готовы возиться со студентами куда больше, чем это делают «старшие» в коммерческих проектах, например. И, кстати, менторы берут на себя обязательство быть менторами (только в этот период; в другое время те кто поддерживают большие опенсорс проекты зачастую готовы принимать и поддерживать новичков, но не обязаны это делать).

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

В-третьих, прагматично — это деньги. Я, к сожалению, не знаю сколько (кажется, с этого года Google начал странную практику «мы сами решим сколько платить студенту, в зависимости от средних цен в его стране»), но, вроде бы, — не меньше нескольких сотен долларов в месяц. Опять же, не худший стимул провести лето с толком.

В-четвёртых, это сообщество в целом. В мотивирующих статьях и рекламе LinkedIn часто утверждается что-нибудь вроде «более X% находят работу через знакомых!» — к сожалению или к счастью, в этом утверждении много истины (в зависимости от значения X, конечно). Но дело не только в этом. Возможность ещё на уровне «я только учусь» завести личные контакты и получить благожелательное внимание хороших программистов со всего мира — это то, зачем нужен GSoC.

Ну допустим. А что делать?

В официальном таймлайне говорится, что студенты могут регистрироваться и подавать свои предложения с 20 марта по 3 апреля. Но и в неофициальных разъяснениях, и в моём личном опыте — рекомендуется начинать прямо сейчас (поэтому сейчас я и пишу этот текст).

С чего начинать?

  • Посмотреть на организации, которые Google принял для участия в GSoC.
  • Найти среди них знакомые/интересные/использующие интересные вам технологии.
  • Почитать их «список предлагаемых проектов» (ideas list), и решить, что вам по душе.
  • Почитать код соответствующего проекта, подумать, прикинуть, составить хоть какой план.
  • Подписаться на рассылки/форумы/группы организации, познакомиться, помахать рукой со словами что вот он я, хотел бы заниматься тем и этом.
  • Если хватит сил и понимания — сделать пару пулл-реквестов в код соответствующего проекта (решая какие-нибудь простые задачи, хоть опечатки в доках исправляя) — поможет вам понять, разбираетесь ли в коде; и им даст понять, что вы вникаете.
  • Можно написать лично координатору выбранного проекта — но лучше не слишком навязываться; многие (и я в их числе) предпочитают «официальные» каналы связи организации — рассылки и форумы.

После этого — если всё пошло хорошо, вы поняли что эти люди вам не противны, и они не дали понять, что вы им не подходите — в заданный срок (с 20 марта по 3 апреля) можно подавать свои proposals. Лучше раньше, чем позже — пропозалы можно редактировать, и скорее всего менторы помогут вам это сделать, задавая наводящие вопросы и тыкая в слабые места, выявляя нереалистичные планы и бессмысленные заявки.

А потом вас примут! Или не примут. Одно из двух.

Я бы хотел... Но я, кажется, ещё не настолько крутой программист

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

В конце концов, даже если вас не примут (а это вполне вероятно, а лягер кум а лягер) — можно взять себя в руки и не выпиливаться из сообщества понравившегося проекта, помогать ему «просто так» — скорее всего произойдут следующие вещи:

  • вас будут менторить с тем же вниманием как и «официальных» студентов; да, вы не получите стипендии, зато получите нефиговое уважение от мейнтейнеров проекта (кстати, единственному студенту, который так и поступил в прошлом году, мы таки нашли возможность дать заодно и денежный грант, мимо GSoC);
  • в следующем году вас скорее всего примут без вопросов... а может, до следующего года вы так наловчитесь, что станете одним из менторов проекта, а не студентов?

Соблазнительно... А как понять, что оно мне не надо?

Тут всё просто — и, всё же, надеюсь, кому-нибудь будет полезно, чтобы не тратить своё и чужое время. Итак, несколько простых правил:

  1. Если во всём списке вы не видите ни одного проекта, в котором правда, искренне интересно разобраться и поучаствовать — не заставляйте себя. Без икреннего энтузиазма этот путь не преодолеть.
  2. Если вы воспринимаете всю эту инициативу как «возможность поднять бабла» — не надо. Работать придётся много и сложно. Лучше уж в Макдональдс на лето устройтесь.
  3. Если вам кажется что вы уже офигенно крутой программист (но при этом вы почему-то ещё студент), менторить вас не надо, зато вы готовы Нести Свет Истины в какой-нибудь опенсорсный проект и получать за это стипендию — вероятно, что-то происходит не так. Just sayin’

Совсем коротко: чтобы принять участие с пользой для себя и окружающих, необходимо два стремления одновременно:

  1. стремление напрограммировать что-то интересное и
  2. стремление учиться.

И как это будет происходить?

Если вас примут (давайте будем оптимистами и напишем «когда вас примут»!) — это станет известно 4 мая — дальше официальный таймлайн даёт такой порядок:

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

Обратите внимание! Предполагается (и во время оценки проекта в апреле, и во время работы летом) что это фулл-тайм занятость, 40 часов в неделю. Никто, конечно, не ожидает что вы будете заполнять какие-то отчёты «сколько часов я сегодня работал», и в целом — насколько я могу судить — отношение к студентам в общем либеральное, «главное сделать заявленное, или хотя бы честно попытаться». Но важно понимать, что участвуя в GSoC, вы соглашаетесь на много работы — и соответствующим образом выстраивать и свой пропозал, и планы на лето.

Если же кажется, что от вас требуют слишком много — см. предыдущий пункт.

А потом что?

А потом — что угодно! Как минимум, стоит завершить проект — то есть если вы, допустим, написали весь код и не дописали доки/не сделали релиз — ну, не ленитесь, закончите! (Даже если проект уже был принят, стипендия выплачена, начался новый семестр в вузе, новая девушка....) Но, по меньшей мере, оставить за спиной «хорошо сделанное дело» — куда полезнее и для себя, и для других, чем оставить всё в состоянии «и так сойдёт, стипендия-то пропита» (и да, я много раз был тем человеком, который вписывался в какие-то интересные проекты «за зачёт», и бросал их сразу после зачёта — так что я точно знаю, о чём говорю).

Но это как минимум. А как максимум — вы можете, например, продолжать участвовать в проекте, если он увлёк (даже если не очень понятно, где найти на него время). Хотя бы лениво. Хотя бы пару часов в субботу — или скажем 15 минут в день. За это не будут платить стипендию, и, возможно, вообще никакой благодарности не будет. Зато будет наращиваться самое драгоценное — опыт и репутация.

Но так же важно, к слову, иметь смелость бросить проект, в который вы вложились — если вы точно поняли, что не нравится, не интересно, «не моё». И вообще про GSoC забыть навсегда — вовсе не зазорно. Но попробовать один раз, понять на что это похоже и бросить, потому что не соответствует вашим ожиданиям или характеру — куда осмысленннее, чем «даже не пробовать».

Если честно, мне было довольно странно наблюдать, как осмысленные ребята из Индии, Шри-Ланки, Таиланда, Индонезии — вкладывают все силы и средства в то, чтобы хотя бы попробовать; а вот российских, украинских, польских, болгарских, литовских имён среди студентов известных мне организаций — что-то не видать. Уж не знаю, списать это на незнание о GSoC, лень или что иное.

А если я не студент?

К сожалению, у Google строгие правила: студент GSoC обязан быть студентом аккредитованного вуза (оффлайнового или онлайнового) на момент принятия в программу (в мае, то есть пятикурсником быть ок!).

Но! Я повторю рекомендации, данные тем, кого не приняли: попробуйте «просто участвовать» в одном из проектов. Без ожидания стипендии — но с ожиданием менторства, опыта, вливания в какую-то живую среду.

Из всех способов получить живой реальный опыт — это один из самых надёжных.

Напоследок

Грубо: не ной «где взять опыт?», «как получить репутацию?», «что писать в резюме?» Как говорил один из моих лучших учителей программирования: «получил мяч — х**чь». Вот тебе мяч, дорогой друг. Дальше дело за тобой.

Пара ссылок напоследок:

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не очень понимаю, если я знаю основы Go и C + алгоритмы, есть шанс попасть? Или можно даже не пытаться? По имеющимся постам надо иметь хотя бы год опыта нормальноц разработки.

Есть шанс «попасть», если что-то пробовать делать. Следующий Google Summer of Code через полгода начнётся (ок, проекты подаются раньше, но тоже через несколько месяцев) — за это время вполне можно посмотреть какие бывают проекты, решить на каком языке вам больше хочется писать, почитать пару книжек, покопаться в паре проектов... А можно найти как можно больше подтверждений что «можно даже не пытаться» — тоже выход, да.

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

а каким образом там перечисляют стипендию? нужно оформлять какую-то карточку типа пионера?

а по Украине где-то есть список акредитированных ВУЗов, которые признает гугль? на офф.сайте дают лишь ссылку на левую статью в википедии

Пожалуйста: www.abiturient.in.ua/ru/vuz
ВУЗ — это уровни аккредитации III и IV.

а есть ли возможность посмотреть какой конкурс на конкретном проекте, чтобы понять насколько реально попасть на него?

Думаю, что нет. Учитывая что пропозалы можно подавать несколько недель, вполне может быть что 2-го апреля появятся 100 офигительных пропозалов от суперзвёзд, и все чуваки которые активно вливались в сообщество, общались с менторами, делали PR — останутся в пролёте. Ну это экстремум. «Примерно оценить» можно, просто начав общаться в проекте (что у него там основное средство — слак, гиттер, почта, форум, вотэва). Все кто собираются стать студентами, как правило стараются засветиться заранее — обращаем внимание кто чо писал, кто недавно начал в проект коммитить и т.п. — делаем примерные выводы о суровости конкурса.

а ментором может быть только кто-то из руководства конкретного проекта или же можно указать ментором знакомого у которого есть опыт в нужной сфере?

О «руководстве» речи не идёт (в большинстве open source организаций его и нету, разве что «модераторы»). Но, насколько я понимаю, предполагается что ментор — один из активных членов именно сообщества этого проекта. Я видел, что некоторые организации явно пишут «ищем и менторов тоже» — но это всё равно значит, что ваш знакомый прямо сейчас начинает тусить в мейл-листах, выражает своё желание менторить какой-то проект или предлагает новую идею, тем временем скажем разруливает какие-то проблемы проекта, улучшает качество кода и т.п. И всё равно это не гарантирует что вас возьмут, раз уж этот ментор пришёл «исключительно ради вас».

Менторы же и совещаются, оценивая качество предложений, квалификацию студентов и т.д., и вообще тоже вкладываются на фуллтайме.

То есть нет, вариант «вы мне главное стипендию дайте, а ментора я найду» не прокатит.

это не гарантирует что вас возьмут, раз уж этот ментор пришёл «исключительно ради вас»
а разве кандидат в менторы может стать ментором если у него нет подшефных?

Ну, всё сложно. По официальной гугловской статистике, менторов больше, чем студентов. Учитывая, что ментор денег не получает, это просто активный участник OSS-проекта, вполне может быть на одном проекте 10 менторов на 3 студента. Из них «решающее слово» каждому студенту говорит его «основной» ментор, но дальше — как там на проекте решат; например может быть ментор по «научной составляющей» и ментор «по качеству кода», и ментор типа «мимо проходил» (коммичу своё в проект, временами ругаюсь на студентов которые коммитят говно). Это менее формальная должность, чем «студент».

Где можно найти список

аккредитованных вузов
?
Заочная форма обучения подходит?

Насколько я понимаю (но можно связаться с организаторами и уточнить):
* имеются в виду аккредитованные в вашей стране ВУЗы (по законам страны);
* любой студенческий билет подходит.

А можно, допустим отправить больше одного пропозала, в разные организации?

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

Очень толковая публикация у вас, спасибо. Вот, тоже информация для студентов, есть railsgirlssummerofcode.org — это, как вы понимаете, для женщин на Rails)

Нет организаций, которым нужно что-то на андроид. Как так?

как минимум MITLabs
есть куча организаций, которым нужно портировать их службу на андроид. Вы не технологии смотрите, а проджект айдиас. Тем более проект всегда можно предложить

А есть здесь кто участвовал не будучи студентом (точнее уже закончив вуз) или может кто знает таких людей (писать я им не буду, это просто для справки) ?

Насколько я себе представляю, это запрещено правилами (если вы имеете в виду участие в качестве студента; если в качестве ментора — то вот я, например).

Спасибо, что еще раз ткнули носом, я с первого прочтения не правильно понял смысл абзаца: А если я не студент ?((

а почему нельзя участвовать если ты онлайн-курсы проходишь? большинство наших акредитированных вузов — сплошной шлак

Ну, это наверное не ко мне вопрос, а к Гуглу, правда?

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

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

Ну и — участвовать-то в опенсорсе вам никто не запретит, чего.

Самое печальное что есть технологии что я там я юзаю но в них шарится до кончиков не хочется) где же Facebook )) то что рили интересно) а то вроде круто и в тоже время стремена ужас как

Кто куда? я от на бейбл думаю пробовать хотя хз что там им в форме отписывать))

Круто!
А какой уровень должен быть у студентов? Что они уже должны знать/уметь, чтобы быть рассмотренными?

Смотрите, история такая: рассматривают всех студентов (= любой студент может подать проект), нет никаких предварительных интервью и тестов на компьютерную грамотность.

У какого студента больше вероятность быть выбранным?
1. Того, кто написал хороший пропозал (процесс выглядит так: ВЫ выбираете чем хотите заняться, и описываете предполагаемый план и способ реализации): обоснованный и реалистичный. Для этого нужно как минимум разобраться в коде того проекта, в котором хотите поучаствовать, прикинуть как делать то, что вы собираетесь делать, и хватит ли на это времени.
2. Того, кто уже успел зарекомендовать себя в сообществе/познакомиться с будущими менторами — то есть сделал несколько Pull Reguest-ов или хотя бы начал обсуждение будущих задач сильно заранее.

То есть нужно обладать достаточной квалификацией, самостоятельностью и обучаемостью, чтобы выполнить (1) и (2). Не обязательно на «профессиональном» уровне, но хоть как-то.

А потом в дело вступает удача и конкуренция ;)

Очень крутая возможность.
Но у меня вопрос, если я могу только front-end, js на начальном уровне, всё остальное (html/css и тд) на более-менее на хорошем уровне.
Есть ли вариант найти что-то для себя?

Подозреваю, что должен быть! Но, как я и пишу там ниже, найти этот вариант — и есть ваше первое самостоятельное задание на GSoC :)

Можно попробовать отфильтровать список организаций по известным вам словам — js, frontend, css и т.д. — и посмотреть, что покажет эта лотерея.

А если есть пункты что я не понял можно будет поспрашивать что там имеют ввиду?)

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

Там все чітко написано, для початку ознайомтесь з кодом, з проектом який вас конкретно цікавить відносно babel. Зайдіть в слек на канал #summer_of_code там все є. І починайте накидувати proposal паралельно

Скиньте плз ссылку на слак канал
Гугл ничего не отдает по запросу `slack

summer_of_code

`

Ви напевно не так зрозуміли, я мав на увазі канал babel -a
babeljs.slack.com

Добрый день! Я уже не студент, но изучаю программирование сам. На менторство можно рассчитывать только если коммитишь по 40+ часов?

Конечно нет.
В принципе, все проекты, заявившиеся на GSoC — тем самым показывают, что они готовы к притоку новичков и рады им — вне зависимости от времени года и количества усилий, которые новичок готов вложить.

К этому нужны две оговорки: во-первых, менторы — волонтёры и живые люди, им может быть лень и некогда (поэтому если на ваш вопрос/PR/issue нет никакой реакции неделями — не следует обижаться и разочаровываться в жизни); во-вторых, большинство менторов готовы менторить (то есть давать советы, критиковать код и указывать на ошибки), но не готовы учить (то есть показывать как правильно, рассказывать какую книжку надо почитать и писать килобайты поучений). Это значит, что а) совсем-совсем плохой код скорее просто проигнорируют и б) надо быть готовым к большому количеству самостоятельной работы.

Дайте совет: изучаю java(около 3 месяцев), в будущем хотелось бы заниматься android dev, какой из проектов подходит под описание? Немного посмотрел, заинтересовали следующие проекты: Catrobat, Checker Framework, The Java Pathfinder Team, отдельно хотелось бы выделить Eclipse, работаю в данной среде, очень нравится. Спасибо всем откликнувшимся)

На самом деле, идея всего GSoC — в том, что студент должен серьёзно вложиться :) Иными словами, мне кажется что это отличное подготовительное задание, чтобы самому оценить собственные возможности/готовность принять во всём этом участие: git clone код всех заинтересовавших проектов, посмотреть в «идеи для этого проекта», подумать, представляете ли вы хоть отдалённо, с чего бы начать интересную идею реализовывать, и т.п. 5-10 часов копания — и вы поймёте сами, какой проект больше всего подходит.

Отдельно, правда, стоит сказать, что супер-популярным проектам (типа того же Eclipse) гугл обычно даёт много «мест» для студентов — но и конкуренция там огромная, то есть если вы только в начале пути, вероятно, следует присмотреть проект поскромнее.

Подписаться на комментарии