Я второкурсник из Китая, увлеченный веб-разработкой. На первом курсе я вступил в технический кружок нашего колледжа. Этот клуб стал моим знакомством с программированием и открытым исходным кодом. В клубе я встретил группу единомышленников, любящих программирование. Именно от них я узнал о 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:
- Выберите идею, которая вам подходит: На мой взгляд, при поиске идей вашим приоритетом должен быть интерес, а затем навыки. Эта стратегия позволит вам поддерживать энтузиазм на протяжении всего процесса внесения вклада.
- Качество важнее количества: вы можете подать много предложений, чтобы увеличить шансы на то, что вас примут в GSoC. Однако я считаю, что качество, вероятно, более важно, поскольку человеческая энергия ограничена. Сосредоточение внимания на двух или трех идеях в конечном итоге может оказаться более полезным.
- Не бойтесь нового: не стесняйтесь пробовать технологии, с которыми вы еще не работали в проекте. У вас есть почти месяц общения с сообществом, чтобы ознакомиться с незнакомыми технологиями, и целое лето, чтобы их внедрить. Просто дерзайте!
- Познакомьтесь с проектом заранее: например, прочитайте документацию по разработке, посмотрите историю предыдущих коммитов и проблемы, а также просмотрите прошлые запросы на включение. Предварительное общее понимание проекта поможет вам написать более полное предложение.
- Поддерживайте общение: регулярно общайтесь со своим наставником и не стесняйтесь задавать вопросы при возникновении проблем, будь то до подачи заявки или после того, как вас приняли. Большинство наставников готовы помочь вам решить проблемы; таким образом, они также смогут отслеживать ваш прогресс.
Спасибо за чтение.