Google Summer of Code
Che cos’è il Google Summer of Code?
È un programma internazionale organizzato da Google che offre agli studenti degli stipendi per lavorare a progetti di software libero durante le vacanze estive.
È un’ottima opportunità per trovare nuovi collaboratori e per stimolare gli studenti che già partecipano allo sviluppo di LilyPond ad impegnarsi di più in esso. Uno dei nostri sviluppatori è stato accettato per il programma 2012 sotto l’egida del progetto GNU e siamo sempre in cerca di persone che vogliano partecipare ai programmi futuri.
La lista delle nostre idee
Ecco una lista di progetti suggeriti agli studenti del GSoC 2012. Viene conservata qui come fonte di ispirazione per chiunque sia interessato a contribuire allo sviluppo di LilyPond in futuri progetti GSoC. Ci sono molte altre cose da fare per migliorare LilyPond e i membri del team di sviluppo sono sempre disponibili a aiutare chi volesse affrontare progetti simili a quelli elencati sotto.
Una lista completa di tutti i problemi da risolvere si trova qui.
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.
Difficoltà: media Requisiti: C++, MIDI Consigliato: familiarità col funzionamento interno di LilyPond Mentore/i: Mike Solomon, Carl Sorensen
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.
Difficoltà: media Requisiti: MusicXML, Python, conoscenza di base di LilyPond Mentore/i: Reinhold Kainhofer, Mike Solomon
È auspicabile una certa familiarità con altri software di notazione musicale (a fine comparativo).
Migliorare le legature di portamento e di valore
La forma predefinita delle curve 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 Mentore/i: Mike Solomon
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 e più grande.
Difficoltà: facile Requisiti: MetaFont, C++, buon occhio per il dettaglio Conoscenze consigliate: conoscenza di base di LilyPond Mentore/i: Werner Lemberg
Migliorare la disposizione predefinita delle travature
Il posizionamento predefinito delle travature normali, tra i righi, spezzate e angolari deve essere migliorato. La disposizione delle travature deve dipendere dal contesto e dalle note vicine (si veda la sezione 2.2 qui). 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 Mentore/i: Mike Solomon, 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++ Mentore/i: Joe Neeman, Reinhold Kainhofer
Altre lingue: English, deutsch, français, nederlands.
About automatic language selection.