Produktion von Open-Source-Software

Wie man ein erfolgreiches freies Software-Projekt führt

Karl Fogel

(Autor) 

Manuel Barkhau

(Übersetzung, mit freundlicher Unterstützung durch mg.softech) 

Sebastian Menge

(Übersetzer) 

Reiner Pittinger

(Übersetzer) 

Wolf Peuker

(Übersetzer) 

Frank Heuer

(Übersetzer) 

Widmung

Dieses Buch ist zwei lieben Freunden gewidmet, ohne die es nicht möglich gewesen wäre: Karen Underhill und Jim Blandy.

Inhaltsverzeichnis

Vorwort
Warum ich dieses Buch schreibe?
Wer sollte dieses Buch lesen?
Quellen
Danksagungen
Für die erste Auflage (2005)
Für die zweite Auflage (2017)
Haftungsausschluss
Anmerkungen der Übersetzer
Manuel Barkhau, März 2008
Wolf Peuker, September 2012
1. Einleitung
Die Geschichte
Der Aufstieg proprietärer und freier Software
Bewusster Widerstand
Zufälliger Widerstand
"Frei" kontra "Open Source"
Die Situation heute
2. Der Einstieg
Mit dem Vorhandenen beginnen
Wählen Sie einen guten Namen
Besitze den Namen in wichtigen Namensräumen
Formulieren Sie ein klares Missionsziel
Sagen Sie, dass das Projekt frei ist
Funktionen und Anforderungen
Stand der Entwicklung
Der Entwicklungsstatus sollte immer die Realität widerspiegeln
Downloads
Zugriff auf Versionsverwaltung und Bugtracker
Kommunikationskanäle
Richtlinien für Entwickler
Dokumentation
Erreichbarkeit der Dokumentation
Entwickler-Dokumentation
Demos, Screenshots, Videos und Beispielausgabe
Hosting
Die Wahl einer Lizenz und ihre Anwendung
"Alles ist erlaubt"-Lizenzen
Die GPL
Eine Lizenz für Ihre Software
Den Ton angeben
Private Diskussionen vermeiden
Unhöflichkeit im Keim ersticken
Verhaltensregeln
Code Review
Der Übergang ehemals geschlossener Projekte zu Open Source
Bekanntgabe
3. Technische Infrastruktur
Das nötige Werkzeug
Mailinglisten
Schutz vor Spam
Filterung von Nachrichten
Verschleierung von Adressen im Archiv
Umgang mit E-Mail-Headern
Die große "reply-to"-Debatte
Zwei Fantasien
Archivierung
Mailinglisten-Software
Versionsverwaltung
Vokabular der Versionsverwaltung
Wahl einer Versionsverwaltung
Nutzung einer Versionsverwaltung
Versioniere alles
Zugang per Browser
Commit-E-Mails
Benutze Zweige, um Engpässe zu vermeiden
Eindeutigkeit von Informationen
Autorisierung
Bugtracker
Interaktion mit Mailinglisten
Vor-Filterung des Bugtrackers
IRC / Echtzeit-Nachrichtendienste
Bots
IRC-Archivierung
RSS-Feeds
Wikis
Website
Hosting-Pakete
Die Wahl des Hosting-Anbieters
Anonymität und Beteiligung
4. Soziale und politische Infrastruktur
Gütige Diktatoren
Wer kann ein gütiger Diktator sein?
Konsensbasierte Demokratie
Versionsverwaltung bedeutet Entspannung
Wenn kein Konsens möglich ist, stimme ab!
Wann sollte abgestimmt werden?
Wahlberechtigung
Meinungsumfragen contra Abstimmung
Vetos
Schriftliche Regeln
5. Geld
Arten der Beteiligung
Langzeit-Entwickler
Treten Sie als viele in Erscheinung
Seien Sie offen bezüglich Ihrer Absichten
Liebe kann nicht mit Geld erkauft werden
Auftragsarbeit
Kritik und Annahme von Änderungen
Fallbeispiel: Das CVS-Protokoll zur Passwort-Authentifizierung
Tätigkeiten neben dem Programmieren finanzieren
Qualitätssicherung
Rechtliche Beratung und Schutz
Dokumentation und Benutzerfreundlichkeit
Bereitstellung von Hosting/Bandbreite
Marketing
Denken Sie daran, dass Sie beobachtet werden
Machen Sie konkurrierende Open-Source-Produkte nicht schlecht
6. Kommunikation
Du bist was du schreibst
Struktur und Formatierung
Inhalt
Tonfall
Unhöflichkeiten erkennen
Gesicht zeigen
Vermeidung häufiger Fallstricke
Schreiben Sie nicht ohne Veranlassung
Produktive kontra unproduktive Threads
Je weicher das Thema, desto länger die Debatte
Vermeiden Sie Heilige Kriege
Der "Laute Minderheit"-Effekt
Schwierige Leute
Handhabung schwieriger Leute
Fallbeispiel
Handhabung von Wachstum
Auffällige Nutzung der Archive
Behandeln Sie alle Ressourcen wie Archive
Festschreiben von Traditionen
Keine Unterhaltungen im Bugtracker
Öffentlichkeit
Bekanntgabe von Sicherheitslücken
Empfang der Meldung
Entwickeln Sie den Fix im stillen
CAN/CVE-Nummer
Vorankündigung
Verteilen Sie den Fix öffentlich
7. Paket-Erstellung, Veröffentlichung, und tägliche Entwicklung
Versionszählung
Die Komponenten der Versionsnummer
Die einfache Strategie
Die Gerade/Ungerade-Strategie
Versionszweige
Mechanik von Versionszweigen
Stabilisierung einer neuen Version
Diktatur durch den Versionsherrn
Abstimmung über Änderungen
Gemeinschaftlichen Stabilisierung neuer Versionen
Release-Verwalter
Erstellung der Pakete
Formate
Name und Aufbau
Großschreibung - ja oder nein
Vorveröffentlichungen
Kompilierung und Installation
Binäre Pakete
Tests und Veröffentlichung
Release Candidate
Bekanntgabe neuer Versionen
Wartung mehrerer Versionszweige
Sicherheitsupdates
Neue Versionen und tägliche Entwicklung
Planung neuer Versionen
8. Leitung von Freiwilligen
Das meiste aus Freiwilligen herausholen
Delegierung
Unterscheiden Sie eindeutig zwischen Anfrage und Anweisung
Bleiben Sie nach dem Deligieren auf dem Laufenden
Achten Sie darauf, wofür Leute sich interessieren
Lob und Kritik
Verhindern Sie Revierabsteckung
Der Automatisierungsgrad
Automatisiertes Testen
Behandeln Sie jeden Nutzer wie einen möglichen Freiwilligen
Teilen sie sowohl Verwaltungsaufgaben als auch technische Aufgaben
Patchverwalter
Übersetzungsverwalter
Dokumentationsverwalter
Ticketverwalter
FAQ-Verwalter
Übergänge
Committer
Auswahl von Committern
Widerruf von Commit-Zugriff
Eingeschränkter Commit-Zugriff
Untätige Committer
Vermeiden Sie Geheimnisse
Anerkennung
Abspaltungen
Umgang mit Abspaltungen
Eine Abspaltung anstoßen
9. Lizenzen, Urheberrecht und Patente
Terminologie
Lizenzaspekte
Die GPL und Lizenz-Kompatibilität
Die Wahl einer Lizenz
Die MIT- / X-Window-System-Lizenz
Die GNU GPL
Ist die GPL frei oder nicht frei?
Wie sieht es mit der BSD-Lizenz aus?
Zuweisung von Urheberrechten
Keine Zuweisung von Urheberrecht
Lizenzvereinbarung der Beitragenden (CLA)
Übertragung vom Urheberrecht
Doppelte Lizenzierung
Patente
Weitere Quellen
A. Systeme zur Versionsverwaltung
B. Freie Bugtracker
C. Warum sollte es mich kümmern, welche Farbe der Fahrradschuppen hat?
D. Beispiel-Anleitung für das Melden von Fehlern
E. Copyright
y