Google Лето кода и расширений Chrome

Я второкурсник из Китая, увлеченный веб-разработкой. На первом курсе я вступил в технический кружок нашего колледжа. Этот клуб стал моим знакомством с программированием и открытым исходным кодом. В клубе я встретил группу единомышленников, любящих программирование. Именно от них я узнал о Google Summer of Code в начале 2023 года. Эта глобальная программа, организованная Google, связывает студентов с организациями с открытым исходным кодом и помогает им эффективно использовать свое лето, участвуя в мероприятиях с открытым исходным кодом.

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

Поскольку GSoC 2023 подходит к концу, стоит поделиться своим опытом работы с GSoC. В этом посте я кратко представлю общий процесс GSoC с моим собственным участием, надеюсь, что он будет вам полезен!

История о том, как я внес свой вклад в GSoC

Я подал заявку на участие в проекте Chromium GSoC 2023, где моей основной задачей будет обновление существующих образцов расширений Chrome для работы в Manifest V3, включая некоторые связанные скрипты и документы.

В самом начале

Впервые я узнал о GSoC в феврале 2023 года, но еще не был уверен, что хочу подать заявку. Тогда у меня было несколько опасений:

  • Я интроверт, английский не является моим родным языком, поэтому общение с наставниками может быть затруднено.
  • Сообщества GSoC происходят со всего мира, и справиться с разницей часовых поясов может быть сложно.
  • GSoC — настолько известная программа, что она может быть конкурентоспособной, поэтому мои шансы кажутся небольшими.

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

Прежде чем рассказать свою историю, я хотел бы рассказать о том, что произошло со мной в начале 2022 года. Этот инцидент также стал для меня возможностью поучаствовать в GSoC. Я хотел перенести расширение браузера, основанное на Manifest V2, на Manifest V3. Чтобы завершить миграцию, мне пришлось обратиться к документации и разобраться в каждом изменении API. Мне также пришлось искать, есть ли соответствующие образцы для справки. Разобраться в новом API и перенести код для меня довольно сложно.

Вот почему я был очень взволнован, просматривая список проектов GSoC и уловив идею, связанную с MV3. Мне очень хотелось внести свой вклад в улучшение примеров расширений Manifest V3 и предоставить удобство будущим разработчикам.

В марте я отправил Оливеру, одному из ответственных наставников, краткое письмо о своем намерении:

Заявка на участие в проекте GSoC

Привет,

Я студент бакалавриата CS из Китая. Я узнал о проекте, связанном с образцами расширений Chrome, на GSoC, и меня заинтересовало улучшение образцов манифеста V3. У меня нет большого опыта работы над образцами API, однако у меня есть опыт веб-разработки и разработки расширений MV3 (https://github.com/daidr/paimon-webext), который помог мне осознать важность Образцы API MV3, поэтому мне бы хотелось как изучить их, так и внести в них свой вклад. Могу ли я еще подать заявку на участие в этом проекте?

Спасибо.

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

Это было похоже на выстрел в руку, укрепивший мою решимость двигаться вперед. Сделать первый шаг имеет первостепенное значение, если вы заинтересованы в участии в предстоящих мероприятиях с открытым исходным кодом, будь то GSoC 2024 или что-то еще; никогда не сомневайтесь и смело пробуйте.

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

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

Получение принятия

Написание предложения – это последнее, что нужно сделать перед подачей заявки. Помимо формы заявки, предложение должно включать идеи, цели и график. В зависимости от проекта, над которым вы надеетесь работать, вам может быть предоставлен дополнительный шаблон предложения. Многие готовые примеры предложений доступны в Интернете для справки.

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

Работа с кодом

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

После обсуждения с моим наставником мы скорректировали некоторые цели, чтобы время, отведенное на выполнение задач, было более разумным. Мы также обсудили идею создания новой страницы Developer.chrome.com со списком всех примеров API и базовыми фильтрами, которые помогут разработчикам быстро находить необходимые образцы. Для меня это была довольно сложная задача, и нам с наставником потребовалось довольно много времени, чтобы определить проект и написать документ с требованиями к продукту (PRD).

Для этой более крупной задачи мы решили, что нам нужен автоматизированный сценарий в репозитории образцов, который будет проходить по репозиторию и генерировать файл JSON, содержащий список образцов расширений и API, которые они используют. Репозиторий документации Developer.chrome.com теперь использует этот файл для создания страницы.

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

После нескольких больших и малых проверок код был успешно объединен. Вы можете найти всю ветку на GitHub или просмотреть живую страницу .

Подведение итогов

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

Кроме того, я приобрел множество навыков, с которыми мало знакомился до того, как меня приняли в GSoC, например, проведение комплексного процесса проверки кода и создание PRD. Я также начал использовать действия GitHub для автоматизации рабочих процессов и научился использовать Babel для просмотра всех примеров расширений и отслеживания используемых API. Более того, у меня был первый опыт работы с шаблонизатором Nunjucks. Эти способности необходимы для программирования, и я рад, что изучил их. Участие в сообществах с открытым исходным кодом приносит мне радость.

Это лето подарило мне много неизгладимых воспоминаний. Программирование делает меня очень довольным. Я встретил терпеливых наставников, которые направляли меня и преподавали интересные знания, обогащая мой опыт.

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

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

Вот некоторые из моих предложений для всех, кто хочет принять участие в Google Summer of Code:

  1. Выберите идею, которая вам подходит: На мой взгляд, при поиске идей вашим приоритетом должен быть интерес, а затем навыки. Эта стратегия позволит вам поддерживать энтузиазм на протяжении всего процесса внесения вклада.
  2. Качество важнее количества: вы можете подать много предложений, чтобы увеличить шансы на то, что вас примут в GSoC. Однако я считаю, что качество, вероятно, более важно, поскольку человеческая энергия ограничена. Сосредоточение внимания на двух или трех идеях в конечном итоге может оказаться более полезным.
  3. Не бойтесь нового: не стесняйтесь пробовать технологии, с которыми вы еще не работали в проекте. У вас есть почти месяц общения с сообществом, чтобы ознакомиться с незнакомыми технологиями, и целое лето, чтобы их внедрить. Просто дерзайте!
  4. Познакомьтесь с проектом заранее: например, прочитайте документацию по разработке, посмотрите историю предыдущих коммитов и проблемы, а также просмотрите прошлые запросы на включение. Предварительное общее понимание проекта поможет вам написать более полное предложение.
  5. Поддерживайте общение: регулярно общайтесь со своим наставником и не стесняйтесь задавать вопросы при возникновении проблем, будь то до подачи заявки или после того, как вас приняли. Большинство наставников готовы помочь вам решить проблемы; таким образом, они также смогут отслеживать ваш прогресс.

Спасибо за чтение.