Google Summer of Code y las extensiones de Chrome

Soy estudiante de segundo año de China y me apasiona el desarrollo web. En mi primer año, me uní a un club técnico en la universidad. Este club fue mi introducción a la programación y al código abierto. En el club, conocí a un grupo de socios afines a los que les encanta programar. Y fue de ellos que me enteré de Google Summer of Code a principios de 2023. Este programa global organizado por Google conecta a los estudiantes con organizaciones de código abierto y los guía para que aprovechen el verano participando en actividades de código abierto.

Envié mi solicitud para probarla. Afortunadamente, me aceptaron. El verano que pasé contribuyendo al repositorio de Samples de extensiones de Chrome fue memorable y valioso. Por supuesto, también aprendí mucho: comunicación eficaz, habilidades de programación y planificación, entre otras cosas.

A medida que el GSoC 2023 llega a su fin, vale la pena compartir algunas de mis experiencias en el programa. En esta publicación, presentaré brevemente el proceso general de GSoC a través de mi propia participación. Espero que te resulte útil.

La historia de cómo contribuí a GSoC

Me postulé al proyecto de GSoC 2023 de Chromium, en el que mi tarea principal sería actualizar los ejemplos de extensiones de Chrome existentes para que funcionen en Manifest V3, incluidas algunas secuencias de comandos y documentos relacionados.

Al principio

Me enteré del GSoC por primera vez en febrero de 2023, pero aún no estaba seguro de querer postularme. En ese momento, tenía algunas inquietudes:

  • Soy introvertido y el inglés no es mi lengua materna, por lo que la comunicación con los mentores podría ser un desafío.
  • Las comunidades de GSoC provienen de todo el mundo, y lidiar con las diferencias horarias puede ser difícil.
  • GSoC es un programa tan reconocido que puede ser competitivo, lo que hace que mis posibilidades parezcan escasas.

Sin embargo, puedo decir con seguridad que ninguno de estos fue un problema.

Antes de contar mi historia, me gustaría hablar sobre algo que me sucedió a principios de 2022. Este incidente también fue una oportunidad para mí para participar en GSoC. Quería migrar una extensión de navegador basada en Manifest V2 a Manifest V3. Para completar la migración, tuve que consultar la documentación y comprender cada cambio de la API. También tuve que buscar si había muestras relevantes para usar como referencia. Comprender la nueva API y transferir el código es un desafío para mí.

Por eso, me emocioné mucho cuando navegué por la lista de proyectos de GSoC y encontré la idea relacionada con MV3. Tenía muchas ganas de contribuir a mejorar los ejemplos de extensiones de Manifest V3 y proporcionar una comodidad para los desarrolladores futuros.

En marzo, le envié un breve correo electrónico a Oliver, uno de los mentores a cargo, sobre mi intención:

La solicitud para participar en el proyecto de GSoC

Hola:

Soy estudiante de licenciatura en Ciencias de la Computación de China. Aprendí sobre el proyecto relacionado con muestras de extensiones de Chrome en GSoC y me interesó mejorar las muestras de manifiesto V3. No tengo mucha experiencia previa en el trabajo con muestras de API. Sin embargo, tengo experiencia en el desarrollo web y en el desarrollo de extensiones de MV3 (https://github.com/daidr/paimon-webext), lo que me hizo darme cuenta de la importancia de las muestras de la API de MV3, por lo que me gustaría aprender y contribuir a ellas. ¿Puedo postularme de todas formas?

Gracias.

Poco después, recibí una respuesta de Oliver y Ali (su jefe). Respondieron mis preguntas y proporcionaron información detallada sobre las reglas y el cronograma específicos de GSoC. También me compartieron muchos materiales de referencia valiosos.

Fue como un impulso que fortaleció mi determinación de seguir adelante. Dar el primer paso es fundamental si te interesa participar en los próximos eventos de código abierto, ya sea GSoC 2024 o cualquier otro. No dudes y pruébalo con valentía.

Antes de postularme, revisé el código del proyecto y leí la documentación. Aunque el GSoC proporciona un período de vinculación comunitaria de casi un mes para que los participantes se familiaricen con la comunidad, el conocimiento previo alivió la presión y me permitió escribir una propuesta más segmentada.

Intenté resolver los errores iniciales que proporciona el proyecto. Estos problemas eran relativamente simples y me ayudaron a comprender rápidamente el proyecto. Le agradezco a mi mentor Oliver (aunque no lo era en ese momento). Respondió de inmediato mis correos electrónicos cada vez que necesitaba una aclaración y resolvió mis problemas con paciencia. Si tienes problemas mientras escribes una propuesta, también puedes enviarla a tu mentor para ver si hay áreas que necesitan mejorarse.

Cómo obtener la aceptación

Escribir una propuesta es lo último que debes hacer antes de postularte. La propuesta debe incluir ideas, objetivos y un cronograma, además del formulario de postulación. Según el proyecto en el que deseas trabajar, es posible que se te proporcione una plantilla adicional para la propuesta. Hay muchos ejemplos de propuestas listas para usar disponibles en línea como referencia.

Después de completar el borrador, se lo envié a mi mentor para que me diera sus comentarios. Una vez que se envía la solicitud, hay un largo tiempo de espera. A principios de mayo, recibí una notificación de aceptación.

Trabajo de código

Durante el período de vinculación inicial, primero me ocupé de los errores restantes del activador y comprobé si había alguna habilidad nueva que debía aprender. Y paso el resto del tiempo leyendo documentación.

Después de una conversación con mi mentor, ajustamos algunos objetivos para que el tiempo asignado a las tareas fuera más razonable. También hablamos de una idea para crear una nueva página en developer.chrome.com en la que se enumeren todos los ejemplos de la API y se proporcionen filtros básicos para ayudar a los desarrolladores a encontrar los ejemplos necesarios con rapidez. Fue una tarea bastante compleja para mí, y mi mentor y yo tardamos bastante tiempo en definir el proyecto y escribir un documento de requisitos del producto (PRD).

Para esta tarea más grande, decidimos que necesitábamos una secuencia de comandos automatizada en el repositorio de muestras para recorrerlo y generar un archivo JSON que contenga una lista de muestras de extensiones y las APIs que usan. El repositorio de documentación de developer.chrome.com ahora usa este archivo para compilar una página.

Primero, consideré usar Babel para analizar el árbol de sintaxis abstracto del código de muestra y, luego, identificar las APIs que usaba. Después de compartir esta idea con mi mentor, descubrí que había trabajado en algo similar anteriormente, lo que confirmó la viabilidad de este enfoque. Después de completar el código, mi mentor y otros miembros de su equipo me brindaron sugerencias valiosas, como prestar atención a la segmentación del código, estandarizar el estilo del código y documentar las funciones correctamente.

Después de varias revisiones grandes y pequeñas, el código se fusionó correctamente. Puedes encontrar toda la conversación en GitHub o ver la página en vivo.

Conclusión

Si me preguntas qué me ha brindado GSoC, primero, por supuesto, es comprender el conocimiento relacionado con las APIs de extensiones de navegador. A través de la lectura de la documentación y la escritura de ejemplos nuevos, obtuve una comprensión detallada de varias APIs de extensiones de navegador.

Además, adquirí muchas habilidades a las que tenía poca exposición antes de que me aceptaran en GSoC, como seguir un proceso integral de revisión de código y crear un PRD. También comencé a usar acciones de GitHub para automatizar flujos de trabajo y aprendí a usar Babel para recorrer todos los ejemplos de extensiones y hacer un seguimiento de las APIs que se usan. Además, tuve mi primera experiencia con el motor de plantillas Nunjucks. Estas habilidades son esenciales para la programación, y me alegro de haberlas aprendido. Participar en comunidades de código abierto me da alegría.

Este verano me dejó muchos recuerdos imborrables. La programación me da mucha satisfacción. Conocí a mentores pacientes que me guiaron y me enseñaron conocimientos interesantes, lo que enriqueció mi experiencia.

El conocimiento en el campo de la informática es infinito. Cuando me comparé con otras personas, me di cuenta de que mi conocimiento del código abierto era solo la punta del iceberg. Sin embargo, cada pequeño cambio es útil. Creo que GSoC es un excelente punto de partida para participar en el código abierto.

También espero que mi experiencia pueda servir de referencia para futuras participaciones en actividades de código abierto.

Estas son algunas de mis sugerencias para quienes quieran participar en Google Summer of Code:

  1. Elige una idea que se adapte a ti: En mi opinión, cuando buscas ideas, el interés debe ser tu prioridad, seguido de las habilidades. Esta estrategia te permitirá mantener el entusiasmo durante todo el proceso de contribución.
  2. Calidad sobre cantidad: Puedes enviar muchas propuestas para aumentar las probabilidades de que te acepten en el GSoC. Sin embargo, creo que la calidad es probablemente más importante porque la energía humana es limitada. Enfocarse en dos o tres ideas puede ser más útil al final.
  3. No tengas miedo de lo nuevo: no dudes en probar tecnologías con las que no hayas trabajado en un proyecto. Tienes casi un mes de vinculación con la comunidad para familiarizarte con tecnologías desconocidas y todo un verano para implementarlas. ¡Anímate!
  4. Familiarízate con el proyecto con anticipación: por ejemplo, lee la documentación de desarrollo, revisa el historial de confirmación y los problemas anteriores, y revisa las solicitudes de extracción anteriores. Comprender el proyecto en general con anticipación te ayudará a escribir una propuesta más integral.
  5. Mantén la comunicación: Comunícate con tu mentor con regularidad y no dudes en hacer preguntas cuando tengas problemas, ya sea antes de postularte o después de que te acepten. La mayoría de los mentores están dispuestos a ayudarte a resolver problemas. De esta manera, también pueden hacer un seguimiento de tu progreso.

Gracias por leer.