Im Sommer 2019 arbeitete Valentin an Verlaufsgittern, Schraffuren und der Benutzeroberfläche in Inkscape

Wenn wir von der Inkscape-Community Bewerber/-innen für den Google Summer of Code (GSoC) suchen, dann hoffen wir darauf, Leute zu finden, die neugierig auf das Projekt und die Software sind. Als Teil des Bewerbungsprozesses müssen Bewerber/-innen Arbeitsproben für das Projekt einreichen, um ihre Fähigkeiten und ihr Verständnis zu demonstrieren.

Anfang 2019 stieß Valentin (@vanntile) zur Community, bearbeitete mehrere Aufgaben und machte einen Vorschlag für das Projekt, an dem er als GSoC-Student arbeiten wollte.

"Auf die Erfahrung, beim GSoC mitzumachen habe ich ein ganzes Jahr gewartet, also seitdem ich zum ersten Mal davon gehört hatte. Als ich dann herausfand, dass Inkscape, ein Programm, das ich schon seit langem verwende, unter den teilnehmenden Organisationen war, habe ich mich entschlossen, ein Mentee zu werden", sagte Valentin, der aus Bukarest in Rumänien kommt.

Bis zum Sommer hatte unser GSoC-Student sich nicht nur mit dem Programm bekanntgemacht, sondern sich auch in unserer Online-Community beteiligt. Valentin brachte seine Neugier, Entschlossenheit und seine Programmierkenntnisse im Projekt ein. Einer der Hauptentwickler von Inkscape, Tavmjong Bah (@Tavmjong), wurde Valentins Mentor während dessen Arbeit am Projekt.

Valentin wollte an JavaScript-Polyfills[?] arbeiten, um die Darstellung von Verlaufsgittern und SVG-Schraffuren in Webbrowsern zu verbessern. Dies war jedoch nur der Anfang, denn  bald begann er damit, an der Benutzeroberfläche für Verlaufsgitter und Schraffuren zu arbeiten, so dass auch weniger technisch orientierte Inkscape-Anwender sie leichter einsetzen können.

Seine Programmierarbeiten an den Verlaufsgitter-Polyfills hatten zum Ziel, die Codequalität zu verbessern, indem er "zu einer moderneren JavaScript-Syntax wechselte, ohne an Performance zu verlieren, und, wo möglich, auch an Geschwindigkeit zu gewinnen". Im nächsten Teil seines Projektes kniete Valentin sich in Theorien in mathematischen Lehrbüchern und in der Wikipedia hinein (bilineare Interpolation ist sowohl großartig als auch schwer, sagt er), um das Problem lösen zu können.
 

Evolution of the mesh rendering script output
Entwicklung der Ausgabe des Verlaufsgitter-Polyfills

"Schraffuren", erklärte er, "sind besondere 'Paint-Server'[?], die einen oder mehrere Schraffurpfade anhand einer festgelegten Formel, die von Attributen des Elements abhängt - x, y, Drehung und pitch[?] - , wiederholen."

Valentin arbeitete daran, die Benutzeroberfläche und Usability der Schraffuren in Inkscape zu verbessern. Das bedeutet, dass er "Anfasser zum Bearbeiten von Schraffuren hinzugefügt hat, die erscheinen, wenn man ein Element mit einer Schraffur mit bestimmten Werkzeugen bearbeitet, zum Beispiel mit dem Knotenwerkzeug. Mit den Anfassern kann man den Paint-Server drehen, skalieren und verschieben."

Während der Umgang mit den Komponenten der Benutzeroberfläche eine steile Lernkurve mit sich brachte, fand er am Ende, dass "die beste Quelle für das Verständnis komplexer Verhaltensweisen von GTK-Widgets[?] tatsächlich Inkscape selber war."

Zu seiner Arbeit an "der Verbesserung der richtigen Inkscape-Oberfläche und den Funktionen, die mit den Paint-Servern zu tun hatten" erklärt Valentin, dass "das für mich vollkommen anders war, dieser Übergang von einer Skriptsprache - JavaScript - zu einer echten Programmiersprache - C++ - und insbesondere zum GTK-Framework, in dem die Oberfläche geschrieben ist.".

Danach arbeitete Valentin an der Verbesserung der Unterstützung für Schraffuren in Inkscape. "In meiner Arbeit habe ich versucht, kleine Oberflächenelemente, die bereits für andere Paint-Server implementiert waren (z.B. für Muster) auf die Schraffuren zu übertragen, und habe einen neuen Dialog zu Inkscape hinzugefügt, damit man von dort aus eine Vorschau für die Paint-Server ansehen und diese auf Objekte anwenden kann." Diese Arbeit wird dabei helfen, eine neue Funktion für das Programm, zum Laden aller möglichen Arten von Fülltypen aus Quelldateien (d.h. SVG-Dateien, die mehrere Muster, Schraffuren, Farbmuster usw. enthalten), zu deren Verwaltung, Vorschau und Anwendung auf Objekte durch die Inkscape-Anwender zu entwickeln.

Inkscape hat eindeutig viel durch Valentins Beteiligung gewonnen, die er auch weiterhin fortführt. Zu verstehen, wie ihm das Beitragen zu Inkscape geholfen hat, ist auch Teil unseres gemeinsamen Lernens als eine Community.

Unter all den Dingen, die Valentin von seiner Arbeit an Inkscape mitgenommen hat, inklusive der Erfahrungen mit der Programmierung selbst ist auch, dass es "Geduld braucht, wenn man an ein Problem herangeht. In einem dezentralen Projekt liegt die Kenntnis von weniger häufig gebrauchten Teilfunktionen oftmals in der Hand unabhängiger Entwickler, und nicht des Kernteams, und das Befragen der Community kann die beste Quelle für Antworten sein."

Schließlich sagte er noch, dass er "jeden im Inkscape-Team schätzt, egal ob es sich um Entwickler-, Usability- oder Marketingleute handelt. Danke!"

Wir danken Valentin für seine fortlaufenden Beiträge zu diesem Projekt. Wir freuen uns darauf, zu sehen, was er als nächstes beitragen wird!

Schaut Euch auch Valentins Dokumentation seiner Arbeiten während seines GSoC 2019 in voller Länge an.

Wenn Du auch zu Inkscape beitragen möchtest, klicke hier und überlege, ob Du vielleicht unserer Community beitreten möchtest. Wenn Du Dich für den GSOC 2020 bewerben möchtest, lies hier weiter.

Worterklärungen

Polyfill
ein Stück JavaScript-Code, das einem Webbrowser Funktionalität hinzufügt. Die Funktionen, die hier hinzugefügt wurden waren zu einem bestimmten Zeitpunkt Teil des Standards, aber die Browser hinken etwas hinterher, und haben schließlich Verlaufsgitter und SVG-Schraffuren außen vor gelassen. Einfach gesagt, hat er daran gearbeitet, dass SVGs mit Verlaufsgittern und SVG-Schraffuren im Browser korrekt dargestellt werden, selbst wenn der Browser keine Ahnung davon hat, was ein Verlaufsgitter oder eine Schraffur eigentlich ist.
Paint-Server
nach der Spezifikation des W3C handelt es sich um "eine Methode, die es erlaubt, die Füllung oder Kontur eines Objektes durch eine an anderer Stelle definierte Quelle zu bestimmen. Hierdurch können diese Quellen innerhalb eines Dokumentes mehrfach verwendet werden." Einige bekanntere Paint-Server (egal ob derzeit im Standard aufgenommen oder nicht) sind zum Beispiel einfache Farben, Farbverläufe, Verlaufsgitter, Muster und Schraffuren. Inkscape verwendet alle davon, allerdings teilweise über unterschiedliche Dialoge und Elemente der Benutzeroberfläche.
pitch
der Abstand zwischen den Wiederholungen der Schraffureinheiten entlang der Achse, die durch die Rotation definiert ist.
Widget
ein Dialogelement.