👷🏽♂️ Gato GraphQL in het open bouwen #1 (maart 2021)
Welkom bij de allereerste "Building in the Open" nieuwsbrief!
Dit is een kanaal om nieuws over de ontwikkeling van Gato GraphQL te delen met de community, elke eerste week van de maand verstuurd.
Via deze ruimte leren we alles wat er de afgelopen maand is gebeurd, waaronder:
✅ Waar we aan hebben gewerkt en welke nieuwe functies we hebben uitgebracht
✅ Waar we de komende maand aan gaan werken
✅ Hoeveel verkeer we op de site hebben gehad
✅ Hoe de plugin het heeft gedaan: aantal downloads, nieuwsbriefinschrijvingen, GitHub-sterren
✅ Voortgang richting financiële duurzaamheid
✅ Nieuw gepubliceerde gidsen
✅ Samenvatting van onze recent gepubliceerde blogposts
✅ Bereik / Vermeldingen van de plugin
✅ Algemeen nieuws
Als je deze nieuwsbrief leuk vindt, nodig je vrienden dan uit om zich te abonneren.
Laten we beginnen!
Let op: Deze nieuwsbrief is een tweerichtingscommunicatiekanaal. Als je iets wilt zeggen, ben je welkom om een reactie toe te voegen (onderaan de blogpost).

Waar we aan hebben gecodeerd
Als je de Gidsen bekijkt, is de sectie "Extending Gato GraphQL" nog behoorlijk leeg:

Mijn prioriteit is om deze gidsen te voltooien. Maar voordat ik dat doe, wil ik dat de code van de plugin zo eenvoudig mogelijk is. Hoe eenvoudiger die is, hoe minder documentatie nodig is, en hoe meer mensen hem kunnen begrijpen.
Met dit in gedachten heb ik besloten de code te refactoren, zodat die volledig gebaseerd is op Symfony's DependencyInjection Component.
Het idee is dat elke uitbreiding van de plugin (zoals een aangepaste TypeResolver, FieldResolver of DirectiveResolver) gewoon wordt gedefinieerd als een service in de container, en de service automatisch wordt geconfigureerd via Compiler passes.
Volledig vertrouwen op Symfony's dependency injection heeft verschillende voordelen:
✅ Er is één consistente manier om extensies te maken
✅ Het aanmaken van een PHP-klasse die een interface implementeert is voldoende om het hele werk te doen, en de ontwikkelaar hoeft niet op de hoogte te zijn van de technische details
✅ Symfony's documentatie is zeer uitgebreid. Door ontwikkelaars daarnaar te verwijzen, is dat documentatie die ik niet hoef te schrijven
Geïnteresseerd in de code? Bekijk mijn laatste samengevoegde PR's (#453, #452, #449 en nog enkele anderen).
Ik zal de komende weken aan deze code blijven werken, totdat de migratie 100% compleet is en ik de ontbrekende gidsen kan schrijven.
Verkeer naar gatographql.com
Laat me duidelijk zijn over één ding: ik geef erom hoeveel mensen de website van de plugin bezoeken, als een maatstaf voor hoeveel mensen van de plugin weten.
Ik heb geen diepe zakken om mijn plugin te promoten. En zelfs als ik die had, zou ik mijn geld er niet aan uitgeven, want dat gaat in tegen de geest van open source. (Dit zou anders zijn als open source alleen maar een kanaal was om een product of dienst te verkopen, maar dat is mijn geval niet.)
Dat betekent dat ik volledig op mond-tot-mondreclame vertrouw om het te promoten. Daarvoor heb ik veel energie gestoken in het schrijven van hoogwaardige content voor de blog van de plugin, in de hoop dat deze content zou worden gedeeld en mensen zou bereiken die anders niets van de plugin zouden weten.
En tot nu toe ben ik best tevreden met de resultaten.
De afgelopen maand had ik 4.500 bezoekers, met 6.000 paginaweergaven:

Laten we deze statistieken uitsplitsen.
De meeste bezoekers komen van Hacker News, waar ik een paar keer op de "Show HN"-voorpagina heb gestaan, en van Reddit, voornamelijk van /r/PHP en /r/graphql (waar ik altijd mijn artikelen deel).
Het lukte me om #1 op Google te staan bij het zoeken naar "wordpress core graphql", wat veel verkeer opleverde. Helaas was het een eenmalige gebeurtenis: na 24 uur was het zo plotseling verdwenen als het was gekomen. Op een gewone dag krijg ik tussen de 3 en 10 bezoekers van Google.
Twitter en Facebook brengen een behoorlijke hoeveelheid verkeer, maar ik weet niet van wie (niet van mij, want ik ben verschrikkelijk slecht met social media). Ik deel mijn artikelen wel op Twitter, maar ze worden zelden geretweet. En ik gebruik 👎🏾 Facebook niet.
(Overigens, voor degenen die mijn artikelen op social media delen, bedankt ❤️)
Ik krijg bescheiden maar consistent verkeer van de lijst van GraphQL-servers in PHP op graphql.org, en van een artikel dat ik op dev.to heb gepubliceerd, dat op #1 staat bij googlen op "graphql execute multiple queries".
Tot slot verschijnen mijn artikelen consequent in de belangrijkste WordPress-nieuwsbrieven (waaronder WP Owls, wpMail.me, Post Status, WP Builds en The WP Weekly). Ik weet niet precies hoeveel verkeer elk van hen oplevert, omdat de verwijzer er uitziet als Gmail en soortgelijke. Maar samen genomen leveren deze nieuwsbrieven een behoorlijk aantal bezoekers op.
Mijn blogposts zijn veruit mijn populairste content, waarbij de laatste drie (deze, deze en deze) elk meer dan 1.000 bezoekers hebben gebracht.
Deze cijfers zien er best goed uit, zeker omdat ik de website nog geen 2 maanden geleden heb gelanceerd. Maar niet alles ziet er goed uit: met 88% is het bouncepercentage vrij hoog. Daar moet ik aan werken.
Statistieken
Verkeer naar de site is slechts een decoratieve statistiek, om de bekendheid van de plugin te schatten. Maar een veel belangrijkere vraag is: hoeveel mensen zijn de plugin de afgelopen maand gaan gebruiken?

De afgelopen maand presteerde de plugin als volgt:
🎯 Aantal plugin-downloads: 170
⭐️ GitHub-sterren: 27
Het aantal downloads kan worden opgehaald via de GitHub API, met de parameter per_page=3 om alleen de 3 releases van de afgelopen maand op te nemen:
curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"Ik ben noch blij noch onblij met deze cijfers. Ze zijn niet geweldig (en ik zou willen dat ze beter waren), maar het is een goede start.
Wat de downloads betreft: er wordt gezegd dat het vinden van de eerste gebruiker de moeilijkste taak is. Pas wanneer een paar mensen de plugin gaan gebruiken en erover gaan praten, zal het gebruik wijdverspreid worden. Ik zit nog in deze beginfase van het vinden van de eerste groep toegewijde gebruikers.
Wat de GitHub-sterren betreft, moet ik zeggen dat het er behoorlijk vlak uitziet: gemiddeld ongeveer 1 ster per dag. Dat is zeker niets bijzonders. Als je vindt wat ik bouw met Gato GraphQL interessant, en je het niet erg vindt om wat ❤️ liefde te tonen, overweeg dan om het een ⭐️ ster te geven op GitHub.
Financiële duurzaamheid
Dit is het moeilijke punt: het project moet financieel duurzaam zijn. Het genereert ofwel een beetje geld, of het houdt niet lang stand.

Als ik een inkomen voor mezelf kan verdienen, kan ik er zo lang als nodig aan blijven werken. Dat is alles wat ik nodig heb: een inkomen. Geen investeerders die bij mijn deur kloppen op zoek naar miljoenen. Gewoon een paar duizend per maand, om het dak boven mijn hoofd te betalen.
Mijn doel is om de plugin volledig open source te houden. Daarvoor benader ik momenteel een paar potentiële sponsors, met de vraag of ze de ontwikkeling van de plugin willen helpen financieren. Het zal een win-winsituatie zijn.
Waarom doe ik een beroep op een paar "grote" sponsors, in plaats van te vertrouwen op gewone sponsoring door iedereen uit de community?
Ja, ik heb dat ook geprobeerd: ik sta op GitHub Sponsors. Maar het werkt eigenlijk niet, tenzij je al duizenden gebruikers, volgers of mensen op je mailinglijst hebt die je kunt benaderen, in de verwachting dat velen van hen je financieren.
Bijvoorbeeld, als ik vraag om een standaard $5 of $10 per maand, zou ik meerdere honderden financiers nodig hebben om mijn werk te bekostigen. En daar ben ik bij lange na niet.
Maar nog meer: wie kan werkelijk slagen met deze aanpak? Ik weet dat Caleb Porzio (maker van Livewire) het voor elkaar heeft gekregen, en nu meer dan 1350 sponsors heeft! Maar dat is meer de uitzondering dan de regel.
Neem Composer als voorbeeld. Composer heeft fundamenteel veranderd hoe we PHP-applicaties ontwikkelen, en toch heeft het nauwelijks 90 sponsors. Hoe zou ik ooit meer sponsors kunnen verwachten dan Composer?
Daarom is mijn huidige aanpak om een win-winsituatie te creëren voor mijn project en de weinige bedrijven die bereid zijn het te sponsoren. Laten we hopen dat het lukt, dat Gato GraphQL gratis is voor iedereen, voor alle functies, en dat ik de goede dingen niet achter een betaalmuur hoef te plaatsen.
(Als je wilt weten hoe het een win-winsituatie is, stuur me dan een e-mail of DM. Misschien is jouw bedrijf ook geïnteresseerd?)
Ik geef deze aanpak een paar maanden, in de hoop dat het lukt. Als het niet lukt, pas dan zal ik moeten overwegen om een PRO-versie van de plugin te bouwen en sommige functies te beperken tot de betaalde versie. (Ja, dat zou jammer zijn, dus ik hoop dat ik die fase kan vermijden.)
In de komende nieuwsbrieven houd ik je op de hoogte of het me is gelukt sponsors te vinden of niet.
Blogposts
De blogposts zijn mijn absolute trots en vreugde geweest.
Let op: Wist je dat er een RSS-feed op de site is? Je kunt je abonneren om al mijn blogposts te ontvangen en ze te lezen in je favoriete lezer.
De afgelopen maand heb ik elke week een hoogwaardige blogpost weten te publiceren:
🛠 Zou WordPress een GraphQL API in de kern moeten hebben? betoogt dat WordPress baat kan hebben bij GraphQL, omdat de WP REST API in WordPress 5.6 een nieuwe functionaliteit heeft gekregen (batchbewerkingen), die een GraphQL API van nature kan leveren.
🥊 Gato GraphQL vs WPGraphQL: de strijd! vergelijkt mijn plugin met WPGraphQL, in een confrontatie die voor altijd herinnerd zal worden en waar boksliefhebbers om meer zullen vragen.
👶🏻 WordPress verjongen door GraphQL demonstreert hoe een headless WordPress losgekoppeld kan worden van de WordPress-codebase, wat een kans biedt om de geaccumuleerde technische schuld te verhelpen (of op zijn minst te omzeilen).
🍾 Gato GraphQL is nu scoped, dankzij PHP-Scoper! beschrijft een strategie om een WordPress-plugin te scopen met PHP-Scoper, om conflicten met andere plugins te vermijden.
Bereik / Vermeldingen van de plugin
Ik ben verheugd dat de plugin op een paar plaatsen is uitgelicht.
✅ Ik heb de lezing "Intro to Gato GraphQL" gegeven op WordCamp India 2021, waarbij ik een demo van de plugin deed, en (verrassend voor een demo) het allemaal perfect is gegaan! Bekijk de YouTube-video.
✅ Joe Howard heeft me geïnterviewd voor de WPMRR-podcast. De opname komt binnenkort uit.
✅ Chris Coyier heeft mijn plugin uitgelicht in de CSS-Tricks nieuwsbrief #239!

Een beetje van alles
Wat algemeen nieuws over alles wat de afgelopen maand heeft plaatsgevonden.
Jason Bahl gaat naar WP Engine
Gefeliciteerd aan Jason voor het toetreden tot WP Engine! Ik hoop dat hij het blijft knallen, zoals hij tot nu toe heeft gedaan voor WPGraphQL.
Overigens betekent het feit dat we concurrenten zijn (nou ja, ik concurreer met hem, hij staat veel verder voorop) niet dat we geen vrienden kunnen zijn of kunnen samenwerken om elkaars projecten te verbeteren. We delen immers hetzelfde doel: GraphQL naar WordPress brengen (ook al hebben we verschillende ideeën over hoe dat zou moeten gebeuren).
Maar ik geloof dat concurrentie goed is, en dat iedereen er baat bij zal hebben.

WP Engine lanceert Atlas en beweert alles over headless te weten (klopt dat?)
Ik feliciteer WP Engine ook met het lanceren van Atlas, hun nieuwe headless WordPress-oplossing.
Helaas vermelden ze wat onnauwkeurige informatie:
Bedrijven die een volledig headless-oplossing gebruiken, hosten doorgaans een aparte JavaScript-applicatie voor de front-end, die specifieke WordPress-gegevens ophaalt via API's — de WordPress REST API of de WPGraphQL-plugin.
Ja, Gato GraphQL bestaat niet, toch?

Normaal zou ik me hier niet druk over maken, want ik verwacht niet dat iedereen van mijn plugin weet. Maar ik geloof dat ze van mijn project weten en het bewust lijken te negeren.
Nadat ze developers.wpengine.com hadden gelanceerd (het "one-stop-hub voor best practices, tutorials, blogs en documentatie voor headless WordPress"), heb ik contact met hen opgenomen:
- Matt Landers, Developer Relations bij WP Engine voor headless WordPress, op Twitter
- Hun ontwikkelteam, op hun headless framework GitHub-repo
- Iemand van Torque (het magazine van WP Engine), via DM's met @TheTorqueMag.
Ik vermoed dat ze mijn project niet serieus hebben genomen. Of misschien kon het ze gewoon niets schelen, omdat ze volledig geïnvesteerd zijn in WPGraphQL.
Ik begrijp het als ze mijn plugin niet willen noemen. Maar stellen dat de WP REST API en WPGraphQL de enige twee opties zijn, is zeer misleidend. Als gevolg hiervan wordt mijn plugin benadeeld en raakt de community van ontwikkelaars in verwarring.
Dus ja, ik moet toegeven dat ik geïrriteerd ben. Dit is helemaal niet oké. Ik hoop dat ze hun onnauwkeurige informatie zullen corrigeren (ik heb ze al een e-mail gestuurd).
Afsluiting
Dit was dan het einde van de eerste "Gato GraphQL in het open bouwen".
Wat vond je ervan? Deel gerust je gedachten in de reacties.
Als je het leuk vond, waardeer ik het als je de nieuwsbrief kunt delen met je vrienden (of, nog beter, ze uitnodigt om zich te abonneren).
Tot de volgende maand!