Was kommt dabei heraus, wenn man Open-Source-Ideen, moderne Versionierungskonzepte und die mächtige Kommunikationsinfrastruktur eines sozialen Netzwerks in einen Topf wirft und gut umrührt? Natürlich eine der spannendsten und populärsten Entwicklerplattformen der Welt. Gastautorin Ninja Lamberty über den Social-Coding-Dienst github, der kürzlich seinen vierten Geburtstag feierte und als Hoster von Projekten wie Joomla!, jQuery, Linux Mint, Perl, PHP oder Ruby kaum noch wegzudenken ist.
Ein großer Vorteil bei der Entwicklung von Open-Source-Software besteht darin, dass man eine große Anzahl von Entwicklern zur Verbesserung und Weiterentwicklung der Software anzapfen kann. Weil jeder den Quellcode der Projekte einsehen kann, werden nicht nur Bugs schneller gefunden, sondern auch schneller gefixt. Neue Features können von jedem hinzugefügt werden, der sich beteiligen möchte. Projekte wie Linux, Apache oder MySQL, die das Herzstück vieler Internetseiten bilden, sind Produkte der Open Source Community.
Das Gatekeeper-Problem
Das gemeinsame Entwickeln hat allerdings nicht nur Vorteile: Wenn jeder zu einem Projekt beitragen kann, wird die zielgerichtete Weiterführung und Qualitätskontrolle nicht gerade einfacher. Üblicherweise wird dieses Problem dadurch gelöst, dass einige sogenannte „Trusted Developers“ bestimmt werden, die als Gatekeeper des Projekts fungieren und Schreibzugriff auf das Main Repository (die Hauptquelle) erhalten.
Das führt allerdings zu neuen Problemen: Wie leitet man seine Updates an die Gatekeeper weiter, und wie überzeugt man sie davon, dass dieser oder jener Patch unbedingt ins Main Repository muss? Überlegungen dieser Art können Entwickler und Gatekeeper viel Zeit kosten – und machen die Beteiligung an einem Projekt eher unattraktiv.
Eine Lösung des Problems lieferte kein geringerer als Linus Torvalds anno 2005 mit seinem Versionskontrollysystem Git: Fortan konnte jeder einfach eine Fork (Abzweigung) von einem Projekt erstellen und diese Änderung mit dem Rest der Welt teilen.
Social Coding mit GitHub
GitHub versucht nun seit Anfang 2008 Git für die Massen zugänglich zu machen, indem es eine zuverlässige und einfache Art bietet, Projekte zu hosten. GitHub kann am besten als großer Marktplatz für Open-Source-Projekte verstanden werden, auf dem jeder einfach und demokratisch etwas zu einem Projekt beitragen kann. Mit der Stärke von Git, diversen Features aus Sozialen Netzwerken sowie eigenen Innovationen hat GitHub den perfekten Ort für Social Coding geschaffen.
Benutzer können anderen Benutzern folgen und sehen, an welchen Projekten gearbeitet wird. Oder sie beobachten die Entwicklungen und Änderungen eines bestimmten Vorhabens. Etwas zu Projekten beizutragen, ist ganz einfach: Sozusagen per Knopfdruck kann man eine Fork erstellen und die Änderungen später per Pull Request an den Projekteigentümer zurücksenden. Der entscheided nun über deren Integration.
Die Pull-Anfrage ist wohl eine der größten Innovationen von GitHub. Sie zeigt alle Änderungen zwischen zwei Verzweigungen und ist eine große Hilfe, wenn man den Beitrag eines Benutzers zu einer bestimmten Fork mit dem Hauptzweig des Projekts vergleichen will. Durch die Pull Request und die Möglichkeit, einzelne Codezeilen mit Kommentaren zu versehen, hat man nun ein Tool, das sich sowohl zur Überprüfung von Code als auch zur Diskussion von Änderungsvorschläge perfekt eignet. Jeder kann Pull Requests kommentieren, was zu einer sehr effizienten Kommunikation ganz nah am Code führt.
GitHub bei Springest
In unserer Firma haben wir zunächst ein anderes Tool für unsere Projekte benutzt, uns aber schließlich aufgrund der besseren Kooperationsmöglichkeiten für einen Wechsel zu GitHub entschieden. Heute wird für jeden Bugfix oder jedes neue Feature eine Verzweigung angelegt. Ein Entwickler erstellt eine Pull Request, wenn er meint, dass eine Verzweigung in den Hauptzweig zurückgeführt werden soll. Andere Entwickler können seinen Code nun a) überprüfen, b) kommentieren, c) entscheiden, ob die Verzweigung zurückgeführt wird oder auch d) zusätzlichen Code für eine weitere Verzweigung hinzufügen, um diese dann in den Hauptzweig zurückzuführen. Auf diese Weise ist kein zentraler Code Gatekeeper erforderlich, und die Entwicklung, das Testen und die Begutachtung sind über alle Entwickler verteilt – wodurch bei Springest sauberer Code schneller online geht. Eine Begrenzung der Anzahl offener Pull Request sorgt im Übrigen dafür, dass sich niemand verzettelt.
Durch GitHub kommen wir völlig ohne Meetings aus und sind sehr flexibel in Sachen Arbeitsort und Arbeitszeiten. Darüberhinaus können alle getroffenen Entscheidungen einfach gefunden werden, wenn wir uns in Zukunft einmal darauf beziehen müssen.
Springest-Repositories
Auch wenn der Springest Core geschützt und nicht Teil des Social-Coding-Experiments ist, stellen wir auf unserem GitHub-Profil verschiedene kleine Open-Source-Tools zur Verfügung, die von der Community genutzt, weiterverbreitet und weiterentwickelt werden können. Bisher sind unsere beiden Erweiterungen für CakePHP mit etwa 4-5 Beobachtern (Entwickler, die Änderungen verfolgen) und zwei Forks (Entwickler, die die Software nutzen und weiterentwickeln) die beliebtesten.
Wir möchten an dieser Stelle nochmals alle Entwickler ermutigen, uns bei der Weiterentwicklung dieser Tools zu unterstützen. Erstellen Sie einfach eine Fork und schicken Sie eine Pull Request, wenn Sie eine nützliche Ergänzung haben!
Ninja Lamberty studierte an der NHTV Breda und ist seit 2010 Business Developer bei Springest, einer unabhängigen Online-Plattform zum Thema Fort- und Weiterbildungen. Lernwillige können dort Seminare und Kurse vergleichen, Bewertungen und Beschreibungen abrufen, kostenlos Infomaterial von Bildungsanbietern bestellen oder themenspezifische Fragen stellen. Das Unternehmen wurde 2008 in den Niederlanden gegründet und ist seit März 2012 auch auf dem deutschen Markt aktiv.