ubuntuusers.de

Erfahrungsbericht über Google Summer of Code

software.png

Unser ehemaliges Team-Mitglied Ritze hat sich mit einem Projekt am diesjährigen Google Summer of Code beteiligt. Für die Ikhaya-Leser blickt er zurück und gibt Einblick in dessen Ablauf.

Alles begann als ich Anfang des Jahres mal wieder etwas über Google Summer of Code bei heise.de gelesen hatte. Ich wollte schon immer etwas für das Projekt Gnome beitragen und so etwas an die Gemeinschaft zurückzugeben. Ich benutze den Desktop nun schon seit mehr als vier Jahren. Also fing ich an im Wiki von Gnome ein wenig herumzustöbern und stieß auf eine Seite mit Ideen zum diesjährigen Google Summer of Code. Nach längerer Überlegung dachte ich mir, ich versuche es mal bei Anjuta 🇬🇧 .

Was ist Anjuta?

anjuta-logo.png Anjuta ist eine IDE, die das Leben eines Programmierers erleichtern soll. Eine IDE beherbergt in der Regel viele nützliche Werkzeuge, sodass man beim Programmieren nicht durch Trivialitäten abgelenkt oder gar aufgehalten wird. Ein Beispiel wäre das Markieren von Syntaxfehlern. Auch Programmierer sind nur Menschen und machen somit auch Leicht­sinns­feh­ler, indem sie sich vertippen oder einfach ein Zeichen vergessen. Die IDE markiert diese Fehler und macht damit den Programmierer darauf aufmerksam. Dadurch werden sehr viele Fehler im Vorhinein verhindert.

Es geht los

Projekt gefunden – was nun? Als Mentor für das Projekt Anjuta wurde Johannes Schmid angegeben. Zudem fand ich die Entwickler-Mailingliste von Anjuta heraus und trug mich auch gleich dort ein. Mein Englisch ist nicht gerade das beste und nun soll ich eine E-Mail in englisch verfassen? Natürlich war das für mich eine der größten Hürden bei der Teilnahme am Google Summer of Code. Dennoch wagte ich mich dran und so folgte eine kurze E-Mail, mit der ich mein Interesse kund tat. Johannes antwortete mir innerhalb von zwei Stunden und erklärte mir, dass ich als erstes etwas zum Projekt beitragen sollte. Das einfachste wäre einen kleinen Bug zu beheben. Damit soll sichergestellt werden, dass ich es ernst meine.

Ich behob also einen kleinen Fehler und konnte somit auch gleich den Quelltext von Anjuta ein wenig kennenlernen. Ich hatte zuvor schon von der Uni aus mit ein paar Kommilitonen ein größeres Programm geschrieben, jedoch war Anjuta das bisher größte Projekt und hatte dementsprechend auch mehr Zeilen Quelltext, mehr Klassen und demzufolge auch mehr „Infrastruktur“.

Erste Schritte

Anschließend suchte ich mir ein Thema aus, das ich über die folgenden drei Monate ausarbeiten würde. Ehrlich gesagt, ist mir nichts dazu eingefallen, allerdings gab es bereits einen Vorschlag von Johannes auf der Gnome-Wiki-Seite, auf der alle Google-Summer-of-Code-Projekte von Gnome aufgelistet wurden. Dort stand etwas von Clang.

anjuta-home.png
Anjuta
Quelle: anjuta.org

Clang ist ein Frontend vom LLVM Compiler. Wie auch der GNU Compiler (kurz: GCC) übersetzt der LLVM Code von den Programmiersprachen C, C++ Objective C und Objective C++ in Maschinencode um. Das ist längst nicht alles. LLVM bringt auch viele Werkzeuge mit, die es ermöglichen, den Quelltext nach Fehlern zu durchsuchen und den Programmierer beim Kompilieren darauf aufmerksam zu machen. Das macht LLVM sehr effizient und in manchen Bereichen sogar besser als der GCC. Mit Clang können nun Programmierer auf diese Funktionalität von LLVM zurückgreifen und sie mit ihren Programmen kombinieren.

In meiner offiziellen Bewerbung schrieb ich kurz etwas zu meiner Person und erklärte anschließend, wie Clang Anjuta bereichern kann. Dabei werden mehr Fehler von der IDE erkannt und der Programmierer kann diese gleich bei der Entstehung korrigieren. Dies hat zur Folge, dass in den Programmen weniger Fehler vorliegen und somit wird die Qualität der einzelnen Programme gesteigert. Außerdem verbringt der Programmierer weniger Zeit mit Fehlerbehebung im Code, was mehr als die Hälfte beim Programmieren ausmacht. Diese Zeit kann also in neue Funktionen gesteckt werden, was wiederum die Endbenutzer glücklich macht. Mit diesem Vorhaben schlage ich also mehrere Fliegen auf einmal.

Zusage zum GSoC

Es verstrich ein wenig Zeit bis ich die Zusage am Google Summer of Code bekommen hatte. Das Programm war in mehreren Phasen eingeteilt. Die erste Phase war die Community-Phase, in der man die Menschen hinter den Nicknames kennen lernen sollte. Dazu gehört natürlich auch, dass man sich selber vorstellt und über den ganzen Zeitraum des Projektes hinweg Berichte schreibt, in denen man den aktuellen Stand der Dinge, sowie Probleme und eventuell auch deren Lösungen beschreibt. Meine Berichte hatte ich auf meinem Blog verfasst, die wiederum über Planet Gnome publiziert wurden. Daneben richtete ich eine Seite im Gnome-Wiki ein, die über das Projekt hinweg immer aktuell gehalten wurde.

Wie bei jedem neuen Projekt ist auch bei Anjuta aller Anfang schwer. Man muss sich in den Quellcode einlesen. Dazu gehört auch das Lesen von Dokumentationen, die Handhabe von Bibliotheken wie beispielsweise GLib und ganz allgemein das objektorientierte Programmieren mit einer Programmiersprache C, die ursprünglich dafür gar nicht geeignet ist. In dieser Phase lernte ich unglaublich viel über allerlei Dinge und genau dies ist auch der große Pluspunkt beim Google Summer of Code.

Der Rest ist Geschichte. Mein ursprüngliches Ziel Clang nach Anjuta zu bringen, konnte ich leider nicht erreichen, jedoch habe ich eine gute Grundlage dafür gelegt und habe auch die Absicht, das Plugin in naher Zukunft fertig zu schreiben. Nichtsdestotrotz habe ich unter der Haube von Anjuta vieles vereinfacht und zusammengelegt, was die meiste Zeit meines Projektes in Anspruch genommen hat. Es ist nun leichter, ein Plugin für eine Programmiersprache zu schreiben als zuvor. Zudem sind nun Eigenschaften wie zum Beispiel das automatische Hinzufügen von einer schließenden Klammer ) nach der Eingabe einer offenen Klammer ( nun für alle unterstützten Programmiersprachen von Anjuta vorhanden. Auch das Verhalten ist nun überall gleich.

Fazit

Ich für meinen Teil bereue es nicht, dass ich an diesem Programm teilgenommen habe. Ich konnte dadurch sehr viel neues lernen, zumal ich mich nun im Quelltext von Anjuta größtenteils auskenne und ich auch die Absicht habe, dem Projekt weiterhin Code bei zusteuern.


Ein großes Dankeschön an Ritze für diese Einblicke!