Мой путь в GSoC: вклад в расширения Chrome

Опубликовано: 28 октября 2025 г.

Меня зовут Харш Сингх, я студент последнего курса бакалавриата по химической инженерии в IIT (ISM) Дханбад, и в 2025 году я участвовал в программе Google Summer of Code (GSOC). В этом посте я расскажу о своем пути к участию в GSoC и о некоторых вещах, которые я узнал во время программы.

Перед GSoC: знакомство с разработкой расширений.

На первом курсе, как и многие другие, я очень хотел вступить в CyberLabs, официальный технологический клуб нашего колледжа. Чтобы подготовиться, я обратился к старшекурснику, который показал мне расширение для Chrome, которое он разработал для вступления в клуб. Это было совершенно не похоже на стандартную веб-разработку, к которой я привык. Мне показалось, что это очень крутой способ внедрять скрипты и изменять веб-сайты прямо в браузере.

Я экспериментировал со множеством API для расширений, даже наблюдал переход от Manifest V2 к V3. Мне удалось создать небольшой проект с их использованием, я попал в CyberLabs, а затем занялся студенческой жизнью, на время оставив разработку расширений.

Недавно, размышляя о подаче заявки на участие в программе Google Summer of Code (GSoC), я наткнулся на проект, посвященный API расширений Chrome. Меня охватила ностальгия: «Как было бы здорово создать API, который когда-нибудь в будущем использовал бы студент второго курса для входа в CyberLabs? Это был бы лучший способ похвастаться». Поскольку я уже знаком с большей частью терминологии, связанной с расширениями, благодаря своему предыдущему опыту работы, этот проект кажется мне идеальным вариантом.

Подготовка к подаче заявления

По наитию я решил связаться с Оливером, инженером по связям с разработчиками из команды расширений Chrome. Я спросил его, что нужно, чтобы стать успешным участником программы GSoC от Chromium. Он ответил через пару дней! Его письмо было очень обнадеживающим; он сказал, что им просто нужно посмотреть, смогу ли я изучить кодовую базу и написать немного кода на C++.

Я начал с установки Chromium на свой компьютер. Это было настоящим испытанием; мне потребовалось четыре полных дня и бесчисленное количество попыток, чтобы наконец-то настроить огромный код и добиться успешной сборки. Я нашел в интернете простую проблему — что-то про sidePanel.open() без жеста пользователя — и отправил патч для ее исправления. (Оглядываясь назад, это было совсем небольшое изменение 🙂). Я написал Оливеру о своем прогрессе. Он сказал, что они не планируют поддерживать это, но также отметил, что проделанная мной работа достаточно убедительна, чтобы показать серьезность моих намерений. Затем он предложил мне поработать над методом getPosition для боковой панели. Я разобрался, написал ему снова, и он был очень доволен, сказав, что мой подход соответствует тому, что обсуждала их команда. Это придало мне уверенности в дальнейшем развитии проекта, зная, что я понимаю код и могу вносить изменения.

Моё предложение по программе GSoC

Следующим этапом было составление предложения для GSoC. Первоначальное описание проекта, «API боковой панели и API DNR», было очень общим, поэтому я не был уверен, какие конкретные задачи перечислить или как составить график в своем предложении. Я написал об этом Оливеру, и он ответил, что обновил описание проекта. К моей радости, он добавил несколько API, включая API sidePanel.getPosition , над которым я уже работал.

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

Один момент, о котором я сожалею, и который станет большим советом для будущих соискателей, — это отсутствие надлежащего описания проекта для запланированных функций. Например, предлагая API для закрытия боковой панели, я должен был бы указать параметры, обосновать свой выбор, объяснить, как я буду обрабатывать граничные случаи, и описать, как API можно стандартизировать для всех браузеров. Это продемонстрировало бы гораздо более глубокий уровень понимания.

В контексте проекта расширений Chromium ключевой организацией является WECG (WebExtensions Community Group, произносится как «ви-Си»), где официально обсуждаются новые проекты API. В период GSoC участникам может потребоваться представить свои предложения по API этой группе. Поэтому наличие готовой идеи проекта в вашем предложении для GSoC является огромным преимуществом, поскольку это показывает наставникам, что вы готовы к этому важному этапу и успешно пройдете период GSoC.

В начале мая я получила электронное письмо — меня приняли! 🙂

Мой вклад в рамках GSoC

Период GSoC был фантастическим. Мой наставник, Соломон, был невероятно добр, и у нас были продуктивные еженедельные встречи, которые помогали мне не сбиваться с пути. Я также познакомился с коллегой-разработчиком, Амитом П., который очень помогал мне, когда я испытывал трудности. Посещение встреч WECG стало для меня откровением; я увидел, как всё работает на этом уровне, и понял, почему опыт так важен. Я обсудил там свои предложения по API и получил одобрение от ещё одного разработчика браузера.

Вначале я создал несколько списков изменений (CL). Позже мой прогресс замедлился из-за постоянных проверок кода, но я был рад продолжать работу. Мои основные внесенные изменения касались API боковой панели:

Мои остальные запросы на изменение кода для API команд всё ещё находятся в процессе разработки (в зависимости от того, насколько активным я останусь после GSoC 🙂). Подробный анализ можно увидеть в моём итоговом отчёте, который доступен по ссылке «просмотреть код» на странице моего проекта GSoC.

Особая благодарность Оливеру Данку, Соломону Кинарду, Кельвину Цзяну, Девлину Кронину, Тому Лукашевичу и Андреа Орру, которые проверили почти все мои изменения в коде. Невероятно приятно видеть, как мой код становится частью Chrome. Мои наставники описывали меня как человека с сильным чувством ответственности, что было для меня огромным комплиментом.

Подводя итоги

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

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

Советы для тех, кто подает заявки на участие в GSoC

  1. Выберите идею, которая вам действительно нравится. Интерес должен быть вашим главным приоритетом. Ваши навыки всегда можно улучшить, но именно страсть будет поддерживать вас, когда станет трудно. Я был и тем, и другим, и поверьте: когда вы работаете над чем-то, что вас не интересует, вы будете винить других, когда что-то пойдет не так. Однако, если вы любите свою работу, вы будете воспринимать ее как вызов, который нужно преодолеть.
  2. Не бойтесь конкуренции. Я видела, как многие теряют мотивацию, увидев, кто ещё подаёт заявки в сообществах. В каждом хорошем проекте будет конкуренция. Сосредоточьтесь на своих сильных сторонах. Если вы раньше работали с библиотекой, найдите проект, который её использует. У вас будет преимущество, потому что вы сможете привнести свой уникальный опыт.
  3. Признайте, что вам повезло, и сосредоточьтесь на общении. Давайте будем реалистами, в GSoC немного везения не помешает. На некоторые популярные проекты подают более 300 заявок на 1-2 места. Сомневаюсь, что наставники могут прочитать каждую из них подробно. Именно поэтому раннее общение имеет ключевое значение. Примите участие в проекте заранее и убедитесь, что ваша заявка хорошо продумана и по существу изложена.
  4. Если вас не выберут, это ещё не конец. Теперь у вас есть ценный вклад в разработку открытого программного обеспечения, который можно указать в резюме. Используйте это, чтобы подать заявки на другие летние стажировки. Вы уже проделали всю сложную работу!

Последний, но тем не менее важный:

«Каждый человек создан для какой-то конкретной работы, и стремление к этой работе заложено в каждом сердце». — Руми

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