Google Summer of Code e Extensões do Chrome

Estou no segundo ano da China e apaixonado por desenvolvimento da Web. No meu primeiro ano, entrei para um clube técnico na nossa faculdade. Esse clube foi minha introdução à programação e ao código aberto. No clube, conheci um grupo de parceiros que amam programação. Foi com eles que eu aprendi sobre o Google Summer of Code no início de 2023. Esse programa global organizado pelo Google conecta estudantes a organizações de código aberto e os orienta para aproveitarem o verão ao participar de atividades de código aberto.

Tentando, enviei minha inscrição. Por sorte, fui aceito. O verão que passei contribuindo para o repositório de exemplos da extensão do Chrome foi memorável e precioso. É claro, também aprendi muito: comunicação eficaz, habilidades de programação e planejamento, entre outras coisas.

Como o GSoC 2023 está chegando ao fim, vale a pena compartilhar algumas das minhas experiências. Esta postagem apresentará brevemente o processo geral do GSoC por meio da minha própria participação, esperando ser útil para você.

A história de como contribuí com o GSoC

Fiz a inscrição no projeto Chromium GSoC 2023, em que minha principal tarefa seria fazer upgrade de amostras de extensões do Chrome atuais para funcionar no Manifesto V3, incluindo alguns scripts e documentos relacionados.

No começo

Fiquei sabendo sobre o GSoC em fevereiro de 2023, mas ainda não tinha certeza se queria me candidatar. Eu tinha algumas preocupações nessa época:

  • Sou introvertido e inglês não é meu idioma nativo, então a comunicação com mentores pode ser desafiadora.
  • As comunidades GSoC vêm de todo o mundo, e lidar com as diferenças de fuso horário pode ser difícil.
  • O GSoC é um programa tão renomado que pode ser competitivo, o que aumenta minhas chances pequenas.

No entanto, posso afirmar com certeza que nenhum desses foi um problema.

Antes de contar minha história, quero falar sobre algo que aconteceu comigo no início de 2022. Esse incidente também foi uma oportunidade para eu participar do GSoC. Eu queria migrar uma extensão de navegador baseada no Manifest V2 para o Manifest V3. Para concluir a migração, precisei consultar a documentação e entender todas as mudanças na API. Também tive que procurar se havia amostras relevantes para referência. Entender a nova API e transferir o código é um desafio para mim.

É por isso que eu fiquei muito empolgada ao navegar pela lista de projetos do GSoC e entender a ideia relacionada ao MV3. Eu queria contribuir para melhorar as amostras de extensão do Manifest V3 e fornecer uma comodidade para futuros desenvolvedores.

Em março, enviei um e-mail breve para Oliver, um dos mentores responsáveis, sobre minha intenção:

A inscrição para participar do projeto GSoC

Olá,

Sou estudante de graduação em Ciência da Computação da China. Aprendi sobre o projeto relacionado aos exemplos de extensões do Chrome no GSoC e tinha interesse em melhorar os exemplos do Manifesto V3. Não tenho muita experiência em trabalhar com amostras de API. No entanto, tenho experiência em desenvolvimento da Web e desenvolvimento de extensões MV3 (https://github.com/daidr/paimon-exceptiont), o que me fez perceber a importância das amostras de API MV3, por isso gostaria de aprender e contribuir com isso. Ainda posso me inscrever neste projeto?

Agradecemos sua compreensão.

Pouco tempo depois, recebi uma resposta de Oliver e Ali (chefe de Oliver). Eles responderam às minhas perguntas e forneceram informações detalhadas sobre as regras específicas e o cronograma do GSoC. Eles também compartilharam muitos materiais de referência valiosos comigo.

Foi como um tiro no braço, fortalecendo minha determinação para seguir em frente. Dar o primeiro passo é fundamental se você tiver interesse em participar dos próximos eventos de código aberto, seja GSoC 2024 ou qualquer outro, nunca hesite e tente corajosamente.

Antes de me candidatar, verifiquei o código do projeto e conferi a documentação. Embora o GSoC ofereça um período de ligação com a comunidade de quase um mês para os participantes se familiarizarem com a comunidade, o conhecimento prévio diminuiu a pressão e me permitiu escrever uma proposta mais direcionada.

Tentei resolver os bugs iniciais fornecidos pelo projeto. Esses problemas foram relativamente simples e me ajudaram a entender rapidamente o projeto. Sou grato pelo meu mentor Oliver (embora ele não tenha sido meu mentor na época). Ele respondeu prontamente aos meus e-mails sempre que eu precisava de esclarecimentos e resolveu meus problemas com paciência. Ao escrever uma proposta, você também pode enviá-la ao seu mentor para saber se alguma área precisa de melhoria.

Como aceitar

Escrever uma proposta é a última coisa a se fazer antes de se candidatar. Além do formulário de inscrição, a proposta deve incluir ideias, metas e um cronograma. Dependendo do projeto em que espera trabalhar, você pode receber um modelo adicional para a proposta. Muitos exemplos de propostas prontas estão disponíveis on-line para referência.

Depois de concluir o rascunho, enviei para meu mentor para feedback. Depois que a inscrição é enviada, a espera é longa. No início de maio, recebi uma notificação de que tinha sido aceita.

Trabalho de programação

Durante o período inicial de vínculo, eu resolvi primeiro os bugs iniciais restantes e verifiquei se havia novas habilidades que eu precisava aprender. E passo o resto do tempo lendo a documentação.

Após uma conversa com meu mentor, ajustamos algumas metas para tornar o tempo alocado para as tarefas mais razoável. Também discutimos uma ideia para criar uma nova página developer.chrome.com listando todos os exemplos de API e fornecer filtros básicos para ajudar os desenvolvedores a localizar os exemplos necessários rapidamente. Foi uma tarefa bastante complexa para mim, e meu mentor e eu demorei um pouco para definir o projeto e escrever um documento de requisitos do produto (PRD, na sigla em inglês).

Para essa tarefa maior, decidimos que precisávamos de um script automatizado no repositório de amostras para percorrer o repositório e gerar um arquivo JSON com uma lista de amostras de extensões e as APIs usadas. Agora, o repositório de documentação do developer.chrome.com usa esse arquivo para criar uma página.

Primeiro pensei em usar o Babel para analisar a Árvore de sintaxe abstrata do exemplo de código e identificar as APIs usadas. Depois de compartilhar essa ideia com meu mentor, descobri que ele já havia trabalhado em algo semelhante, confirmando a viabilidade dessa abordagem. Depois que eu concluí o código, meu mentor e outros membros da equipe deram sugestões valiosas, incluindo prestar atenção à segmentação de código, padronizar o estilo do código e documentar as funções corretamente.

Depois de várias revisões grandes e pequenas, o código foi mesclado com sucesso. Encontre a conversa completa no GitHub ou confira a página ativa.

Conclusão

Se você me perguntar o que o GSoC me trouxe: em primeiro lugar, é claro, é entender o conhecimento relacionado às APIs de extensão do navegador. Ao ler a documentação e escrever novos exemplos, pude entender detalhadamente várias APIs de extensões do navegador.

Além disso, adquiri muitas habilidades às quais tinha pouca exposição antes de ser aceito para o GSoC, como seguir um processo abrangente de revisão de código e criar um PRD. Também comecei a usar as ações do GitHub para automatizar fluxos de trabalho e aprendi a usar o Babel para analisar todas as amostras de extensões e rastrear as APIs usadas. Além disso, tive minha primeira experiência com o mecanismo de modelo Nunjucks. Essas habilidades são essenciais para a programação, e fico feliz por as ter aprendido. Participar de comunidades de código aberto me deixa feliz.

Esse verão me deu muitas lembranças indeléveis. A programação me deixa muito contente. Encontrei mentores de pacientes que me guiaram e me ensinaram conhecimentos interessantes, enriquecendo minha experiência.

O conhecimento no campo da ciência da computação é infinito. Quando me comparei com outras pessoas, percebi que meu conhecimento sobre código aberto era apenas a ponta do iceberg. No entanto, toda parte ajuda. Acredito que GSoC é um ótimo ponto de partida para participar de código aberto.

Também espero que minha experiência possa servir como referência para futuras participações em atividades de código aberto.

Aqui estão algumas das minhas sugestões para quem quer participar do Google Summer of Code:

  1. Escolha uma ideia que combine com você: na minha opinião, ao procurar ideias, o interesse deve ser sua prioridade, seguido pelas habilidades. Essa estratégia permitirá que você mantenha o entusiasmo durante todo o processo de contribuição.
  2. Qualidade acima da quantidade: você pode enviar várias propostas para aumentar as chances de ser aceito no GSoC. No entanto, acredito que a qualidade provavelmente é mais crítica porque a energia humana é limitada. Concentrar-se em duas ou três ideias pode ser mais útil no final.
  3. Não tenha medo de coisas novas: não hesite em experimentar tecnologias com as quais você não trabalhou em um projeto. Você tem quase um mês de vínculo comunitário para se familiarizar com tecnologias desconhecidas e um verão inteiro para implementá-las. Vá em frente!
  4. familiarize-se com o projeto com antecedência: por exemplo, leia a documentação de desenvolvimento, veja o histórico e os problemas de confirmação anteriores e analise as solicitações de envio anteriores. Ter uma compreensão geral do projeto com antecedência ajudará você a escrever uma proposta mais abrangente.
  5. Mantenha a comunicação: comunique-se regularmente com seu mentor e não hesite em fazer perguntas ao enfrentar problemas, seja antes de se candidatar ou depois de ser aceito. A maioria dos mentores está disposta a ajudar você a resolver problemas. Dessa forma, eles também podem acompanhar seu progresso.

Agradecemos pela leitura.