paint-brush
GitHub und die Kunst, offene Communities aufzubauenby@patrickheneise
184

GitHub und die Kunst, offene Communities aufzubauen

Patrick Heneise11m2023/12/20
Read on Terminal Reader

In diesem Artikel teile ich meine Erfahrungen und Ideen zum Aufbau offener Communities. Ich habe an diesem Konzept und diesen Tools gearbeitet, um Dinge für die Community-Automatisierung zusammenzusetzen, und ich hoffe, dass dies Ihnen und Ihrer Community dabei helfen kann, die Dinge einfacher zu machen.
featured image - GitHub und die Kunst, offene Communities aufzubauen
Patrick Heneise HackerNoon profile picture
0-item
1-item
2-item

Gemeinschaften sind hart. Sie sind schwer aufzubauen, schwer zu warten und schwer zu wachsen. Aber der Aufbau von Gemeinschaften war eines der lohnendsten Dinge in meiner Karriere, weil ich so viele tolle Menschen kennengelernt habe und gezwungen war, außerhalb meiner Komfortzone zu lernen und Dinge zu tun.


Ich erinnere mich, dass ich vor über 10 Jahren an meiner ersten kleinen Tech-Konferenz teilgenommen habe – der CouchConf in Berlin. Glücklicherweise fand ungefähr zur gleichen Zeit ein BerlinJS-Meetup statt und ich war überwältigt von der Community und den Leuten. Sie haben ein GitHub-Repository für die Website eingerichtet und Vorträge werden als GitHub-Probleme eingereicht. Ich war erstaunt über die Einfachheit und Transparenz des Prozesses, also habe ich das Repo abgespalten und ein paar Wochen später BarcelonaJS gegründet. Dies war der Beginn meiner eigenen Reise als Organisator.


Eine kleine Anekdote über ein ganz normales und sehr frustrierendes Erlebnis: Sie haben Stunden damit verbracht, sich vorzubereiten, zu kommunizieren, Referenten zu finden und einzuladen, einen Termin und einen Veranstaltungsort zu finden und zu sichern, mit Sponsoren für Essen und Getränke zu sprechen – und das alles, um eine großartige Veranstaltung auf die Beine zu stellen. Und wenn es soweit ist, sitzen Sie allein oder mit einem Bruchteil der Leute da, von denen Sie erwartet hatten, dass sie kommen würden, denn Meetup sagt „150 Leute haben mit JA zugesagt“. Und in einem seltenen Fall war das einfach Pech mit dem Wetter, aber häufiger hörte ich Folgendes, wenn ich danach mit Leuten sprach:


Das ist erstaunlich, ich wünschte, ich wäre dort gewesen, aber ich wusste es nicht!


Dieser Satz war für mich die Motivation, GitHub als Community-Tool zu erkunden, denn GitHub ist eine der erstaunlichsten Plattformen für die Automatisierung und genau das müssen Sie als Organisator tun: den Mist aus allem automatisieren, um die Veranstaltung auf Eventbrite zu veröffentlichen. Meetup, Twitter, Facebook, Telegram-Gruppen, WhatsApp, E-Mail, Kalender usw. usw. usw. und zwar 2 Wochen vorher, 1 Woche vorher, 3 Tage vorher, 1 Tag vorher, 1 Stunde vor der Veranstaltung, damit niemand es hinterher sagen kann : „Das wusste ich nicht“. Denn letztendlich tun Sie dies nicht für sich selbst, sondern für die Gemeinschaft.


Während meiner Reisen bin ich auf Meetup auf Node.js- und JavaScript-Communitys mit Tausenden von Mitgliedern gestoßen, aber nicht auf eine einzige bevorstehende oder aktuelle Veranstaltung. Das kann viele Gründe haben, aber oft liegt es daran, dass die Organisatoren keine Zeit haben oder sich anderen Dingen zugewandt haben und es schwierig ist, einen Nachfolger zu finden, der die Dinge am Laufen hält. Meetup und andere Plattformen eignen sich hervorragend zum Entdecken von Communities und Events, erschweren es den Mitgliedern jedoch, mit der Community in Kontakt zu treten, falls ein Organisator nicht mehr aktiv ist, und die Community zu übernehmen/wiederzubeleben.


Als Entwickler verbringe ich viel Zeit auf GitHub und bin mit den Tools und Arbeitsabläufen vertraut. Deshalb begann ich zu erkunden, wie man GitHub als Community-Plattform nutzen kann.

Vorteile der Verwendung von GitHub für den Community-Aufbau

Open Source und offene Community

Der erste und offensichtlichste Vorteil besteht darin, dass öffentliche Repositories auf GitHub Open Source sind. Das bedeutet, dass alle Inhalte, Probleme und Diskussionen öffentlich sind und von jedem geteilt, kopiert und wiederverwendet werden können. Das ist großartig für Communities, denn wenn die Community aufgegeben wird, kann jeder sie teilen und die Arbeit fortsetzen. Das bedeutet auch, dass Sie, wenn Sie eine neue Community gründen möchten, eine bestehende Community forken und an Ihre Bedürfnisse anpassen können.


GitHub verfügt über eine integrierte Benutzer-/Team-/Organisationsverwaltung, sodass Sie nichts selbst erstellen müssen. Es ist ganz einfach, jemanden in die Organisation einzuladen oder Teams mit unterschiedlichen Berechtigungen der Organisation hinzuzufügen.


Die meisten von uns wissen, wie man GitHub verwendet und besuchen die Website täglich, sodass es nicht nötig ist, zusätzliche Websites für die Datenbankverwaltung, Inhaltsverwaltung oder andere Tools mit Lesezeichen zu versehen. Mit GitHub Actions können wir automatisierte Aufgaben nach einem Zeitplan oder bei Bedarf ausführen, und mit GitHub Pages können wir unsere Community-Website kostenlos hosten.

Bauen in Öffentlichkeit und Transparenz

Einer der wichtigsten Vorteile des Aufbaus einer Community auf GitHub ist für mich vollständige Transparenz und offene Kommunikation. Alles[1] ist öffentlich, sodass Sie sich keine Sorgen darüber machen müssen, wer Zugriff auf was hat. Das bedeutet, dass jeder zur Community beitragen kann und jeder sehen kann, was vor sich geht. Dies ist großartig, um Vertrauen aufzubauen und eine Gemeinschaft aufzubauen, die alle einbezieht und willkommen heißt.


Mein Ziel mit Communities wie BarcelonaJS, CDC usw. war/ist es, freie und offene Räume für Entwickler zum Teilen und Vernetzen zu schaffen. Und bei „kostenlos“ kommt die Transparenz ins Spiel. Von finanziellen Zuwendungen habe ich früher immer die Finger gelassen. Wenn ein Unternehmen sponsern wollte, könnte es Essen oder Getränke direkt zum Veranstaltungsort bestellen, aber ich würde nicht unterstützen. Dank des Open Collective ist dies viel einfacher geworden und wir sind nun in der Lage, finanzielle Beiträge anzunehmen und diese für die Community transparent zu machen. Diese werden beispielsweise verwendet, um die Domain(s) zu bezahlen, Essen und Getränke zu erhalten, Werbekampagnen durchzuführen usw.


[1] Natürlich können Sie auch ein privates Repo für interne Organisatordiskussionen usw. erstellen.

Nachteile und Vorbehalte

GitHub ist keine Community-/Event-Plattform wie Meetup, daher gibt es einige Einschränkungen. Ich habe mich daran gewöhnt, Probleme als „Ereignisse“ oder „Vortragsvorschläge“ zu behandeln und Einreichungen mithilfe von GitHub-Problemformularen zu strukturieren. Aber es ist nicht ideal und es braucht Zeit, bis Neulinge verstehen: „Erstellen Sie ein Problem, um einen Vortrag einzureichen.“ Es gibt keine „Komfortfunktionen“, um ein Datum, einen Ort auf einer Karte usw. auszuwählen und eine einfache E-Mail-Benachrichtigung an Hunderte von Personen auszulösen.

Die offene (Entwickler-)Community

Dieses gesamte Konzept konzentriert sich in erster Linie auf Entwickler und Ingenieure, da es sich um GitHub und IssueOps entwickelt. Um einen Eindruck von meinen bisherigen Erfahrungen zu vermitteln, finden Sie hier einige Communities und Konferenzen, an deren Aufbau ich mitgewirkt habe:


  • BarcelonaJS , 2012 - 2018
  • Hacker & Gründer Barcelona, 2012 – 2015
  • Node.js Barcelona Meetup Group, 2012–2018
  • Couchbase Barcelona Meetup, 2012–2015
  • NodeConf Barcelona, 2015, 2016, 2017
  • MediterráneaJS, 2015
  • ZypernJS 2018 - 2021
  • Zypern Developer Community 2020 – heute


Während ich diese erstellte, habe ich kontinuierlich an einer Reihe von Tools, Arbeitsabläufen und Automatisierung gearbeitet, um das Leben von Organisatoren zu erleichtern, da es sich um eine so harte und oft undankbare Aufgabe handelt. Hier ist mein Open-Community-Konzept , wie ich eine öffentliche Community auf GitHub aufbaue.

Etiketten und Struktur

Der erste Schritt besteht darin, eine GitHub-Organisation einzurichten und zwei Repositories zu erstellen:

  1. Veranstaltungen
  2. Gespräche


Die Namen liegen auf der Hand: Im Veranstaltungs-Repository befinden sich Vorlagen zum Erstellen neuer Veranstaltungen und im Vortrags-Repository Vorlagen zum Einreichen von Vortragsvorschlägen . Vorträge können mit Veranstaltungen verknüpft werden, um eine Agenda zu erstellen, und wenn es Ihnen gelingt, Engagement aus der Community zu gewinnen (denken Sie daran: es ist schwer!), können Kommentare und Reaktionen wie 👍 oder ❤️ verwendet werden, um über Vorträge abzustimmen.


Sie können auch ein GitHub-Projekt verwenden, um den Veranstaltungslebenszyklus über die Vorschlags-, Planungs- und Ankündigungsphasen hinweg zu verwalten:

GitHub-Projektansicht


In Zypern haben wir Labels für die verschiedenen Regionen der Insel hinzugefügt, aber am wichtigsten ist ein „Approved“-Label. Alle neuen Probleme werden mit der Bezeichnung „Veranstaltung“ erstellt, aber nur jemand mit der Berechtigung „Triage“ (Organisatorenteam) kann die Veranstaltung „genehmigen“. Dies ist wichtig, um Spam zu vermeiden und sicherzustellen, dass die Veranstaltung relevant ist.

GitHub-Ereignisbezeichnungen


Da es nun eine Organisation, einige Repos mit Problemen und eine gewisse Struktur gibt, ist es Zeit für die Automatisierung.

GitEvents

GitEvents / GitEvents auf GitHub gibt es schon seit langem (2014) und begann mit dem Namen gitup als gemeinsames „Hack-Weekend“ zwischen der London Node User Group (LNUG) und der Barccelona Node.js Group. Damals gab es noch keine GitHub-Aktionen und wir haben versucht, Webhooks für Probleme zu verwenden, um strukturierte Daten für von GitHub gehostete Websites basierend auf Meetup.com-Daten aufzubauen. Der Aufbau war umständlich und das Projekt wurde für eine Weile aufgegeben.


Heute ist GitEvents ein einfacher Satz von GitHub-Aktionen zur Automatisierung von Problem-Workflows. „Git Ops“ für Meetups und Events. Alles, was benötigt wird, ist eine GitHub-Organisation und eine GitHub-App. Einige der Funktionen sind:


  • Inklusive Organisation : Jede Interaktion mit GitHub-Repositories, Problemen oder Diskussionen löst einen Workflow aus, um den Benutzer zur GitHub-Organisation einzuladen und ihn dem Team „Community-Mitglieder“ hinzuzufügen. Die Berechtigungen sind die gleichen wie für die Öffentlichkeit, aber ein kleiner „Wachstums- und Engagement-Hack“ besteht darin, dass Sie alle Community-Mitglieder in Vorgängen @-erwähnen können. Das eignet sich hervorragend für Ankündigungen, sollte aber nicht missbraucht werden, da man sonst schnell Mitglieder verliert.
  • Problemvorlagen : Ich habe eine Reihe einfacher Vorlagen für Veranstaltungen, Vorträge, Verhaltenskodex-Antworten usw. zusammengestellt, um schnell mit GitEvents beginnen zu können.
  • Broadcast : sind wiederverwendbare GitHub-Workflows zur Automatisierung von Marketing- und allgemeinen Aufgaben wie E-Mails/Tweets/Blueskying an Mitglieder, Erstellen/Aktualisieren von Events auf Discord, EventBrite, Meetup usw.
  • ICS : ist eine GitHub-Aktion zum Generieren von iCal-Dateien für Veranstaltungen. iCal ist ein Standard für Kalenderereignisse. Die Leute können dies einfach als Abonnement zu ihrem Kalender hinzufügen, um über Community-Events auf dem Laufenden zu bleiben. Wir haben eine Weiterleitung zur Github-Datei erstellt, sodass Benutzer den Kalender über einen einfachen Link abonnieren können: https://calendar.cdc.cy .


Alles ist „Plug-and-Play“, sodass Sie die Aktionen auswählen können, die Ihnen gefallen, und es relativ einfach ist, sie in einem Workflow zusammenzustellen. Beispiele finden Sie in den Arbeitsabläufen der Cyprus Developer Community .


Wenn Sie mit GitEvents beginnen möchten und Hilfe benötigen, wenden Sie sich bitte an unseren Discord-Server. GitEvents ist in Arbeit und es gibt immer viel zu tun, insbesondere mit Integrationen in andere Plattformen usw. Wenn Sie helfen möchten, wenden Sie sich bitte an uns in Kontakt kommen.

GitHub-Problemformulare

Problemformulare sind auf GitHub immer noch ein relativ wenig bekanntes Feature. Anstelle einer regulären Markdown-Vorlage kann eine YAML-Datei mit einer Formularkonfiguration bereitgestellt werden .

GitHub-Problemformular


Das ist ziemlich cool, um strukturierte Eingaben zu erhalten, aber sobald die Daten als „Issue“ gespeichert sind, sind sie semantisch nutzlos, da es sich lediglich um Markdown handelt. Ich habe mit Meilensteinen, Markdown-Headern, Labels usw. experimentiert, um einem Problem semantische Informationen wie Datumsangaben, Orte usw. hinzuzufügen, aber nichts hat gut funktioniert. Also begann ich mit dem Aufbau des GitHub Issue Forms Body Parser . Dies hilft beim Analysieren eines Problems, das über ein Formular erstellt wurde, um Daten, Links, Bilder, Listen usw. zu extrahieren und sie in strukturierte JSON-Daten umzuwandeln. Dies kann direkt an andere Plattformen wie Discord, EventBrite, Meetup etc. weitergegeben oder in Mailings, Tweets etc. verwendet werden.


Der Issue Forms Body Parser ist auch auf npm als Bibliothek zum Parsen beliebiger Markdown-Texte verfügbar. Erst kürzlich wurde mir klar, dass ganze README.md Dateien analysiert werden können, um Daten für eine Website zu strukturieren:


 query ($organization: String!, $repository: String!) { repository(owner: $organization, name: $repository) { id name object(expression: "main:README.md") { ... on Blob { text } } } }


Dies ist die Abfrage zum Abrufen von Dateiinhalten aus dem main eines Repositorys. Sie können diese an den „Body-Parser“ übergeben:

const structuredData = await bodyParser(readmeFile()?.repository.object.text)


Anstatt noch eine weitere Kopie Ihrer Community-Beschreibung aufzubewahren, können Sie jetzt den Abschnitt About aus der Datei README.md abrufen und auf Ihrer Website verwenden.

GraphQL-API

Mit der neuesten Website https://cdc.cy wollte ich die Grenzen dessen, was mit Issues, README.md Dateien und strukturierten JSON-Daten möglich ist, erkunden und erweitern und bin mit dem Ergebnis ziemlich zufrieden:


  • Der Großteil des Website-Inhalts wird aus README.md oder .json Dateien auf GitHub abgerufen. Jeder kann bearbeiten, kein CMS oder Konto etc. erforderlich
  • Kommende und vergangene Veranstaltungen basieren auf GitHub-Problemen (genehmigte und mit Ereignissen gekennzeichnete Probleme im events Repo).
  • Organisatoren werden von GitHub-Teammitgliedern abgerufen
  • Ereignisse können mit geeigneten Standortdaten aus einer Datei mit „gemeinsamen Standorten“ kommentiert/erweitert werden
  • Sprecherprofile basieren vollständig auf GitHub-Benutzerprofilen. Wir können Avatare, Biografien (Readme), Standort usw. abrufen und hübsche Sprecherprofilseiten erstellen
  • Wir können einige Statistiken wie „Anzahl der Mitglieder der Organisation“, „Anzahl vergangener/anstehender Veranstaltungen“ usw. anzeigen.


Alle diese Funktionen waren über die GraphQL-API und durch das Parsen der Markdown-Dateien mit dem Body-Parser möglich.

Zusammenfassung & Ausblick

Ich arbeite schon seit einiger Zeit an diesem Konzept und es ändert immer noch von Zeit zu Zeit seine Form. Aber die Grundideen, die ich von BerlinJS übernommen habe, haben sich nicht geändert:


  • Offene Community : Alles ist öffentlich und transparent und jeder ist willkommen (solange er den Verhaltenskodex befolgt)
  • Veranstaltungen und Vorträge/Vorschläge sind Ausgaben in einem Repository
  • Etiketten helfen bei der Strukturierung und Automatisierung


Der Aufbau all dessen hat viel Zeit und Energie gekostet und es fehlen immer noch viele Dinge, für die ich keine Zeit habe:

  • ordnungsgemäße E-Mail-Integration mit Zeitplänen, Erinnerungen usw.
  • Schließen Sie die EventBrite-Integration ab
  • Fügen Sie die Meetup-Integration hinzu
  • Fügen Sie die WhatsApp/Telegram/Slack-Integration hinzu
  • Verbesserung der Problembehandlung und automatische Kommentare (z. B. Verhaltenskodex-Erinnerung, Folgeerinnerung usw.)


Wenn Sie der Meinung sind, dass dies Ihnen und Ihrer Community helfen kann und sich an der Lösung des Puzzles beteiligen möchten, wenden Sie sich bitte an den Discord-Server von gitevents , an GitHub-Diskussionen oder direkt an eines der GitHub-Probleme .


Wenn Sie sich in Zypern oder Barcelona befinden, treten Sie bitte den lokalen Entwicklergruppen bei und unterstützen Sie sie.

Zufällige Gedanken, Tipps und Tricks von Organisatoren aus eigener Erfahrung

  • Veranstaltungsorte: Die Wahl eines Firmenbüros als Veranstaltungsort ist einfach, hat aber viele Nachteile. Es ist einfach, Leute zu manipulieren, wenn man sie erst einmal im Büro hat (schauen Sie sich unseren coolen Ort an, wir haben sogar eine Cocktailbar!). Denken Sie daran, dass das Unternehmen andere Beweggründe hat als Sie (Rekrutierung, Marketing usw.). Manchmal kann es sogar zu Konflikten kommen, dass Personen das Büro des Konkurrenten nicht besuchen dürfen. Wenn möglich bevorzuge ich „neutrale“ Co-Working- und Veranstaltungsräume und dank Open Collective kann man Sponsoren erhalten, um den Veranstaltungsort mit fairen (Rekrutierung/Marketing/usw.) Regeln für alle zu finanzieren.
  • Erinnerungen: Wir sind alle beschäftigt und es ist leicht, Dinge zu vergessen. Nicht jeder ist so engagiert, motiviert und begeistert von der Veranstaltung wie Sie, daher halten regelmäßige Erinnerungen die Leute bei Laune und helfen dabei, eine Gewohnheit zu entwickeln. Finden Sie einen guten Rhythmus für Erinnerungen, übertreiben Sie es nicht und spammen Sie die Leute nicht zu. Unterschiedliche Medien funktionieren für unterschiedliche Menschen, deshalb versuche ich, so viele wie möglich abzudecken.
  • Knappheit „Mir ist aufgefallen, dass es besser funktioniert, die Veranstaltung nur eine Woche vorher anzukündigen und eine begrenzte Anzahl an Sitzplätzen zu haben, als einen Monat im Voraus mit einer Kapazität von über 100 Plätzen freizugeben“ – Dmitry Zaets, BarcelonaJs
  • Vergünstigungen: „Werbegeschenke machen Spaß, und das Verschenken von Eintrittskarten für Konferenzen und andere Dinge kann eine nette Vergünstigung für die Teilnahme sein“ – Dmitry Zaets, BarcelonaJs
  • Konsistenz: „Legen Sie von Anfang an einen realistischen Zeitplan fest. Ob es sich um ein monatliches Treffen oder eine vierteljährliche Konferenz handelt, Konsistenz ist der Schlüssel. Erstellen Sie eine Roadmap, weisen Sie Verantwortlichkeiten zu und halten Sie sich an den Plan. Dies hält Ihr Publikum nicht nur beschäftigt, sondern hilft auch beim Aufbau.“ eine verlässliche Gemeinschaft.“ – Federico Rampazzo, CDC.cy
  • Redner finden: „Scheuen Sie sich nicht, sich an Experten zu wenden, die möglicherweise bereit sind, ihre Erkenntnisse zu teilen. Viele Ihrer Mitglieder haben wahrscheinlich interessante Geschichten, die es wert sind, geteilt zu werden! Es kann sowohl für sie als auch für die Community eine bereichernde Erfahrung sein.“ Das Aufnehmen von Fotos, Videos und Audioaufzeichnungen der Veranstaltungen ist wertvoll und hilft den Rednern bei ihrer Karriere als Redner und erhöht außerdem die Reichweite der Veranstaltung.“ – Federico Rampazzo, CDC.cy