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 automatizzare il rifiuto di qualsiasi patch che introduca avvisi ulteriori.

Difficoltà: media

Requisiti: C++

Mentore/i: Joe Neeman, Reinhold Kainhofer


Altre lingue: English, français, nederlands.
About automatic language selection.

Validation

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