OPEN SOURCE · 01 / 06

Open Source Entwicklung

Wir entwickeln Software, deren Quelltext offen ist, und arbeiten in bestehenden Open-Source-Projekten mit. Das umfasst neue Komponenten ebenso wie Erweiterungen fremder Codebasen, Upstream-Beiträge anstelle dauerhafter Forks sowie Lizenz-, Release- und Governance-Fragen. Der Maßstab ist einfach: Eine Anpassung muss nach dem nächsten Upstream-Release noch einspielbar sein.

Ausgangslage

Woran Open-Source-Arbeit in der Praxis scheitert

Der häufigste Bruch entsteht dort, wo eine Anpassung an fremdem Code als Patch im eigenen Deployment liegt und nie zurückfließt. Nach zwei oder drei Upstream-Releases greift der Patch nicht mehr, das Update wird verschoben, und irgendwann läuft eine Version, für die es keine Sicherheitsaktualisierungen mehr gibt. Der Fork war nie eine Entscheidung – er ist einfach entstanden.

Umgekehrt scheitern Veröffentlichungen an fehlender Vorarbeit. Ein Repository wird öffentlich gemacht, in dessen Historie noch Zugangsdaten liegen, die Lizenzdatei fehlt, Copyright-Header widersprechen sich, und die Herkunft einzelner Dateien ist nicht mehr nachvollziehbar. Nachträglich lässt sich das nur über ein Umschreiben der Historie und eine Rechteklärung reparieren – deutlich teurer als eine geordnete Vorbereitung vor dem ersten öffentlichen Push.

Lizenzkonflikte fallen meist zu spät auf: eine GPL-lizenzierte Bibliothek in einem Produkt, das als geschlossenes Binary ausgeliefert wird, AGPL-Code in einem gehosteten Dienst, oder die Kombination von Apache-2.0 mit GPL-2.0-only, die sich nicht vereinbaren lässt. Wer das erst im Audit eines Kunden klärt, tauscht Komponenten unter Zeitdruck aus oder verhandelt Ausnahmen, die bei früherer Prüfung gar nicht nötig gewesen wären.

Und schließlich der Betrieb des Projekts selbst: Issues ohne Antwort, Pull Requests, die monatelang liegen bleiben, kein Changelog, Tags ohne Bezug zu den ausgelieferten Artefakten, ein Release, das nur eine Person auf ihrem Rechner bauen kann. Das Ergebnis ist ein Projekt, das formal offen ist, an dem aber niemand mitentwickeln kann – und dessen Wissen an einzelnen Köpfen hängt.

Vorgehen

Wie wir vorgehen

Vor der ersten Zeile klären wir Herkunft und Rechte: Was ist Eigenentwicklung, was stammt von Dritten, welche Lizenzen gelten. Abhängigkeiten inventarisieren wir maschinell als SBOM in CycloneDX oder SPDX und prüfen die Kompatibilität gegen das geplante Auslieferungsmodell. Erst danach fällt die Lizenzentscheidung: MIT für Bibliotheken ohne weitere Auflagen, Apache-2.0 dort, wo eine ausdrückliche Patentlizenz gewünscht ist, GPL oder AGPL, wenn Änderungen offen bleiben sollen.

Anpassungen an bestehender Open-Source-Software gehen upstream. Wir zerlegen sie in einzeln begründete Commit-Serien, richten sie an den Konventionen des Projekts aus – Coding-Style, Tests, DCO- oder CLA-Anforderungen – und begleiten sie durch den Review. Was noch nicht akzeptiert ist, bleibt als benannte Patch-Serie in einer Queue: einzeln rebasebar, dokumentiert, jederzeit entfernbar, statt als undurchsichtiger Diff im Build zu verschwinden.

Releases sind reproduzierbar und automatisiert. Version aus dem Git-Tag, Changelog aus der Commit-Historie, Build im Container mit gepinnten Basis-Images, signierte Artefakte, veröffentlichte Prüfsummen. Paketiert wird für die Zielumgebung: Debian-Paket, OCI-Image, PyPI- oder npm-Paket, bei Go und Rust auch ein statisch gelinktes Binary. Die Pipeline läuft in Forgejo Actions oder einem vergleichbaren CI-System und ist bewusst nicht an eine einzelne Arbeitsumgebung gebunden.

Ein offenes Projekt braucht lesbare Regeln. Dazu gehören ein README mit Build- und Betriebsanleitung, CONTRIBUTING mit den Erwartungen an Beiträge, SECURITY.md mit Meldeweg, CODEOWNERS für Zuständigkeiten und semantische Versionierung mit dokumentierten Deprecation-Fristen. Issue-Triage läuft in fester Kadenz statt nach Tagesform. Das macht Beiträge von außen praktikabel und den Wechsel von Personen im Team unkritisch.

Leistungsumfang

Was konkret dazugehört

01

Veröffentlichung bestehender Codebasen
Bereinigung der Git-Historie von Zugangsdaten, Rechteklärung, Lizenzwahl und einheitliche Copyright-Header vor dem ersten öffentlichen Push. Dazu die Prüfung, welche Teile sinnvoll intern bleiben.

02

Erweiterung fremder Open-Source-Software
Neue Funktionen, Schnittstellen und Anbindungen in bestehenden Projekten – möglichst über die vorgesehenen Erweiterungspunkte als Modul oder Plugin, nicht als Eingriff in fremden Kerncode.

03

Upstream-Beiträge und Patch-Pflege
Aufbereitung von Änderungen für den Review im Ursprungsprojekt und Begleitung bis zum Merge. Was offen bleibt, wird als versionierte Patch-Queue gegen neue Releases rebased.

04

Lizenz- und Compliance-Arbeit
SBOM-Erzeugung, Prüfung der Lizenzkompatibilität, Abgrenzung von Copyleft-Wirkung und vollständige Lizenz- sowie Quelltexthinweise für die Auslieferung.

05

Release-Prozess und Paketierung
Tag-basierte Versionierung, automatisierte Builds, signierte Artefakte und ein Changelog, das aus der Historie entsteht. Pakete für Debian, OCI-Registries, PyPI oder npm.

06

Governance und Community-Prozesse
Contribution-Regeln, Review-Pflichten, Zuständigkeiten über CODEOWNERS, ein belastbarer Sicherheitsmeldeweg und ein Deprecation-Verfahren, das Nutzer des Projekts nicht überrascht.

07

Wartung und Sicherheitspflege
Beobachtung von Advisories für eingesetzte Abhängigkeiten, Backports in unterstützte Zweige und eine geordnete Bekanntgabe behobener Schwachstellen.

Einsatzfälle

Wann diese Leistung passt

Fork mit gewachsener Patch-Last

Eine angepasste Version einer Open-Source-Anwendung lässt sich nicht mehr aktualisieren. Wir zerlegen die Abweichungen, bringen das Tragfähige upstream und reduzieren den Rest auf eine pflegbare Serie.

Internes Werkzeug soll offen verfügbar werden

Ein intern gewachsenes Werkzeug soll veröffentlicht werden. Vor der Freigabe klären wir Rechte, Historie, Lizenz, Build-Dokumentation und die Frage, wer künftig Beiträge annimmt.

Fehlende Funktion in eingesetzter Software

Statt eine zweite Anwendung daneben zu stellen, erweitern wir das eingesetzte Projekt an der vorgesehenen Stelle und geben die Änderung zurück – so bleibt der Update-Pfad offen.

Auslieferung mit Compliance-Anforderung

Ein Produkt enthält Open-Source-Komponenten und muss prüfbar ausgeliefert werden. Wir erzeugen SBOM, Lizenzhinweise und den Quelltext-Zugang, den Copyleft-Lizenzen verlangen.

Ergebnis

  • Updates bleiben einspielbar, weil Anpassungen upstream liegen statt im lokalen Build.
  • Jedes Release ist aus einem Git-Tag reproduzierbar, auch ohne die Person, die es gebaut hat.
  • Die Lizenzlage ist vor der Auslieferung geklärt, nicht erst im Audit eines Kunden.
  • Beiträge von außen sind möglich, weil Build, Regeln und Zuständigkeiten dokumentiert sind.
  • Schwachstellen in Abhängigkeiten fallen früh auf und werden in gepflegten Zweigen behoben.
  • Der Quelltext bleibt prüfbar – Sie sind nicht auf die Auskunft eines Anbieters angewiesen.

Ablauf

Wie die Zusammenarbeit läuft

  1. 01 Analyse Bestandsaufnahme von System, Code und Betrieb. Am Ende steht eine belastbare Beschreibung des Ist-Zustands statt einer Vermutung.
  2. 02 Architektur Schnitt der Komponenten, Datenflüsse und Schnittstellen. Entscheidungen werden begründet und schriftlich festgehalten.
  3. 03 Entwicklung Umsetzung in kleinen, überprüfbaren Schritten. Jede Änderung ist nachvollziehbar, reviewbar und rückrollbar.
  4. 04 Automatisierung Alles, was mehr als einmal passiert, wird automatisiert: Build, Tests, Deployment und Infrastruktur.
  5. 05 Testing Tests dort, wo sie Risiko abdecken. Ziel ist Vertrauen in Änderungen, keine Abdeckungsquote als Selbstzweck.
  6. 06 Betrieb & Weiterentwicklung Software ist mit dem ersten Deployment nicht fertig. Betrieb, Beobachtbarkeit und Updates gehören zur Arbeit.

Fragen

Häufige Fragen zu Open Source Entwicklung

Müssen wir unseren Code veröffentlichen, wenn wir Open-Source-Software einsetzen?

Nein, der reine Einsatz löst keine Veröffentlichungspflicht aus. Entscheidend ist die Weitergabe: Copyleft-Lizenzen wie die GPL verlangen den zugehörigen Quelltext erst dann, wenn Sie das Programm oder ein davon abgeleitetes Werk an Dritte weitergeben. Die AGPL-3.0 fügt in Abschnitt 13 eine eigene, zusätzliche Pflicht hinzu: Wer eine geänderte Version über ein Netzwerk anbietet, muss den darüber interagierenden Nutzern den Quelltext zugänglich machen – auch ohne Auslieferung von Binärpaketen. Permissive Lizenzen wie MIT verlangen im Kern nur die Weitergabe von Lizenztext und Copyright-Hinweis; bei Apache-2.0 kommen ein Hinweis auf geänderte Dateien und die Weitergabe einer vorhandenen NOTICE-Datei hinzu. Welche Pflichten konkret greifen, prüfen wir je Komponente anhand der Art der Einbindung und des Vertriebswegs.

Welche Lizenz passt für ein eigenes Projekt?

Das hängt vom Ziel ab. Soll die Software breit eingesetzt und auch in geschlossene Produkte eingebaut werden können, ist Apache-2.0 naheliegend, weil sie zusätzlich eine ausdrückliche Patentlizenz enthält. Soll jede Weiterentwicklung offen bleiben, ist GPL-3.0 das Mittel, bei netzbasierten Diensten AGPL-3.0. Wir entscheiden das anhand des Auslieferungsmodells, der Lizenzen Ihrer Abhängigkeiten und der Frage, wer beitragen soll.

Warum Upstream-Beiträge und nicht einfach ein Fork?

Ein Fork verlagert die gesamte Wartung zu Ihnen: Jede Sicherheitskorrektur im Original muss nachgezogen werden, und jede weitere Änderung erhöht den Rebase-Aufwand. Was upstream akzeptiert ist, pflegt das Projekt mit. Ein Fork ist sinnvoll, wenn die Richtung des Projekts dauerhaft nicht zu Ihren Anforderungen passt – dann aber als bewusste Entscheidung mit eigener Release- und Sicherheitsverantwortung.

Wie lange dauert es, bis ein Beitrag upstream aufgenommen wird?

Das entscheidet das jeweilige Projekt, nicht wir. Kleine, gut begründete Änderungen mit Tests werden häufig innerhalb von Tagen bis Wochen gemergt, Eingriffe in Kernkomponenten können mehrere Review-Runden und Monate brauchen. Deshalb planen wir Ihre Lieferung nie gegen ein Merge-Datum: Die Änderung läuft als saubere Patch-Serie in Ihrem Build und fällt nach dem Merge einfach aus der Queue heraus.

Können wir ein offen veröffentlichtes Projekt weiterhin kommerziell nutzen?

Ja. Offene Lizenzierung schließt kommerzielle Nutzung nicht aus, auch nicht die eigene. Sie behalten das Urheberrecht an Ihrem Code und können ihn zusätzlich unter anderen Bedingungen anbieten, solange keine fremden Copyleft-Anteile enthalten sind. Bei Beiträgen Dritter setzt eine zusätzliche Lizenzierung deren Zustimmung voraus: Eine DCO-Signatur dokumentiert die Herkunft eines Commits, die dafür nötigen Rechte räumt sie nicht ein – das leistet erst eine Contributor-Vereinbarung. Wir halten deshalb von Beginn an fest, auf welcher Grundlage Beiträge angenommen werden.

Weiter im Zusammenhang

Kontakt

Open Source Entwicklung besprechen

Beschreiben Sie kurz Ihr System und die offene Frage. Wir antworten mit einer fachlichen Einschätzung – ohne Vertriebsschleife.