Mi experiencia en GSoC: Contribuciones a las extensiones de Chrome

Harsh Singh
Harsh Singh

Publicado el 28 de octubre de 2025

Soy Harsh Singh, estudiante de último año de la licenciatura en Ingeniería Química en el IIT (ISM) Dhanbad y, en 2025, participé en Google Summer of Code (GSOC). En esta publicación, comparto mi recorrido para ser aceptado en el GSoC y algunas de las cosas que aprendí durante mi participación.

Antes de GSoC: Descubrimiento del desarrollo de extensiones

En mi primer año, como muchos otros, quería unirme a CyberLabs, el club de tecnología oficial de nuestra universidad. Para prepararme, fui a ver a un estudiante de último año que me mostró una extensión de Chrome que había creado para entrar al club. Era completamente diferente del desarrollo web estándar que conocía. Parecía una forma genial de insertar secuencias de comandos y modificar sitios web en tu propio navegador.

Experimenté con muchas APIs de extensiones y hasta presencié la transición de Manifest V2 a V3. Logré crear un pequeño proyecto con ellas, ingresé a CyberLabs y, luego, me ocupé de la vida universitaria, por lo que dejé de lado el desarrollo de extensiones por un tiempo.

Hace poco, mientras pensaba en postularme para Google Summer of Code (GSoC), me encontré con un proyecto sobre las APIs de extensiones de Chrome. La nostalgia me golpeó con fuerza: "¿No sería genial crear una API esta vez que, en el futuro, un estudiante de segundo año usaría para ingresar a CyberLabs? Esa sería la mejor demostración de poder". Como ya entiendo la mayoría de los términos relacionados con las extensiones por mi trabajo anterior, el proyecto me parece perfecto.

Preparativos para postularse

Por capricho, decidí comunicarme con Oliver, ingeniero de Relaciones con Desarrolladores del equipo de extensiones de Chrome. Le pregunté qué se necesitaba para ser un postulante exitoso al programa GSoC de Chromium. Me respondió en un par de días. Su correo electrónico fue muy alentador. Dijo que solo querían ver si podía explorar la base de código y escribir algo en C++.

Comencé por configurar Chromium en mi máquina. Fue una verdadera lucha. Me llevó cuatro días completos y una gran cantidad de intentos configurar finalmente la enorme base de código y obtener una compilación exitosa. Encontré un problema simple en línea, algo relacionado con sidePanel.open() sin un gesto del usuario, y envié un parche para corregirlo. (Mirando hacia atrás, fue un cambio pequeño 🙂). Le envié un correo electrónico a Oliver sobre mi progreso. Me dijo que no era algo que planeaban admitir, pero también dijo que el trabajo que había hecho era suficiente para demostrar que me lo tomaba en serio. Luego, me sugirió que trabajara en el método getPosition para el panel lateral. Lo resolví, le envié otro correo electrónico y se puso muy contento. Me dijo que mi enfoque coincidía con lo que su equipo había estado analizando. Esto me dio la confianza necesaria para seguir adelante con el proyecto, ya que sabía que podía comprender el código y realizar cambios.

Mi propuesta para GSoC

El siguiente paso fue la propuesta de GSoC. La descripción inicial del proyecto, "APIs de SidePanel y APIs de DNR", era muy amplia, por lo que no sabía qué tareas específicas enumerar ni cómo crear un cronograma en mi propuesta. Le envié un correo electrónico a Oliver sobre este tema, y me respondió que había actualizado la descripción del proyecto. Para mi sorpresa, había agregado varias APIs, incluida la API de sidePanel.getPosition en la que ya estaba trabajando.

Los componentes clave de mi propuesta fueron la comprensión del proyecto, las ideas de diseño, el trabajo previo a la propuesta y un cronograma de entregables. Calculé con precisión el tamaño de mis tareas, lo que demostró un conocimiento profundo del trabajo involucrado. Redacté mi propuesta y la revisé dos veces.

Una cosa que lamento, y que es un gran consejo para los futuros postulantes, es no haber incluido una especificación de diseño adecuada para las funciones que planeaba crear. Por ejemplo, cuando propuse una API para cerrar el panel lateral, debería haber descrito los parámetros, justificado mis elecciones, explicado cómo controlaría los casos extremos y descrito cómo se podría estandarizar la API para todos los navegadores. Esto habría demostrado un nivel de comprensión mucho más profundo.

En el contexto del proyecto de extensiones de Chromium, un organismo clave es el WECG (Grupo de la comunidad de WebExtensions, pronunciado "wee-C-G"), en el que se debaten formalmente los nuevos diseños de la API. Durante el período de GSoC, es posible que los colaboradores deban presentar sus propuestas de API a este grupo. Por lo tanto, tener una idea de diseño lista en tu propuesta de GSoC es una gran ventaja, ya que demuestra a los mentores que estás preparado para este paso crucial y que te desempeñarás bien durante el período de GSoC.

A principios de mayo, recibí el correo electrónico: ¡había sido aceptada! 🙂

Mis contribuciones durante el GSoC

El período del GSoC fue fantástico. Mi mentor, Solomon, fue muy amable, y tuvimos reuniones semanales productivas que me mantuvieron en el camino correcto. También conocí a otro colaborador, Amit P, que me ayudó mucho cuando me frustraba. Asistir a las reuniones del WECG fue revelador. Vi cómo funcionaban las cosas a ese nivel y comprendí por qué la experiencia es tan importante. Allí, analicé mis propuestas de API y obtuve el visto bueno de otro proveedor de navegadores.

Al principio, abrí varias CL (listas de cambios). Mi progreso se ralentizó más adelante debido a las revisiones de código, pero me complació seguir trabajando en ello. Mis principales contribuciones combinadas fueron a la API del panel lateral:

Mis otros CL para la API de Commands aún están en desarrollo (según qué tan activo me mantenga después de GSoC 🙂). Puedes ver un desglose detallado en mi informe final, que está disponible en el vínculo "Ver código" en mi página del proyecto de GSoC.

Agradecemos especialmente a Oliver Dunk, Solomon Kinard, Kelvin Jiang, Devlin Cronin, Tom Lukaszewicz y Andrea Orru, quienes revisaron casi todos mis CL. Es increíble ver que mi código forma parte de Chrome. Mis mentores me describieron como una persona con un gran sentido de "propiedad", lo que fue un gran cumplido para mí.

Conclusión

Si me preguntas qué me aportó el GSoC, te diré que fue mucho más que conocimiento técnico. Me dio un lugar en la mesa, donde se llevaron a cabo debates importantes que afectarán a varios desarrolladores de extensiones. Fue mi primer trabajo que se usó en una aplicación del mundo real. Conocí a mentores pacientes que me guiaron y me enseñaron mucho, lo que hizo que toda la experiencia fuera increíblemente enriquecedora.

Espero que mi historia pueda ser una referencia útil para otras personas que quieran contribuir a Chromium o formar parte de Google Summer of Code.

Sugerencias para las personas que postulan al GSoC

  1. Elige una idea que te guste de verdad. El interés debe ser tu prioridad principal. Tus habilidades siempre se pueden mejorar, pero la pasión es lo que te mantendrá en marcha cuando las cosas se pongan difíciles. He estado en ambos lados y, créeme, cuando trabajas en algo que no te interesa, culparás a los demás cuando las cosas salgan mal. Sin embargo, si te gusta el trabajo, lo verás como un desafío que debes superar.
  2. No le tengas miedo a la competencia. Vi a muchas personas desmotivarse después de ver quiénes más se postularon en los canales de la comunidad. Todo buen proyecto tendrá competencia. Enfócate en tus fortalezas. Si ya trabajaste con alguna biblioteca, busca un proyecto que la use. Tendrás una ventaja porque podrás aportar tu experiencia única.
  3. Reconoce la suerte y enfócate en la comunicación. Seamos realistas, el GSoC implica un poco de suerte. Algunos proyectos populares reciben más de 300 propuestas para 1 o 2 puestos. Dudo que los mentores puedan leer cada uno en detalle. Por eso, la comunicación anticipada es clave. Participa en el proyecto con anticipación y asegúrate de que tu propuesta sea sólida y vaya al grano.
  4. Si no te seleccionamos, no es el fin. Ahora tienes valiosas contribuciones de código abierto en tu currículum. Úsala para postularte a otras oportunidades de verano. ¡Ya hiciste el trabajo difícil!

Por último, pero no menos importante:

"Todos fueron creados para un trabajo en particular, y el deseo de ese trabajo se puso en cada corazón". — Rumi

Gracias por leer.