Google Summer of Code

Was ist Google Summer of Code?

Google Summer of Code ist ein globales Programm, bei dem Google Studenten Stipendien offeriert, um in den Sommerferien an Open-Source-Projekten zu arbeiten.

Es ist dies eine ausgezeichnete Gelegenheit neue Entwickler zu finden und diejenigen, die bereits an LilyPond mitwirken zu motivieren, ihr Engagement zu vertiefen. Einer unserer Entwickler wurde für den Sommer 2012 als Teil des GNU-Projekts angenommen; wir hoffen, dass auch in kommenden Jahren Entwickler für LilyPond an dem Programm teilnehmen können.

Unsere Ideenliste

Unten befindet sich eine Liste mit vorgeschlagenen Projekten für GSoC-Stundenten für den Sommer 2012. Wir haben sie hier aufbewahrt, damit sie zukünftigen GSoC Interessenten als Anregung dienen mag.

Natürlich gibt es noch sehr viele andere Aufgaben, um LilyPond weiter zu verbessern und das LilyPond Entwicklerteam wird jederzeit jede/n gern unterstützen, die/der Aufgaben wie jene unten aufgeführten angehen möchte.

Eine vollständige Liste aller aktuell offenen Punkte findet sich hier.

Stichnoten

Beseitigen Sie Probleme bei der Synchronisation von Vorschlagsnoten. Vorschlagsnoten können das Zeitmaß von LilyPond durcheinander bringen und so unerwartete Effekte hervorrufen. Das tritt besonders dann auf, wenn viele Notensysteme verwendet werden und einige Vorschlagsnoten haben und andere nicht.

Schwierigkeit: mittel Erfordernisse: C++, MIDI Empfohlen: mit den Interna von LilyPond vertraut sein Mentoren: Mike Solomon, Carl Sorensen

MusicXML

Verbesserung der MusicXML Import- und Exportfunktionen:

  • Der Export sollte ähnlich wie der MIDI Export wenigstens die Musik an sich exportieren können (d.h. die Benutzung eine dezidierter Exportklassen, abgeleitet von der translator class.)
  • Der XML-Baum der Musik an sich muss erzeugt, Verbindungen zwischen den music events und den XML Tags hergestellt werden.
  • Alle LilyPond-Engraver sollen ihre Arbeit verrichten.
  • Alle Ausgabe-Objekte (also alle Stencil/Gruppen von Stencils) sollen der Musik zugeordnet werden (und damit auch dem XML-Tag im XML-Baum).
  • Ein XML-Ausgabebackend soll hinzugefügt werden. Dieses fügt die Layoutinformationen für jedes Ausgabe-Objekt den XML-Tags hinzu.

Schwierigkeit: mittel Erfordernisse: MusicXML, Python, grundlegende Kenntnisse in LilyPond Mentoren: Reinhold Kainhofer, Mike Solomon

Kenntnis anderer Notensatzprogramme (zum Testen) wäre hilfreich.

Binde- und Legatobögen verbessern

Die Standardform von Binde- und Legatobögen ist oft nicht zufriedenstellend. Durch Schlüssel- oder Systemwechsel unterbrochene Bögen werden nicht gut behandelt. Teil der Aufgabe wäre es, Beispiele von unschöner Ausgabe zu sammeln und zu gruppieren um dann zu entscheiden, welche Ausgabe stattdessen gewünscht wäre. Schließlich muß der dazu notwendige Programmcode geschrieben werden.

Schwierigkeit: schwer Erfordernisse: C++, Erfahrung mit Heuristiken Empfohlene Kenntnisse: LilyPond-Kenntnisse, Sinn für Ästhetik Mentor: Mike Solomon

Hinzufügen von Glyphenvarianten

  • Hinzufügen von Glyphenvarianten zur Darstellen ‚auf‘ und ‚zwischen‘ Notenlinien.
  • Kürzere und schmalere Varianten der gleichen Glyphe, z.B. Vorzeichen. Ein weiteres spezielles Beispiel wäre ein Breve Notenkopf für ‚Alte Musik‘. Hier wäre zwei Varianten mit kleinem bzw. größerem ‚Loch‘ denkbar.

Schwierigkeit: leicht Erfordernisse: MetaFont, C++, gutes Auge für Details Empfohlene Kenntnisse: grundlegene LilyPond Kenntnis Mentor: Werner Lemberg

Balkenpositionierung verbessern

Die Standardpositionierung von normalen Balken, Balken über Systeme hinweg, unterbrochene und Knie-Balken sollte verbessert werden. Balken sollten sich am Kontext und benachbarten Noten orientieren (siehe Abschnitt 2.2). Wenn möglich, sollte die Rechenzeit für die Bebalkung verkürzt werden.

Schwierigkeit: mittel Erfordernisse: C++, Erfahrung mit Heuristiken Empfohlene Kenntnisse: Sinn für Ästhetik Mentoren: Mike Solomon, Carl Sorensen

Kompilationswarnungen aufräumen

Werkzeuge zur automatisierten Codeanalyse wie ‚valgrind memory leak detection‘ oder ‚callgrind code profiler‘ liefern wertvolle Information über möglicher Defizite in unserem C++ code. Eine Bereinigung der Warnungen würde uns erlauben automatisiert Patches, die zusätzliche Warnungen erzeugen, abzulehnen.

Schwierigkeit: mittel Erfordernisse: C++ Mentoren: Joe Neeman, Reinhold Kainhofer