staging.inyokaproject.org

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!

Veröffentlicht von mfm | 26. November 2012 12:30 | Kategorie: Software | # Fehler im Artikel melden

Björn2L

1 26. November 2012 16:03

Vielen Dank für diesen Bericht 👍 , sehr interessant wie das alles so ablief

Google

2 27. November 2012 01:58

Solche Kerle laden wir gerne ein! ♥

katze_sonne

Avatar von katze_sonne
3 27. November 2012 02:15

Hey Ritze, vielen Dank für den Bericht! Ich fand deine Erfahrungen wirklich sehr interessant und finde es mal toll, von einem Teilnehmer des GSOC direkt etwas zu hören! ☺

Eine Frage hätte ich dennoch mal 😉 Ein Teil fehlt eigentlich noch, wie ich finde - auch, wenn du dein Projekt wie ich verstanden habe nicht ganz fertig bekommen hast. Immerhin ich das mit den Stipendien (wenn ich das richtig verstanden habe 😉) ja ein nicht ganz unwichtiger Teil. Ansonsten wäre der GSOC ja nur eine Art Projekt, "Entwickler mit dem Angebot ihnen einen Mentor an die Seite zu stellen für Open-Source-Projekte zu gewinnen"...

Ritze

Avatar von Ritze
4 27. November 2012 07:38

@3: Ob man das gesamte Geld vom Stipendium bekommt oder nur einen Teil, entscheidet am Ende der Mentor bzw. die Organisation. Google ist lediglich der Geldgeber und wird erst aktiv, falls der Mentor bzw. Organisation der Meinung ist, dass man nicht genug für das Stipendium getan hat. Dann wird ein unabhängiger Dritter von Google eingeschaltet, der den Code analysiert und dementsprechend beurteilt.

Wie bei vielen anderen Projekten stoßt man während der Entwicklung auf Probleme, die man erst lösen muss, bevor man weiter machen kann. In der Softwareentwicklung sind das als sehr große Probleme wie zum Beispiel bei mir. Ich musste im Grunde Code von vier verschiedenen Sprachen (C, Vala, Python und JS) zusammenführen. Die einzelnen Sprachplugins zudem noch in der jeweiligen Sprache verfasst worden, sodass die Arbeit dadurch zusätzlich erschwert wurde. Was das für eine Arbeit war, kannst du dir im Bugreport dazu anschauen.

Ich hoffe, deine Frage wäre damit beantwortet. ☺

Ich beantworte natürlich gerne noch andere Fragen, falls einer von den Lesern etwas zu GSoC wissen möchte.

bubi97

Avatar von bubi97
5 27. November 2012 17:44

Wieviel Programmiererfahrung sollte man mitbringen, wenn man am GSOC mitmachen möchte?

Ritze

Avatar von Ritze
6 27. November 2012 18:45

@5: Das kommt natürlich auf das Projekt an, für welches du dich bewirbst. Grundsätzlich darf jeder Student an dem Programm teilnehmen, Google empfiehlt jedoch, dass man Informatik oder etwas ähnliches studiert und somit auch schon ein paar Programmiererfahrungen gemacht hat. Geschadet hat es mir auf jeden Fall nicht.

Tyranus

7 28. November 2012 00:52

Hi, danke für deinen Bericht! Sehr interessant.

Interessieren würde mich noch der Zeitaufwand für das Projekt. Dass es viel Arbeit war hast du geschildert, was bedeutet das konkrekt? Wirklich 40h / Woche und das jede Woche in der gesamten Projektzeit, oder wars weniger?

Ritze

Avatar von Ritze
8 28. November 2012 07:42

@7: Eine Zeit lang habe ich tatsächlich fast 40 Stunden in der Woche dafür aufgebracht, aber das lag hauptsächlich auch daran, weil es mir sehr viel Spaß gemacht hat und ich es zum Teil auch als Freizeitbeschäftigung gesehen habe.