GitHub - UOS-Open-Source-Softwareentwicklung/oss1314 GitHub Wiki

GitHub

Kurzbeschreibung eines Open Source-Tools

Christian Flothmann, [email protected], Universität Osnabrück

Kollaborative Entwicklung

Entwickler quelloffener und freier Software benötigen Tools, die die Entwicklung und die Verbreitung ihrer Software erleichtern. Der Endanwender soll möglichst leicht die fertige Software herunterladen und im Falle von Fehlern bzw. um neue Features vorzuschlagen, ohne großen Aufwand mit dem Entwickler kommunizieren können.

Gleichzeitig ist der Urheber einer Software daran interessiert, andere Entwickler für seine Software zu begeistern und ihnen das Beheben von Fehlern oder die Implementation neuer Features zu erleichtern, ohne ihnen unkontrollierte Schreibrechte auf den Quellcode einzuräumen.

GitHub ist ein webbasierter Service, der Open Source Projekten kostenlose Repositories offeriert. Die Weboberfläche stellt Entwicklern und Usern eine Palette von Werkzeugen zur Verfügung, die das kollaborative Entwickeln von Software erleichtern.

GitHub-Features

Im Zentrum von GitHub stehen Repositories. Jeder Benutzer kann nach der Registrierung beliebig viele, öffentlich einsehbare Repositories anlegen. Benutzer können gemeinsam Organisationen gründen und im Kontext einer Organisation, Repositories anlegen. Der Zugriff auf die Repositories erfolgt wahlweise per Git über SSH bzw. HTTPS oder mit dem Subversion-Protokoll über HTTPS.

Über das GitHub-Webinterface können interessierte Nutzer sich durch die Verzeichnisstruktur des Quellcodes klicken und Dateien in einer Quellcode-Ansicht mit Syntax-Highlighting betrachten. Es gibt die Möglichkeit, die Historie einzelner Dateien zu betrachten. Haben mehrere Personen zu einer Datei beigetragen, werden deren Benutzer-Icons oberhalb des Dateiinhaltes dargestellt (s. Abbildung 1).

Kollaborateure einer Datei

Abbildung 1: Kollaborateure einer Datei

Standardmäßig hat nur der Eigentümer Schreibrechte an seinem Repository, er kann jedoch beliebig viele weitere Kollaborateure zu seinem Projekt hinzufügen. Möchte ein Entwickler Veränderungen an einer Software vornehmen, für die er nicht als Kollaborateur eingetragen ist, kann er das existierende Projekte forken. Dabei wird eine Kopie des Quellcodes in einem Repository mit gleichem Namen in seinem Account angelegt, zu dem er die benötigten Schreibrechte hat. Es ist ihm nun möglich, die gewünschten Änderungen an seiner Kopie des Quellcodes vorzunehmen. Das Webinterface bietet ihm dann die Möglichkeit, einen Pull Request an das ursprüngliche Projekt zu schicken. Jeder Benutzer kann öffentlich alle offenen Pull Requests zu einem Projekt einsehen. Für jeden einzelnen Pull Request werden übersichtlich dargestellt, welche Änderungen innnerhalb des geforkten Projektes an dem Quellcode vorgenommen wurden. Nutzer können diese Änderungen direkt innerhalb der Quellcodeansicht kommentieren (s. Abbildung 2).

Kommentaransicht eines Pull Requests

Abbildung 2: Kommentaransicht eines Pull Requests

Ist der Projekteigentümer mit den Änderungen einverstanden, kann er die vorgeschlagenen Änderungen innerhalb der Oberfläche übernehmen. Im Hintergrund wird dann der Branch des geforkten Projektes in das Git-Repository des Projektes gemergt. Ist der Projekteigentümer mit den Änderungen nicht einverstanden, kann er sie ablehnen und den Pull Request schließen.

Neue Features oder Fehler können Benutzer über das Ticketsystem innerhalb der Repositories hinterlegen. Diese können durch Labels kategorisiert und einem Milestone (beispielsweise einem Release) zugeordnet werden (s. Abbildung 3). Auch innerhalb von Tickets können Benutzer über Kommentare miteinander kommunizieren.

Offene Tickets

Abbildung 3: Offene Tickets eines GitHub-Repositories

Innerhalb von Kommentaren auf GitHub zu Tickets und Pull Requests sowie in den Commit-Nachrichten des Git-Repositories werden bestimmte Zeichen in der Weboberfläche automatisch in Links zu entsprechenden Ressourcen umgewandelt. So ist es möglich, auf andere Tickets und Pull Requests (durch Eingabe von des #-Zeichens gefolgt von der Ticket- oder Pull Request-Nummer) oder einzelne Commits (durch Eingabe des eindeutigen Hashs des Commits) zu verweisen. Zudem unterstützt GitHub die Markdown-Syntax (http://daringfireball.net/projects/markdown/), um Texte zu formatieren.

GitHub visualisiert an vielen Stellen innerhalb des Webinterfaces Statistiken und Aktivitäten von Nutzern und Projekten. Abbildung 4 zeigt diese Form der Darstellung links für einen einzelnen Benutzer und rechts für ein Projekt.

Aktivitäten von Benutzer und in Projekten

Abbildung 4: Aktivitäten von Benutzer und in Projekten

Um wichtige Aktivitäten in Projekten nicht zu verpassen, werden Benutzer bei neuen Pull Requests und Tickets in ihren Repositories benachrichtigt. Zusätzlich können Benachrichtigungen für fremde Repositories oder einzelnen Tickets und Pull Requests aktiviert werden. Selektiv können die Benachrichtigungen jedoch auch wieder deaktiviert werden, wenn ein Nutzer zwar beispielsweise grundsätzlich an den Aktivitäten eines Projektes interessiert ist, ein konkreter Featurevorschlag ihn aber tangiert.

Bei Problemen erhalten Benutzer Hilfe in der GitHub-Dokumentation (https://help.github.com/) und kostenlosen E-Mail-Support (https://github.com/contact). GitHub kann über eine API (http://developer.github.com/) und mit individuell in den Repositories zu konfigurierenden Hooks zu externen Tools in den Entwicklungsprozess integriert werden.

GitHub Inc.

GitHub wurde 2008 von Tom Preston-Werner, Chris Wanstrath und PJ Hyett gegründet. Die Firma GitHub Inc., die sich für den Betrieb von GitHub und der um die Plattform organisierten Dienstleistungen verantwortlich zeigt, hat ihren Sitz in San Francisco. [1] Aktuell arbeiten weltweit über 200 Mitarbeiter als Designer, Entwickler und Support-Dienstleister für GitHub Inc. [2]

Das Unternehmen betreibt nicht nur die GitHub-Plattform und bietet zusätzliche kommerzielle Dienstleistungen um GitHub herum an (s.u.), sondern vertreibt unter anderem auch Souvenirartikel in einem eigenen Onlineshop (http://shop.github.com/). Ein Team aus Trainern bietet Web-based Trainings und Präsenzschulungen an (http://training.github.com/). Auf einem eigenen Blog (https://github.com/blog) berichtet das Unternehmen regelmäßig über die neuesten Entwicklungen rund um GitHub.

Kommerzielle Dienstleistungen

Für quelloffene Projekte ist GitHub kostenlos nutzbar. Jeder User kann den Quellcode der Projekte einsehen, Repositories forken, Forks beliebig modifizieren und Änderungen an das Ursprungsprojekt zurückübertragen oder ein eigenes Release der Software veröffentlichen. Entwickler, die den Quellcode ihrer Software nicht offenlegen, oder Organisationen, die die Hoheit über ihre Daten nicht an externe Dienstleister verlieren möchten, können entsprechende kostenpflichtig Dienstleistungen von GitHub Inc. In Anspruch nehmen.

Private Repositories

Privatpersonen und Firmen haben die Möglichkeit, ihre Accounts um eine gewisse Anzahl an privaten Repositories zu erweitern. Das Angebot reicht für Privatpersonen von fünf Repositories für 7 US-Dollar pro Monat bis zu 50 Repositories für 50 US-Dollar im Monat. Für Firmenkunden beginnt der Einstieg mit zehn Repositories bei 25 US-Dollar und kostet in der größten Paketvariante mit 125 privaten Repositories 200 US-Dollar pro Monat. Die Anzahl der Kollaborateure je privatem Repository ist nicht beschränkt, der lesende Zugriff auf private Repositories ist im Gegensatz zu öffentlichen Repositories nur durch vorherige Zugriffserteilung des Repository-Eigentümers möglich. Bei Bedarf können ebenso individuelle, größere Pakete auf Anfrage gebucht werden. [3]

GitHub Enterprise

Organisationen, die ihren Code nicht bei einem externen Dienstleister in der Cloud hosten möchten, können die GitHub-Platform auch auf eigenen Server selbst betreiben. Diese unter dem Namen GitHub Enterprise vertriebene Plattform bietet die gleichen Funktionalitäten wie der auf github.com gehostete Service, kombiniert mit dem Vorteil der Hoheit über die eigenen Daten. GitHub Enterprise wird unter anderem von Unternehmen wie Blizzard (), rackspace () und der University of Minnesota () verwendet. [4]

Die Lizenzkosten für GitHub Enterprise richten sich nach der Größe des Teams und liegen zwischen 5000 US-Dollar (für Teams mit bis zu 20 Mitgliedern) und 250.000 US-Dollar pro Jahr (bis 999 Mitarbeiter). Größere Teams müssen ein individuelles Angebot mit GitHub Inc. aushandeln. [5]

Eigentümer von GitHub Enterprise-Lizenzen erhalten werktags üblicher innerhalb eines Tages Antworten auf Supportanfragen. Auf Notfälle soll laut Produktbeschreibung innerhalb eines 30-minütigen Zeitfensters reagiert werden. [6]

Referenzen: