Google Summer of Code

Che cos’è il Google Summer of Code?

GSoC è un programma internazionale che offre agli studenti degli stipendi per scrivere codice per progetti di software libero e open source durante l’estate. È un’ottima opportunità per gli studenti per fare esperienza con lo sviluppo software in un progetto vero e per dare un contributo da cui tutti potranno trarre vantaggio. Attrae nuovi collaboratori e stimola gli studenti che già partecipano allo sviluppo di LilyPond ad impegnarsi di più in esso. LilyPond partecipa a GSoC sotto l’egida del progetto GNU.

Abbiamo avuto partecipanti al GSoC nel 2012, 2015 e 2016 e invitiamo gli studenti a fare domanda per le prossime estati.

Se hai dubbi o desideri presentare domanda, invia un’email alla nostra mailing list degli sviluppatori (vedi Contatti).

Elenco di idee di progetti

Ecco un elenco di progetti suggeriti per il GSoC o per chiunque sia interessato a aiutare a migliorare LilyPond. (Ultimo aggiornamento: Novembre 2016)

La disponibilità di mentori varia da progetto a progetto e di anno in anno. Invia un’email alla nostra mailing list degli sviluppatori (vedi Contatti) e ti aiuteremo a trovare un mentore per un progetto che sia adatto ai tuoi interessi e capacità.

Se hai idee per un progetto GSoC che non è elencato qui sotto, puoi inviarci un’email per discuterne. Ci sono molte aree in cui LilyPond può essere migliorato e il nostro team di sviluppo è sempre disponibile a aiutare coloro che desiderino affrontare un progetto come quelli di seguito elencati.

Una lista completa di tutti i problemi da risolvere si trova qui.

Migliorare la struttura interna degli accordi

La rappresentazione interna degli accordi in LilyPond non è abbastanza potente da comprendere la nomenclatura degli accordi jazz. Attualmente l’accordo ha una radice, un basso e un’inversione. Sarebbe auspicabile poter gestire accordi “impilati” o bicordi, minori/maggiori, etc. Per poter far questo, deve essere sviluppata una rappresentazione interna capace di catturare l’essenza di accordi complessi. Una volta che questa rappresentazione interna viene sviluppata, c’è un’ulteriore vantaggio: sarà più semplice migliorare la formattazione dei nomi degli accordi.

Difficoltà: Facile/media Requisiti: Scheme (Guile), ma il livello necessario può essere facilmente imparato Consigliato: Teoria e nomenclatura degli accordi Mentore: Carl Sorensen

Aggiungere varianti dei glifi dei tipi di carattere

  • Aggiungere varianti ‘sulla’ linea del rigo e ‘tra’ le linee dei righi.
  • Varianti più corte e più strette di alcuni glifi, come ad esempio le alterazioni. Un altro esempio più specifico è la testa della nota breve nella notazione antica che ha due varianti, con un ‘buco’ più piccolo o più grande.

Difficoltà: facile Requisiti: MetaFont, C++, buon occhio per il dettaglio Conoscenze consigliate: conoscenza di base di LilyPond Mentore/i: Werner Lemberg

Abbellimenti

Correggere i problemi di sincronizzazione degli abbellimenti. Gli abbellimenti possono interferire col modo in cui LilyPond gestisce il tempo e causare strani effetti, specialmente quando si usano più righi e alcuni di questi hanno degli abbellimenti mentre altri non ce li hanno. Questo è uno dei bug più imbarazzanti e di vecchia data in LilyPond.

Difficoltà: media Requisiti: C++, MIDI Consigliato: familiarità col funzionamento interno di LilyPond Mentori potenziali: Mike Solomon (non disponibile per GSoC 2016), Carl Sorensen

Migliorare la disposizione predefinita delle travature

Per le travature normali, tra i righi, spezzate e angolari. La disposizione delle travature deve dipendere dal contesto e dalle note vicine (si veda la sezione 2.2 di questo libro). Se possibile, ridurre anche il tempo di elaborazione della disposizione delle travature.

Difficoltà: media Requisiti: C++, esperienza con la scrittura di euristiche Conoscenze consigliate: senso estetico Mentori potenziali: Mike Solomon (non disponibile per GSoC 2016), Carl Sorensen

Migliorare il comportamento durante la compilazione

Strumenti di analisi automatica del codice, come il rilevamento di perdite di memoria di valgrind e i profilatori di codice di callgrind, forniscono informazioni utili per individuare possibili errori nel nostro codice C++. Pulire gli avvisi ci permetterebbe di automatizzare il rifiuto di qualsiasi patch che introduca avvisi ulteriori.

Difficoltà: media Requisiti: C++ Mentori potenziali: Reinhold Kainhofer (non disponibile per GSoC 2016), Joe Neeman

MusicXML

Migliorare le funzioni di importazione e esportazione di MusicXML:

  • Gestire l’esportazione del contenuto musicale principale come l’esportazione MIDI (ovvero usando classi dedicate dell’esportatore, derivate dalla classe del traduttore).
  • Costruire l’albero XML del contenuto musicale di base, aggiungere un collegamento dall’evento musicale al tag XML.
  • Far sì che tutti gli incisori di LilyPond facciano il loro lavoro.
  • Aggiungere la capacità di collegare ogni oggetto dell’output (ovvero ogni stampo (stencil) / gruppo di stampi) alla sua causa musicale (e quindi al tag XML nell’albero XML).
  • Creare un backend di output XML, che possa aggiungere le informazioni di formattazione per ogni oggetto di output ai tag XML.

Ci sono varie direzioni possibili per questo progetto, inclusa quella di proseguire l’esportazione in formato MusicXML iniziata nel progetto GSoC 2015.

Difficoltà: media Requisiti: MusicXML, Python, Scheme, conoscenza di base di LilyPond Mentori potenziali: Reinhold Kainhofer, Mike Solomon (entrambi non disponibili per GSoC 2016)

È utile avere una certa familiarità con altri software di notazione musicale (a fine comparativo).

Migliorare le legature di portamento e di valore

La qualità tipografica delle legature di portamento e di valore è spesso non soddisfacente. Le legature di valore “spezzate” da una chiave o da un cambio di rigo non sono gestite al meglio. Il progetto potrebbe includere la raccolta e la classificazione di esempi di output scadente, la decisione sull’output desiderato e la scrittura del codice per migliorarlo.

Difficoltà: difficile Requisiti: C++, esperienza con la scrittura di euristica Conoscenze consigliate: conoscenza di LilyPond, senso estetico Mentori: Mike Solomon, Janek Warchol (entrambi non disponibili per GSoC 2016)


Altre lingue: English, deutsch, español, français, 日本語, nederlands.
About automatic language selection.

Validation

Grazie a webdev.nl per l'hosting di lilypond.org. Valid HTML 4.01 Transitional