Vorgehen
Open Source-Projekte leben davon, dass die Software transparent entwickelt wird. Deshalb sollten Sie darauf bestehen, dass der Quellcode möglichst früh im Entwicklungsprozess in einem Repository veröffentlicht wird.
Die Veröffentlichung
-
ermöglicht, dass die Software weiterentwickelt wird, auch bei einem Wechsel von Entwicklern und Entwicklerinnen
-
ermöglicht, dass die Software von anderen ebenfalls genutzt wird
-
fördert Beteiligung durch Fachexpertise und engagierte Bürger und Bürgerinnen
Frameworks und Lizenzen für Software auswählen
Der Quellcode basiert meist auf Frameworks und Software-Bibliotheken. Damit Sie ihn veröffentlichen können, müssen auch diese unter einer Open-Source-Lizenz stehen.
Open-Source-Lizenz auswählen
Bei der Entwicklung von Software werden viele Frameworks und Software-Bibliotheken eingesetzt, die frei als Open Source-Software zur Verfügung stehen und unter unterschiedlichen Lizenzen veröffentlicht werden. Es wird zwischen zwei Arten unterschieden
- Copyleft-Lizenzen verpflichten dazu, die nutzende Software unter derselben Lizenz zu veröffentlichen. Unterschiedliche Copyleft-Lizenzen können zu Konflikten führen.
- Freizügige (permissive) Lizenzen stellen keine Forderungen an die nutzende Software.
Bevorzugen Sie freizügige (permissive) Lizenzen, um Konflikte zwischen Lizenzen zu vermeiden.
Zur ersten Auswahl können Sie die filterbare Datenbank der Open Source Intiative zur Hilfe nehmen. Die Inhalte sind in englischer Sprache.
Auf opencode finden Sie zur Unterstützung eine engere Vorauswahl möglicher Lizenzen.
Fordern Sie vom Software-Lieferanten eine (automatisierte) Prüfung der Lizenzen.
Bekannte Frameworks einsetzen
Achten Sie darauf, dass Frameworks, die Sie einsetzen, weit verbreitet sind und keine Abhängigkeiten durch eigene Entwicklung entstehen.
Geeignete Frameworks für die Web-Entwicklung sind zum Beispiel
- React
- Angular
- Vue.js
- Ruby on Rails
Geeignete Frameworks für die App-Entwicklung sind zum Beispiel
- React Native
- Flutter
Geeignete Frameworks für das Backend ist zum Beispiel
- Spring Boot
Nutzungsrechte sichern
Wenn Sie Software entwickeln lassen, sollten Sie darauf achten, dass Ihnen der Software-Lieferant die zeitlich unbegrenzten Nutzungsrechte am Quellcode überträgt. Dazu gehören auch die Rechte zur Veröffentlichung.
Coding-Richtlinien festlegen
Damit der Code sicher, wartbar und verständlich bleibt, sollten Sie sicherstellen, dass Ihr Software-Lieferant sich an die Coding-Richtlinien hält. Das können Sie auch vertraglich festhalten. Nutzen Sie dafür öffentlich verfügbare Vorgaben wie die Coding- und Security-Grundsätze bei OpenCoDE.
Achten Sie darauf, dass Richtlinien für Aufbau, Benennung, Sicherheit und Tests enthalten sind.
Repository einrichten
Ein Repository ist ein zentraler Speicherort für Quellcode. Dort wird der Quellcode abgelegt und gepflegt.
Er bietet eine Vielzahl an Funktionalitäten, um die gemeinsame Arbeit der Entwickler und Entwicklerinnen sowie Testende zu unterstützen.
openCode hat sich als Plattform für Open Source-Software der öffentlichen Verwaltung in Deutschland etabliert. Dort können Sie das Repository einrichten.
Rollen und Rechte für das Repository festlegen
Jede Rolle hat unterschiedliche Rechte im Repository. Damit seine Funktionalität und Verfügbarkeit gesichert ist, müssen Sie festlegen, wer welche Rolle hat.
Die wichtigsten Rollen, die jedes Repository in ähnlicher Form anbietet:
- Repository-Owner dürfen alle Einstellungen des Repositorys ändern. Sie dürfen es auch löschen.
- Maintainer entscheiden, welcher Code in das nächste Release der Software aufgenommen wird.
- Contributor liefern Beiträge zum Quellcode, die Maintainer annehmen können, aber nicht müssen.
Quellcode im Repository ablegen
Sorgen Sie für eine nachvollziehbare Struktur der Ordner und Dateien, in der der Quellcode abgelegt wird.
Auf den gängigen Plattformen gibt es Beispiele und Hilfestellung für funktionierende Strukturen und wichtige Inhalte wie Skripte, Dateien, Informationen zum Service.
Der Aufbau hängt dabei vom eingesetzten Framework und der Programmiersprache ab.
Versionierung
Versionierung hält fest, wie sich der Quellcode verändert. Sie zeigt jede Änderung im Verlauf der Entwicklung.
Die Open Source Software Git übernimmt die Versionierung des Quellcodes.
Stellen Sie sicher, dass Ihr Repository Git unterstützt.
Dokumentation
Dokumentieren Sie den Quellcode und ein README zum digitalen Angebot.
Legen Sie alle Dokumente im gleichen Repository ab.
Erstellen Sie die Dokumentation während der Entwicklung. Nachträgliche Dokumentation ist häufig aufwändig.
Zu einer guten Dokumentation gehören
- System-Dokumentation
- Installationsanleitung
- Roadmap
- Handbuch zur Nutzung
Veröffentlichen der automatisierten Deployment-Prozesse
Automatisierte Prozesse zur Auslieferung der Software sind Teil der Software-Entwicklung. Man spricht dabei von Deployment-Pipelines. Achten Sie darauf, dass auch die Deployment-Pipelines als Open-Source-Software zur Verfügung stehen.
Veröffentlichen von Container-Images
Damit die Nachnutzung für andere Behörden möglichst einfach ist, sollten auch Container-Images der gebauten Software veröffentlicht werden.
Ein Image kann man sich als eine große Datei vorstellen, in dem
- der Quellcode,
- alle erforderliche abhängige Software,
- alle erforderlichen Konfigurationen enthalten sind.
Das Image kann auf einem Zielsystem mit einem Befehl zum Laufen gebracht werden.
Quellcode im Repository pflegen
Wenn Sie Software veröffentlichen, sollten Sie regelmäßig Updates durchführen und bereitstellen. Auch wenn es keine neuen Features gibt, müssen Security-Probleme schnell und Lifecycle-Maßnahmen rechtzeitig geliefert werden.
Lifecycle-Maßnahmen können zum Beispiel die Hebung der Software auf eine neue Version des genutzten Frameworks oder der genutzten Programmiersprache. Rechtzeitig heißt: bevor der Support der Version ausläuft.
Die Releases, Veröffentlichungen, werden in den Release-Notes beschrieben.
Erfahrungen aus der Praxis
Sobald auch andere Behörden Ihre Software nachnutzen, stellt sich die Frage, wie mit den Anforderungen verschiedener Behörden umgegangen wird.
Bei der Nachnutzung teilen Sie sich die Wartung und Weiterentwicklung mit anderen Behörden, dann benötigen Sie ein Produkt-Management, das sich darum kümmert, die Anforderungen der unterschiedlichen Behörden
- zu verstehen
- zu priorisieren
- in die Roadmap des Produkts einfließen zu lassen und die Roadmap zu kommunizieren
Wenn die verschiedenen Behörden Entwicklerinnen und Entwickler einsetzen, muss die Entwicklungs-Community koordiniert werden. Alternativ beteiligen sich die Behörden nur finanziell und die Produktentwicklung erfolgt durch einen Softwarelieferanten.
Verwandte Anleitungen
Hilfreiche Fachgebiete
Die genannten Fachgebiete und ihre Beschreibungen dienen als Orientierung. Sie zeigen auf, mit welchem Wissen und mit welchen Fähigkeiten die Punkte am besten umgesetzt werden können.
DevOps-Entwicklung
DevOps-Entwickler und -Entwicklerinnen automatisieren Abläufe, um Software schneller und stabiler bereitzustellen. Sie setzen Versionskontrolle und Build-Pipelines ein, damit Änderungen effizient umgesetzt werden können. DevOps-Entwickler und -Entwicklerinnen beschreiben Infrastruktur als Code, damit Systeme reproduzierbar und flexibel bleiben. Sie überwachen Anwendungen kontinuierlich und analysieren Fehler, um den Betrieb zu sichern.
Software-Entwicklung
Software-Entwickler und -Entwicklerinnen schreiben Code in relevanten Sprachen, um Funktionen umzusetzen. Sie verwalten Änderungen im Code, um Nachvollziehbarkeit zu sichern. Sie prüfen die Qualität in Code-Reviews, um das Risiko von Fehlern zu reduzieren. Software-Entwickler und -Entwicklerinnen dokumentieren den Code so, dass er für andere verwendbar ist. Software-Entwickler und -Entwicklerinnen nehmen Software in Betrieb und halten sie funktionsfähig.
System-Administration
System-Administratoren und -Administratorinnen konfigurieren und verwalten die IT-Infrastruktur. Dazu gehören unter anderem Server, Netzwerke, damit digitale Angebote stabil laufen. System-Administratoren und -Administratorinnen führen Wartungen und Updates durch und überwachen die Leistung. Sie passen Systeme an steigende Nutzung an und sichern Daten regelmäßig, um sie im Notfall wiederherzustellen.
Zu allen hilfreichen FachgebietenWichtig in diesen Entwicklungsphasen
Jedes digitale Angebot durchläuft verschiedene Phasen. Die 4 Phasen zur Entwicklung nach Servicestandard helfen Teams, strukturiert vorzugehen, die richtigen Schwerpunkte zu setzen und Entscheidungen zum passenden Zeitpunkt zu treffen.
Entwickeln
In der Phase „Entwickeln" entsteht das digitale Angebot Schritt für Schritt. Lösungen werden von Personen mit verschiedenem Fachwissen gemeinsam erarbeitet. Lösungsansätze werden getestet, angepasst und ausgebaut. Die technische Entwicklung basiert auf offenen Standards und Open Source. Mit diesem Vorgehen reift der Service und wird betriebsbereit.
Betreiben
In der Phase „Betreiben" wird das digitale Angebot zuverlässig bereitgestellt. Die Wirkung des Services zeigt sich in regelmäßigen Messungen. Die technische Pflege sichert die Funktionsfähigkeit. Anpassungen werden vorgenommen, wenn Testergebnisse oder Feedback dies erforderlich machen. Der Service ist stabil und schafft dauerhaft Vertrauen.
Weiterentwickeln
In der Phase „Weiterentwickeln" wird das digitale Angebot an veränderte Bedingungen angepasst. Neue Bedürfnisse, technische Entwicklungen und rechtliche Änderungen führen zu erweiterten Anforderungen. Lösungen entstehen aus der Verbindung bewährter Bausteine mit neuen Elementen. Offene Standards und Open Source sichern die Nachvollziehbarkeit. Die Weiterentwicklung hält den Service aktuell, wirksam und nutzerfreundlich.
Alle 4 Entwicklungsphasen