Google Summer of Code

¿Qué es el Google Summer of Code (Verano del Código de Google)?

GSoC es un programa global que ofrece a estudiantes una ayuda para que trabajen en proyectos de software de fuentes abiertas durante las vacaciones de verano. Es una excelente oportunidad para que los estudiantes obtengan experiencia en el desarrollo de software en el mundo real y hagan contribuciones que beneficie a todos. Atrae a colaboradores nuevos y anima a los estudiantes que ya participan en el desarrollo de LilyPond a que se impliquen aún más. LilyPond participa en el GSoC como parte del proyecto GNU.

Hemos tenido participantes en el GSoC en 2012, 2015 y 2016 y animamos a los estudiantes a que envíen la solicitud para las futuras ediciones.

Si tiene alguna pregunta o le gustaría solicitar la participación, envíenos un correo a la lista de desarrolladores (véase Contacto).

Lista de ideas del proyecto

Más abajo aparece una lista de los proyectos sugeridos para el GSoC o para cualquier persona interesada en ayudar a mejorar LilyPond. (Última actualización: noviembre de 2016)

La disponibilidad de los mentores varía de proyecto en proyecto y de un año a otro. Envíenos un correo electrónico sobre nuestra lista de distribución de desarrolladores (véase Contacto), y trataremos de ayudarle a encontrar un mentor para un proyecto que cubra sus intereses y capacidades.

Si tiene alguna idea para un proyecto del GSoC que no aparece en la relación siguiente, puede enviarnos un correo también. Existen varias áreas en las que LilyPond puede mejorar, y nuestro equipo de desarrollo está siempre dispuesto a servir de ayuda a aquellos que deseen implicarse en un proyecto como los que aparecen relacionados más abajo.

Hay una lista completa de todas las incidencias abiertas aquí.

Mejora de la estructura interna de acordes

La representación interna de los acordes de LilyPond no es lo bastante potente como para captar la nomenclatura de los acordes de jazz. Actualmente el acorde tiene una fundamental, un bajo y una inversión. Sería bueno poder manejar acordes múltiples o superpuestos, menor/mayor, etc. Para hacerlo, debe desarrollarse una representación interna con la capacidad de capturar la esencia de los acordes más complejos. Además, una vez que se haya desarrollado la representación interna, el formato de salida de los nombres de acorde puede mejorarse.

Dificultad: Fácil/intermedia Requisitos: Scheme (Guile), pero el nivel necesario puede aprenderse fácilmente Conocimientos recomendados: Teoría y nomenclatura de los acordes Mentor: Carl Sorensen

Añadir una variante especial de los glifos de fuente tipográfica

  • Añadir variantes ‘sobre’ y ‘entre’ líneas del pentagrama.
  • Variantes más bajas y estrechas de ciertos glifos, como alteraciones alccidentales. Otro ejemplo más específico sería una cabeza de nota breve de la notación antigua en dos variantes, una con un hueco pequeño dentro, y otra con un hueco grande.

Dificultad: fácil Requisitos: MetaFont, C++, buen ojo para los detalles Conocimientos recomendados: conocimientos básicos de LilyPond Mentor potencial: Werner Lemberg

Notas de adorno

Arreglar problemas con la sincronización de las notas de adorno. Las notas de adorno pueden interferir con la cuenta del tiempo de LilyPond y causar efectos extraños, especialmente cuando se usan varios pentagramas en los que algunos tienen notas de adorno y otros no. Este es uno de los más antiguos y emarazosos bugs de LilyPond.

Dificultad: media Requisitos: C++, MIDI Conocimientos recomendados: familiaridad con el funcionamiento interno de LilyPond Mentores potenciales: Mike Solomon (not available for GSoC 2016), Carl Sorensen

Mejora del posicionamiento de las barras de corchea (y figuras menores)

Para barras de corchea normales, de pentagrama cruzado, interrumpidas y en ángulo. El barrado debería depender del contexto y de las notas vecinas (véase la sección 2.2 de este libro). Si es posible, reducir el tiempo de cálculo del barrado.

Dificultad: media Requisitos: C++, experiencia con heurística de la escritura Conocimientos recomendados: sentido estético Mentores potenciales: Mike Solomon (not available for GSoC 2016), Carl Sorensen

Ayudar a mejorar el comportamiento de la compilación

Las herramientas de análisis automático del código, como la detección de filtraciones de memoria de Valgrind o el perfilador de código Callgrind, proveen una información valiosa acerca de los posibles problemas de nuestro código de C++. La limpieza de estas advertencias nos permitiría rechazar automáticamente cualquier parche que introdujese más advertencias de las que hay actualmente.

Dificultad: media Requisitos: C++ Mentores potenciales: Reinhold Kainhofer (no disponible para el GSoC 2016), Joe Neeman

MusicXML

Mejora de las funciones de importación y exportación de MusicXML:

  • Manejo de la exportación del contenido musical básico como la exportación MIDI (es decir, uso de clases exportadoras dedicadas, derivadas de la clase translator).
  • Construir el árbol XML del contenido musical básico, y una conexión desde el evento musical a la etiqueta XML.
  • Hacer que todos los grabadores de LilyPond hagan su trabajo.
  • Enlazar cada objeto de presentación (es decir, cada sello o grupo de sellos) a la causa musical (así como a la etiqueta XML dentro del árbol XML).
  • Añadir un ‘back-end’ de salida XML, que puede después añadir información de disposición para cada uno de los objetos de salida a las etiquetas del XML.

Existen varias posibilidades para este pryecto, entre ellas la construcción encima del proyecto de exportación de MusicXML del GSoC 2015.

Dificultad: media Requisitos: MusicXML, Python, Scheme, conocimiento básico de LilyPond Mentores potenciales: Reinhold Kainhofer, Mike Solomon (ninguno de ellos disponible para el GSoC 2016)

Sería un buen tanto a su favor la familiaridad con otros editores de partituras para poder hacer pruebas cruzadas.

Mejora de las ligaduras de unión y de expresión

Con frecuencia, las calidad gráfica de las ligaduras de unión y de expresión no es satisfactoria. No se manejan bien las ligaduras ‘interrumpidas’ por cambios de clave o de pentagrama. El proyecto podría incluir y organizar ejemplos de mala salida, decidir sobre la salida perseguida y escibir código para mejorarla.

Dificultad: alta Requisitos: C++, experiencia con heurística de la escritura Conocimientos recomendados: LilyPond, sentido estético Mentor potencial: Mike Solomon, Janek Warchoł (ninguno de ellos disponible para el GSoC 2016)