Unser Hackfest 2017 in Paris

Das Hackfest 2017 wurde organisiert, um die Inkscape-Entwicklung voranzutreiben und die Koordination unter den Entwicklern zu fördern. Wir haben Entwickler und andere Beitragende dazu eingeladen, nach Paris zu kommen und dort eine Woche lang konzentriert zu programmieren, zu diskutieren und das Design zu planen.

Das Hackfest begann am Dienstag, dem 27. Juni, mit etwas Verspätung, da die verschiedenen Gruppen nicht so genau wussten, wo sich die anderen aufhielten und wohin sie eigentlich genau gehen sollten. Nachdem wir uns telefonisch koordiniert hatten, erreichte jeder den Haupt-Hacking-Raum, der uns freundlicherweise vom Carrefour Numérique² zur Verfügung gestellt wurde. In diesem hohen, großen Raum standen viele bohnenförmige Tische mit vielen Steckdosen und Stühlen, sowie eine Präsentationsfläche, die wir sogleich dazu verwendeten, einige Designideen zu besprechen und die Inkscape-Entwicklung zu planen. Es gab ein paar kleinere Netzwerkprobleme mit dem gleichzeitigen Zugang zu den Git-Repositorien und Email-Servern über WLAN.

Da der Inkscape-Entwicklungszweig mittlerweile auf Gtk3 umgestellt worden ist, drehten sich viele Diskussionsthemen um die Gestaltung und Entwicklung verschiedener Bestandteile der Benutzeroberfläche (UI). Gtk3 wurde notwendig, da die ältere Gtk2-Version, die noch von Inkscape 0.92.x verwendet wird, nur mühsam für macOS paketiert werden kann und auch hinter den Fortschritten der Bedienelemente der Folgeversion zurückbleibt.

Der erste Teil der Benutzeroberfläche, den wir uns vorgenommen hatten, war der Filtereditor-Dialog. In diesem Dialog können die Anwender von Inkscape neue Filter zusammenbauen und bearbeiten, die dann auf SVG-Elemente angewendet werden können. Diese Filter wirken genauso wie Pixel basierte Filter, die man in Programmen wie Gimp finden kann, sind jedoch selbstverständlich nicht-destruktiv und können jederzeit angepasst werden. Problematisch war, dass der Dialog nicht nur schlecht zu benutzen war, sondern auch noch nicht gut mit der neuen GTK3-Version funktionierte, zu der Inkscape gewechselt hatte. Es wurden Ideen für die Vereinfachung der Darstellung der komplexen Filterhierarchien, bei denen jeder weitere Bestandteil auf unterschiedliche Weise den vorhergehenden beeinflussen kann, entwickelt, und Vorschläge gemacht, wie dies in einfache Bedienelemente übersetzt werden kann, die auch von Programmiererseite leicht einzusetzen sind. Marc sammelte alle diese Vorschläge und arbeitete daran, diese mit Hilfe des Bedienoberflächen-Gestaltungsprogramms Glade umzusetzen. Dies macht es möglich, die Glade-Dateien für die Benutzeroberfläche mit Inkscape auszuliefern, so dass auch Nicht-Programmierer diese mit einem grafischen Programm bearbeiten können, und die Oberfläche an ihre Wünsche anpassen können, wenn sie möchten.

Elisa und Cédric halfen bei der Entwicklung der Gestaltungsideen und beim Ausprobieren verschiedener Ideen. Sie brachten uns auch Bücher und weitere Bildungsmaterialien mit, mit denen sie bezeugten, wie wichtig es ist, auch das Wissen über die Verwendung von Inkscape weiterzutragen, und nicht nur den Programmcode zu veröffentlichen. Die Verbesserung der Dokumentation und der Übersetzungen waren ihre Hauptziele für das Hackfest.

Andere Entwickler konzentrierten sich darauf, die Codebasis weiter aufzuräumen. Martin arbeitete daran, den mehrfach vorhandenen Code für das Auflisten von Dateien zu zentralisieren. So konnte der Code mit neuen Methoden, die in C++11 verfügbar sind, verbessert werden, und eine verbesserte Funktionalität sowie ein jeweils gleicher Ablauf beim Auflisten von Dateien auf der Festplatte an verschiedenen Stellen im Programm konnte erreicht werden. Dies betrifft unter anderem Prozesse wie das Einlesen von Paletten-Dateien oder die Suche nach Erweiterungen und Benutzeroberflächen-Stilen. Jeder dieser Vorgänge ist jetzt toleranter gegenüber Fehlern und kann auch in Unterordnern nach dem Dateityp suchen, der gefordert wird.

Chris stellte den Kaffee zur Verfügung und gab uns allen schicke Tassen im Inkscape-Hackfest-Design. Außerdem arbeitete er an einer neuen Funktion für das Pipettenwerkzeug. Auch als Nicht-Programmierer konnte er XPM-Dateien für Mauszeiger in Gimp bearbeiten und mit Hilfe der anderen im Team seinen ersten Beitrag in das Inkscape-Repositorium laden. So trug er zur Verbesserung der Grafiken für diese Mauszeiger bei. Zusammen mit Martin arbeitete er auch daran, den Code für die Mauszeiger zu bereinigen und zu vereinheitlichen.

Alex arbeitete daran, den Inkscape-Code so anzupassen, dass er normale, Gnome-basierte Icons verwenden kann, und entfernte Inkscapes eigenen Code zur Generierung von Icons. Dies geschah mit dem Ziel, nicht nur bessere Designs für Inkscape zu ermöglichen, sondern auch, das Hinzufügen neuer Icons zu vereinfachen und die Icon-Dateien ohne Nebenwirkungen editieren zu können. Diese Arbeit verursachte viele Folgeprobleme, so dass daran wahrscheinlich auch nach Ende des Hackfests noch eine ganze Weile gearbeitet werden wird. Dies kam nicht unerwartet, da der Icon-Code in Inkscape schon sehr alt war, und die Aufgabe, diesen zu entfernen, sehr groß.

Am zweiten Tag zogen wir in einen anderen, kleineren Raum um, was allerdings unproblematisch war, da unsere Gruppe nicht allzu riesig war. Dieser neue Raum war ein kleines bisschen leichter zu erreichen. chr[] zeigte uns in einer Präsentation, wie er Inkscape bei seiner Arbeit dazu verwendet, Segel für Schiffe und Boote zu machen. Die verwendeten Maschinen waren riesig, und die Werkzeuge sahen ziemlich alt aus. Die Verwendung von Inkscape und von Erweiterungen, die Vektordaten ausgeben können, sind sehr nützlich für das Erstellen solcher Gegenstände. Einzig problematisch war der Projektor, der manuell bedient werden musste, wie im Foto, auf dem Martin auf einem Stuhl steht und versucht, den Projektor für die Präsentation anzuschalten, zu sehen ist. Größtenteils arbeiteten die Anwesenden weiter an den Dingen, mit denen sie am Vortag begonnen hatten.

Sylvain aktualisierte die Version der libavoid-Bibliothek, die in Inkscape im Objektverbinder-Werkzeug verwendet wird. Diese Bibliothek sorgt dafür, dass Linien automatisch vermeiden, quer über andere Objekte zu verlaufen, und sich stattdessen zwischen diesen hindurchschlängeln. Dies wird für eine elegante Darstellung von Flussdiagrammen gebraucht. Hierbei musste eine große Menge Code aus dem Repositorium der Bibliothek in Inkscape eingebunden werden, da diese im Allgemeinen nicht für Linux und andere Plattformen zur unabhängigen Installation zur Verfügung steht. Die Aufgabe, die Bibliotheken aktuell zu halten ist wichtig, und diese Verbesserungen werden uns helfen, wenn wir den Code zukünftig auslagern wollen.

Tav gab Hilfestellung bei vielen Aufgaben, die auf dem Hackfest bearbeitet wurden, und sorgte dafür, dass sich die richtigen Leute trafen, und dass wir auch über die Probleme mit der Benutzerfreundlichkeit des Textwerkzeuges und des Stildialogs sprachen. Gemeinsam mit Chris arbeitete er an den Einstellungen für die Zeilenhöhe, verbesserte die Benutzeroberfläche dafür und behob Fehler im Code für die Zeilenhöhe. Jabier nahm von zu Hause aus Teil und schaffte eine ganze Menge, auch wenn er leider nicht in Paris dabei sein konnte. Seine Arbeit an der Anfasserauswahl wird es ermöglichen, dass Anfasser von Sternen oder Rechtecken angewählt und mit der Tastatur verschoben werden können.

Am Abend des ersten Tages fand unser traditionelles Inkscape-Essengehen statt. Die Teilnehmer wurden vom Inkscape-Projekt eingeladen, um den sozialen Austausch zu fördern und allen dafür zu danken, dass sie zu dieser freiwilligen Veranstaltung gekommen sind. Wir trafen uns in einem japanisch-asiatischen Restaurant. Es kamen auch einige Familienmitglieder von Teilnehmern mit, die mit uns gemeinsam Spaß hatten, und die anderen, mit denen wir online arbeiten, einmal kennenlernen konnten. An jedem der weiteren Abende trafen sich die Teilnehmer in wechselnder Zusammensetzung, um gemeinsam zu essen oder zu trinken. So spielte Marc zum Beispiel am dritten Abend den Stadtführer für uns, und nahm uns in ein traditionelles Restaurant an der Seine mit. Das Essen wurde für gut befunden, und wir blieben auch noch zum Nachtisch. Im Anschluss führte uns Marc auf einer langen Tour durch Paris, bei der wir viele der berühmten Sehenswürdigkeiten zu sehen bekamen, und er uns aus der Stadtgeschichte erzählte. Hoffentlich wird Marc nicht den Beruf wechseln und Stadtführer werden, denn sein Code würde dem Projekt doch sehr fehlen.

Da am letzten Tag, dem Samstag, für uns kein Raum frei war, lud Tav uns ein, mit dem Zug in einen der Vororte von Paris zu fahren und bei ihm zu Hause weiter am Code zu arbeiten, während er für uns grillte. Ein dickes Dankeschön geht an dieser Stelle an Tavs Familie, die uns am letzten Tag des Hackfestes beherbergt hat. Obwohl einige von uns noch einige weitere Tage in Paris blieben, um gemeinsam in unseren Hotelzimmern am Code zu arbeiten, war dies doch der letzte Tag für die meisten von uns.

Jeder Teilnehmer verbrachte etwas Zeit mit jedem anderen, um Hilfestellung beim Verstehen des Codes zu geben und die Technik oder die Techniken besser zu verstehen. Die Möglichkeit, eben mal schnell eine Frage stellen zu können, ist ein riesengroßer Vorteil an einem Entwicklertreffen, und ist ein guter Grund dafür, dass wir auch in Zukunft Hackfests organisieren möchten. Das nächste Hackfest wird mit ziemlicher Sicherheit im nächsten Jahr in Boston in den USA stattfinden. Die Vorbereitungen dafür, einen guten Platz für uns zu reservieren, laufen schon. Wenn Du uns dabei helfen möchtest, kannst Du hier spenden. Bis zum nächsten Jahr und fröhliches Programmieren!

The team!