Да, вы все правильно прочитали, это руководство для заблудшего автостопщика, который изо всех сил пытается найти свой путь к Google Summer of Code (вероятно, лучшее название, которое я мог придумать, чтобы описать свое состояние в это время года в 2016 году. ), и, безусловно, название навеяно одной из моих любимых книг всех времен Автостопом по Галактике.

При этом в этом посте будет описан мой путь к GSoC, рецепт, по которому я его взломал, когда я начал и т. Д., И постараюсь ответить на все вопросы, которые возникают у меня с тех пор, как я его завершил.

TL; DR: Вы можете пропустить рассказ о моем путешествии, если вам просто нужны советы и «индивидуальный график», хотя я бы презирал вас за это, но опять же, кто я такой, чтобы судить: P

«За каждой отличной идеей стоит еще более интересная история»

Нет, это не цитата какой-либо известной личности, я просто ее придумал ...

Итак, это был конец первого года, и это сбитое с толку и несколько разочарованное я пытался найти свой путь через этот лабиринт под названием «Колледж» и утолить жажду создания чего-то великого в области, которой я больше всего увлечен, кхм … Технологии… кхм. Я вырос, играя с электроникой и выясняя, как делаются радиоуправляемые игрушки, когда в основном все просто играли с ними, и в итоге я выбрал Электронику и Электротехнику в качестве своего филиала. Да, я не имею опыта CSE / IT, и вам не обязательно принадлежать к одному из них, чтобы попасть в GSoC.

Ближе к концу 2-го семестра я наткнулся на этот термин под названием «Google Summer of Code» и, как и большинство людей, был впечатлен им и заинтригован им, и начал поискать в Google, чтобы узнать, что это такое. После того, как я понял суть этого и я был новичком с небольшим опытом программирования, GSoC показался мне слишком большой целью, о которой я даже мечтать не мог. Но мне все равно хотелось попробовать, так как я общался с некоторыми из моих старших, которые входили в группу разработчиков Google в моем колледже, и что ж, они отлично поработали, соблазнив меня GSoC;).

Тогда я слышал только об одном старшем, который взломал GSoC, и он был для меня легендой, так как помимо этого он достиг еще нескольких вещей. Как наивный юниор, я обратился к нему за помощью по поводу GSoC, и мне сказали, что он знает много людей, которые были намного более опытными, чем я, и которые не могли войти после неоднократных попыток. Излишне говорить, что я не получил от него особой помощи, и моя «великая мечта в области программирования» рухнула, услышав это. Именно тогда я решил натянуть носки, взять рюкзак и отправиться автостопом по «стране программистов», чтобы найти свой собственный путь к Google Summer of Code.

Все началось с того одного поиска в Google «Как быть выбранным в Google Summer of Code», один поиск превратился в 2, затем в 3, и, прежде чем я это понял, я потратил почти целую неделю на то, чтобы узнать, как попасть. прочитал кучу блогов и статей и имел достаточно знаний, чтобы опубликовать исследовательскую работу по этой теме, но все еще не знал, как войти или как начать делать взносы. Итак, я закончил тем, что оставил это в стороне, так как раньше мне казалось, что, будучи из области, не связанной с CSE / IT, это действительно не моя чашка чая, и вместо этого я переключился на возню с электроникой и микропроцессорами / микроконтроллерами, поскольку я их находил. также интересно (до сих пор), а также потому, что «менее опытный я» имел старшеклассников из моего колледжа, а также NSIT, которые могли направлять меня.

Во время одного из семинаров по электронике в NSIT я встретил старшего по имени Вайбхав Чоудхари из отдела электроники, и как экстравертный и очень дружелюбный старший он, мы поговорили о нашем опыте, и именно тогда он упомянул, что заканчивает его проект GSoC с Beagleboard.org в то время. Мое выражение лица, услышав это, было примерно таким:

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

Следуя его совету изучить простой язык программирования для начала, я начал с обновления своих навыков Python, просматривая видео на YouTube / Coursera, а также начал изучать, как использовать Git / GitHub. К ноябрю я включил в шорт-лист организацию, которая показалась мне наиболее привлекательной, а именно Sugar Labs, так как я был заинтригован их миссией по предоставлению качественного образования детям через их платформу.

Я начал экспериментировать с их платформой, клонировав ее, и подумал о создании активности (приложения) для их программного пакета / Sugar OS, следуя их построению вашего первого руководства по действиям, чтобы понять, как выполняются действия, я также считал, что публикация моей деятельности будет хорошим первым вкладом. (Его можно найти здесь: https://github.com/Rishabh42/DMC-Sugar-Activity). Объединение кода Python в действие, совместимое с Sugar, казалось сложной задачей, но сообщество было очень полезно и помогло мне запустить его на Sugar по IRC.

Весь декабрь и большая часть января были потрачены на это, так как мои экзамены в колледже также были препятствием, и в это время был опубликован их первый список идей. Пройдя через это, я решил поработать над идеей «Перенос приложений GTK2 на GTK3 в Sugar», поскольку это соответствовало опыту, который я получил на их платформе при работе с Python. Затем в течение последующих недель я проводил время на их IRC-канале, чтобы найти участников, которые могли бы мне помочь (иногда получение ответа может занять много времени из-за разницы во времени).

Ответ по поводу GSoC был немного медленным, так как сообщество было вовлечено в Google Code-In в то время, примерно в январе, и я все еще не понимал, как мне писать свое предложение. Перенесемся на пару дней вперед, и я получил ужасающую новость о том, что один из наставников проекта покинул организацию, и я снова начал кружиться по спирали неуверенности в себе. Измученный, как я раньше чувствовал, я наткнулся на эту историю о сжигании всех мостов позади: http://www.rdivina.net/workout/?p=33. Который я прочитал в классике Наполеона Хилла Думай и богатей (кстати, я еще не дочитал эту книгу: P), и хотя это казалось очень мотивирующим, я все еще сомневался в себе, но, тем не менее, я не сдавался. мое путешествие и начал изучать Django, чтобы переключиться на другую идею, размещенную на странице, поскольку моя уверенность в проекте GTK упала.

Наступил февраль, и в моих глазах я снова стал новичком. Я начал изучать технологии, которые были для меня довольно чужды, и также чувствовал, что у меня есть 99% шансов не добиться этого в этом году, но мне все еще нравилось то, что я делал. За две недели до открытия фазы предложения список идей был снова обновлен, и именно тогда я натолкнулся на идею «Сахар на Raspberry Pi», и все это вернулось ко мне в тот момент (к вашему сведению, Raspberry Pi - это система- встроенный компьютер с микропроцессором). В тот момент мне напомнили, что Стив Джобс сказал о соединении точек, потому что, оглядываясь назад, я мог соединить точки с тем семинаром, на котором я присутствовал, по микропроцессорам, хотя работа, которую нужно было сделать, была для меня все еще довольно новой, но Само собой разумеется, что я получил еще один маяк надежды и заказал Raspberry Pi, чтобы поработать с требованиями проекта. Забавно, я получил доставку RPi в день святого Валентина, и до сих пор это был один из лучших впечатлений от святого Валентина, которые у меня когда-либо были ;-).

Вскоре я обнаружил, что этот проект также был довольно новым для сообщества, и не многие люди имели представление об этом, поэтому моя проблема все еще не была решена. Но к тому времени я начал понимать, как заставить Sugar работать, и все еще оставался на их IRC-канале, чтобы найти людей, которые могли бы мне помочь. Однажды, за 3 недели до крайнего срока подачи заявок, около 3 часов ночи, я получил пинг от человека по имени Джеймс Кэмерон из One Laptop Per Child (OLPC), который имел представление о моем проекте и следил за обсуждениями, которые я вел с другими участников на канале IRC. Это было началом ряда бессонных ночей из-за разницы во времени между мной и Джеймсом в 8,5 часов (поскольку он живет в Австралии). За это время я много узнал от него о кросс-компиляции, действиях Debian, упаковке и т. Д. И обнаружил исправления давно нерешенной проблемы на их платформе, Voila! Я сделал свой первый вклад.

Я мог успешно написать убедительное предложение и был уверен, что меня выберут. Сейчас, должно быть, вы чувствуете себя хорошо, не так ли? Ну, ответ - НЕТ, так как я столкнулся с другой проблемой, которую я обнаружил за 3 часа до крайнего срока фазы подачи предложения, когда я ждал ответа от одного из наставников на мое предложение, но затем я подумал, что должен загрузить его, как он было поздно. После загрузки предложения я понял, что мне нужно получить действительное доказательство того, что я студент, со штампом руководства колледжа. Было 18:00, и в это время обычно все покидают колледж, включая руководство, и нет, я не хостел (в нашем колледже нет общежития для мальчиков: /), в тот момент я почувствовал, что меня по-королевски облажали. . Я звонил по любому номеру, который мог, но никто не ответил, слова не могут описать мое состояние в то время. Именно тогда мой телефон зазвонил через пару минут после того, как я позвонил, и человек из руководства сказал мне приехать как можно скорее, так как он собирался уходить, и, как бы драматично это ни звучало, я действительно почувствовал, что звонок был с небес. . Я помчался в колледж и загрузил свое предложение, сидя в холле, подключенном к точке доступа моего телефона, за 1,5 часа до крайнего срока. Чувство удовлетворения, которое я получил, просто отправив его, было даже близко к тому счастью, которое я испытал, когда получил это письмо через месяц после подачи предложения:

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

Мой проект можно найти здесь: https://github.com/Rishabh42/Sugar-on-Raspberry-Pi

Блог GSoC: https://sugaronraspberrypi.wordpress.com/

Уф! Это было давно. Теперь я знаю, что большинство из вас кричали бы: «Покажи мне гида!» в этом месте точно так же, как Том Круз из фильма «Джерри Магуайр» (снова один из моих любимых), так что приготовьтесь, вот оно ...

Индивидуальный график

Прежде чем я начну, я предполагаю, что вы сделали свой вклад в поиске в Google термина «GSoC» достаточно раз, чтобы понять, что это такое, а также собрали свой рюкзак, чтобы отправиться в автостоп. Итак, давайте включим. Загрузитесь. Джек в…

Что мне делать до октября?

Остынь! Да, вы не ослышались, это именно то, что вам следует делать. Гуляйте по колледжу, заводите новых друзей, устраивайте вечеринки и т. Д., Но также убедитесь, что вы хорошо выучили язык программирования по вашему выбору, так как он называется Google Summer of Code.

По моему мнению, лучший способ выучить любой новый язык - это изучить основы, просмотрев несколько видеороликов, и начать реализовывать полученные знания, создав проект или найдя некоторые существующие проекты на GitHub, в которые можно внести свой вклад.

Говоря об этом, вы также должны изучить основы систем управления версиями (VCS), таких как Git. На изучение основ git у вас не должно уйти больше дня. Вы можете спросить: почему git? И зачем мне этому учиться? Согласно определению в Интернете: git похож на Google Диск или Dropbox, но вместо того, чтобы сохранять файлы путем перетаскивания их, git помогает вам хранить разные версии файла (когда вы его сохраняете), так что даже если вам придется вернуться к предыдущей версии, вы могли бы.

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

Затем Переключитесь на Linux, предпочтительно на Ubuntu (долгосрочные выпуски (LTS)), поскольку это значительно облегчит вам жизнь, если вы захотите погрузиться в мир программирования, особенно с открытым исходным кодом. Поверьте мне, когда я это говорю, Linux похож на ночное дежурство: если вы станете его частью, вам не захочется возвращаться.

Также привыкайте к программам для редактирования текста, таким как Atom, Sublime text, Vim, nano, Emacs и т. Д., Вместо блокнота, чтобы вы чувствовали себя как «хакерский» парень и пытались запускать свои команды с терминала вместо компилятора. .

Что мне делать до конца ноября?

Пришло время выбрать организацию, которая подходит именно вам, и именно здесь ваша сила принятия решений вступает в игру. Найдите организации, которые были выбраны для участия в GSoC за последние пару лет (вы легко найдете эту информацию, просто погуглите). Во-первых, отфильтруйте организацию на основе известного вам языка программирования. Затем попробуйте выбрать организацию, которая последовательно отбиралась в течение последних 2–3 лет, в ней обучается около 4–5 студентов. Если в нем будет больше студентов, будет большая конкуренция (и результаты могут быть неожиданными для вашего выбора). Если раньше в этой организации были выбраны только 1–2 студента, то это могут быть те, которые работали раньше и могут быть выбраны снова на этот раз (так что остерегайтесь этого).

Теперь после всей этой фильтрации останется около 4–5 организаций, и есть 2 способа сузить круг до 1 (или, может быть, 2, если вы действительно настолько амбициозны и у вас тоже есть время):

Метод 1:

  • Осталось 2 организации - Подбросьте монетку
  • Осталось 6 организаций - бросьте кости

Метод 2 (тот, который использовал я):

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

Когда дело доходит до чтения баз кода, вы можете ознакомиться с предоставленной документацией, но, на мой взгляд, большая часть документации - отстой, когда дело доходит до руководства для новичков, но всегда полезно читать ее. Затем попробуйте реконструировать базу кода, то есть вместо перехода от A к Z перейдите от Z к A. Вместо того, чтобы копаться в каждом файле кода, посмотрите файл кода, используемый для выполнения всего проекта, поскольку все остальные файлы кода связаны с ним, и вы можете сформировать след, чтобы понять, как течет код.

После завершения вашей организации:

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

Затем представьтесь сообществу на их форумах, в списке рассылки, Gitter, Internet Relay Chat (здесь настоящие программисты болтают со своими забавными никнеймами) или в любом другом чате и скажите им, что вы хотели бы внести свой вклад в их организацию и что вы кандидат GSoC. Попросите их помочь в начале работы или в решении любых проблем, с которыми вы могли столкнуться при создании их проекта. Здесь следует отметить, что иногда получение ответа по IRC может занять очень много времени из-за разных часовых поясов заинтересованных людей (да, они тоже люди, им тоже нужен сон). Было бы лучше, если бы вы проверили, в каком часовом поясе находится заинтересованный человек, чтобы иметь больше шансов получить ответ в IRC или преследовать его достаточно, чтобы получить их почтовые идентификаторы и пинговать их напрямую (Эй! Это не преследование, если это работает; -)).

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

Что мне делать до конца декабря?

Декабрь может стать препятствием на вашем пути, поскольку большинство из вас будут сдавать экзамены в конце семестра в это время и будут очень заняты, просматривая сериалы / фильмы, которые вы пропустили;). Но если серьезно, я бы порекомендовал вам учиться на пороге ночи, а не проваливаться, поскольку это будет накладными расходами для вашего процесса отбора, а вы этого не хотите. С другой стороны, если вы относитесь к тому типу «всезнайки», который не пропускает лекций, или кто-то, у кого есть время, то я бы порекомендовал вам продолжать вносить небольшой вклад в Организацию.

Что мне делать до конца января?

Пришло время серьезно отнестись к GSoC и подготовиться к работе в «полном режиме» в течение следующих 2–4 месяцев (в зависимости от крайнего срока подачи предложения).

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

Иногда вы можете столкнуться с некоторыми проблемами, играя с кодом или участвуя в нем. Сообщите о них также на странице GitHub организации после обсуждения их с участниками. В каждом программном обеспечении есть много ошибок, поэтому их обнаружение - это всего лишь вопрос тщательного тестирования кода.

Что мне делать до конца февраля?

Продолжайте взаимодействовать с сообществом и делайте как можно больше коммитов (просто относитесь к GSoC как к своему Валентину и старайтесь изо всех сил доставить ему удовольствие, как хороший BF / GF, которым вы являетесь ;-)). Кроме того, в это время Google часто публикует список выбранных организаций для GSoC, и организации также могут начать перечислять свои соответствующие идеи, так что следите за обоими.

Теперь вы попадете в любой из этих двух сценариев:

  • Ваша организация выбрана - Поздравляем! Теперь дорога для тебя стала проще. Вы увидите, как много студентов входит в вашу организацию, и список рассылки будет полон вступлений. Но если бы вы выполнили предыдущие шаги, которые я перечислил, вы бы стали Тони Старком своей организации. Пусть дети играют между собой. Вы просто должны продолжать делать то, что делали. Сделайте количество патчей (модное слово для исправлений / добавления мелких функций) настолько большим, чтобы никто не мог отклонить ваше предложение.
  • Ваша организация не выбрана - Поздравляем! Теперь у вас есть возможность внести свой вклад в другую организацию (также лучше для вашего резюме). НЕ СДАВАЙТЕСЬ! Выберите новую организацию в течение нескольких дней и начните повторять шаги. Вы уже достаточно хорошо знакомы с этим процессом, поэтому знаете, как идти дальше, просто идите по нему.

Что мне делать до конца марта?

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

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

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

Что мне делать до апреля?

Продолжайте вносить свой вклад, особенно если вы чувствуете, что ваш предыдущий вклад меньше, чем можно было бы ожидать. Отправьтесь в поездку с друзьями или займитесь практическими экзаменами, если вы учитесь в МПС.

Теперь просто расслабьтесь, вы испытали, как Илон Маск работает каждый день, но, в отличие от него, ВЫ можете принять таблетку от холода, извини, Илон (:. Результаты будут объявлены где-то в последнюю неделю апреля или в начале мая, и вы должны быть похлопывать себя по плечу за пересмотр своих пределов независимо от того, попадаете вы в него или нет.

Теперь снова придет 2 сценария:

  • Вы выбраны - Поздравляем! Теперь приготовьтесь к GPL / BPL, которую собираются сделать ваши друзья. Но боль будет меньше, когда ваши части тела онемели (помните этот совет, даже если вы не знаете, что означает GPL / BPL, вы скоро поймете, поверьте мне).
  • Вы не выбраны - Удачи! Тем не менее, вы, по крайней мере, находитесь в нужном месте, чтобы с этим справиться. Не сдавайся, дружище, все, чему ты научился в ходе этого занятия, все равно будет очень полезным и актуальным. Попробуйте еще раз в следующем году. Поищите сейчас другую хорошую возможность стажировки. Люди будут более чем счастливы оставить участника открытого исходного кода в качестве стажера. Используйте свой профиль, чтобы подать заявку на стажировку.

Что мне делать после того, как меня выбрали?

Расслабьтесь! Просто расслабьтесь и наслаждайтесь грядущей славой. Узнайте своих наставников лучше и продолжайте общаться с ними.

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

«Прокрутите кредиты!»

Наконец!

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

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

Но, что наиболее важно, это помогло мне перестроить мое мышление на проститутку, и я все еще пожинаю плоды из-за этого. Всегда помни…

«Фортуна любит смелых».

И на этом я желаю всем удачи в вашем путешествии. Спасибо, что дочитали до конца, это я подписываю :)

P.S. Несмотря на то, что я перечислил здесь все, за чем следил, не стесняйтесь пинговать меня в Twitter или LinkedIn, если вы чувствуете себя застрявшим, будем рады помочь.

Удачи.