Google Summer of Code
Intro al GSoC:
Proyecto GSoC 2014: mejoras wxQt y PoC Android
En 2014 participé como estudiante, mientras estaba realizando la Maestría en Software Libre. La propuesta completa puede encontrarse en el Archivo de Internet
Repositorio: https://github.com/reingart/wxWidgets
Como resumen general, la experiencia fue muy positiva, pudiendo lograr varios avances y principalmente que el código sea incorporado luego al proyecto principal.
Además, la rama wxQt tuvo nueva difusión y atrajo desarrolladores adicionales que colaboraron con distintas contribuciones para poder hacer funcionar sus aplicaciones.
Si bien quedaron algunos tickets abiertos y el último milestone resultó ser muy ambicioso, la mayoría fue solucionado (ver tickets cerrados incluyendo temas interesantes de segmentacions faults, memory leaks, Qt internals, diferentes API entre Linux / Android, etc.)
Abstract
wxWidgets es una biblioteca multiplataforma que permite incluir navegadores nativos en aplicaciones de escritorio (además de otras opciones para construir GUI: Interfaz Gráfica de Usuario).
Un proyecto previo de GSoC creo las bases para un port de wxWidgets a Qt.
Este proyecto consistió en hacer el port usable y completar las partes faltantes, para poder desarrollar pequeñas aplicaciones, trayendo los standares actuales de wxWidgets a wxQt, actualizando a Qt 5.2.
Como prueba de concepto para explorar el desarrollo rápido de aplicaciones en ambientes móviles, la idea era construir un prototipo minimalista de wxPython usando wxQt para Andorid.
Prueba de Concepto
Repositorio: https://github.com/reingart/gsoc2014 (PoC wxQt + Android)
Proyecto GSoC 2017: mejoras JavaScript a wxWebView
![]() |
wxWebView mostrando el ejemplo JS RunScript |
Diversidad: experiencia técnica e idioma
Participé como mentor para un estudiante español, lo que por el lado del idioma, ayudo a discutir más fácilmente las cuestiones del día-a-día (especialmente), para luego presentar en la lista las cuestiones más elaboradas (en inglés).Igualmente hubieron problemas de comunicación y malos entendidos, "normales" para este tipo de proyecto (considerar que los desarrolladores están distribuidos alrededor del mundo, con distintas zonas horarias, usos y costumbres, etc.)
Por el lado de las expectativas técnicas, es bueno recordar que el GSoC es un programa para introducir nuevos desarrolladores a proyectos de software libre / código abierto ya establecidos.
Por lo tanto, puede haber distintas perspectivas y los estudiantes pueden no estar al tanto de la metodología de desarrollo (estilos, reglas para las revisiones de código, cobertura de pruebas), calidad esperada, balance entre costo/beneficio del esfuerzo, etc.
Lecciones aprendidas:
En este sentido, sería recomendable aprovechar el tiempo previo para entrenar a los potenciales estudiantes:- tratando de establecer las expectativas técnicas claramente con anterioridad
- ejemplificando el proceso de desarrollo del proyecto (con un ticket / Pull Request simple)
Desafíos técnicos:
- Linux: WebKit vs WebKit2 y GTK2 vs GTK3
- Mac OS X: UIWebView vs WKWebView
- Windows: IE (ActiveX) vs Edge
Organización vía GitHub
Para un mejor seguimiento, se decidió utilizar todas las características de GitHub (hitos, tickets, PR).- Repositorio de trabajo: https://github.com/joseeloren/wxWidgets
- Planificación: https://github.com/joseeloren/wxWidgets/milestones
- Tickets: https://github.com/joseeloren/wxWidgets/issues
- PR iniciales ("Community bonding"): wxWidgets #458
- PR finales: wxWidgets #538 & wxWidgets #571
Para la planificación, se definieron varios hitos: uno por cada etapa de evaluación determinada por los deadlines de Google, más otros de "precalentamiento" (ticket inicial y community-bonding).
Para estimar se cargaron tickets iniciales (Scrum), con una estimación aproximada considerando que cada etapa dura aproximadamente 1 mes. Varios de estos tickets tuvieron que ser reconsiderados, ya que se encontraron dificultades y diferentes acercamientos a medida que avanzaba el proyecto.
No olvidar que algunas cuestiones, como la revisión del código, documentación y discusiones de características pueden tomar su tiempo. Es fundamental considerar el esfuerzo necesario + eventualidades, y no dejar todo para último momento.
IMPORTANTE: no perder de vista que el GSoC esta pensado para las vacaciones de verano del hemisferio norte (para no interferir con los estudios / trabajo cotidiano); dado que en estas latitudes las vacaciones de invierno son mucho más cortas, la disponibilidad y fechas límites pueden no ser temas menores.
Ficha del Proyecto:
- Resumen: https://www.wxwidgets.org/blog/2017/12/gsoc-2017-summary/
- + info: https://summerofcode.withgoogle.com/archive/2017/projects/6201193772613632/
- Propuesta del estudiante: Google Doc
- Hilos en la lista de correo: https://groups.google.com/forum/#!topic/wx-dev
- Reporte final: Google Docs
GSoC 2017 Mentor Summit
Cada año Google lleva a cabo una desconferencia (un-conference), donde participan dos mentores de cada proyecto en diversos espacios abiertos: https://sites.google.com/view/2017gsocmentorsummitLa idea es intercambiar experiencias, consejos y relacionarse con miembros de las distintas comunidades de software libre.
En las diferentes salas se podría proponer varios espacios abiertos de discusión:
Por mi parte propuse una sesión sobre "Open Source Education" que tuvo bastante interesados, y luego de presentar algunas experiencias como disparadoras, se abrio una discusión muy productiva.
![]() |
Tuve la oportunidad de conocer a Vadim Zeitlin, uno de los principales desarrolladores de wxWidgets, y mi mentor en el primer proyecto de GSoC: ![]() |