Kapitel 2. Der Einstieg

Inhaltsverzeichnis

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

Das Starten eines freien Softwareprojekts ist eine zweifältige Aufgabe. Die Software muss Benutzer akquirieren und Entwickler akquirieren. Diese zwei Bedürfnisse stehen nicht notwendigerweise in Konflikt, aber die Interaktion zwischen diesen erhöht die Komplexität der ersten Präsentation eines Projekts. Ein paar Informationen sind für beide Zielgruppen nützlich, manche nur für die Eine oder die Andere. Beide Arten von Informationen sollten das Prinzip der skalierten Darstellung berücksichtigen: Der präsentierte Detaillierungsgrad jeder Stufe sollte der Zeit und dem Aufwand entsprechen, den der Leser zu diesem Zeitpunkt einzubringen bereit ist. Mehr Aufwand sollte immer mehr Belohnung bewirken. Wenn Anstrengung und Belohnung nicht zuverlässig korrelieren, werden die meisten Menschen das Vertrauen verlieren und aufhören, Mühe zu investieren.

Daraus folgt: Das Erscheinungsbild ist wichtig. Programmierern fällt es besonders schwer, das zu glauben. Ihre Liebe des Inhalt über der zur Form gehört fast schon zum Berufsethos. Es ist kein Zufall, dass so viele Programmierer gegen Marketing und Public Relations eine Antipathie hegen oder dass professionelle Grafiker über so manches Design erschrocken sind, auf dass Programmierer von sich aus kommen.

Das ist schade, denn es gibt Situationen, in denen das Aussehen auch wirklich dem Inhalt entspricht. Die Präsentation eines Projekts ist genau solch ein Fall. Die erste Information, die ein Besucher über ein Projekt erhält, ist die Gestaltung von dessen Webseite. Diese Information wird erfasst, bevor irgendein tatsächlicher Inhalt der Seite verstanden wird — bevor ein Text gelesen wurde oder auf einen Link geklickt wurde. Egal wie ungerecht es sein mag, Menschen können sich nicht anders helfen, als sich sofort einen ersten Eindruck zu verschaffen. Im Erscheinungsbild der Seite wird deutlich, ob man sich beim Aufbau der Präsentation des Projekts Mühe gemacht hat. Menschen haben eine extrem sensible Antenne dafür, wieviel Mühe in etwas investiert wurde. Die meisten können mit einem Blick erkennen, ob eine Webseite eilig zusammengebastelt wurde oder ob man sich ernsthafte Gedanken gemacht hat. Das ist die erste Information, die Ihr Projekt nach außen gibt, und der hierdurch vermittelte Eindruck überträgt sich auf das übrige Projekt.

Auch wenn sich dieses Kapitel thematisch um inhaltliche Fragen dreht, sollten sie daran denken, dass das Erscheinungsbild eine Rolle spielt. Da die Webseite für zwei Arten von Besuchern — Benutzer und Entwickler — geeignet sein muss, muss besonders auf Klarheit und Führung geachtet werden. Auch wenn hier nicht die richtige Stelle für eine allgemeine Abhandlung über Web-Design ist, gibt es ein erwähnenswertes Prinzip, insbesondere wenn die Seite mehrere (überlappende) Zielgruppen ansprechen soll: Besucher sollten eine grobe Vorstellung haben, wo ein Link hinführt, bevor sie darauf klicken. Das Ziel eines Links zur Benutzer-Dokumentation sollte allein vom Anblick her deutlich sein, und keine Missverständnisse aufkommen lassen, ob es sich nicht etwa um die Dokumentation für Entwickler handelt. Beim Betrieb eines Projekts geht es zu einem Teil darum, Informationen bereitzustellen, aber auch darum, ein Gefühl der Bequemlichkeit zu vermitteln. Allein schon die Verfügbarkeit bestimmter grundsätzlicher Angebote an der richtigen Stelle gibt Benutzern und Entwicklern eine Sicherheit bei ihrer Entscheidung, ob sie sich beteiligen wollen oder nicht. Es sagt ihnen, dass dieses Projekt seine Siebensachen beisammen hat, Fragen erahnt, die gestellt werden, und sich die Mühe gemacht hat, diese so zu beantworten, dass Fragesteller möglichst wenig Einsatz aufbringen müssen. Indem das Projekt eine Aura des Vorbereitetseins ausstrahlt, sendet es die folgende Botschaft aus: "Sie verschwenden ihre Zeit nicht, wenn Sie sich beteiligen". Das ist genau die Botschaft, die Menschen hören wollen.

Wenn Sie ein "Hosting-Paket"[16] verwenden (sieh „Hosting-Pakete“), ist ein Vorteil dieser Variante, dass deren Seiten ein Standardlayout haben, welches von Projekt zu Projekt ähnlich und sehr gut geeignet ist, um ein Projekt der Welt zu präsentieren. Dieses Layout kann auf bestimmte Weise angepasst werden, in gewissen Grenzen, aber das Standarddesign fordert Sie auf, die Informationen einzupflegen, welche Besucher am ehesten suchen.

Schauen Sie sich zuerst um

Bevor Sie ein Open-Source-Projekt anfangen, gibt es noch eine wichtige Warnung:

Schauen Sie sich vorher um, ob nicht schon ein Projekt existiert, das Ihre Anforderungen erfüllt. Die Wahrscheinlichkeit ist hoch, dass unabhängig von dem Problem, das Sie lösen wollen, Ihnen jemand zuvorgekommen ist. Wenn das der Fall ist und der entsprechende Code unter eine freie Lizenz gestellt wurde, gibt es keinen Grund, das Rad neu zu erfinden. Es gibt natürlich Ausnahmen: Falls Sie ein Projekt um der Lernerfahrung willen beginnen wollen, wird Ihnen bereits existierender Code nicht weiterhelfen. Vielleicht wissen Sie bereits von vornherein, dass Ihr Problem so spezifisch ist, dass es mit Sicherheit noch von keinem gelöst wurde. Im Allgemeinen gibt es aber keinen Grund, sich nicht umzuschauen, und es kann sich beträchtlich lohnen. Sollten die üblichen Suchmaschinen keine brauchbaren Ergebnisse liefern, sollte Sie es direkt bei https://github.com/, https://freshcode.club/, https://openhub.net/ und beim Verzeichnis freier Software der Free Software Foundation https://directory.fsf.org/ versuchen.

Selbst wenn Sie nicht genau das finden, wonach Sie suchen, könnten Sie etwas derart ähnliches finden, dass es sinnvoller ist, sich an diesem Projekt zu beteiligen und es um die fehlenden Funktionen zu erweitern, als selbst komplett von Vorne anzufangen. Sieh ??? zu einer Diskussion, auf welche Weise ein existierendes Open-Source Projekt schnell zu evaluieren ist.

Mit dem Vorhandenen beginnen

Sie haben sich umgeschaut, herausgefunden, dass nichts Ihre Anforderungen erfüllt, und sich entschlossen, ein neues Projekt zu starten.

Was nun?

Das Schwierigste beim Start eines neuen freien Software-Projekts ist die Verwandlung einer persönlichen Vision in eine öffentliche. Sie oder Ihre Organisation mögen sehr wohl wissen, was Sie wollen. Dieses Ziel so auszudrücken, dass die Welt es versteht, erfordert ein beträchtliches Maß an Arbeit. Allerdings ist es von so grundsätzlicher Bedeutung, dass Sie sich die Zeit dazu nehmen sollten. Sie und die anderen Gründer müssen entscheiden, worum es in dem Projekt wirklich geht —  so müssen Sie über seine Grenzen entscheiden, was es abdecken wird und was nicht — und ein Missionsziel (engl. mission statement) verfassen. Dieser Teil ist für gewöhnlich nicht allzu schwer, auch wenn es manchmal unerwähnt gebliebene Annahmen, sogar Meinungsverschiedenheiten über die Natur des Projekts aufdecken kann, was sogar gut ist: es ist besser diese jetzt auszuräumen als später. Der nächste Schritt ist das Projekt für die öffentliche Wahrnehmung aufzubereiten, was im Grunde genommen eine Schinderei ist.

Diese Arbeit ist deshalb so mühselig, weil man hauptsächlich Dinge organisiert und dokumentiert, die jeder bereits kennt —  d.h "jeder" der bislang am Projekt beteiligt ist. Für diejenigen, die die Arbeit machen, gibt es deshalb keinen direkten Nutzen. Sie brauchen weder die README-Datei für einen Überblick über das Projekt, noch ein Entwurfsdokument. Sie brauchen keine sorgsam aufbereitete Code-Struktur die mit den zwar informellen aber verbreiteten Normen zur Veröffentlichung von Quellen konform ist. Wie auch immer der Quellcode strukturiert ist, es ist ihnen recht; sie sind ja bereits daran gewöhnt, und solange der Code läuft, wissen sie wie man ihn benutzt. Es macht ihnen nicht einmal etwas aus, wenn grundlegende Annahmen über die Architektur des Projekts undokumentiert bleiben; auch mit ihnen sind sie ja bereits vertraut.

Neulinge andererseits brauchen all diese Dinge. Glücklicherweise jedoch nicht alle auf einmal. Sie müssen nicht jede erdenklich Ressource gleich parat haben, bevor Sie mit einem Projekt an die Öffentlichkeit gehen. In einer perfekten Welt wäre ein neues Open-Source-Projekt von Beginn an ausgestattet mit einem ausführlichen Entwurfsdokument, einem vollständigen Benutzerhandbuch (inklusive der Hinweise auf Funktionen, die zwar geplant, aber noch nicht implementiert sind), wunderschönem und portabel gegliedertem Code, der auf jeder Plattform läuft, und so weiter. In Wirklichkeit wäre es unvertretbar zeitaufwendig, auf all diese Dinge zu achten; und überhaupt sind dies Arbeiten, bei denen man davon ausgehen kann, dass sich andere beteiligen, sobald das Projekt läuft.

Wirklich notwendig ist jedoch, so viel in die Präsentation zu investieren, dass Neulinge die ersten Hürden des Unbekannten überwinden können. Stellen Sie sich das wie den ersten Schritt beim Hochfahren vor, um dem Projekt zu einer Art minimaler Aktivierungsenergie zu verhelfen. Dieser Grenzbereich wird mitunter Hacktivierungs-Energie genannt: die Energie, die Neulinge investieren müssen, bevor sie etwas zurückbekommen. Je geringer die Hacktivierungs-Energie ist, desto besser. Ihre erste Aufgabe ist es, die Hacktivierungs-Energie auf ein Niveau zu senken, das Leute dazu ermutigt sich zu beteiligen.

Jeder der folgenden Unterabschnitte, beschreibt einen wichtigen Aspekt beim Start eines neuen Projekts. Sie werden ungefähr in der Reihenfolge präsentiert, in der neue Besucher sie wahrnehmen werden, natürlich kann die tatsächliche Reihenfolge auch abweichen. Betrachten Sie sie als Checkliste. Wenn Sie ein Projekt starten, gehen Sie die Liste durch und stellen Sie sicher, dass alle Punkte erledigt sind oder zumindest dass Sie mit den möglichen Folgen zurechtkommen, wenn Sie einen Punkt auslassen.

Wählen Sie einen guten Namen

Versetzen Sie sich in die Lage von jemandem, der gerade von Ihrem Projekt erfahren hat, vielleicht ganz zufällig, bei der Suche nach einer Software, um ein Problem zu lösen. Das erste, womit er in Berührung kommen wird, ist der Name Ihres Projekts.

Ein guter Name wird Ihr Projekt nicht automatisch erfolgreich machen, und ein schlechter Name wird nicht seinen Untergang besiegeln —  nun ja, ein wirklich schlechter Name könnte das vielleicht tatsächlich, aber wir gehen davon aus, dass niemand versuchen wird, sein Projekt aktiv zu sabotieren. Allerdings kann ein schlechter Name die Aufmerksamkeit für das Projekts schmälern, entweder weil die Leute ihn nicht ernst nehmen oder schlicht deshalb, weil Sie ihn sich nicht merken können.

Ein guter Name:

  • Gibt eine ungefähre Vorstellung davon, was das Projekt tut oder steht zumindest in einer so offensichtlichen Beziehung dazu, dass man weiß, was das Projekt tut, wenn man den Namen kennt, und es deshalb später leicht hat, sich an den Namen zu erinnern.

  • Ist einfach zu behalten. Man kommt hier nicht um die Tatsache herum, dass Englisch zur Standardsprache im Internet geworden ist: "einfach zu behalten" bedeutet normalerweise "Einfach zu behalten für jemanden, der Englisch lesen kann". Wortspiele, die auf der einheimischen Aussprache beruhen, werden vielen Menschen, deren Muttersprache nicht Englisch ist, unverständlich bleiben. Ist das Wortspiel besonders verlockend und einprägsam, kann es das Wert sein; denken Sie aber daran, dass viele, die den Namen sehen, nicht dasselbe heraushören werden wie ein englischer Muttersprachler.

  • Gleicht nicht dem eines anderen Projekts und verletzt auch kein Markenrecht. Das ist einerseits höflich und andererseits auch rechtlich sinnvoll, denn Sie wollen keine Verwirrung über Identitäten anstiften. Es ist schwierig genug, im Blick zu behalten, was das Netz zu bieten hat, auch ohne unterschiedliche Dinge mit demselben Namen.

    Die zuvor in „Schauen Sie sich zuerst um“ erwähnten Quellen können Ihnen dabei helfen herauszufinden, ob ein anderes Projekt bereits den Namen trägt, den Sie im Sinn haben. Die kostenlose Suche nach Markenzeichen ist über http://www.nameprotect.org/ und speziell für die USA über http://www.uspto.gov/ verfügbar.

  • Ist idealerweise als Domain-Name verfügbar in den Top-Level-Domains .com, .net und .org. Sie sollten eine von ihnen auswählen, vielleicht .org, um sie als offizielle Seite des Projekts zu bewerben; die anderen beiden sollten darauf verweisen und einfach nur dazu dienen, andere zu hindern, Verwirrung bezüglich Ihres Projektnamens zu stiften. Selbst wenn Sie vorhaben, das Projekt auf einer anderen Seite zu betreiben (siehe „Hosting“), können Sie immer noch die Projekt-spezifische URL registrieren und diese auf die Seiten des Betreibers weiterleiten. Es hilft dem Nutzer ungemein, nur eine einfache URL im Kopf behalten zu müssen.[17]

  • Möglicherweise ist er als Nutzername auf https://twitter.com/ und anderen Mikroblogseiten verfügbar. Siehe „Besitze den Namen in wichtigen Namensräumen“ zu Details dazu und dessen Beziehung zu Domainnamen.

Besitze den Namen in wichtigen Namensräumen

Für große Projekte ist es eine gute Idee, den Projektnamen in sovielen relevanten Namensräume des Internet zu besitzen wie möglich. Mit Namensräume meine ich nicht nur das Domain Name System, sondern auch online Dienste, bei denen Kontonamen (Benutzernamen) die öffentlich sichtbaren Anlaufstellen sind, durch welche Personen auf das Projekt verweisen. Wenn sie den gleichen Namen überall dort haben, wo Menschen nach ihnen suchen würden, ist es für die Menschen leichter, ein laues Interesse am Projekt zu wahren, bis sie zu mehr Engagement bereit sind.

Beispielsweise hat das freie Desktop-Projekt Gnome den https://gnome.org/ Domainnamen [18], die https://twitter.com/gnome Twitter Anlaufstelle, den https://identi.ca/gnome Nutzernamen bei Identi.ca[19], den https://github.com/gnome Nutzernamen bei GitHub.com[20] und beim Freenote IRC Netzwerk (siehe „IRC / Echtzeit-Nachrichtendienste“) haben sie den Kanal #gnome, obwohl sie auch ihren eigenen IRC Server warten (wo sie den Kanal Namensraum sowieso kontrollieren).

All dies macht das Gnome Projekt blendent einfach auffindbar: Es ist im Allgemeinen genau da, wo ein potentieller Unterstützer erwarten würde es anzutreffen. Sicher, Gnome ist ein großes und komplexes Projekt mit tausenden Unterstützern und vielen Unterteilungen; Der Nutzen für Gnome, einfach Auffindbarkeit zu sein, ist größer als er bei einem neueren Projekt wäre, bis jetzt gibt es so viele Wege, an Gnome teilzunehmen. Aber es wird sicher niemals ihrem Projekt schaden, seinen Namen in soviel wie möglich relevanten Namensräumen zu besitzen und das kann manchmal hilfreich sein. Wenn sie also ein Projekt starten, denken sie darüber nach, was der Online Anlaufpunkt sein sollte, und registrieren sie diesen bei den Online-Diensten um die sie sich sorgen. Die weiter oben Erwähnten sind möglicherweise eine gute Anfangsliste, aber sie mögen andere kennen, die für den konkreten Bereich ihres Projektes relevant sind.

Formulieren Sie ein klares Missionsziel

Sobald Besucher ihre Projektseite gefunden haben, werden sie nach einer kurzen Beschreibung oder dem Leitbild suchen, um (innerhalb von 30 Sekunden) entscheiden zu können, ob sie interessiert daran sind, mehr zu erfahren. Das Ziel sollte auf der Frontseite einen auffälligen Platz einnehmen, vorzugsweise gleich unter dem Projektnamen.

Die Beschreibung sollte konkret, klar umrissen und vor allem kurz sein. Hier ist ein gutes Beispiel von https://hadoop.apache.org/:

Das Apache™ Hadoop® Projekt entwickelt Open-Source Software für zuverlässiges, skalierbares, verteiltes Rechnen.

Die Apache Hadoop Software Bibliothek ist ein Rahmenwerk, dass es erlaubt, für verteilte Abarbeitung von großen Datensätzen über Computer-Cluster hinweg, ein einfaches Programmiermodell zu nutzen. Es wurde designed, um von einem einzelnen Server bis hin zu tausenden Maschienen zu skalieren, von denen jede lokale Rechen- und Speicherkapazität anbietet. Es verlässt sich weniger auf Hardware, um Höchverfügbarkeit zu liefern, sondern die Bibleothek selbst wurde designed, um Fehler im Applikationslayer zu ermitteln und zu behandeln, so dass Hochverfügbarkeit auf Ebene eines Cluster aus Computern geliefert wird, von denen jeder fehleranfällig sein kann.

In nur vier Sätzen haben sie alle Highlights getroffen, weitestgehend durch das Vorwissen des Lesers. Das ist ein wichtiger Punkt: Es ist okay, von einem in Mindestmaß informierten Leser auszugehen, der grundsätzlich vorbereitet ist. Ein Leser, der nicht weiß, was "Cluster" und "Hochverfügbarkeit" in diesem Zusammenhang bedeutet, kann vermutlich nicht viel Nutzen aus Hadoop überhaupt ziehen, so dass es keine Veranlassung gibt, für einen Leser zu schreiben, der weniger als dieses weiß. Die Phrase "designed, um Fehler im Applikationslayer zu ermitteln und zu behandeln" hat Ingenieure im Auge, die Übung mit großformatigen Rechenclustern haben — wenn diese solche Worte sehen, werden sie wissen, dass die hinter Hadoop stehenden Leute diese Welt verstehen und der erstmalige Besucher wird Hadoop gerne weiterhin in Erwägung ziehen.

Wer die Missionziele gelesen hat und weiterhin interessiert ist, wird nun weitere Einzelheiten erfahren wollen, vielleicht durch die Benutzer- oder Entwicklerdokumentation, schließlich wird er etwas herunterladen wollen. Doch vor alledem will er sicher sein, dass es sich um Open Source handelt.

Sagen Sie, dass das Projekt frei ist

Die Hauptseite muss unmissverständlich klar machen, dass das Projekt Open Source ist. Das mag offensichtlich klingen, Sie wären aber überrascht darüber, wie viele Projekte es vergessen. Ich habe schon Projekte gesehen, deren Hauptseite nicht nur nicht sagte, unter welcher Lizenz ihre Software veröffentlicht wurde, sondern nicht einmal erwähnte, dass es sich um freie Software handelt. Manchmal erschien die entscheidende Information erst auf der Download-Seite, der Entwickler-Seite oder irgend einer andere Stelle, die einen Klick mehr erforderte. Im Extremfall wurde die Lizenz überhaupt nicht auf der Site angegeben — die einzige Möglichkeit sie herauszufinden war, die Software herunterzuladen und darin nach einer Lizenzdatei zu schauen.

Bitte machen Sie diesen Fehler nicht. Durch solch ein Versäumnis können Ihnen viele potentieller Entwickler und Nutzer verloren gehen. Sagen Sie gleich vorweg, direkt unterhalb des Missionsziels, dass das Projekt freie Software oder Open-Source-Software ist, und geben Sie die genaue Lizenz an. Eine kurze Anleitung zur Wahl einer Lizenz bietet der Abschnitt „Die Wahl einer Lizenz und ihre Anwendung“; Lizenzfragen werden ausführlich im Kapitel Kapitel 9, Lizenzen, Urheberrecht und Patente behandelt.

Bis hierhin hat sich unser hypothetischer Besucher entschieden  — wahrscheinlich innerhalb der ersten Minute oder schon vorher  — ob er interessiert ist, sagen wir, zumindest weitere fünf Minuten in das Projekt zu investieren. Der nächste Abschnitt beschreibt, was er innerhalb dieser fünf Minuten vorfinden sollte.

Funktionen und Anforderungen

Es sollte eine kurze Liste der Funktionen geben, die von der Software unterstützt werden (Wenn etwas noch nicht fertig ist, können Sie es trotzdem auflisten, schreiben Sie aber "geplant" oder "in Arbeit" daneben), und der Anforderungen, welche die Software an die Hardware stellt. Stellen Sie sich die Liste der Funktionen/Anforderungen wie etwas vor, das Sie jemandem geben würden, der eine kurze Zusammenfassung zu dieser Software wünscht. Oft ist sie einfach nur eine logische Erweiterung der Missionsziele. Das Missionsziel könnte zum Beispiel folgendes beinhalten:

Erstellung einer Volltext-Indexierungs- und -Suchmaschine mit einer umfangreichen Schnittstelle für Programmierer, die Suchdienste über große Mengen von Text anbieten wollen.

Die Liste der Funktionen und Anforderungen würde Details bieten, um das Missionsziel zu verdeutlichen:

Funktionen:

  • Durchsucht Klartext, HTML, und XML

  • Suche nach Wörtern oder Ausdrücken

  • (geplant) Unscharfe Suche

  • (geplant) Inkrementelle Aktualisierung der Indexe

  • (geplant) Indexierung von Ressourcen im Netzwerk

Anforderungen:

  • Python 3.2 oder höher

  • Genug Festplattenspeicher für die Indexe (ungefähr die doppelte Menge der Originaldaten)

Durch diese Informationen gewinnen Leser schnell ein Gefühl dafür, ob ihnen diese Software etwas nützen könnte, und sie können gleichzeitig überlegen, ob sie sich als Entwickler beteiligen wollen.

Stand der Entwicklung

Besucher wollen normalerweise wissen, wie es einem Projekt geht. Bei neuen Projekten wollen sie wissen, wie weit dessen Versprechen und dessen derzeitiger Stand auseinanderliegen. Bei einem ausgereiften Projekt wollen sie wissen, wie aktiv es gepflegt wird, wie oft neue Versionen veröffentlicht werden, wie schnell es wahrscheinlich auf Bug-Meldungen reagieren wird usw.

Es gibt eine Reiche verschiedener Wege, um Antworten auf diese Fragen anzubieten. Einer ist, eine Seite zum Status der Entwicklung einzurichten, auf der die kurzfristigen Ziele und Anfragen des Projekts aufgelistet werden (es könnte z.B. auf der Suche nach Entwicklern mit bestimmten Fachkenntnissen sein). Die Seite kann auch eine Übersicht vergangener Versionen haben, mit einer Auflistung der jeweiligen Funktionen, damit Besucher sich ein Bild machen können, was in diesem Projekt unter "Fortschritt" verstanden wird und wie schnell es nach diesem Verständnis vorankommt. Manche Projekte strukturieren ihre Entwicklungsstatus-Seite als Roadmap, welche die Zukunft beinhaltet: Vergangene Ereignisse werden an Zeitenpunkten gezeigt, die gerade erst vorbei sind, zukünftige an ungefähren Zeitpunkten, von denen das Projekt hofft, dass sie an diesen dann passieren.

Der andere Weg —  der sich mit dem Ersten nicht gegenseitig ausschließt und tatsächlich am besten mit diesem in Kombination gemacht wird — ist, verschiedene automatisch-pflegende Zähler und Indikatoren in die Startseite und/oder der Entwicklerseite des Projektes einzubetten, welche verschiedene Informationshäppchen zeigen, die zusammenfassend gesehen, einen Eindruck vom Entwicklungsstatus und Fortschritt des Projektes geben. Zum Beispiel ein Ankündigungs- oder Nachrichtenfenster, aktuelle Nachrichten zeigend, einen Twitter- oder ein anderer Microblog-Stream, der Benachrichtigungen anzeigt, die mit den angegebenen Hashtags des Projekts übereinstimmen, eine Zeitleiste von kürzlich veröffentlichten Versionen, ein Panel mit den letzten Aktivitäten im Bug-Tracker (Bugs eingereicht, Bugs geantwortet), eine andere Mailingliste oder Diskussionsforum-Aktivität usw. Jeder dieser Indikatoren sollte ein Zugangspunkt für weitere Informationen sein. Wenn Sie beispielsweise auf das Fenster "Letzte Fehler" klicken, sollten Sie den vollständigen Bug-Tracker oder zumindest eine erweiterte Ansicht der Bug-Tracker-Aktivität aufrufen.

Tatsächlich gibt es zwei leicht unterschiedliche Bedeutungen für "Entwicklungsstatus", die hier miteinander verschmolzen werden. Eine ist das formale Gefühl: Wo steht das Projekt in Relation zu seinen erklärten Zielen und wie schnell kommt es voran? Die andere ist weniger formell, aber genauso nützlich: Wie aktiv ist dieses Projekt? Läuft das Zeug? Gibt es hier Leute, die Dinge erledigen? Oft ist diese letztere Darstellung das, was ein Besucher am meisten interessiert. Ob ein Projekt seinen letzten Meilenstein erreicht hat oder nicht, ist manchmal nicht so interessant wie die grundlegendere Frage, ob es eine aktive Gemeinschaft von Entwicklern gibt.

Die zwei Begriffe des Entwicklungsstandes sind natürlich miteinander verbunden und ein gut dargestelltes Projekt zeigt beide Arten. Die Informationen können zwischen der Titelseite des Projekts (dort hinreichend dargestellt, um einen Überblick über beide Arten des Entwicklungsstatus zu geben) und einer eher auf Entwickler ausgerichteten Seite aufgeteilt werden.

Der Entwicklungsstatus sollte immer die Realität widerspiegeln

Fürchten Sie sich nicht davor, einen unfertigen Eindruck zu vermitteln und widerstehen Sie der Versuchung, den Entwicklungsstand besser darzustellen, als er wirklich ist. Jeder weiß, dass sich Software in Schritten entwickelt; zu sagen "Es ist Alpha-Software und sie hat bekannte Fehler. Sie läuft zwar und funktioniert zumindest teilweise, trotzdem gilt: Nutzung auf eigene Gefahr" ist keine Schande. Diese Ausdrucksweise wird nicht die Art von Entwicklern verschrecken, die Sie zu dieser Zeit brauchen. Was die Nutzer angeht: Einer der schlimmsten Fehler, die ein Projekt machen kann, ist, Nutzer anzulocken, für welche die Software noch nicht bereit ist. Der Ruf, instabil oder fehlerträchtig zu sein, ist schwer wieder loszuwerden, wenn er dem Projekt einmal anhaftet. Auf lange Sicht zahlt es sich aus, konservativ zu sein; es ist besser, wenn die Software stabiler läuft als erwartet und angenehme Überraschungen sorgen für die beste Mundpropaganda.

Downloads

Man sollte die Software als Quelltext in den üblichen Formaten herunterladen können. Wenn ein Projekt noch am Anfang ist, sind binäre (ausführbare) Dateien nicht nötig, es sei denn der Build-Vorgang ist derart kompliziert und voller Abhängigkeiten, dass es für die meisten Leute einen Menge Arbeit wäre, die Software überhaupt zum Laufen zu bringen. (Wenn das aber der Fall ist, wird das Projekt sowieso Schwierigkeiten haben, Entwickler anzuziehen.

Die veröffentlichten Dateien herunterzuladen, sollte so bequem, standardkonform und mühelos sein wie möglich. Um eine Krankheit auszurotten, würden Sie die Medizin nicht so verteilen, dass man zur Anwendung eine unübliche Spritzengröße bräuchte. Ebenso sollte Software die üblichen Build- und Installationsmethoden beachten, denn je mehr sie von diesen Standards abweicht, desto mehr potenzielle Benutzer und Entwickler werden aufgeben und sich verwirrt abwenden.

Das hört sich offensichtlich an, aber viele Projekte kümmert es nicht, das sie ihre Installationsprozeduren erst sehr spät standardisieren, in der Annahme, dass sie es jederzeit machen könnten: "Wir erledigen den Kram, sobald der Code näher an der Fertigstellung ist.". Hierbei übersehen diese jedoch, dass sie mit dem Hinausschieben der langweiligen Arbeiten zur Fertigstellung der Build- und Installations-Vorgänge den Zeitraum, um den Code startklar zu bekommen, tatsächlich verlängern — denn sie entmutigen Entwickler, welche ansonsten etwas zum Code beigetragen hätten, wenn nur sie selbst ihn bauen und testen können. Das Heimtückische daran ist, dass das Projekt nicht einmal davon erfährt, dass es all diese Entwickler verliert, denn der Vorgang ist eine Ansammlung von Nicht-Ereignissen: Jemand geht auf die Webseite, lädt die Software herunter, versucht einen Build zu machen, scheitert, gibt auf und geht seiner Wege. Wer außer der Person selbst wird jemals davon erfahren? Keiner im Projekt wird je bemerken, wie Interesse und Wohlwollen von jemanden lautlos verprasst wurde.

Langweilige Arbeit mit einem hohen Nutzen sollte immer frühzeitig erledigt werden und das Herabsetzen der Einstiegshürden für ein Projekt durch sauberes Packetieren zahlt sich mit vervielfachtem Gewinn aus.

Wenn Sie ein herunterladbares Paket freigeben, vergeben Sie diesem eine eindeutige Versionsnummer, damit die Leute zwei beliebige unterschiedliche Pakete auch unterscheiden können und wissen, welches das Aktuellere ist. Auf diesem Weg können von jenen Fehler in Bezug auf eine bestimmtes Paket gemeldet werden (was Auskunftgebende zu ermitteln hilft, ob der Fehler bereits behoben wurde oder nicht). Eine ausführliche Diskussion über Versionsnummerierung finden Sie in „Versionszählung“ und Details zur Standardisierung von Build- und Installations-Vorgängen werden im „Erstellung der Pakete“ behandelt.

Zugriff auf Versionsverwaltung und Bugtracker

Die Quellcodepakete herunterzuladen mag für diejenigen ausreichend sein, welche lediglich die Software installieren und benutzen wollen, aber das genügt nicht denjenigen, welche Fehler bereinigen oder neue Funktionen hinzufügen wollen. Nächtliche Quelltext-Schnappschüsse können helfen, sind aber nicht ausreichend granular für eine lebendige Entwicklergemeinschaft. Diese Leute brauchen Echtzeit-Zugriff auf den neuesten Quellcode und einen Weg, Änderungen basierend auf diese Quellen zu übermitteln.

Die Lösung ist die Nutzung eines Versionskontroll-Systems  — speziell ein online, öffentlich aufrufbares versionskontrolliertes Repository, aus dem jeder das Projektmaterial auschecken und nachfolgende Updates erhalten kann. Ein Versionskontroll-Repository ist ein Zeichen — für beide, Anwender und Entwickler, —  das dieses Projekt sich darum bemüht, Leuten das für die Teilnahme notwendige zu geben. Seit dem dies hier geschrieben steht nutzen viele Open-Source Projekte https://github.com/, welches ein unbegrenztes freies öffentliches Versionskontrollsystem für Open-Source Projekte anbietet. Während GitHub nicht die einzige Wahl ist, ist es für die meisten Projekte eine vernünftige Wahl[21]. Versionskontroll-Infrastruktur wird detailliert besprochen in „Versionsverwaltung“.

Gleiches gilt für den Bugtracker. Die Bedeutung des Bugtracker liegt nicht allein in seinem täglichen Nutzen für die Entwickler, sondern er ist auch ein Signal an Außenstehende. Für viele ist eine öffentliche Bug-Datenbank eines der stärksten Anzeichen dafür, dass ein Projekt ernstgenommen werden sollte — und ein Projekt ist um so besser, je mehr Fehler darin protokolliert sind. Das mag sich widersprüchlich anhört, aber bedenken sie, dass die Anzahl der erfassten Fehlerberichte von drei Dingen abhängt: Die absolute Anzahl Softwarefehler, die im Code enthalten sind, die Anzahl seiner Benutzer und der Komfort mit dem diese Benutzer neue Fehler melden können. Von diesen dreien sind die letzten beiden wesentlicher als der Erste. Jede ausreichend große und komplexe Software enthält eine im Grunde genommen beliebige Menge an Fehlern, die nur darauf warten, entdeckt zu werden. Die eigentliche Frage ist, wie gut das Projekt diese Fehler erfassen und priorisieren kann. Ein Projekt mit einer großen und gut gepflegten Fehler-Datenbank (ein Zeichen dafür, dass schnell auf Bugs reagiert wird, Duplikate markiert werden, usw.) macht deshalb einen besseren Eindruck, als ein Projekt ohne oder mit einer fast leeren Fehler-Datenbank.

Am Anfang des Projekts wird die Fehler-Datenbank natürlich nur sehr wenige Meldungen enthalten und es gibt nicht viel, das Sie dagegen tun könnten. Wenn die Statusseite aber das geringe Alter hervorhebt und wenn Leute, welche die Bug-Datenbank betrachten, sehen können, dass die meisten Einträge vor kurzem gemacht wurden, können sie leicht schlussfolgern, dass das Projekt immer noch eine gesunde Rate an Einträgen hat und werden dementsprechend über die niedrige absolute Anzahl an Bug-Meldungen nicht wirklich beunruhigt sein.[22]

Man sollte auch beachten, dass Bugtracker oft nicht nur zur Verfolgung von Bugs, sondern auch für Verbesserungen an der Software, Änderungen an der Dokumentation, ausstehende Aufgaben und mehr benutzt werden. Weiteres zum Betrieb eines Bugtrackers, wird in „Bugtracker“ behandelt, also werde ich hier nicht näher darauf eingehen. Das Wichtige aus Sicht der Präsentation ist, überhaupt einen Bugtracker zu haben und sicherzustellen, dass dieser Umstand bereits auf der Hauptseite deutlich wird.

Kommunikationskanäle

Besucher wollen oft wissen, wie sie am Projekt beteiligte Menschen erreichen können. Veröffentlichen Sie deshalb Adressen von Mailinglisten, Chat-Räumen, IRC-Kanälen (Kapitel 3, Technische Infrastruktur), und anderen Foren, auf denen Beteiligte erreicht werden können. Stellen Sie klar, dass Sie und die anderen Autoren des Projekts auf diesen Listen eingetragen sind, um den Besuchern zu zeigen , dass sie Rückmeldungen an die Entwickler richten können. Eine Anmeldung auf den Mailinglisten beinhaltet für Sie nicht die Verpflichtung, alle Fragen zu beantworten oder alle Wünsche nach neuen Funktionen zu verwirklichen. Auf lange Sicht betrachtet wird voraussichtlich nur ein Teil der Nutzer diese Foren sowieso nur nutzen, aber die anderen wird es ermutigen zu wissen, dass sie es könnten, sollte es einmal nötig sein.

Am Anfang eines Projekts hat es keinen Sinn, die Foren für Benutzer und Entwickler getrennt zu halten. Es ist viel besser, wenn alle Projektbeteiligten miteinander reden: in einem "Raum". Unter den ersten Interessenten eines Projekts ist die Unterscheidung zwischen Entwickler und Nutzer oft verwaschen. Sofern sie überhaupt gemacht werden kann, gibt es in den frühen Tagen wesentlich mehr Entwickler im Verhältnis zu Nutzern als es später der Fall ist. Obwohl Sie nicht annehmen können, dass jeder, der sich früh für das Projekt interessiert, ein Programmierer ist, der am Quelltext der Software arbeiten will, können Sie annehmen, dass sie zumindest daran interessiert sind, die Diskussionen um die Entwicklung mitzuverfolgen und ein Gefühl für die Richtung des Projekts zu entwickeln.

Da es in diesem Kapitel nur darum geht wie man ein Projekt startet, belassen wir es dabei zu sagen, dass diese Foren existieren sollten. Später, in „Handhabung von Wachstum“, werden wir untersuchen, wo und wie man diese Foren aufbaut, inwiefern Sie möglicherweise Moderation erfordern und wie man Foren für Nutzer und Foren für Entwickler voneinander löst wenn es nötig wird, ohne eine unüberwindliche Kluft aufzureißen.

Richtlinien für Entwickler

Wenn jemand sich überlegt, etwas zu einem Projekt beizutragen, wird er sich nach Richtlinien für Entwickler umschauen. Diese sind weniger technischer, als viel mehr sozialer Natur: Sie erklären, wie Entwickler miteinander und mit Benutzern umgehen, also letzlich wie die Dinge laufen sollten.

Dieses Thema wird ausführlich in „Schriftliche Regeln“ behandelt, aber die wesentlichen Elemente der Richtlinien sind:

  • Hinweise auf Foren für die Zusammenarbeit mit anderen Entwicklern

  • Anleitungen wie man Fehler meldet und Patches einreicht

  • Einige Hinweise darauf wie die Entwicklung für gewöhnlich abläuft und wie Entscheidungen gefällt werden — ob das Projekt eine gütige Diktatur, eine Demokratie oder etwas anderes ist

Übrigens soll "Diktatur" in keiner Weise herabsetzend wirken. Es ist völlig in Ordnung eine Tyrannei zu betreiben, bei dem ein bestimmter Entwickler das letzte Wort über alle Änderungen haben kann. Viele erfolgreiche Projekte arbeiten in dieser Weise. Das Wichtige dabei ist, dass das Projekt dies von vornherein klarstellt. Eine Tyrannei, die vorgibt eine Demokratie zu sein, wird sich Menschen abspenstig machen; eine Tyrannei die klar sagt was sie ist, wird gut zurecht kommen, sofern der Tyrann kompetent und vertrauenswürdig ist. (Siehe „Aufspaltbarkeit“ darüber, warum Diktatur in Open-Source Projekten nicht dieselben Implikationen hat wie Diktatur in anderen Lebensbereichen.)

http://subversion.apache.org/docs/community-guide/ ist ein Beispiel für besonders gründliche Entwicklerrichtlinien; die LibreOffice Richtlinien bei https://wiki.documentfoundation.org/Development sind ebenfall ein gutes Beispiel.

If the project has a written Code of Conduct (see „Verhaltensregeln“), then the developer guidelines should link to it.

Wenn das Projekt niedergeschriebene Verhaltensregeln hat (siehe „Verhaltensregeln“), dann sollten die Entwicklerrichtlinien darauf verweisen.

Das etwas andere Thema, die Bereitstellung einer Projekt-Einführung für Programmierer, wird im Abschnitt „Entwickler-Dokumentation“.

Dokumentation

Dokumentation ist unerlässlich. Es muss irgendetwas zum Lesen geben, selbst wenn es nur rudimentär und unvollständig ist. Die Dokumentation ist ganz klar ein Teil der vorhin erwähnten "Plackerei" und sie ist oft das erste, das in einem neuen Open-Source-Projekt zu kurz kommt. Die Missionsziele und eine Liste von Funktionen zu schreiben, die Wahl einer Lizenz, den Stand der Entwicklung zusammenzufassen — das sind alles relativ kleine Aufgaben, die mit einem Schlag erledigt werden können und normalerweise nicht wieder angefasst werden müssen, wenn einmalig erledigt. Die Dokumentation hingegen ist nie wirklich fertig, was vielleicht ein Grund dafür ist, dass man es manchmal hinauszögert, sie überhaupt in Angriff zu nehmen.

Das heimtückischste daran ist, dass die Autoren der Dokumentation keinen direkten Nutzen aus ihr ziehen, während sie für neue Nutzer unerlässlich ist. Die wichtigste Dokumentation für neue Benutzer sind die Grundlagen: Wie richte ich die Software zügig ein, eine Übersicht über ihre Funktionsweise, vielleicht auch Anleitungen für häufige Aufgaben. All dies ist den Autoren nur allzu gut bekannt – so bekannt, dass es für sie schwierig sein kann, sich in die Lage der Leser zu versetzen, und mühsam die offensichtlichen Einzelschritte zu buchstabieren, die aus ihrem Blickwinkel kaum der Erwähnung wert scheinen.

Es gibt keine magische Lösung für dieses Problem. Es muss sich nur jemand hinsetzten und die Sachen aufschreiben und dann, was am wichtigsten ist, die Anmerkungen der Leser einbinden. Benutzen Sie ein einfaches, leicht zu bearbeitendes Format wie HTML, Klartext, Markdown, ReStructuredText oder eine XML-Variante – etwas geeignetes für kleine und spontane Verbesserungen[23]. Das reduziert nicht nur den Aufwand für die ersten Autoren, die Dokumentation schrittweise zu verbessern, sondern auch allen, die später zum Projekt hinzukommen.

Eine Möglichkeit, eine erste grundlegende Dokumentation abzusichern ist es, ihren Umfang von vornherein einzuschränken. So erscheint die Aufgabe zumindest nicht bodenlos. Als Richtlinie könnte gelten, dass folgende minimale Bedingungen erfüllt werden:

  • Sagen Sie dem Leser klar, welche technischen Kenntnisse erwartet werden.

  • Beschreiben sie klar und deutlich, wie man die Software einrichtet, und nennen Sie dem Benutzer irgendwo am Anfang der Dokumentation ein Merkmal oder einen Befehl, mit dem man prüfen kann, ob sie richtig eingerichtet wurde. Die erste Dokumentation ist in mancherlei Hinsicht wichtiger als eine echte Bedienungsanleitung. Je mehr Mühe jemand in die Installation und Einrichtung der Software investiert hat, desto beharrlicher wird er darin sein, fortgeschrittene, unzureichend dokumentierte Funktionen zu erfassen. Wenn Leute aufgeben, passiert es meistens gleich am Anfang; deshalb sind es die frühesten Phasen wie die Installation, bei der man die meiste Unterstützung braucht.

  • Geben Sie Tutorial-artige Beispiele für typische Aufgaben. Natürlich sind viele Beispiele für viele Aufgaben noch besser, aber wenn die Zeit knapp ist, wählen Sie einen Punkt aus und schreiben Sie dazu eine ausführliche Anleitung. Sobald jemand sieht, dass die Software für eine Sache benutzt werden kann, wird er beginnen alleine herauszufinden, wofür sie noch zu gebrauchen ist – und wenn Sie Glück haben, dazu übergehen, die Dokumentation selbst zu erweitern. Was uns zum nächsten Punkt bringt...

  • Kennzeichnen Sie unvollständige Bereiche der Dokumentation als solche. Indem Sie dem Leser zeigen, dass Sie sich über die Defizite im Klaren sind, stellen Sie sich auf seine Sicht ein. Durch Einfühlungsvermögen geben Sie ihm zu verstehen, dass das Projekt nicht erst überzeugt werden muss, was wichtig ist. Solche Kennzeichen entsprechen keiner Verpflichtung, die Lücken bis zu einem bestimmten Datum auszufüllen – sie können auch als offenen Anfragen um Hilfe betrachtet werden.

Der letzte Punkt hat tatsächlich umfassendere Bedeutung und kann auf das ganze Projekt angewendet werden, nicht nur auf die Dokumentation. Eine genaue Buchführung über bekannte Defizite ist in der Open-Source-Welt die Norm. Sie müssen die Mängel des Projekts nicht hochspielen, sondern einfach gewissenhaft und leidenschaftslos aufzählen, wo die Veranlassung gegeben ist (das kann in der Dokumentation, im Bugtracker oder in einer Diskussion auf einer Mailingliste geschehen). Keiner wird das als vom Projekt ausgehende Miesmacherei ansehen, oder als Verpflichtung die Probleme bis zu einem bestimmten Datum zu lösen, es sei denn, das Projekt geht ausdrücklich eine solche Verpflichtung ein. Da jeder Nutzer diese Mängel selbst finden wird, ist es besser, sie psychologisch darauf vorzubereiten – das gibt den Eindruck, dass im Projekt ein Bewusstsein über seinen Zustand besteht.

Erreichbarkeit der Dokumentation

Die Dokumentation sollte an zwei Stellen erreichbar sein: Online (direkt auf der Website) und in der zum Download verfügbaren Ausgabe der Software (siehe „Erstellung der Pakete“). Sie sollte online in durchsuchbarer Form vorliegen, weil Interessierte die Dokumentation oft lesen, bevor sie die Software zum ersten Mal herunterladen, um besser entscheiden zu können, ob sie dies überhaupt tun sollen. Prinzipiell sollte die Dokumentation aber auch der Software beiliegen, denn ein veröffentlichtes Paket sollte alles enthalten (d.h. lokal verfügbar machen), was man braucht um die Software zu benutzen.

Im Falle der Online-Dokumentation sollten Sie für einen Link sorgen, der auf eine vollständige Dokumentation auf einer einzigen HTML-Seite verweist (schreiben Sie einen Hinweis wie "monolitisch" oder "umfangreiche Einzelseite" daneben, damit die Leser nicht überrascht sind wenn es beim Laden etwas Zeit braucht). Das ist nützlich, da Leute oft die ganze Dokumentation nach einem bestimmten Wort oder einer Wendung absuchen wollen. Im Allgemeinen wissen sie schon, wonach sie suchen, können sich nur nicht erinnern an welcher Stelle es stand. In dieser Situation gibt es nichts frustrierenderes, als je eine HTML-Seite für Inhaltsangabe, eine für die Einleitung, eine weitere für die Installationsanleitung, usw zu haben. Wenn die Seiten so aufgeteilt sind, machen sie die Suchfunktion des Browsers wertlos. Eine in mehrere Seiten aufgebrochene Dokumentation ist gut, wenn man weiß, welchen Abschnitt man braucht oder die ganze Dokumentation von vorne nach hinten durchlesen möchte. Das ist aber nicht notwendigerweise die häufigste Art des Dokumentationszugriffs. Häufiger kennt sich jemand im Grunde genommen mit der Software aus und kehrt zurück, um nach einem bestimmten Wort oder Ausdruck zu suchen, und keine monolitische Datei bereitzustellen, würde in solchen Fällen deren Leben unnötig erschweren.

Entwickler-Dokumentation

Developer documentation is written by programmers to help other programmers understand the code, so they can repair and extend it. This is somewhat different from the developer guidelines discussed earlier, which are more social than technical. Developer guidelines tell programmers how to get along with each other; developer documentation tells them how to get along with the code itself. The two are often packaged together in one document for convenience (as with the http://subversion.apache.org/docs/community-guide/ example given earlier), but they don't have to be.

-->

Die Entwickler-Dokumentation wird von Programmierer geschrieben, um anderen Programmierern zu helfen, den Code verstehen, so dass sie ihn reparieren und erweitern können. Sie unterscheidet sich ein wenig zu den vorhin erwähnten Richtlinien für Entwickler, die eher sozialer als technischer Natur sind. Entwickler-Richtlinien sagen den Programmierern, wie sie miteinander zurecht kommen; die Entwickler-Dokumentation hingegen sagt ihnen, wie sie mit dem Code zurechtkommen. Beide werden oft der Bequemlichkeit halber gemeinsam in einem Dokument angeboten (wie im oben erwähnten Beispiel http://subversion.apache.org/docs/community-guide/), müssen dies jedoch nicht.

Obwohl die Entwickler-Dokumentation sehr hilfreich sein kann, gibt es keinen Grund, um ihretwillen eine Freigabe zu verzögern. So lange die ursprünglichen Autoren verfügbar (und bereit) sind, Fragen zum Code zu beantworten, genügt das für den Anfang. Tatsächlich ist eine häufige Motivation zum Schreiben der Dokumentation, dass man wieder und wieder die immer gleichen Fragen beantworten muss. Aber selbst bevor sie geschrieben ist, wird es entschlossenen Freiwilligen gelingen, sich einen Weg durch den Code zu bahnen. Was Menschen dazu treibt, ihre Zeit mit dem Erarbeiten einer Codebasis zu verbringen, ist, dass der Code aus ihrer Sicht etwas Nützliches tut. Solange sie sich dessen gewiss sind, nehmen sich die Zeit, Probleme zu lösen; ohne diese Zuversicht wird sie keine auch noch so gute Dokumentation anlocken oder halten können.

Wenn Sie also nur die Zeit zum Schreiben einer Dokumentation haben, so schreiben Sie eine für Benutzer. Jede Dokumentation für Benutzer ist auch für die Entwickler effektiv; jeder Programmierer, der an einer Software arbeitet, muss auch damit vertraut sein, wie man sie benutzt. Wenn Sie später sehen, wie Programmierer andauernd die gleichen Fragen stellen, nehmen Sie sich die Zeit, eine paar separate Dokumente eigens für sie zu schreiben.

Manche Projekte nutzen Wikis für die allererste Dokumentation, oder sogar für die Hauptdokumentation. Nach meiner Erfahrung funktioniert das nur dann, wenn das Wiki aktiv von einer Handvoll Leuten bearbeitet wird, die sich hinsichtlich der Organisation und des Tonfalls der Dokumentation einig sind. Mehr dazu steht in „Wikis“.

If the infrastructure aspects of documentation workflow seem daunting, consider using https://readthedocs.org/. Many projects now depend on it to automate the process of presenting their documentation online. The site takes care of format conversion, integration with the project's version control repository (so that documentation rebuilds happen automatically), and various other mundane tasks, so that you and your contributors can focus on content.

Wenn die Infrastrukturaspekte des Dokumentationsworkflows entmutigend werden, erwäge die Verwendung von https://readthedocs.org/. Viele Projekte vertrauen diesem beim automatisieren des Prozesses der Online-Präsentation ihrer Dokumentation. Die Seite kümmert sich um die Formatkonvertierung, Integration mit dem Versionkontroll-Repository des Projektes (so dass die Neuerstellung der Dokumentationen automatisch erfolgt) und verschiedene andere weltliche Aufgaben, so dass Sie und Ihre Mitarbeiter sich auf den Inhalt konzentrieren können.

Demos, Screenshots, Videos und Beispielausgabe

Ein Projekt mit graphischer Benutzeroberfläche oder mit graphischen oder anderen markanten Ausgaben, sollte Beispiele auf der Website des Projekts anbieten. Im Fall einer Benutzeroberfläche bedeutet dies Screenshots oder besser noch ein kurzes Video (4 Minuten oder weniger) mit Untertiteln und einem Sprecher. Für Ausgaben mögen es Screenshots oder eben Beispieldateien zum Download sein. Für web-basierte Software ist der goldenen Weg einen Demo-Seite, davon ausgehend, dass sie dem zugänglich ist.

The main thing is to cater to people's desire for instant gratification in the way they are most likely to expect. A single screenshot or video can be more convincing than paragraphs of descriptive text and mailing list chatter, because it is proof that the software works. The code may still be buggy, it may be hard to install, it may be incompletely documented, but image-based evidence shows people that if one puts in enough effort, one can get it to run.

Es geht hauptsächlich darum, das Bedürfnis des Menschen nach direkter Belohnung auf der Weise zu befriedigen, auf der sie es am ehesten erwarten. Ein einziges Bild oder Video kann überzeugender sein, als ganze Absätze von Beschreibungen oder Geplapper auf Mailinglisten, denn ein Bild ist ein unverkennbarer Beweis dafür, dass die Software funktioniert. Sie mag ihre Fehler haben, schwer zu installieren und unvollständig dokumentiert sein, aber ein Bild ist immerhin ein Beweis, dass man sie zum Laufen bringen kann, wenn man sich nur genug Mühe gibt.

Sie können der Website des Projekts noch vieles mehr hinzufügen, wenn die Zeit dazu reicht, oder wenn es aus irgendeinem Grund besonders passend erscheint: Eine Seite mit Neuigkeiten, eine Seite mit der Historie des Projekts, eine Seite mit verwandten Links, eine Suchfunktion, ein Link für Spenden, usw. Nichts davon ist am Anfang notwendig, aber man sollte es für später im Hinterkopf behalten.

Hosting

Wo im Internet sollten sie ihr Projektmaterial platzieren?

Auf einer Webseite, sicherlich — aber die umfassende Antwort darauf ist ein wenig komplizierter als das.

Viele Projekte unterscheiden zwischen ihrer primär öffentlichen anwenderbezogenen Webseite — die mit den schönen Bildern und der "Über" Seite und den zaghaften Einführungen und Videos und Führungen und all dem Zeug — und ihrer Entwickler-Seite, wo alles schmuddelig und voller eng beieinander liegender Texte in Monospace-Schriften und undurchdringlichen Abkürzungen ist.

Nun, ich übertreibe. Ein bisschen. In jedem Fall ist es in der frühen Phase Ihres Projekts nicht so wichtig, zwischen diesen beiden Zielgruppen zu unterscheiden. Die meisten interessierten Besucher werden Entwickler oder zumindest Leute sein, die gerne neuen Code ausprobieren. Im Laufe der Zeit kann es sinnvoll sein, eine benutzerbezogene Seite (wenn Ihr Projekt eine Codebibliothek ist, können diese "Benutzer" andere Programmierer sein) und einen etwas separaten Bereich für die Collaboration diejenigen zu haben, welche an der Teilnahme an der Entwicklung interessiert sind. Die Collaborations-Seite würde das Code-Repository, den Bug-Tracker, das Entwicklungs-Wiki, Links zu Entwicklungs-Mailinglisten usw. enthalten. Die beiden Websites sollten miteinander verknüpft sein. Insbesondere ist wichtig, dass auf der benutzerbezogenen Website klargestellt wird, dass es sich bei dem Projekt um Open Source handelt und wo sich die Open Source-Entwicklungsaktivität befindet.

In der Vergangenheit, viele Projekte erstellten ihre Entwickler-Seite und Infrastruktur selbstständig. Seit der letzten Dekade oder so, wie auch immer, nutzen die meisten Open-Source-Projekte —  und i.d.R. alle neuen —  eine der gehosteten Seiten die entstanden sind, um diese Dienste kostenlos für Open-Source-Projekte anzubieten. Bis jetzt ist die popolärste Seite, zu Beginn von 2018, GitHub (https://github.com/) und wenn Sie keine starke Präferenz für ein bestimmtes Hosting haben, sollten sie wirklich GitHub wählen; viele Entwickler kennen es bereits gut und haben persönliche Accounts dort. Siehe „Hosting-Pakete“ hinsichtlich einer detaillierteren Diskussion der Fragen, die bei der Auswahl einer vorgefertigten Hosting-eite zu berücksichtigen sind und für einen Überblick über die beliebtesten.



[16] Anm. d. Übersetzers: Wir verwenden den Begriff "Hosting-Packet", weil der engl. Begriff "canned hosting" im deutschen Sprachraum nicht geläufig ist. Ein anderer, auch im deutschen Sprachraum geläufiger Begriff, ist "Shared Hosting". "Hosting-Paket" schien uns beim Übersetzen am geeignetsten zu sein.

[17] Die Wichtigkeit von Top-Level Domainnamen nimmt scheinbar ab. Zahlreiche Projekte haben gerade ihren Namen in der .io TLD, beispielsweise, und scheren sich nicht um .com, .net oder .org. Ich kann nicht vorhersagen, wie die Marken-Psychologie von Domainnamen in Zukunft sein wird, daher nutzen Sie ihr Urteilsvermögen und wenn Sie unter all den wichtigen TLDs den Namen bekommen können, tun Sie es.

[18] Sie schafften es nicht, gnome.com oder gnome.net zu bekommen, aber das ist okay — wenn sie nur einen haben und es der .org ist, ist das ausgezeichnet. Das ist normalerweise der Erste, nach dem Leute suchen, wenn sie nach einem Open-Source Projekt diesen Namens Ausschau halten. Wenn Sie "gnome.org" selber nicht bekommen können, kann eine übliche Lösung darin bestehen, stattdessen "gnomeproject.org" zu nehmen und viele Projekte lösen das Problem auf diese Weise.

[19] https://identi.ca/ ist eine Open-Source Mikrobolog / Sozial Networking Platform, die zahlreiche freie Software Entwickler nutzen.

[20] Während die Hauptkopie des Gnome Sourcecodes bei https://git.gnome.org/ liegt, pflegen sie eine gespiegelte Kopie bei GitHub, seit so viele Entwickler sich bereits mit GitHub auskennen

[21] Obwohl GitHub auf Git basiert, einem weit verbreiteten Open-Source-Versionskontrollsystem, ist der Code, mit dem die Webservices von GitHub ausgeführt werden, nicht selbst Open Source. Ob dies für Ihr Projekt wichtig ist, ist eine komplexe Frage und wird ausführlicher in „Hosting-Pakete“ behandelt.

[22] Hinsichlich eines vollständigeren Arguments dafür, dass Fehlerberichte als "Good News" behandelt werden sollten, siehe http://www.rants.org/2010/01/10/bugs-users-and-tech-debt/, in dem es hauptsächlich darum geht, dass die Anhäufung von Fehlerberichten eben nicht technische Schulden (engl. technical debt) repräsentieren (im Sinn von https://en.wikipedia.org/wiki/Technical_debt) sondern eher Nutzerengagement.

[23] Machen Sie sich für den Anfang nicht zuviele Gedanken über das richtige Format. Wenn Sie ihre Meinung später ändern, können Sie immer noch eine autmatische Konvertierung mittes http://johnmacfarlane.net/pandoc/ durchführen.

[24] Häufig gestellte Fragen