Google Summer of Code y las extensiones de Chrome

Estoy recién nacido en 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 codificación y al código abierto. En el club, conocí a un grupo de parejas con intereses similares a los que les encanta programar. Fue gracias a ellos que aprendí sobre Google Summer of Code a principios de 2023. Este programa global organizado por Google conecta a los alumnos con organizaciones de código abierto y los guía para aprovechar el verano participando en actividades de código abierto.

Luego de probarlo, envié mi postulación. Por suerte, me aceptaron. El verano que pasé contribuyendo con el repositorio de ejemplos de extensiones de Chrome fue memorable y valioso. Por supuesto, también aprendí mucho: comunicación efectiva, habilidades de programación y habilidades de planificación, entre otras cosas.

Ya que GSoC 2023 está llegando a su fin, vale la pena compartir algunas de mis experiencias en GSoC. En esta publicación, se presentará brevemente el proceso general de GSoC a través de mi propia participación. Espero ayudarte.

Mi historia de cómo contribuí a GSoC

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

Al principio

Supe del GSoC por primera vez en febrero de 2023, pero aún no estaba seguro de si quería postularme. En ese momento, tenía algunas preocupaciones:

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

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

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

Es por eso que me entusiasmó mucho explorar la lista de proyectos de GSoC y capturar la idea relacionada con el MV3. Me gustaría contribuir a mejorar los ejemplos de extensión de Manifest V3 y proporcionar servicios para los futuros desarrolladores.

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

La solicitud para participar en el proyecto de GSoC

Estimado anunciante:

Soy estudiante de informática de China. Me enteré del proyecto relacionado con muestras de extensiones de Chrome en GSoC y me interesaba mejorar las muestras de Manifest V3. No tengo mucha experiencia previa en el trabajo con muestras de API; sin embargo, tengo experiencia en desarrollo web y de extensiones de MV3 (https://github.com/daidr/paimon-webext), lo que me ha hecho darme cuenta de la importancia de los ejemplos de API de MV3, por lo que me gustaría aprender y contribuir en ello. ¿Puedo postularme para este proyecto de todas formas?

Gracias.

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

Fue como un golpe en el brazo, lo que fortaleció mi determinación por seguir adelante. Dar el primer paso es primordial si te interesa participar en los próximos eventos de código abierto, ya sea GSoC 2024 o cualquier otra cosa; nunca lo dudes y pruébalo con valentía.

Antes de enviar la solicitud, revisé el código del proyecto y leí la documentación. Aunque el GSoC ofrece un período de vínculo con la comunidad de casi un mes para que los participantes se familiaricen con ella, el conocimiento previo aliviaba la presión y me permitió escribir una propuesta más específica.

Intenté resolver errores de inicio proporcionados por el proyecto. Estos problemas fueron relativamente simples y me ayudaron a comprender rápidamente el proyecto. Agradezco por mi mentor Oliver (aunque no fue mi mentor en ese momento). Respondeba mis correos electrónicos rápidamente cada vez que necesitaba aclaraciones y resolvía mis problemas con paciencia. Si tienes problemas al escribir una propuesta, también puedes enviársela a tu mentor para ver si hay áreas que necesitan mejoras.

Aceptación

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

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, el proceso es largo. A principios de mayo, recibí una notificación de que me aceptaron.

Trabajo de código

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

Luego de analizarlo con mi mentor, ajustamos algunos objetivos para que el tiempo asignado a las tareas sea más razonable. También analizamos una idea para crear una nueva página developer.chrome.com en la que se enumeren todos los ejemplos de API y proporcionar filtros básicos para ayudar a los desarrolladores a encontrar rápidamente los ejemplos necesarios. Fue una tarea bastante compleja para mí, y mi mentor y yo nos tomó bastante tiempo 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 recorrer el repositorio y generar un archivo JSON con una lista de muestras de extensión y las APIs que usan. El repositorio de documentación developer.chrome.com ahora usa este archivo para crear una página.

Primero, consideré usar Babel para analizar el Abstract Syntax Tree del código de muestra y, luego, identificar las APIs que usaba. Después de compartir esta idea con mi mentor, descubrí que ya habían trabajado en algo similar, lo que confirmaba 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 de manera adecuada.

Después de varias revisiones grandes y pequeñas, el código se combinó con éxito. Puedes encontrar el subproceso completo en GitHub o ver la página publicada.

Conclusión

Si me preguntan qué me trajo el GSoC: en primer lugar, por supuesto, es comprender el conocimiento relacionado con las API de extensiones del navegador. Al leer la documentación y escribir nuevos ejemplos, obtuve una comprensión detallada de varias API de extensiones del navegador.

Además, adquirí muchas habilidades a las que tuve 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 empecé a usar acciones de GitHub para automatizar flujos de trabajo y aprendí a usar Babel para analizar todas las muestras de extensiones y hacer un seguimiento de las APIs que se usan. Además, tuve mi primera experiencia con el motor de plantillas de Nunjucks. Estas habilidades son esenciales para la programación, y me encanta haberlas aprendido. Participar en comunidades de código abierto me da alegría.

Este verano me ha transmitido muchos recuerdos indelebles. La programación me da mucho contenido. Encontré mentores de pacientes que me guiaron y me enseñaron conocimientos interesantes, lo que enriqueció mi experiencia.

Los conocimientos en el campo de la informática son infinitos. Cuando me comparé con otras personas, me di cuenta de que mi comprensión del código abierto era solo la punta del iceberg. Sin embargo, cada detalle ayuda. Creo que GSoC es un excelente punto de partida para participar en el programa de código abierto.

También espero que mi experiencia pueda brindar una referencia para futuras participación 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 te convenga: 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. La calidad es más importante que la cantidad: Puedes enviar muchas propuestas para aumentar las posibilidades de que se te acepte en 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 las cosas nuevas: no dudes en probar tecnologías con las que no has trabajado en un proyecto. Tienes casi un mes de vínculo con la comunidad para que te familiarices con tecnologías desconocidas y todo un verano para implementarlas. ¡Hazlo!
  4. Familiarízate con el proyecto de antemano. Por ejemplo, lee la documentación de desarrollo, consulta el historial y los problemas de confirmaciones anteriores, y revisa las solicitudes de extracción anteriores. Obtener una comprensión general del proyecto de antemano te ayudará a escribir una propuesta más completa.
  5. Mantén la comunicación: comunícate regularmente con tu mentor y no dudes en hacer preguntas cuando enfrentes los 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 esta información.