👷🏽♂️ Construyendo Gato GraphQL al descubierto #1 (marzo de 2021)
¡Bienvenido al primerísimo boletín "Building in the Open"!
Este es un canal para compartir noticias sobre el desarrollo de Gato GraphQL con la comunidad, enviado la primera semana de cada mes.
A través de este espacio, conoceremos todo lo que ha ocurrido durante el último mes, incluyendo:
✅ En qué hemos estado trabajando y qué nuevas funcionalidades hemos lanzado
✅ En qué trabajaremos durante el próximo mes
✅ La cantidad de tráfico que recibimos en el sitio
✅ Cómo le fue al plugin: número de descargas, suscripciones al boletín, estrellas en GitHub
✅ Progreso hacia la sostenibilidad financiera
✅ Guías recién publicadas
✅ Resumen de nuestras entradas de blog publicadas recientemente
✅ Difusión / Menciones del plugin
✅ Noticias generales
Si disfrutas de este boletín, por favor invita a tus amigos a suscribirse.
¡Empecemos!
Aviso: Este boletín es un canal de comunicación bidireccional. Si hay algo que te gustaría decir, eres bienvenido a añadir un comentario (al final de la entrada del blog).

En qué hemos estado programando
Si te fijas en las Guías, la sección "Extending Gato GraphQL" todavía está bastante vacía:

Mi prioridad es completar estas guías. Pero antes de hacerlo, quiero que el código del plugin sea lo más simple posible. Cuanto más simple sea, menos documentación se requiere, y más personas serán capaces de entenderlo.
Con esto en mente, he decidido refactorizar el código para que esté basado completamente en el Componente de Inyección de Dependencias de Symfony.
La idea es que cualquier extensión al plugin (como un TypeResolver, FieldResolver o DirectiveResolver personalizado) simplemente se define como un servicio en el contenedor, y el servicio se configura automáticamente mediante Compiler passes.
Confiar plenamente en la inyección de dependencias de Symfony tiene varias ventajas:
✅ Hay una forma única y consistente de crear extensiones
✅ Simplemente creando una clase PHP que implemente alguna interfaz se hace todo el trabajo, y el desarrollador no necesita conocer los detalles más técnicos
✅ La documentación de Symfony es muy extensa. Al dirigir a los desarrolladores a ella, esa es documentación que yo no necesito escribir
¿Te interesa el código? Echa un vistazo a mis últimos PRs fusionados (#453, #452, #449 y varios otros).
Continuaré trabajando en este código durante las próximas semanas, hasta que la migración esté 100 % completa, y pueda escribir las guías que faltan.
Tráfico a gatographql.com
Permíteme ser claro en algo: me importa cuántas personas visitan el sitio web del plugin, como una forma indirecta de saber cuántas personas conocen el plugin.
No tengo bolsillos profundos para publicitar mi plugin. Y aunque los tuviera, no gastaría mi dinero promocionándolo, ya que eso va en contra del espíritu del código abierto. (Esto sería diferente si el código abierto fuese solo un canal para vender algún producto o servicio, pero ese no es mi caso.)
Eso significa que dependo completamente del boca a boca para promocionarlo. Por eso, he estado dedicando mucho esfuerzo a escribir contenido de alta calidad para el blog del plugin, con la esperanza de que este contenido sea compartido y llegue a personas que de otro modo no conocerían el plugin.
Y hasta ahora, estoy bastante contento con los resultados.
Durante el mes pasado, tuve 4,5k visitantes, con 6k páginas vistas:

Desglosemos estas estadísticas.
La mayoría de mis visitantes vienen de Hacker News, donde conseguí colar algunas portadas "Show HN", y de Reddit, principalmente desde /r/PHP y /r/graphql (donde siempre comparto mis artículos).
Conseguí posicionar #1 en Google al buscar "wordpress core graphql", y eso trajo mucho tráfico. Lamentablemente, fue algo puntual: después de 24 h se fue tan repentinamente como llegó. Por lo demás, en un día típico recibo entre 3 y 10 visitantes desde Google.
Twitter y Facebook traen una cantidad considerable de tráfico, pero no sé de quién (no de mí, ya que soy extremadamente malo en redes sociales). Yo sí comparto mis artículos en Twitter, pero rara vez son retuiteados. Y no uso 👎🏾 Facebook.
(Por cierto, para los que compartís mis artículos en redes sociales, gracias ❤️)
Recibo algo de tráfico modesto pero constante desde la lista de servidores GraphQL en PHP en graphql.org, y desde un artículo que publiqué en dev.to, que rankea #1 cuando se busca en Google "graphql execute multiple queries".
Por último, mis artículos aparecen consistentemente en los principales boletines de WordPress (incluyendo WP Owls, wpMail.me, Post Status, WP Builds y The WP Weekly). No sé exactamente cuánto tráfico trae cada uno, ya que el referrer aparecerá como Gmail y otros similares. Sin embargo, en conjunto, estos boletines producen un número considerable de visitantes.
Mis entradas de blog son, con mucho, mi contenido más popular, con las últimas tres (esta, esta y esta) trayendo más de 1k visitantes cada una.
Estos números se ven bastante bien, más teniendo en cuenta que apenas lancé el sitio web hace menos de 2 meses. Sin embargo, no todo se ve bien: con un 88 %, la tasa de rebote es bastante alta. Necesito trabajar en eso.
Métricas
El tráfico al sitio es solo una métrica decorativa, para estimar el conocimiento del plugin. Pero mucho más importante es preguntarse: ¿cuántas personas comenzaron a usar el plugin durante el último mes?

Durante el mes pasado, al plugin le fue así:
🎯 Número de descargas del plugin: 170
⭐️ Estrellas en GitHub: 27
El número de descargas se puede obtener desde la API de GitHub, pasando el parámetro per_page=3 para incluir solo las 3 versiones creadas durante el último mes:
curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"No estoy ni feliz ni descontento con estos números. No son geniales (y ojalá fueran mejores), pero son un buen comienzo.
Respecto a las descargas, se dice que conseguir el primer usuario es la tarea más difícil. Solo después de que algunas personas comiencen a usar el plugin y empiecen a hablar de él, su uso se hará más extendido. Todavía estoy en esta etapa inicial de encontrar el primer grupo de usuarios comprometidos.
Respecto a las estrellas en GitHub, debo decir que se ve bastante plano: alrededor de 1 estrella por día en promedio. Esto ciertamente no es nada del otro mundo. Si te gusta lo que estoy construyendo con Gato GraphQL, y no te importa mostrar un poco de ❤️ amor, por favor considera darle una ⭐️ estrella en GitHub.
Sostenibilidad financiera
Este es el tema complicado: el proyecto debe ser financieramente sostenible. O genera un poco de dinero, o no durará mucho.

Si soy capaz de obtener ingresos para mí mismo, entonces puedo seguir trabajando en él, durante todo el tiempo que sea necesario. Eso es todo lo que necesito: unos ingresos. No inversores llamando a mi puerta buscando millones. Solo un par de miles al mes, para pagar el techo sobre mi cabeza.
Mi objetivo es mantener el plugin totalmente de código abierto. Para ello, actualmente estoy contactando con un par de patrocinadores potenciales, preguntándoles si les gustaría ayudar a financiar el desarrollo del plugin. Será una situación de ganar-ganar.
¿Por qué recurro a "patrocinadores potentes", en lugar de depender del patrocinio regular de cualquiera de la comunidad?
Sí, también he estado probando eso: estoy en GitHub Sponsors. Sin embargo, no funciona realmente, a menos que ya tengas miles de usuarios, seguidores o personas suscritas a tu lista de correo, a las que puedas dirigirte, esperando que muchas de ellas te financien.
Por ejemplo, pidiendo unos 5 o 10 USD al mes, necesitaría varios cientos de patrocinadores para que este enfoque financie mi trabajo. Y no estoy ni cerca de esa etapa.
Pero, aún más, ¿quién puede realmente tener éxito con este enfoque? Sé que Caleb Porzio (creador de Livewire) lo ha logrado, y ahora ha alcanzado más de 1350 patrocinadores. Pero eso es más la excepción que la norma.
Toma Composer, por ejemplo. Composer ha cambiado fundamentalmente cómo desarrollamos aplicaciones PHP, sin embargo, apenas tienen 90 patrocinadores. ¿Cómo podría yo esperar conseguir más patrocinadores que Composer?
Por eso, mi enfoque actual es crear una situación de ganar-ganar para mi proyecto y las pocas empresas dispuestas a patrocinarlo. Esperemos que funcione, y que Gato GraphQL sea gratis para todos, con todas las funcionalidades, y no necesite bloquear lo bueno detrás de un muro de pago.
(Si te gustaría descubrir cómo es ganar-ganar, por favor envíame un email o un DM. ¿Quizás tu empresa también esté interesada?)
Le daré a este enfoque unos meses, espero conseguirlo. Si no tengo éxito, solo entonces tendré que considerar construir una versión PRO del plugin, y restringir algunas de las funcionalidades a la versión de pago. (Sí, eso sería un desastre, así que espero poder evitar esa etapa.)
En los próximos boletines, te mantendré informado sobre si conseguí patrocinadores o no.
Entradas del blog
Las entradas del blog han sido mi absoluto orgullo y alegría.
Aviso: ¿Sabías que hay un feed RSS en el sitio? Puedes suscribirte para recibir todas mis entradas de blog y leerlas en tu lector favorito.
Durante el mes pasado, conseguí publicar una entrada de blog de alta calidad cada semana:
🛠 ¿Debería WordPress tener una API GraphQL en core? defiende que WordPress podría beneficiarse de GraphQL, ya que a la WP REST API se le añadió una nueva funcionalidad en WordPress 5.6 (operaciones por lotes), que una API GraphQL puede ofrecer de forma nativa.
🥊 Gato GraphQL vs WPGraphQL: ¡la pelea! compara mi plugin con WPGraphQL, en un enfrentamiento que será recordado por las edades venideras, y que mantendrá a los aficionados al boxeo pidiendo más.
👶🏻 Rejuveneciendo WordPress a través de GraphQL demuestra cómo un WordPress headless puede desacoplarse del código base de WordPress, proporcionando una oportunidad para arreglar (o, al menos, evitar) la deuda técnica acumulada.
🍾 ¡Gato GraphQL ahora está scopeado, gracias a PHP-Scoper! describe una estrategia para hacer scope a un plugin de WordPress usando PHP-Scoper, para evitar conflictos con otros plugins.
Difusión / Menciones del plugin
Estoy encantado de que el plugin haya sido destacado en algunos lugares.
✅ He dado la charla "Intro to Gato GraphQL" en WordCamp India 2021, haciendo una demo del plugin y (sorprendentemente, considerando que era una demo) ¡todo salió perfecto! Echa un vistazo al vídeo de YouTube.
✅ Joe Howard me ha entrevistado para el podcast WPMRR. La grabación saldrá pronto.
✅ ¡Chris Coyier destacó mi plugin en el boletín #239 de CSS-Tricks!

Un poco de todo
Algunas noticias generales sobre cualquier cosa que haya ocurrido durante el último mes.
Jason Bahl se va a WP Engine
¡Felicidades a Jason por unirse a WP Engine! Espero que siga arrasando, como lo ha hecho hasta ahora con WPGraphQL.
Por cierto, el hecho de que seamos competidores (bueno, yo soy el que compite con él, él está muy por delante) no significa que no podamos ser amigos, o colaborar para mejorar nuestros proyectos mutuos. De hecho, ambos compartimos el mismo objetivo: llevar GraphQL a WordPress (aunque tengamos ideas diferentes sobre cómo debería suceder).
Pero creo que la competencia es buena, y beneficiará a todos.

WP Engine lanza Atlas, y afirma saber todo sobre headless (¿lo saben?)
También felicito a WP Engine por lanzar Atlas, su nueva solución WordPress headless.
Lamentablemente, dan algo de información inexacta:
Las empresas que usan una solución completamente headless normalmente alojarán una aplicación JavaScript separada para el frontend, que extrae datos específicos de WordPress mediante APIs: la WordPress REST API o el plugin WPGraphQL.
Sí, Gato GraphQL no existe, ¿verdad?

Normalmente no me preocuparía por esto, ya que no espero que todos conozcan mi plugin. Pero sí creo que conocen mi proyecto, y parece que lo están ignorando deliberadamente.
Después de que lanzaran developers.wpengine.com (el "centro único de mejores prácticas, tutoriales, blogs y documentación para WordPress headless"), sí me puse en contacto con ellos:
- Matt Landers, Developer Relations en WP Engine para Headless WordPress, en Twitter
- Su equipo de desarrollo, en el repo de GitHub de su framework headless
- Alguien de Torque (la revista propiedad de WP Engine), mediante DMs con @TheTorqueMag.
Supongo que no se han tomado mi proyecto en serio. O bueno, tal vez simplemente no les importaba, ya que están totalmente comprometidos con WPGraphQL.
Ahora, estoy bien si no quieren mencionar mi plugin. Sin embargo, decir que la WP REST API y WPGraphQL son las únicas dos opciones es muy engañoso. Como consecuencia, mi plugin se ve perjudicado, y la comunidad de desarrolladores se confunde.
Así que sí, debo admitir que estoy molesto. Esto no está nada bien. Espero que rectifiquen su información inexacta (ya les envié un email).
Cerrando
Así que este es el final del primerísimo "Construyendo Gato GraphQL al descubierto".
¿Qué te ha parecido? Eres bienvenido a compartir tus pensamientos en los comentarios.
Si te ha gustado, agradeceré que puedas compartir el boletín con tus amigos (o, mejor aún, invítalos a suscribirse).
¡Hasta el próximo mes!