Caluma und nachhaltige Entwicklung von Graphql

22. June 2020

Freie Software erlaubt es uns, ganz viel Aufwand einzusparen, denn mit ihr können sich Menschen auf der ganzen Welt die Arbeit teilen. Ansonsten müsste jede Firma oder Organisation jeweils Ihre eigene Software bauen. Dieses Prinzip funktioniert hervorragend bei allgegenwärtigen Projekten wie beispielsweise dem Linux Kernel. Bei kleineren Projekten gibt es jedoch oft Engpässe, die man mit Geld nicht so einfach lösen kann.

Heutzutage ist die Infrastruktur für Free Software jedem zugänglich – es gibt kostenloses Git-Hosting, kostenlose Continuous Integration und kostenlose Kollaborationsplattformen. Somit stellt bei solchen kleineren Projekte Geld selten ein Problem dar. Manchmal gibt es zwar einen Software Maintainer der sich über Spenden finanziert, aber die meisten Menschen ziehen es dennoch vor, einem gesicherten Job nachzugehen. Am meisten fehlt es somit schlichtweg an Manpower. Zusätzlich erschwerend gestaltet sich der Einstieg in Projekte, denn dazu braucht es Monate in denen stetig Erfahrung gesammelt werden. Aus diesem Grund wäre es für Firmen durchaus sinnvoll, Mitarbeitenden einige Stunden pro Woche zur Verfügung zu stellen, um die Free Software die sie nutzen, auch zu pflegen.

Ich befinde mich momentan in genau dieser Situation. Ich musste feststellen, dass die Entwicklung von Graphql-Python 3.0 ins Stocken geraten ist und habe deshalb innerhalb der Adfinis um finanzielle Unterstützung für das Projekt Graphql 3.0 gebeten – und diese auch erhalten. Das Projekt ist von hoher Relevanz, da Graphql die Basis von Caluma ist und wir im Backend auf Graphql 3.0 wechseln können müssen, da die Frontends früher oder später die Version 2.0 nicht mehr unterstützen werden.

Das Graphql-Python Projekt beinhaltet somit folgende Subprojekte:

  • Graphql-Core ist eine direkte Portierung der Referenzimplementation
  • Graphene bietet High-Level APIs für Graphql-Core
  • Graphene-Django integriert Django in Graphene

Mittels der durch Adfinis zur Verfügung gestellten Unterstützung konnte ich erreichen, dass es für Graphene-Django eine 3.0 Beta Version gibt. Es gab mehrere Pull-Requests von unterschiedlichen Leuten, die versucht haben, Graphen-Django auf die 3.0 Abhängigkeiten zu heben. Leider hat jedoch keiner der Pull-Requests das ganze Bild abgedeckt. Mein Ziel war es demnach, einen v3.0 Branch zu erstellen, in welchem alle bisherigen Bemühungen zusammen fliessen. Auch hatte ich mir zur Aufgabe gesetzt, die Commits aller Beteiligten so zu rebasen, dass jeder für seine Arbeit Anerkennung bekommt – denn Anerkennung ist gewissermassen der Lohn in der Entwicklung freier Software.

In einem nächsten Schritt müsste nun der v3.0 Branch auf Releasequalität gebracht werden. Hier stellt sich mir allerdings das Problem der mangelnden Erfahrung in den Weg. Da ich nicht weiss, wie ein Graphene-Django 3.0 auszusehen hat, müsste ich mich in die Referenzimplementation einarbeiten, und dafür fehlt mir wiederum das Budget. Die Caluma Test-Suite ist hier meine Rettung. Caluma besitzt eine umfassende Test-Suite in höchster Qualität. Ich lasse also Graphene-Django 3.0 mit der Caluma Test-Suite laufen und eruiere so für jeden Fehler, ob sich Caluma an die 3.0 Spezifikation hält oder ob es sich um einen Bug in Graphql handelt. Dieses Vorgehen hat einen Synergieeffekt – Caluma wird auf Graph-Python 3.0 portiert und die Fehler in Graphql 3.0 werden behoben.

Und so sieht ein Lauf der Caluma Test Suite aus:

test-suite

Adfinis versteht Open Source als die Zukunft der Technologie und macht sich stark für eine Welt, in der Software freizugänglich, qualitativ hochwertig und allen zugänglich ist. Demgemäss engagiert sich die Adfinis für: Offenheit, Transparenz, nachhaltigen Lösungen ohne Vendor Lock-In und die Kraft der Open Source Community.