Blog

👷🏽‍♂️ Gato GraphQL öffentlich entwickeln #1 (März 2021)

Leonardo Losoviz
Von Leonardo Losoviz ·

Willkommen zur allerersten „Building in the Open"-Newsletter!

Das ist ein Kanal, um der Community Neuigkeiten zur Entwicklung von Gato GraphQL zu teilen, der in der ersten Woche jedes Monats verschickt wird.

Durch diesen Raum erfahren wir alles, was im letzten Monat passiert ist, darunter:

✅ Woran wir gearbeitet haben, welche neuen Funktionen wir veröffentlicht haben
✅ Woran wir im kommenden Monat arbeiten werden
✅ Wie viel Traffic wir auf der Website hatten
✅ Wie das Plugin abgeschnitten hat: Anzahl der Downloads, Newsletter-Abonnements, GitHub-Sterne
✅ Fortschritte bei der finanziellen Nachhaltigkeit
✅ Neu veröffentlichte Anleitungen
✅ Zusammenfassung unserer zuletzt veröffentlichten Blog-Beiträge
✅ Kontaktaufnahme / Plugin-Erwähnungen
✅ Allgemeine Neuigkeiten

Wenn dir dieser Newsletter gefällt, lade deine Freunde ein, ihn zu abonnieren.

Los geht's!

Hinweis: Dieser Newsletter ist ein zweiseitiger Kommunikationskanal. Wenn du etwas sagen möchtest, füge gerne einen Kommentar hinzu (am Ende des Blog-Beitrags).

Ein Willkommen zum Newsletter, von deinem Gastgeber

Woran wir programmiert haben

Wenn du dir die Anleitungen anschaust, ist der Abschnitt „Extending Gato GraphQL" noch ziemlich leer:

Anleitungen für „Extending the plugin" sind noch nicht vollständig

Meine Priorität ist es, diese Anleitungen zu vervollständigen. Aber bevor ich das tue, möchte ich, dass der Code des Plugins so einfach wie möglich ist. Je einfacher er ist, desto weniger Dokumentation ist nötig, und desto mehr Menschen sind in der Lage, ihn zu verstehen.

Mit diesem Gedanken habe ich beschlossen, den Code zu refaktorieren, damit er vollständig auf dem Symfony DependencyInjection-Komponenten basiert.

Die Idee ist, dass jede Erweiterung des Plugins (wie ein benutzerdefinierter TypeResolver, FieldResolver oder DirectiveResolver) einfach als Service im Container definiert wird, und der Service wird automatisch über Compiler passes konfiguriert.

Die vollständige Nutzung von Symfonys Dependency Injection hat mehrere Vorteile:

✅ Es gibt einen einzigen, konsistenten Weg, Erweiterungen zu erstellen
✅ Das Erstellen einer PHP-Klasse, die ein Interface implementiert, erledigt die ganze Arbeit, und der Entwickler muss sich nicht mit den Feinheiten beschäftigen
✅ Symfonys Dokumentation ist sehr umfangreich. Indem ich Entwickler darauf hinweise, ist das Dokumentation, die ich nicht schreiben muss

Interessiert am Code? Schau dir meine zuletzt zusammengeführten PRs an (#453, #452, #449 und mehrere andere).

Ich werde in den nächsten Wochen weiter an diesem Code arbeiten, bis die Migration zu 100% abgeschlossen ist und ich die fehlenden Anleitungen schreiben kann.

Traffic zu gatographql.com

Lasst mich eines klarstellen: Mir ist wichtig, wie viele Menschen die Website des Plugins besuchen, als indirekten Hinweis darauf, wie viele Menschen das Plugin kennen.

Ich habe keine tiefen Taschen, um mein Plugin zu bewerben. Und selbst wenn ich sie hätte, würde ich mein Geld nicht für die Werbung ausgeben, da das gegen den Geist von Open Source verstößt. (Das wäre anders, wenn Open Source nur ein Kanal wäre, um ein Produkt oder eine Dienstleistung zu verkaufen, aber das ist nicht mein Fall.)

Das bedeutet, dass ich vollständig auf Mundpropaganda angewiesen bin, um es zu bewerben. Dafür habe ich viel Mühe darauf verwendet, hochwertige Inhalte für den Blog des Plugins zu schreiben, in der Hoffnung, dass diese Inhalte geteilt werden und Menschen erreichen, die das Plugin sonst nicht kennen würden.

Und bisher bin ich mit den Ergebnissen ziemlich zufrieden.

Im letzten Monat hatte ich 4,5k Besucher mit 6k Seitenaufrufen:

Zeig mir das Geld!

Lass uns diese Statistiken aufschlüsseln.

Die meisten meiner Besucher kommen von Hacker News, wo ich einige „Show HN"-Frontseiten erreichen konnte, und von Reddit, hauptsächlich von /r/PHP und /r/graphql (wo ich meine Artikel immer teile).

Ich konnte Platz #1 bei Google für die Suche „wordpress core graphql" erreichen, was viel Traffic brachte. Leider war das ein einmaliges Ereignis: Nach 24 Stunden verschwand es so plötzlich, wie es gekommen war. Ansonsten bekomme ich an einem typischen Tag zwischen 3 und 10 Besucher von Google.

Twitter und Facebook bringen eine beachtliche Menge Traffic, aber ich weiß nicht von wem (nicht von mir, da ich mit sozialen Medien extrem schlecht bin). Ich teile meine Artikel zwar auf Twitter, aber sie werden selten retweetet. Und ich benutze 👎🏾 Facebook nicht.

(Übrigens, für diejenigen unter euch, die meine Artikel in sozialen Medien teilen: Danke ❤️)

Ich bekomme bescheidenen, aber konsistenten Traffic aus der Auflistung der GraphQL-Server in PHP auf graphql.org und von einem Artikel, den ich auf dev.to veröffentlicht habe, der bei der Google-Suche nach „graphql execute multiple queries" auf Platz #1 steht.

Schließlich erscheinen meine Artikel regelmäßig in den wichtigsten WordPress-Newslettern (darunter WP Owls, wpMail.me, Post Status, WP Builds und The WP Weekly). Ich weiß nicht genau, wie viel Traffic jeder von ihnen bringt, da der Referrer als Gmail und ähnliches erscheint. Wenn man sie jedoch zusammennimmt, erzeugen diese Newsletter eine beachtliche Anzahl von Besuchern.

Meine Blog-Beiträge sind bei weitem mein beliebtester Content, wobei die letzten drei (dieser hier, dieser hier und dieser hier) jeweils über 1k Besucher bringen.

Diese Zahlen sehen ziemlich gut aus, vor allem da ich die Website vor weniger als 2 Monaten gestartet habe. Allerdings sieht nicht alles gut aus: Bei 88% ist die Absprungrate ziemlich hoch. Daran muss ich arbeiten.

Metriken

Der Traffic auf der Website ist nur eine dekorative Metrik, um die Bekanntheit des Plugins zu schätzen. Aber viel wichtiger ist die Frage: Wie viele Menschen haben das Plugin im letzten Monat angefangen zu benutzen?

Mein Ruf eilt mir voraus

Im letzten Monat hat sich das Plugin so geschlagen:

🎯 Anzahl der Plugin-Downloads: 170
⭐️ GitHub-Sterne: 27

Die Anzahl der Downloads kann über die GitHub-API abgerufen werden, indem der Parameter per_page=3 übergeben wird, um nur die 3 im letzten Monat erstellten Releases einzuschließen:

curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"

Ich bin weder froh noch unfroh über diese Zahlen. Sie sind nicht großartig (und ich wünschte, sie wären besser), aber es ist ein guter Anfang.

Was die Downloads betrifft, so heißt es, dass es am schwierigsten ist, den ersten Nutzer zu gewinnen. Erst nachdem einige Menschen anfangen, das Plugin zu benutzen und darüber zu sprechen, wird seine Nutzung weiter verbreitet. Ich befinde mich noch in dieser Anfangsphase, die erste Gruppe engagierter Nutzer zu finden.

Was die GitHub-Sterne betrifft, muss ich sagen, dass es ziemlich flach aussieht: durchschnittlich etwa 1 Stern pro Tag. Das ist sicherlich nichts Großartiges. Wenn dir gefällt, was ich mit Gato GraphQL aufbaue, und es dir nichts ausmacht, etwas ❤️ Liebe zu zeigen, dann erwäge bitte, ihm einen ⭐️ Stern auf GitHub zu geben.

Finanzielle Nachhaltigkeit

Das ist die schwierige Frage: Das Projekt muss finanziell nachhaltig sein. Es generiert entweder ein bisschen Geld, oder es wird nicht lange halten.

Hier geht mein Leben rein

Wenn ich in der Lage bin, ein Einkommen für mich selbst zu erzielen, dann kann ich so lange weiter daran arbeiten, wie nötig. Das ist alles, was ich brauche: ein Einkommen. Keine Investoren, die an meiner Tür klopfen und nach Millionen suchen. Nur ein paar Tausend pro Monat, um das Dach über meinem Kopf zu bezahlen.

Mein Ziel ist es, das Plugin vollständig Open Source zu halten. Dafür spreche ich derzeit einige potenzielle Sponsoren an und frage, ob sie die Entwicklung des Plugins finanziell unterstützen möchten. Es wird eine Win-Win-Situation sein.

Warum greife ich auf einige „Schwergewichts"-Sponsoren zurück, anstatt mich auf reguläres Sponsoring von irgendjemandem aus der Community zu verlassen?

Ja, ich habe das auch versucht: Ich bin auf GitHub Sponsors. Allerdings funktioniert das nicht wirklich, es sei denn, du hast bereits Tausende von Nutzern, Followern oder Menschen, die deiner Mailingliste abonniert sind, an die du dich wenden und von denen du erwarten kannst, dass viele von ihnen dich finanzieren.

Wenn ich beispielsweise einen Standard-Betrag von 5 oder 10 USD pro Monat verlange, würde ich mehrere hundert Geldgeber benötigen, damit dieser Ansatz meine Arbeit finanziert. Und davon bin ich noch weit entfernt.

Aber noch mehr: Wer kann mit diesem Ansatz wirklich erfolgreich sein? Ich weiß, dass Caleb Porzio (Schöpfer von Livewire) es geschafft hat und jetzt über 1350 Sponsoren erreicht hat! Aber das ist eher die Ausnahme als die Regel.

Nehmen wir Composer als Beispiel. Composer hat grundlegend verändert, wie wir PHP-Anwendungen entwickeln, und doch haben sie kaum 90 Sponsoren. Wie könnte ich jemals erwarten, mehr Sponsoren als Composer zu bekommen?

Deshalb ist mein aktueller Ansatz, eine Win-Win-Situation für mein Projekt und die wenigen Unternehmen zu schaffen, die bereit sind, es zu sponsern. Hoffen wir, dass es funktioniert und Gato GraphQL für alle kostenlos ist, für alle Funktionen, und ich das Gute nicht hinter einer Paywall verstecken muss.

(Wenn du herausfinden möchtest, wie das eine Win-Win-Situation ist, schick mir eine E-Mail oder ein DM. Vielleicht ist dein Unternehmen auch interessiert?)

Ich werde diesem Ansatz ein paar Monate geben und hoffe, dass es klappt. Wenn ich keinen Erfolg habe, muss ich erst dann in Betracht ziehen, eine PRO-Version des Plugins zu erstellen und einige Funktionen für die kostenpflichtige Version einzuschränken. (Ja, das wäre blöd, daher hoffe ich, diese Phase vermeiden zu können.)

In den kommenden Newslettern werde ich dich darüber informieren, ob ich Sponsoren gefunden habe oder nicht.

Blog-Beiträge

Die Blog-Beiträge waren mein absoluter Stolz und meine Freude.

Hinweis: Wusstest du, dass es einen RSS-Feed auf der Website gibt? Du kannst alle meine Blog-Beiträge abonnieren und sie in deinem bevorzugten Reader lesen.

Im letzten Monat habe ich es geschafft, jede Woche einen hochwertigen Blog-Beitrag zu veröffentlichen:

🛠 Sollte WordPress eine GraphQL-API im Core haben? argumentiert, dass WordPress von GraphQL profitieren könnte, da die WP REST API in WordPress 5.6 eine neue Funktionalität erhalten hat (Batch-Operationen), die eine GraphQL-API nativ liefern kann.

🥊 Gato GraphQL vs WPGraphQL: der Kampf! vergleicht mein Plugin mit WPGraphQL in einem Duell, das für alle Zeiten in Erinnerung bleiben wird und Boxing-Fans nach mehr verlangen lässt.

👶🏻 WordPress durch GraphQL verjüngen zeigt, wie ein headloses WordPress von der WordPress-Codebasis entkoppelt werden kann und eine Möglichkeit bietet, die angesammelte technische Schuld zu beheben (oder zumindest zu umgehen).

🍾 Gato GraphQL ist jetzt gescoped, dank PHP-Scoper! beschreibt eine Strategie zum Scopen eines WordPress-Plugins mit PHP-Scoper, um Konflikte mit anderen Plugins zu vermeiden.

Kontaktaufnahme / Plugin-Erwähnungen

Ich freue mich sehr, dass das Plugin an einigen Stellen vorgestellt wurde.

✅ Ich habe den Vortrag „Intro to Gato GraphQL" beim WordCamp India 2021 gehalten und eine Demo des Plugins gezeigt, und (überraschenderweise für eine Demo) lief alles perfekt! Schau dir das YouTube-Video an.

✅ Joe Howard hat mich für den WPMRR-Podcast interviewt. Die Aufnahme kommt bald heraus.

✅ Chris Coyier hat mein Plugin im CSS-Tricks-Newsletter #239 vorgestellt!

Das hat meinen Tag gemacht

Ein bisschen von allem

Einige allgemeine Neuigkeiten über alles, was im letzten Monat passiert ist.

Jason Bahl wechselt zu WP Engine

Herzlichen Glückwunsch an Jason für seinen Wechsel zu WP Engine! Ich hoffe, er wird weiter rocken, wie er es bisher für WPGraphQL getan hat.

Übrigens bedeutet die Tatsache, dass wir Konkurrenten sind (nun ja, ich bin derjenige, der mit ihm konkurriert, er ist weit voraus), nicht, dass wir keine Freunde sein können oder nicht zusammenarbeiten können, um die Projekte des anderen zu verbessern. Tatsächlich teilen wir beide das gleiche Ziel: GraphQL zu WordPress zu bringen (auch wenn wir unterschiedliche Vorstellungen davon haben, wie das geschehen sollte).

Aber ich glaube, dass Wettbewerb gut ist und allen zugute kommt.

Ja, Wettbewerb ist gut, solange du derjenige bist, der vorne liegt

WP Engine startet Atlas und behauptet, alles über Headless zu wissen (stimmt das?)

Ich beglückwünsche auch WP Engine für den Start von Atlas, ihrer neuen headlosen WordPress-Lösung.

Leider geben sie einige ungenaue Informationen an:

Unternehmen, die eine vollständig headlose Lösung verwenden, hosten in der Regel eine separate JavaScript-Anwendung für das Front-End, die spezifische WordPress-Daten über APIs abruft – die WordPress REST API oder das Plugin WPGraphQL.

Ja, Gato GraphQL existiert nicht, oder?

Hey, ich bin hier, oder nicht?

Normalerweise würde mich das nicht stören, da ich nicht erwarte, dass jeder mein Plugin kennt. Aber ich glaube wirklich, dass sie mein Projekt kennen und es scheinbar absichtlich ignorieren.

Nachdem sie developers.wpengine.com gestartet hatten (den „One-Stop-Hub für Best Practices, Tutorials, Blogs und Dokumentation für headloses WordPress"), habe ich sie tatsächlich kontaktiert:

Ich schätze, sie haben mein Projekt nicht ernst genommen. Oder vielleicht war es ihnen einfach egal, da sie vollständig in WPGraphQL investiert sind.

Nun, ich bin es okay, wenn sie mein Plugin nicht erwähnen wollen. Jedoch ist die Behauptung, dass die WP REST API und WPGraphQL die einzigen zwei Optionen sind, sehr irreführend. Infolgedessen wird mein Plugin geschädigt und die Entwickler-Community wird verwirrt.

Also ja, ich muss zugeben, dass ich verärgert bin. Das ist überhaupt nicht in Ordnung. Ich hoffe, sie werden ihre ungenauen Informationen korrigieren (ich habe ihnen bereits eine E-Mail geschickt).

Abschluss

Das ist das Ende des allerersten „Gato GraphQL öffentlich entwickeln".

Wie hat es dir gefallen? Teile gerne deine Gedanken in den Kommentaren.

Wenn es dir gefallen hat, würde ich mich freuen, wenn du den Newsletter mit deinen Freunden teilen könntest (oder noch besser, sie einladen, ihn zu abonnieren).

Bis nächsten Monat!


Abonniere unseren Newsletter

Bleib über alle Updates zu Gato GraphQL auf dem Laufenden.