Blog

👷🏽‍♂️ Construire Gato GraphQL en public #1 (mars 2021)

Leonardo Losoviz
Par Leonardo Losoviz ·

Bienvenue dans toute première lettre d'information "Building in the Open" !

C'est un canal pour partager des nouvelles concernant le développement de Gato GraphQL avec la communauté, envoyé la première semaine de chaque mois.

À travers cet espace, nous découvrirons tout ce qui s'est passé au cours du dernier mois, notamment :

✅ Sur quoi nous avons travaillé, quelles nouvelles fonctionnalités nous avons publiées
✅ Sur quoi nous travaillerons le mois prochain
✅ Le volume de trafic que nous avons reçu sur le site
✅ Comment le plugin s'en est sorti : nombre de téléchargements, abonnements à la lettre d'information, étoiles GitHub
✅ Progrès vers la durabilité financière
✅ Guides récemment publiés
✅ Résumé de nos articles de blog récemment publiés
✅ Contacts / Mentions du plugin
✅ Actualités générales

Si vous appréciez cette lettre d'information, veuillez inviter vos amis à s'abonner.

Commençons !

Attention : Cette lettre d'information est un canal de communication bidirectionnel. S'il y a quelque chose que vous souhaitez dire, n'hésitez pas à ajouter un commentaire (en bas de l'article de blog).

Une bienvenue à la lettre d'information, par votre animateur

Sur quoi nous avons codé

Si vous regardez les Guides, la section "Extending Gato GraphQL" est encore assez vide :

Les guides pour "Extending the plugin" ne sont pas encore complets

Ma priorité est de compléter ces guides. Mais avant de le faire, je veux que le code du plugin soit aussi simple que possible. Plus il est simple, moins de documentation est nécessaire, et plus tout le monde est capable de le comprendre.

Dans cet esprit, j'ai décidé de refactoriser le code, pour qu'il soit entièrement basé sur le composant d'injection de dépendances de Symfony.

L'idée est que toute extension au plugin (comme un TypeResolver, FieldResolver ou DirectiveResolver personnalisé) est simplement définie comme un service dans le conteneur, et le service est automatiquement configuré via les Compiler passes.

S'appuyer entièrement sur l'injection de dépendances de Symfony présente plusieurs avantages :

✅ Il existe une seule façon cohérente de créer des extensions
✅ Il suffit de créer une classe PHP implémentant une interface pour faire tout le travail, et le développeur n'a pas besoin de connaître les moindres détails
✅ La documentation de Symfony est très complète. En y orientant les développeurs, c'est une documentation que je n'ai pas besoin d'écrire

Vous êtes intéressé par le code ? Consultez mes dernières PRs fusionnées (#453, #452, #449 et plusieurs autres).

Je continuerai à travailler sur ce code dans les semaines à venir, jusqu'à ce que la migration soit complète à 100 %, et que je puisse écrire les guides manquants.

Trafic vers gatographql.com

Permettez-moi d'être clair sur quelque chose : je me soucie du nombre de personnes qui visitent le site du plugin, comme un indicateur indirects du nombre de personnes qui connaissent le plugin.

Je n'ai pas les moyens de faire de la publicité pour mon plugin. Et même si je les avais, je ne dépenserais pas mon argent pour le promouvoir, car cela va à l'encontre de l'esprit de l'open source. (Ce serait différent si l'open source n'était qu'un canal pour vendre un produit ou un service, mais ce n'est pas mon cas.)

Cela signifie que je compte entièrement sur le bouche-à-oreille pour le promouvoir. Pour cela, j'ai consacré beaucoup d'efforts à rédiger du contenu de haute qualité pour le blog du plugin, en espérant que ce contenu serait partagé, atteignant des personnes qui ne connaîtraient pas autrement le plugin.

Et jusqu'à présent, je suis assez satisfait des résultats.

Au cours du mois dernier, j'ai eu 4,5k visiteurs, avec 6k pages vues :

Montre-moi l'argent !

Décortiquons ces statistiques.

La plupart de mes visiteurs viennent de Hacker News, où j'ai réussi à décrocher quelques premières pages "Show HN", et de Reddit, principalement depuis /r/PHP et /r/graphql (où je partage toujours mes articles).

J'ai réussi à me classer #1 sur Google en cherchant "wordpress core graphql", ce qui a apporté beaucoup de trafic. Malheureusement, c'était ponctuel : après 24h, c'est parti aussi soudainement que c'est arrivé. Par ailleurs, un jour typique, je reçois entre 3 et 10 visiteurs depuis Google.

Twitter et Facebook apportent un volume considérable de trafic, mais je ne sais pas de qui (pas de moi, puisque je suis extrêmement mauvais sur les réseaux sociaux). Je partage bien mes articles sur Twitter, mais ils sont rarement retweetés. Et je n'utilise pas 👎🏾 Facebook.

(Au fait, pour ceux qui partagent mes articles sur les réseaux sociaux, merci ❤️)

Je reçois un trafic modeste mais constant depuis la liste des serveurs GraphQL en PHP sur graphql.org, et depuis un article que j'ai publié sur dev.to, qui se classe #1 quand on cherche sur Google "graphql execute multiple queries".

Enfin, mes articles apparaissent régulièrement dans les principales lettres d'information WordPress (dont WP Owls, wpMail.me, Post Status, WP Builds et The WP Weekly). Je ne sais pas exactement combien de trafic chacune apporte, car le référent apparaîtra comme Gmail et d'autres similaires. Cependant, prises ensemble, ces lettres d'information produisent un nombre considérable de visiteurs.

Mes articles de blog sont de loin mon contenu le plus populaire, les trois derniers (celui-ci, celui-ci et celui-ci) apportant chacun plus de 1k visiteurs.

Ces chiffres semblent assez bons, d'autant plus que j'ai à peine lancé le site il y a moins de 2 mois. Cependant, tout ne va pas bien : à 88 %, le taux de rebond est assez élevé. Je dois travailler là-dessus.

Métriques

Le trafic sur le site n'est qu'une métrique décorative, pour estimer la notoriété du plugin. Mais il est bien plus important de se demander : combien de personnes ont commencé à utiliser le plugin au cours du mois dernier ?

Ma réputation me précède

Au cours du mois dernier, le plugin s'en est sorti ainsi :

🎯 Nombre de téléchargements du plugin : 170
⭐️ Étoiles GitHub : 27

Le nombre de téléchargements peut être récupéré depuis l'API GitHub, en passant le paramètre per_page=3 pour n'inclure que les 3 versions créées au cours du dernier mois :

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

Je ne suis ni heureux ni malheureux de ces chiffres. Ils ne sont pas excellents (et j'aurais aimé qu'ils soient meilleurs), mais c'est un bon début.

Concernant les téléchargements, on dit que trouver le premier utilisateur est la tâche la plus difficile. Ce n'est qu'après que quelques personnes commencent à utiliser le plugin, et commencent à en parler, que son utilisation deviendra plus répandue. Je suis encore dans cette phase initiale de trouver le premier lot d'utilisateurs engagés.

Concernant les étoiles GitHub, je dois dire que ça semble assez plat : environ 1 étoile par jour en moyenne. Ce n'est certainement rien d'extraordinaire. Si vous aimez ce que je construis avec Gato GraphQL, et que vous ne voyez pas d'inconvénient à montrer un peu d'❤️ amour, veuillez considérer lui donner une ⭐️ étoile sur GitHub.

Durabilité financière

C'est la question difficile : le projet doit être financièrement durable. Soit il génère un peu d'argent, soit il ne tiendra pas longtemps.

C'est là que va ma vie

Si je suis capable de me générer un revenu, je peux continuer à y travailler, aussi longtemps que nécessaire. C'est tout ce dont j'ai besoin : un revenu. Pas des investisseurs qui frappent à ma porte en cherchant des millions. Juste quelques milliers par mois, pour payer le toit au-dessus de ma tête.

Mon objectif est de garder le plugin entièrement open source. Pour cela, je contacte actuellement quelques sponsors potentiels, en leur demandant s'ils aimeraient contribuer à financer le développement du plugin. Ce sera une situation gagnant-gagnant.

Pourquoi je fais appel à quelques "gros sponsors", au lieu de compter sur le parrainage ordinaire de n'importe qui dans la communauté ?

Oui, j'essaie aussi ça : je suis sur GitHub Sponsors. Cependant, ça ne fonctionne pas vraiment, à moins d'avoir déjà des milliers d'utilisateurs, de followers, ou de personnes abonnées à votre liste de diffusion, à qui vous pouvez vous adresser en espérant que beaucoup d'entre eux vous financent.

Par exemple, en demandant un montant standard de 5 ou 10 USD par mois, j'aurais besoin de plusieurs centaines de sponsors pour que cette approche finance mon travail. Et je suis loin de cette étape.

Mais encore plus, qui peut vraiment réussir avec cette approche ? Je sais que Caleb Porzio (créateur de Livewire) y est parvenu, et a maintenant atteint plus de 1350 sponsors ! Mais c'est plus l'exception que la règle.

Prenez Composer, par exemple. Composer a fondamentalement changé la façon dont nous développons des applications PHP, pourtant ils ont à peine 90 sponsors. Comment pourrais-je jamais espérer avoir plus de sponsors que Composer ?

C'est pourquoi mon approche actuelle est de créer une situation gagnant-gagnant pour mon projet et les quelques entreprises prêtes à le sponsoriser. Espérons que ça fonctionnera, et que Gato GraphQL sera gratuit pour tout le monde, pour toutes les fonctionnalités, et que je n'aurai pas besoin de verrouiller les bonnes choses derrière un mur payant.

(Si vous souhaitez savoir en quoi c'est gagnant-gagnant, veuillez m'envoyer un email ou un DM. Peut-être que votre entreprise serait aussi intéressée ?)

Je donnerai à cette approche quelques mois, j'espère y arriver. Si je n'y parviens pas, c'est seulement alors que je devrai envisager de construire une version PRO du plugin, et de restreindre certaines fonctionnalités pour la version payante. (Oui, ce serait nul, alors j'espère pouvoir éviter cette étape.)

Dans les prochaines lettres d'information, je vous tiendrai informés si j'ai réussi à obtenir des sponsors ou non.

Articles de blog

Les articles de blog ont été mon absolue fierté et joie.

Attention : Saviez-vous qu'il y a un flux RSS sur le site ? Vous pouvez vous abonner pour recevoir tous mes articles de blog, et les lire sur votre lecteur préféré.

Au cours du mois dernier, j'ai réussi à publier un article de blog de haute qualité chaque semaine :

🛠 WordPress devrait-il avoir une API GraphQL dans le core ? plaide que WordPress pourrait bénéficier de GraphQL, puisque la WP REST API a reçu une nouvelle fonctionnalité dans WordPress 5.6 (opérations par lot), qu'une API GraphQL peut fournir nativement.

🥊 Gato GraphQL vs WPGraphQL : le combat ! compare mon plugin avec WPGraphQL, dans un affrontement qui sera mémorable pour les âges à venir, et qui gardera les fans de boxe en redemander.

👶🏻 Rajeunir WordPress à travers GraphQL démontre comment un WordPress headless peut être découplé de la base de code WordPress, offrant une opportunité de corriger (ou, du moins, de contourner) la dette technique accumulée.

🍾 Gato GraphQL est maintenant scopé, grâce à PHP-Scoper ! décrit une stratégie pour scoper un plugin WordPress en utilisant PHP-Scoper, afin d'éviter les conflits avec d'autres plugins.

Contacts / Mentions du plugin

Je suis ravi que le plugin ait été mis en avant à quelques endroits.

✅ J'ai donné la conférence "Intro to Gato GraphQL" au WordCamp India 2021, en faisant une démo du plugin, et (étonnamment pour une démo) tout s'est parfaitement déroulé ! Consultez la vidéo YouTube.

✅ Joe Howard m'a interviewé pour le podcast WPMRR. L'enregistrement sortira bientôt.

✅ Chris Coyier a mis mon plugin en avant dans la lettre d'information CSS-Tricks #239 !

Ça m'a fait ma journée

Un peu de tout

Quelques nouvelles générales, sur tout ce qui s'est passé au cours du dernier mois.

Jason Bahl rejoint WP Engine

Félicitations à Jason pour avoir rejoint WP Engine ! J'espère qu'il continuera à performer, comme il l'a fait jusqu'à présent pour WPGraphQL.

Au fait, le fait que nous soyons concurrents (bon, c'est moi qui concurrence avec lui, il est bien plus avancé) ne signifie pas que nous ne pouvons pas être amis, ou collaborer pour améliorer nos projets mutuels. En fait, nous partageons tous les deux le même objectif : amener GraphQL dans WordPress (même si nous avons des idées différentes sur la façon dont cela devrait se faire).

Mais je crois que la concurrence est bonne, et elle bénéficiera à tout le monde.

Oui, la concurrence est bonne, tant que vous êtes celui qui est en tête

WP Engine lance Atlas, et prétend tout savoir sur le headless (le savent-ils vraiment ?)

Je félicite également WP Engine pour avoir lancé Atlas, leur nouvelle solution WordPress headless.

Malheureusement, ils donnent des informations inexactes :

Les entreprises qui utilisent une solution entièrement headless hébergeront généralement une application JavaScript séparée pour le front-end, qui récupère des données WordPress spécifiques via des APIs — la WordPress REST API ou le plugin WPGraphQL.

Oui, Gato GraphQL n'existe pas, n'est-ce pas ?

Hé, je suis là, non ?

Normalement, je ne m'en préoccuperais pas, puisque je ne m'attends pas à ce que tout le monde connaisse mon plugin. Mais je crois bien qu'ils connaissent mon projet, et ils semblent délibérément l'ignorer.

Après qu'ils aient lancé developers.wpengine.com (le "hub unique pour les meilleures pratiques, tutoriels, blogs et documentation pour WordPress headless"), je les ai bien contactés :

Je suppose qu'ils n'ont pas pris mon projet au sérieux. Ou bien, peut-être qu'ils n'en avaient tout simplement pas grand-chose à faire, puisqu'ils sont entièrement investis dans WPGraphQL.

Maintenant, ça me convient s'ils ne veulent pas mentionner mon plugin. Cependant, affirmer que la WP REST API et WPGraphQL sont les seules deux options est très trompeur. Par conséquent, mon plugin en souffre, et la communauté des développeurs est induite en erreur.

Alors oui, je dois admettre que je suis irrité. Ce n'est vraiment pas cool. J'espère qu'ils rectifieront leurs informations inexactes (je leur ai déjà envoyé un email).

En résumé

Voilà la fin du tout premier "Construire Gato GraphQL en public".

Qu'en avez-vous pensé ? N'hésitez pas à partager vos pensées dans les commentaires.

Si vous l'avez aimé, j'apprécierais que vous puissiez partager la lettre d'information avec vos amis (ou, encore mieux, les inviter à s'abonner).

À le mois prochain !


Abonnez-vous à notre newsletter

Restez au courant de toutes les nouveautés de Gato GraphQL.