Minha jornada no GSoC: contribuições para as extensões do Chrome

Harsh Singh
Harsh Singh

Publicado em: 28 de outubro de 2025

Meu nome é Harsh Singh, sou estudante do último ano de B.Tech em Engenharia Química no IIT (ISM) Dhanbad e participei do Google Summer of Code (GSOC) em 2025. Esta postagem compartilha minha jornada para ser aceito no GSoC e algumas das coisas que aprendi durante o processo.

Antes do GSoC: descobrindo o desenvolvimento de extensões

No meu primeiro ano, como muitos outros, eu queria entrar no CyberLabs, o clube de tecnologia oficial da nossa faculdade. Para me preparar, fui falar com um veterano que me mostrou uma extensão do Chrome que ele tinha criado para entrar no clube. Era completamente diferente do desenvolvimento web padrão que eu conhecia. Parecia uma maneira muito legal de injetar scripts e modificar sites no seu próprio navegador.

Testei muitas APIs de extensão e até acompanhei a transição do Manifesto V2 para o V3. Consegui criar um pequeno projeto usando-as, entrei na CyberLabs e depois fiquei ocupado com a vida universitária, deixando o desenvolvimento de extensões de lado por um tempo.

Recentemente, enquanto pensava em me inscrever no Google Summer of Code (GSoC), encontrei um projeto sobre as APIs de extensões do Chrome. A nostalgia me atingiu em cheio: "Não seria legal criar uma API que, no futuro, um estudante do segundo ano usaria para entrar no CyberLabs? Essa seria a melhor demonstração de flexibilidade." Como já entendo a maioria da terminologia de extensões do meu trabalho anterior, o projeto parece perfeito para mim.

Como se preparar para fazer a inscrição

Por impulso, decidi entrar em contato com Oliver, um engenheiro de relações com desenvolvedores na equipe de extensões do Chrome. Perguntei a ele o que seria necessário para ser um candidato aprovado no programa GSoC do Chromium. Ele respondeu em alguns dias! O e-mail dele foi muito encorajador. Ele disse que só queria saber se eu conseguia explorar a base de código e escrever um pouco de C++.

Comecei configurando o Chromium na minha máquina. Foi uma luta real. Levei quatro dias inteiros e inúmeras tentativas para finalmente configurar a enorme base de código e conseguir um build bem-sucedido. Encontrei um problema simples on-line, algo sobre sidePanel.open() sem um gesto do usuário, e enviei um patch para corrigir. (Olhando para trás, foi uma mudança pequena 🙂). Enviei um e-mail para Oliver sobre meu progresso. Ele me disse que não é algo que eles planejam oferecer suporte, mas também disse que o trabalho que eu tinha feito era suficiente para mostrar que eu estava falando sério. Em seguida, ele sugeriu que eu trabalhasse no método getPosition para o painel lateral. Descobri o problema, enviei outro e-mail para ele, e ele ficou muito feliz, dizendo que minha abordagem estava de acordo com o que a equipe dele estava discutindo. Isso me deu confiança para seguir em frente com o projeto, sabendo que posso entender o código e fazer mudanças.

Minha proposta para o GSoC

Em seguida, veio a proposta do GSoC. A descrição inicial do projeto, "APIs SidePanel e DNR", era muito ampla, então não tinha certeza de quais tarefas específicas listar ou como criar um cronograma na minha proposta. Enviei um e-mail para o Oliver sobre isso, e ele respondeu que atualizou a descrição do projeto. Para minha alegria, ele havia adicionado várias APIs, incluindo a API sidePanel.getPosition em que eu já estava trabalhando.

Os principais componentes da minha proposta foram o entendimento do projeto, ideias de design, trabalho pré-proposta e um cronograma de entregas. Estimei com precisão o tamanho das minhas tarefas, o que demonstrou um entendimento completo do trabalho envolvido. Elaborei minha proposta e ela foi revisada duas vezes.

Uma coisa de que me arrependo, e que é uma dica importante para futuros candidatos, é não ter incluído uma especificação de design adequada para os recursos que planejava criar. Por exemplo, ao propor uma API para fechar o painel lateral, eu deveria ter descrito os parâmetros, justificado minhas escolhas, explicado como lidaria com casos extremos e descrito como a API poderia ser padronizada para todos os navegadores. Isso teria mostrado um nível muito mais profundo de compreensão.

No contexto do projeto de extensões do Chromium, um órgão importante é o WECG (WebExtensions Community Group, pronunciado "wee-C-G"), em que novos designs de API são discutidos formalmente. Durante o período do GSoC, os colaboradores podem precisar apresentar as propostas de API para esse grupo. Portanto, ter uma ideia de design pronta na sua proposta do GSoC é uma grande vantagem, já que mostra aos mentores que você está preparado para essa etapa crucial e que vai se sair bem durante o período do GSoC.

No início de maio, recebi o e-mail: fui aceito! 🙂

Minhas contribuições durante o GSoC

O período do GSoC foi fantástico. Meu mentor, Solomon, foi muito gentil, e tivemos reuniões semanais produtivas que me mantiveram no caminho certo. Também conheci outro colaborador, Amit P, que me ajudou muito quando eu ficava frustrado. Participar das reuniões do WECG foi uma experiência incrível. Entendi como as coisas funcionam nesse nível e por que a experiência é tão importante. Discuti minhas propostas de API lá e recebi o sinal verde de outro fornecedor de navegador.

Abri várias CLs (listas de mudanças) no início. Meu progresso diminuiu depois por causa das revisões de código, mas fiquei feliz em continuar. Minhas principais contribuições combinadas foram para a API do painel lateral:

Minhas outras CLs para a API Commands ainda estão em andamento (dependendo de como eu ficar ativo depois do GSoC 🙂). Você pode conferir uma análise detalhada no meu relatório final, disponível no link "Ver código" na página do meu projeto do GSoC.

Um agradecimento especial a Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz e Andrea Orru, que revisaram quase todas as minhas CLs. É incrível ver meu código fazer parte do Chrome. Meus mentores me descreveram como alguém com um forte senso de "propriedade", o que foi um grande elogio para mim.

Conclusão

Se você me perguntar o que o GSoC me deu, a resposta é mais do que apenas conhecimento técnico. Isso me deu um lugar à mesa, onde aconteciam discussões importantes que afetariam vários desenvolvedores de extensões. Foi meu primeiro trabalho a ser usado em um aplicativo real. Conheci mentores pacientes que me orientaram e me ensinaram muito, tornando toda a experiência incrivelmente enriquecedora.

Espero que minha história seja uma referência útil para outras pessoas que querem contribuir com o Chromium ou participar do Google Summer of Code.

Dicas para pessoas que se inscrevem no GSoC

  1. Escolha uma ideia que você realmente goste. O interesse deve ser sua prioridade máxima. As habilidades sempre podem ser aprimoradas, mas a paixão é o que vai ajudar você a continuar quando as coisas ficarem difíceis. Já estive dos dois lados e confie em mim: quando você trabalha em algo que não te interessa, culpa os outros quando as coisas dão errado. No entanto, se você gosta do trabalho, vai encarar isso como um desafio a ser superado.
  2. Não tenha medo da concorrência. Vi muitas pessoas ficarem desmotivadas depois de ver quem mais estava se inscrevendo nos canais da comunidade. Todo bom projeto tem concorrência. Concentre-se nos seus pontos fortes. Se você já trabalhou com alguma biblioteca, encontre um projeto que a use. Você terá uma vantagem porque pode trazer sua experiência única para a mesa.
  3. Reconheça a sorte e concentre-se na comunicação. Vamos ser sinceros, o GSoC envolve um pouco de sorte. Alguns projetos populares recebem mais de 300 propostas para 1 ou 2 vagas. Duvido que os mentores consigam ler todos os detalhes. Por isso, a comunicação antecipada é essencial. Envolva-se com o projeto com antecedência e confira se sua proposta é sólida e objetiva.
  4. Se você não for selecionado, não se preocupe. Agora você tem contribuições valiosas de código aberto no seu currículo. Use isso para se inscrever em outras oportunidades de verão. Você já fez o trabalho mais difícil!

Por último, mas não menos importante:

"Todos foram feitos para algum trabalho específico, e o desejo por esse trabalho foi colocado em todos os corações." — Rumi

Agradecemos a atenção.