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.
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.
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.
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.
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:
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.
Der erste Schritt besteht darin, eine GitHub-Organisation einzurichten und zwei Repositories zu erstellen:
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:
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.
Da es nun eine Organisation, einige Repos mit Problemen und eine gewisse Struktur gibt, ist es Zeit für die Automatisierung.
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:
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.
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 .
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.
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:
README.md
oder .json
Dateien auf GitHub abgerufen. Jeder kann bearbeiten, kein CMS oder Konto etc. erforderlichevents
Repo).
Alle diese Funktionen waren über die GraphQL-API und durch das Parsen der Markdown-Dateien mit dem Body-Parser möglich.
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:
Der Aufbau all dessen hat viel Zeit und Energie gekostet und es fehlen immer noch viele Dinge, für die ich keine Zeit habe:
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.