Blog

👷🏽‍♂️ Costruire Gato GraphQL in pubblico #1 (marzo 2021)

Leonardo Losoviz
Di Leonardo Losoviz ·

Benvenuti alla primissima newsletter "Building in the Open"!

Questo è un canale per condividere con la community le novità riguardanti lo sviluppo di Gato GraphQL, inviato la prima settimana di ogni mese.

Attraverso questo spazio scopriremo tutto quello che è successo durante l'ultimo mese, tra cui:

✅ Su cosa abbiamo lavorato, quali nuove funzionalità abbiamo rilasciato
✅ Su cosa lavoreremo il mese prossimo
✅ Il volume di traffico ricevuto sul sito
✅ Come è andato il plugin: numero di download, iscrizioni alla newsletter, stelle su GitHub
✅ Progressi verso la sostenibilità finanziaria
✅ Guide pubblicate di recente
✅ Riepilogo dei nostri articoli del blog pubblicati di recente
✅ Contatti / Menzioni del plugin
✅ Notizie generali

Se ti piace questa newsletter, invita i tuoi amici a iscriversi.

Cominciamo!

Attenzione: Questa newsletter è un canale di comunicazione bidirezionale. Se c'è qualcosa che vorresti dire, sentiti libero di aggiungere un commento (in fondo all'articolo del blog).

Un benvenuto alla newsletter, dal vostro conduttore

Su cosa abbiamo programmato

Se dai un'occhiata alle Guide, la sezione "Extending Gato GraphQL" è ancora piuttosto vuota:

Le guide per "Extending the plugin" non sono ancora complete

La mia priorità è completare queste guide. Ma prima di farlo, voglio che il codice del plugin sia il più semplice possibile. Più è semplice, meno documentazione è necessaria, e più chiunque è in grado di comprenderlo.

Con questo in mente, ho deciso di rifattorizzare il codice, in modo che sia interamente basato sul componente DependencyInjection di Symfony.

L'idea è che qualsiasi estensione al plugin (come un TypeResolver, FieldResolver o DirectiveResolver personalizzato) viene semplicemente definita come un servizio nel container, e il servizio viene configurato automaticamente tramite i Compiler pass.

Affidarsi interamente alla dependency injection di Symfony presenta diversi vantaggi:

✅ Esiste un unico modo coerente di creare estensioni
✅ Basta creare una classe PHP che implementi un'interfaccia per svolgere tutto il lavoro, e lo sviluppatore non ha bisogno di conoscere i minimi dettagli
✅ La documentazione di Symfony è molto completa. Indirizzando lì gli sviluppatori, quella è documentazione che non ho bisogno di scrivere

Interessato al codice? Dai un'occhiata alle mie ultime PR mergiate (#453, #452, #449 e diverse altre).

Continuerò a lavorare su questo codice nelle prossime settimane, finché la migrazione non sarà completa al 100% e potrò scrivere le guide mancanti.

Traffico verso gatographql.com

Lasciatemi essere chiaro su una cosa: mi interessa quante persone visitano il sito del plugin, come indicatore indiretto di quante persone conoscono il plugin.

Non ho grandi disponibilità economiche per pubblicizzare il mio plugin. E anche se le avessi, non spenderei i miei soldi per promuoverlo, perché ciò va contro lo spirito dell'open source. (Sarebbe diverso se l'open source fosse solo un canale per vendere un prodotto o un servizio, ma non è il mio caso.)

Questo significa che mi affido interamente al passaparola per promuoverlo. A questo scopo ho dedicato molto impegno a scrivere contenuti di alta qualità per il blog del plugin, sperando che questi contenuti vengano condivisi, raggiungendo persone che altrimenti non conoscerebbero il plugin.

E finora sono piuttosto soddisfatto dei risultati.

Durante l'ultimo mese ho avuto 4,5k visitatori, con 6k visualizzazioni di pagina:

Mostratemi i soldi!

Analizziamo queste statistiche.

La maggior parte dei miei visitatori arriva da Hacker News, dove sono riuscito a conquistare qualche prima pagina "Show HN", e da Reddit, principalmente da /r/PHP e /r/graphql (dove condivido sempre i miei articoli).

Sono riuscito a posizionarmi al #1 su Google cercando "wordpress core graphql", e questo ha portato parecchio traffico. Purtroppo è stato un evento isolato: dopo 24 ore è svanito all'improvviso così come era arrivato. Per il resto, in una giornata tipica ricevo tra i 3 e i 10 visitatori da Google.

Twitter e Facebook portano un volume considerevole di traffico, ma non so da chi (non da me, dato che sono estremamente negato con i social media). Condivido sì i miei articoli su Twitter, ma vengono raramente ritwittati. E non uso 👎🏾 Facebook.

(A proposito, per chi di voi condivide i miei articoli sui social media, grazie ❤️)

Ricevo un traffico modesto ma costante dall'elenco dei server GraphQL in PHP su graphql.org, e da un articolo che ho pubblicato su dev.to, che si posiziona al #1 quando si cerca su Google "graphql execute multiple queries".

Infine, i miei articoli appaiono regolarmente nelle principali newsletter di WordPress (tra cui WP Owls, wpMail.me, Post Status, WP Builds e The WP Weekly). Non so esattamente quanto traffico porti ciascuna di esse, dato che il referrer apparirà come Gmail e simili. Tuttavia, prese insieme, queste newsletter producono un numero considerevole di visitatori.

I miei articoli del blog sono di gran lunga il mio contenuto più popolare, con gli ultimi tre (questo, questo e questo) che portano ciascuno oltre 1k visitatori.

Questi numeri sembrano piuttosto buoni, tanto più che ho lanciato il sito da meno di 2 mesi. Tuttavia, non tutto va bene: con l'88%, la frequenza di rimbalzo è piuttosto alta. Devo lavorarci.

Metriche

Il traffico sul sito è solo una metrica decorativa, per stimare la notorietà del plugin. Ma è molto più importante chiedersi: quante persone hanno iniziato a usare il plugin durante l'ultimo mese?

La mia reputazione mi precede

Durante l'ultimo mese, il plugin se l'è cavata così:

🎯 Numero di download del plugin: 170
⭐️ Stelle su GitHub: 27

Il numero di download può essere recuperato dall'API di GitHub, passando il parametro per_page=3 per includere solo le 3 release create durante l'ultimo mese:

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

Non sono né contento né scontento di questi numeri. Non sono eccezionali (e avrei voluto che fossero migliori), ma sono un buon inizio.

Per quanto riguarda i download, si dice che trovare il primo utente sia il compito più difficile. Solo dopo che alcune persone iniziano a usare il plugin, e iniziano a parlarne, il suo utilizzo diventerà più diffuso. Sono ancora in questa fase iniziale di trovare il primo gruppo di utenti fedeli.

Per quanto riguarda le stelle su GitHub, devo dire che sembra piuttosto piatto: circa 1 stella al giorno in media. Questo non è certamente niente di straordinario. Se ti piace ciò che sto costruendo con Gato GraphQL, e non ti dispiace mostrare un po' di ❤️ amore, allora considera di dargli una ⭐️ stella su GitHub.

Sostenibilità finanziaria

Questa è la questione difficile: il progetto deve essere finanziariamente sostenibile. O genera un po' di denaro, oppure non durerà a lungo.

Qui ci va la mia vita

Se riesco a generare un reddito per me stesso, allora posso continuare a lavorarci, per tutto il tempo necessario. È tutto ciò di cui ho bisogno: un reddito. Non investitori che bussano alla mia porta in cerca di milioni. Solo un paio di migliaia al mese, per pagare il tetto sopra la mia testa.

Il mio obiettivo è mantenere il plugin interamente open source. A questo scopo, sto attualmente contattando un paio di potenziali sponsor, chiedendo se vorrebbero contribuire a finanziare lo sviluppo del plugin. Sarà una situazione vantaggiosa per tutti.

Perché ricorro ad alcuni sponsor "di peso", invece di affidarmi a una sponsorizzazione ordinaria, da parte di chiunque nella community?

Sì, sto provando anche quella strada: sono su GitHub Sponsors. Tuttavia, non funziona davvero, a meno che tu non abbia già migliaia di utenti, follower o persone iscritte alla tua mailing list, a cui puoi rivolgerti aspettandoti che molti di loro ti finanzino.

Per esempio, chiedendo un importo standard di 5 o 10 USD al mese, avrei bisogno di diverse centinaia di finanziatori perché questo approccio finanzi il mio lavoro. E sono ben lontano da quella fase.

Ma ancora di più, chi può davvero avere successo con questo approccio? So che Caleb Porzio (creatore di Livewire) ci è riuscito, e ora ha raggiunto oltre 1350 sponsor! Ma questo è più l'eccezione che la regola.

Prendi Composer, per esempio. Composer ha cambiato radicalmente il modo in cui sviluppiamo applicazioni PHP, eppure ha a malapena 90 sponsor. Come potrei mai sperare di ottenere più sponsor di Composer?

Ecco perché il mio approccio attuale è creare una situazione vantaggiosa per tutti, per il mio progetto e per le poche aziende disposte a sponsorizzarlo. Speriamo che funzioni, e che Gato GraphQL sia gratuito per tutti, per tutte le funzionalità, e che io non abbia bisogno di nascondere le cose buone dietro un paywall.

(Se vuoi scoprire in che modo è una situazione vantaggiosa per tutti, inviami un'email o un DM. Forse anche la tua azienda potrebbe essere interessata?)

Darò a questo approccio qualche mese, sperando di riuscirci. Se non ci riesco, solo allora dovrò valutare di costruire una versione PRO del plugin, e di limitare alcune funzionalità alla versione a pagamento. (Sì, sarebbe una schifezza, quindi spero di poter evitare quella fase.)

Nelle prossime newsletter vi terrò aggiornati se sono riuscito a ottenere sponsor o no.

Articoli del blog

Gli articoli del blog sono stati il mio assoluto orgoglio e gioia.

Attenzione: Sapevi che c'è un feed RSS sul sito? Puoi iscriverti per ricevere tutti i miei articoli del blog, e leggerli sul tuo lettore preferito.

Durante l'ultimo mese, sono riuscito a pubblicare un articolo del blog di alta qualità ogni settimana:

🛠 WordPress dovrebbe avere un'API GraphQL nel core? sostiene che WordPress potrebbe beneficiare di GraphQL, dato che la WP REST API ha ricevuto una nuova funzionalità in WordPress 5.6 (operazioni batch), che un'API GraphQL può fornire nativamente.

🥊 Gato GraphQL vs WPGraphQL: il combattimento! confronta il mio plugin con WPGraphQL, in uno scontro che sarà ricordato per i secoli a venire, e che terrà i fan della boxe a chiederne ancora.

👶🏻 Ringiovanire WordPress attraverso GraphQL dimostra come un WordPress headless possa essere disaccoppiato dalla base di codice di WordPress, offrendo l'opportunità di correggere (o, almeno, aggirare) il debito tecnico accumulato.

🍾 Gato GraphQL ora è scoped, grazie a PHP-Scoper! descrive una strategia per fare lo scoping di un plugin WordPress usando PHP-Scoper, in modo da evitare conflitti con altri plugin.

Contatti / Menzioni del plugin

Sono felicissimo che il plugin sia stato messo in evidenza in alcuni posti.

✅ Ho tenuto il talk "Intro to Gato GraphQL" al WordCamp India 2021, facendo una demo del plugin, e (sorprendentemente per una demo) è andato tutto alla perfezione! Guarda il video su YouTube.

✅ Joe Howard mi ha intervistato per il podcast WPMRR. La registrazione uscirà presto.

✅ Chris Coyier ha messo in evidenza il mio plugin nella newsletter CSS-Tricks #239!

Questo mi ha rallegrato la giornata

Un po' di tutto

Alcune notizie generali, su tutto ciò che è accaduto durante l'ultimo mese.

Jason Bahl passa a WP Engine

Congratulazioni a Jason per essere entrato in WP Engine! Spero che continuerà a spaccare, come ha fatto finora con WPGraphQL.

A proposito, il fatto che siamo concorrenti (beh, sono io quello che gli fa concorrenza, lui è molto più avanti) non significa che non possiamo essere amici, o collaborare per migliorare i nostri rispettivi progetti. Anzi, condividiamo entrambi lo stesso obiettivo: portare GraphQL in WordPress (anche se abbiamo idee diverse su come ciò dovrebbe avvenire).

Ma credo che la concorrenza sia positiva, e che andrà a beneficio di tutti.

Sì, la concorrenza è positiva, finché sei tu quello in testa

WP Engine lancia Atlas, e sostiene di sapere tutto sull'headless (è davvero così?)

Mi congratulo anche con WP Engine per aver lanciato Atlas, la loro nuova soluzione WordPress headless.

Purtroppo, forniscono alcune informazioni inesatte:

Le aziende che utilizzano una soluzione interamente headless di solito ospitano un'applicazione JavaScript separata per il front-end, che recupera dati WordPress specifici tramite API: la WordPress REST API o il plugin WPGraphQL.

Già, Gato GraphQL non esiste, vero?

Ehi, ci sono io qui, o no?

Normalmente non me ne preoccuperei, dato che non mi aspetto che tutti conoscano il mio plugin. Ma credo proprio che conoscano il mio progetto, e sembra che lo stiano deliberatamente ignorando.

Dopo che hanno lanciato developers.wpengine.com (l'"hub unico per le migliori pratiche, tutorial, blog e documentazione per WordPress headless"), li ho effettivamente contattati:

Suppongo che non abbiano preso sul serio il mio progetto. O forse, semplicemente non gliene importava granché, dato che sono completamente investiti in WPGraphQL.

Ora, per me va bene se non vogliono menzionare il mio plugin. Tuttavia, affermare che la WP REST API e WPGraphQL siano le uniche due opzioni è molto fuorviante. Di conseguenza, il mio plugin ne risente, e la community degli sviluppatori viene confusa.

E quindi sì, devo ammettere che sono infastidito. Questo non è affatto bello. Spero che rettifichino le loro informazioni inesatte (ho già inviato loro un'email).

Per concludere

Ecco la fine del primissimo "Costruire Gato GraphQL in pubblico".

Cosa ne pensi? Sentiti libero di condividere i tuoi pensieri nei commenti.

Se ti è piaciuto, apprezzerei se potessi condividere la newsletter con i tuoi amici (o, ancora meglio, invitarli a iscriversi).

Ci vediamo il mese prossimo!


Iscriviti alla nostra newsletter

Resta aggiornato su tutte le novità di Gato GraphQL.