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

Моя менторская организация и проект

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

Oppia — это один из проектов Google с открытым исходным кодом, так что вы уже можете себе представить, насколько сложным может быть завершение проекта GSoC здесь и насколько замечательным будет ваш вклад в этот проект.

Мой проект был связан с Android-приложением Oppia, где нам нужно было ввести функцию для атрибутирования сторонних зависимостей, используемых для создания приложения, и отображения их лицензий на авторские права. Это очень распространенная и важная практика в разработке программного обеспечения, и вы можете легко найти ее в большинстве приложений для Android, например, откройте Instagram на своем устройстве Android и перейдите в Настройки -> О программе -> Библиотеки с открытым исходным кодом. Вы увидите такой экран —

Теперь Google уже предоставляет плагин для реализации этой функции в приложениях Android, но это плагин только для Gradle, и мы переходили с Gradle на Bazel, чтобы мы могли не используйте этот плагин. Поэтому в моем проекте мы вычисляли список зависимостей с помощью Bazel query, а затем искали их лицензионные ссылки в POM-файлах зависимостей. Вы можете прочитать отчет о представленной работе здесь.

Шаги, которые необходимо выполнить

Шаги, которые необходимо выполнить, чтобы увеличить ваши шансы на получение статуса, остаются теми же, что вы, возможно, уже слышали от каждого другого студента GSoC.

  1. Выберите одну или несколько организаций, которые появятся в течение 2–3 лет, чтобы внести свой вклад, и создайте проект, связанный с вашим любимым технологическим стеком, например, для меня это был Android.
  2. Будьте готовы много читать, во многих проектах уже есть очень подробные руководства Как начать участвовать, и вам обязательно нужно их прочитать, чтобы облегчить участие в проекте. проект.
  3. Начните вносить свой вклад как можно раньше, например, я начал вносить свой вклад в августе 2020 года.
  4. Напишите серьезное предложение, когда будут открыты заявки на участие в программе (если вы выполните шаг 2, вы определенно напишете более сильное предложение, чем другие кандидаты).

Вы можете столкнуться с трудностями на шаге 2, потому что, даже если вы хорошо знакомы с техническим стеком проекта, в который пытаетесь внести свой вклад, есть вероятность, что вам будет очень сложно работать даже над первыми хорошими проблемами. Итак, если вы не можете понять проблемы, перечисленные в системе отслеживания проблем проекта, не беспокойтесь, это вполне нормально, и все находятся в одинаковом положении, когда пытаются внести свой первый вклад в открытый исходный код. Что вам нужно сделать, так это — прочитать файл README проекта и найти ссылку на их общедоступную чат-группу организации (например, Gitter, Slack, Zulip и т. д.), где вы можете задать свои сомнения мейнтейнерам.

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

Итак, я сделал то же самое, когда пытался внести свой вклад в Oppia, я просмотрел файл README и внимательно его прочитал, он содержал ссылки на несколько других вики-страниц проекта, и я их тоже прочитал. Прежде чем начать вносить свой вклад, мне пришлось подписать CLA (не все организации просят вас подписать CLA) и форму опроса участников. Следуя их вики-руководству, я настроил проект локально и попросил помощи на канале Gitter при обнаружении ошибок. Они также связали бесплатный 45-минутный курс для тех, кто пытается внести свой первый вклад в открытый исходный код. Многие пропускают это, так как думают, что уже достаточно знают о Git и Github, а позже сталкиваются с проблемами при создании PR. Я также рекомендую посмотреть тот же учебник, если вы никогда не участвовали в проектах с открытым исходным кодом.

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

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

После того, как я успешно настроил проект, я просмотрел проблемы с меткой good-first issues и, к счастью, нашел пару очень простых проблем, мне просто нужно было реорганизовать кучу имен переменных, например — изменить ProfileActivity на AddProfileActivity. Я создал PR, чтобы исправить проблему, и рецензенты предложили некоторые вещи, о которых нужно позаботиться во время и до создания PR —

  • Название PR должно соответствовать стилю, которого придерживается организация.
  • Проблема, исправленная PR, должна быть связана с PR.
  • Название ветки должно быть достаточно описательным (а также соответствовать стилю вики).
  • Сообщения фиксации должны быть описательными и осмысленными.
  • Ни в коем случае нельзя обходить ловушки Git (иначе проверки CI не пройдут).

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

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

Сначала вы должны попытаться найти в Интернете ту часть, которую вы не понимаете. Если вы не найдете ничего полезного в Интернете, обратитесь за помощью, добавив комментарий под самой проблемой или в общедоступном канале организации. Помните, задавая вопрос, вы всегда должны сначала говорить, что вы пробовали, а какую часть вы не понимаете или где вы застряли. Попросите других участников напрямую предложить некоторые проблемы, удобные для начинающих, если нет проблем с пометкой good-first issue. Вы даже можете спросить, есть ли проекты организации, в которых есть проблемы для начинающих.

Что делать дальше?

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

Написание сильного предложения

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

Ожидание результатов

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

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