GitHub, GitLab und ähnliches zur einfacheren Zusammenarbeit bei Projekten abseits von Programmieren

14. Sep 2018 | Blog

VON Florian Nachbagauer

Für den Großteil aller Softwareentwickler ist das Versionsverwaltungsprogramm Git mittlerweile nicht mehr wegzudenken.  Plattformen wie GitHub oder GitLab integrieren die Git-Funktionalität in einem benutzerfreundlichen Webinterface, das außerdem noch viele nützliche Zusatzfeatures bietet, mit denen gemeinsames Arbeiten enorm erleichtert wird. Ursprünglich zur Verwaltung von Softwareprojekten und Programmcodes gedacht, werden GitHub und GitLab mittlerweile bei Projekten aller Art eingesetzt, bei denen mehrere Personen gemeinsam an etwas arbeiten. Die Einsatzmöglichkeiten reichen von Hausrenovierung über Reiseplanung, gemeinsames Komponieren, die gemeinsame Entwicklung von Kochrezepten, Büchern, Schriftarten, juristischen Dokumenten und mehr.


Wie die Namen schon erkennen lassen, liegt im Herzen all dieser Systeme das Open Source Programm Git, welches vom Linux-Erfinder Linus Torvalds initiiert und maßgeblich mitentwickelt wurde. Eine Online-Umfrage über das beliebteste Versionsverwaltungsprogramm aus dem Jahr 2016 ergab mit 87% einen deutlichen Sieg für Git. Git ermöglicht, dass mehrere Personen gleichzeitig an einem Projekt arbeiten und selbst an ein und derselben Datei Änderungen durchführen können. Dabei gibt es üblicherweise ein „Repository“, das heißt einen zentralen Speicherort irgendwo im Internet oder in einem firmeninternen Netzwerk, wo das Projekt mit der gesamten Versionshistorie abgelegt ist. Beteiligte Personen arbeiten jedoch nie direkt auf den Dateien im zentralen Repository, sondern auf einer Spiegelung davon auf ihren eigenen Rechnern. Ändert jemand eine Datei, werden ihm zuerst alle Änderungen detailliert aufgelistet und er kann sie, wenn gewollt, ins zentrale Repository einpflegen oder auch wieder verwerfen. Git unterstützt dabei sogenannte Branches, also Entwicklungszweige. Dabei gibt es üblicherweise einen Master-Branch, also einen Hauptast, der den offiziellen Stand des Projektes repräsentiert. Beginnt jemand mit einem neuen Teil des Projektes, zweigt der- oder diejenige vom Master-Branch ab und pflegt seine Änderungen von nun an in einem separaten Feature-Branch ein, wobei der Master-Branch davon nichts mitbekommt. Ist der neue Projektteil fertig, wird der Feature-Branch mit dem Master-Branch zusammengeführt. Falls es in der Zwischenzeit andere Änderungen im Master-Branch gab, kann Git die Änderungen im Master- und Feature-Branch im Normalfall automatisch kombinieren. Das alles klingt jetzt sehr technisch, vor allem viel zu technisch für Leute, die einfach nur gegenseitig ihre Kochrezepte verbessern wollen. Abhilfe schaffen hier Plattformen wie GitHub und GitLab.


Die primäre Leistung dieser Plattformen ist, dass sie die zentralen Repositories zur Verfügung stellen. Das kann entweder über GitHub/GitLab-eigene Server über deren Internetseite laufen oder auch über einen internen Server in einem Firmennetzwerk (Self-Hosting). GitHub oder GitLab bieten aber weit mehr als nur ein zentrales Repository, was diese Services auch für Projekte, die nichts mit Programmieren zu tun haben, sehr interessant macht. Zunächst bieten sie benutzerfreundliches Webinterface, sodass man sie großteils auch rein als Browseranwendung benutzen kann, ohne sich mit technischen Details von Git und Branches beschäftigen zu müssen. Wenn jemand eine Datei bearbeiten möchte, kann er oder sie das direkt über den Browser machen und mit dem Speichern der Änderungen erhält der Projektverantwortliche ein sogenanntes „Merge-Request“, wo er entscheiden kann, ob er die Änderungen seiner Kollegin/seines Kollegen in den Master-Branch mitaufnimmt oder eben nicht. Der „einfache“ Mitarbeiter muss dabei nichts von Branches verstehen. Zum Projekt lässt sich auch eine einfache Übersichtsseite und sogar ein Wiki einrichten. Einer der nützlichsten Punkte aber ist das „Issue Tracking“. Hat man einen Fehler gefunden, wünscht man sich ein neues Feature oder will man einfach für sich selbst oder jemand anderes ein ToDo notieren, legt man ein Issue an. Diese Issues lassen sich nach beliebig definierbaren Kategorien gruppieren und im Issue Board übersichtlich anzeigen. Jedes Issue kann einer Person zugewiesen und mit einer Deadline versehen werden. Außerdem kann man zu jedem Issue eine eigene Diskussion eröffnen, wo man z.B. wie in einem ausgewachsenen sozialen Netzwerk Likes und Dislikes vergeben kann, oder man erwähnt eine Person in einem Kommentar und diese wird automatisch per Email benachrichtigt.


Dies alles ermöglicht eine neue Kultur der Zusammenarbeit. Beteiligte werden motiviert, Verbesserungen am Projekt und an Dateien vorzunehmen, denn alle Änderungen können von den anderen Beteiligten in ihrer eigenen Zeit durchgesehen und kommentiert werden. Man kann zu jedem Zeitpunkt zu jeder früheren Version zurückkehren. Arbeitet man auf Dateien in einem gemeinsamen Netzlaufwerk, hat man eher die Angst, etwas falsch oder kaputt zu machen oder gar etwas unwiderruflich zu löschen. Wenn derartiges nicht passieren kann, ist die Hürde, sich einzubringen, viel geringer. Unser Team selbst hat seit einiger Zeit GitLab im Einsatz und wir können uns nicht mehr vorstellen, ohne dieses System zu arbeiten.

Hier können Sie den Verfasser gerne kontaktieren: florian.nachbagauer@grawe.at