Open Source for the win!

Pascal Zumkehr

Dank Open Source Lizenzen kann Software von allen Interessierten beliebig angepasst werden. Wir zeigen an einem realen Beispiel, wie rasch und unkompliziert dies funktioniert und weshalb alle Seiten davon profitieren. 

Einer der zentralen Grundsätze von Ruby on Rails ist „don’t repeat yourself – DRY“. So werden beispielsweise die Modellklassen automatisch aufgrund der entsprechenden Datenbanktabellen mit Attributen versehen. Es reicht, in der Datenbank Tabellen und Spalten zu definieren, das Schreiben von platten Zugriffsmethoden entfällt. Was jedoch fehlt, ist die automatische Überprüfung von einfachen Datenbankconstraints. In einer klassischen Rails Applikation können Validierungen von Attributen in einer simplen, deklarativen Weise definiert werden. Allerdings müssen dabei gewisse Überprüfungen aus der Datenbank wiederholt werden, wenn man nicht in unschöne DB-Exceptions reinlaufen will. Leider nicht ganz DRY.

Nun ist die Ruby Community jedoch äusserst aktiv, und es bestehen einige Plugins (sogenannte Gems), welche die Datenbankconstraints auslesen und entsprechende Validierungen in den Modellklassen generieren. Ein sehr einfaches und schlankes Gem ist validates_by_schema.

Eine Open Source Geschichte

Der erste Eindruck war gut, also schauten wir uns das Plugin etwas genauer an. Das letzte Release lag bereits zweieinhalb Jahre zurück, und gewisse Dinge funktionierten mit der aktuellen Ruby on Rails Version nicht mehr einwandfrei. Eigentlich ein klarer Fall – das Ding ist unbrauchbar.

Oder doch nicht? Schliesslich ist das Plugin unter einer Open Source Lizenz veröffentlicht und steht auf einer guten Basis. Die Alternativen waren kaum besser, liessen gewisse Features vermissen oder waren zu aufgebläht und verursachten dadurch hohe Wartungsaufwände. Eine Eigenentwicklung wäre zu aufwändig gewesen.

Kurzerhand forkten wir das Repository, entrümpelten den Quellcode, korrigierten die Fehler und fügten kleine Features hinzu. Als alle Tests wieder grün waren, eröffneten wir beim ursprünglichen Autor einen Pull Request. Danach war für einige Zeit Funkstille. Dies behinderte uns jedoch nicht, wir konnten unsere Version uneingeschränkt verwenden und bauten sie auch bereits in eine eigene Applikation ein. Bald jedoch meldete sich der Autor, sehr erfreut über den Beitrag zu seinem Projekt, übernahm unsere Änderungen in den Master Branch und veröffentlichte die neue Version des Gems. Darüber hinaus erhielten wir sogar Committer Rechte für das Projekt und können nun weitere Anpassungen direkt vornehmen.

Die Win-Win Situation

Die automatisch generierten Validierungen nehmen den Entwicklern Arbeit ab und sorgen auch in Spezialfällen für eine reibungslose Interaktion mit der Datenbank. Diese Funktionalität ist in vielen Applikationen nützlich, weshalb sich ein generisches Plugin anbietet. Dank der Open Source Lizenz mussten wir nicht bei Null starten. Ohne lange Wartezeit auf Dritthersteller können wir nun selbst eine aktuelle Version verwenden, welche auch anderen zur Verfügung steht. Und falls künftig Anpassungen erforderlich wären, zählen wir natürlich auf Rückmeldungen aus der Community. Damit können wir uns im besten Fall sogar etwas Wartungsaufwand einsparen.

Kommentare sind geschlossen.