GitHub für den Rest von uns

Es gibt einen Grund, warum Softwareentwickler an den Rändern einer ungleich verteilten Zukunft leben: Ihre Arbeitsprodukte waren immer digitale Artefakte, und seit den Anfängen von Netzwerken waren ihre Arbeitsprozesse miteinander verbunden.

Die Tools, mit denen Softwareentwickler arbeiten können, und die Kulturen, in denen diese Tools verwendet werden, finden ihren Weg in den Mainstream. Rückblickend scheint es offensichtlich, dass E-Mail und Instant Messaging - beide von Entwicklern vor allen anderen verwendet - die Massen erreicht hätten. Diese Kommunikationsarten waren für alle relevant.

Es ist weniger offensichtlich, dass Git, das Tool, das erfunden wurde, um die Entwicklung des Linux-Kernels zu koordinieren, und GitHub, die Tool-basierte Kultur, die es umgibt, ebenso relevant sein werden. Die meisten Menschen haben keinen Code, um ihren Lebensunterhalt zu verdienen. Da die Arbeitsprodukte und -prozesse jedes Berufs zunehmend digitalisiert werden, werden sich viele von uns für Tools interessieren, mit denen sie ihre Arbeit an gemeinsam genutzten digitalen Artefakten koordinieren können. Aus diesem Grund finden Git und GitHub ihren Weg in Workflows, die andere Artefakte als oder zusätzlich zu Code erzeugen.

Wie in Wired, ReadWrite und anderswo berichtet, wird GitHub verwendet, um die gemeinsame Entwicklung von Rezepten, Partituren, Büchern, Schriftarten, juristischen Dokumenten, Lektionen und Tutorials sowie Datensätzen zu verwalten. Wie ist dies angesichts der berüchtigten Komplexität von Git möglich?

Ein Grund dafür ist, dass GitHub nach und nach mehr der zugrunde liegenden Git-Funktionen in seiner Weboberfläche verfügbar gemacht hat. Ein weiterer Grund ist die Entstehung von Webanwendungen, die GitHub als Plattform verwenden. Dann ist da noch der kulturelle Faktor: GitHub verkörpert eine bestimmte Art der Zusammenarbeit. Dave Winer beschreibt es mit dem Satz "Erzählen Sie Ihre Arbeit". Ich habe "beobachtbare Arbeit" verwendet. Die Responsive Organization-Bewegung feiert "Transparenz über die Privatsphäre". Für den Regierungsexperten von GitHub, Ben Balter, ist es "offene Zusammenarbeit". 

Der Blog-Beitrag, in dem Ben Balter diesen Begriff vorschlägt, war unveröffentlicht, als ich ihn las. Da der Blog jedoch in einem öffentlichen GitHub-Repository gehostet wird, konnte ich den Beitrag nicht nur in Entwurfsform lesen, sondern auch die Diskussion mit eingeladenen Rezensenten verfolgen und beobachten, wie diese Diskussion den Entwurf beeinflusste. Ein Repository muss natürlich nicht für die Öffentlichkeit zugänglich sein - aber jede Organisation sollte möchten, dass ihre internen Prozesse diesen Stil der offenen Zusammenarbeit nutzen. Laut Brian Doll, Vice President of Strategy bei GitHub, tun immer mehr Unternehmen genau das.

Heutzutage wird oft gesagt, dass jedes Unternehmen ein Softwareunternehmen ist. Dies gilt abstrakt, wenn Sie geistiges Eigentum als Software definieren. Es gilt aber auch buchstäblich für viele Unternehmen, deren Wert in Software liegt, die sie intern entwickeln.

Es war immer wünschenswert, die Teilnahme an dieser Entwicklung über die traditionellen Disziplinen Code, Test, Qualitätssicherung und Dokumentation hinaus auszudehnen. Wenn der Beitrag, den Sie leisten können, auf Ihrem Verständnis des Geschäfts oder des Kunden basiert, können Sie sich nicht direkt engagieren.

"Das ist verrückt", sagt Brian Doll. „Wenn Sie eine Bank, die Vermögensverwaltung Tools Ihre Mitarbeiter und Ihre Kunden nutzen sind sind das Produkt, wie können diese Menschen keine direkte Hand haben es bei der Verbesserung?“ Mit GitHub kann jeder Stakeholder ein erstklassiger Teilnehmer werden. Anstatt E-Mails zu schreiben, die das Aufzeichnungssystem umkreisen, können sie Pull-Anfragen senden und verwandte Probleme direkt in diesem System diskutieren. 

Das Git-Biest zähmen

Git, die dezentrale Versionskontroll-Engine unter der Haube von GitHub, funktioniert auf eine Weise, die nicht nur Nichtprogrammierer, sondern auch Programmierer überrascht, die von zentralisierten Systemen zu ihr kommen.

In diesen Systemen ist es eine große Sache, einen Zweig innerhalb eines Repositorys zu erstellen, um eine alternative Version einer Reihe von Artefakten zu untersuchen. In Git ist ein Zweig ein leichtes Konstrukt, eine Illusion, die durch Verschieben von Zeigern anstelle von Daten erzeugt wird. In einem herkömmlichen System wäre es undenkbar kostspielig, eine Verzweigung zum Ändern eines einzelnen Wortes in einem Dokument zu erstellen. Git macht dieses Manöver trivial billig. GitHub kann es in einen Workflow - die Pull-Anforderung - einbetten, der die Diskussion der Änderung kapselt und mit dem Änderungsverlauf des Dokuments verknüpft.

Die Protean-Fähigkeiten von Git haben es zu einem Labor für Workflow-Innovationen gemacht, und die vielen Ansätze, die sich herausgebildet haben, weisen eine weitere Komplexitätsebene auf. Die Mechanismen des Verzweigens und Zusammenführens sind schwierig genug, aber es gibt auch verschiedene Denkschulen darüber, wann und wie verzweigt und zusammengeführt werden soll. All dies ist eine Herausforderung für Programmierer und weit über die meisten anderen hinaus. Wie können Sie dieses Biest zähmen, damit nichttechnische Interessengruppen teilnehmen können?

Antwort von GitHub: Erweitern Sie die Website für Kernaktivitäten. Ein Anwalt, der ein Wort in einem Rechtsdokument ändern möchte, muss den beängstigenden Git-Client nicht verwenden. Sie kann die Datei im Browser bearbeiten. Diese Aktion startet einen Pull-Request-Workflow, der die Erstellung eines Zweigs für die vorgeschlagene Änderung automatisiert. GitHubbers sagen gerne: "Es gibt nur einen Weg, etwas zu ändern." Niemand muss dieser goldenen Regel folgen, aber dies folgt einem Weg des geringsten Widerstands.

Infolgedessen kann jeder in einem GitHub-fähigen Unternehmen diese bewährte Methode problemlos anwenden. "Anstatt am Wasserkühler zu meckern, weil die Software schrecklich ist", sagt Brian Doll, "haben Sie eine Möglichkeit, sie zu ändern." Dieses Engagement kann sich auch auf Kunden erstrecken.

Das Ändern von GitHub selbst ist eine andere Sache. "Kurz bevor ich dort eingestellt werde", sagt Greg Wilson, Gründer des Software Carpentry-Projekts, "kann ich nicht korrigieren, wie GitHub Berechtigungen verwaltet, einem Benutzer ermöglicht, mehrere Gabeln eines Repos zu erstellen, oder irgendetwas anderes."

Überall dort, wo die Interaktion im GitHub-Stil aktiviert ist, funktioniert der Änderungsmechanismus auf dieselbe Weise, unabhängig davon, ob der Beitrag zu einer Änderung Code oder Dokumentation oder Rechtsberatung oder Geschäftsperspektive oder Kundenfeedback ist. 

Der Wert dieser gemeinsamen Konvention, der wohl wichtigsten Innovation von GitHub, wird durch andere Konventionen erhöht, die aus sozialen Medien importiert werden. Auf Twitter können Sie beispielsweise die Aufmerksamkeit eines anderen Twitter-Benutzers auf sich ziehen, indem Sie dessen Benutzernamen angeben. Diese @ mention-Technik funktioniert in GitHub für Einzelpersonen und Teams.

Es gibt auch GitHub Pages, einen Dienst, der Websites über GitHub-Repositorys hostet. Es wird von technischen Bloggern bevorzugt, die mit Git vertraut sind und bereit sind, einen Ruby-basierten Site-Generator namens Jekyll zu installieren (und lokal zu verwenden). Aber wie andere festgestellt haben, müssen Sie Jekyll nicht installieren. Es ist möglich, eine GitHub Pages-Site vollständig im Browser zu verwalten und die Vorteile des Versionsverlaufs und der Problemdiskussion zu nutzen.