👷🏽♂️ Строим Gato GraphQL открыто #1 (март 2021)
Добро пожаловать в самый первый выпуск рассылки «Building in the Open»!
Это канал для распространения новостей о разработке Gato GraphQL среди сообщества — выходит в первую неделю каждого месяца.
Здесь мы будем узнавать всё, что произошло за последний месяц, в том числе:
✅ Над чем мы работали и какие новые функции выпустили
✅ Над чем будем работать в следующем месяце
✅ Объём трафика на сайте
✅ Как чувствует себя плагин: количество загрузок, подписок на рассылку, звёзд на GitHub
✅ Прогресс в достижении финансовой устойчивости
✅ Недавно опубликованные руководства
✅ Обзор недавно опубликованных записей в блоге
✅ Распространение / Упоминания плагина
✅ Общие новости
Если вам нравится эта рассылка, пожалуйста, пригласите друзей подписаться.
Начнём!
Обратите внимание: Эта рассылка — двусторонний канал общения. Если вы хотите что-то сказать, смело оставьте комментарий (в нижней части записи в блоге).

Над чем мы писали код
Если вы посмотрите на раздел Руководства, раздел «Extending Gato GraphQL» пока довольно пуст:

Мой приоритет — завершить эти руководства. Но прежде чем это сделать, я хочу сделать код плагина максимально простым. Чем он проще, тем меньше требуется документации и тем больше людей смогут его понять.
Имея это в виду, я решил провести рефакторинг кода, чтобы он полностью базировался на компоненте внедрения зависимостей Symfony.
Идея в том, что любое расширение плагина (например, пользовательский TypeResolver, FieldResolver или DirectiveResolver) просто определяется как сервис в контейнере и автоматически настраивается с помощью Compiler passes.
Полная опора на внедрение зависимостей Symfony даёт несколько преимуществ:
✅ Существует единый последовательный способ создания расширений
✅ Достаточно создать PHP-класс, реализующий некий интерфейс — и вся работа сделана; разработчику не нужно вникать в технические детали
✅ Документация Symfony очень обширна. Указывая разработчикам на неё, я избавляюсь от необходимости писать документацию самостоятельно
Хотите посмотреть на код? Загляните в мои последние смёрженные PR (#453, #452, #449 и несколько других).
Я продолжу работать над этим кодом в ближайшие недели, пока миграция не будет завершена на 100% и я не напишу недостающие руководства.
Трафик на gatographql.com
Позвольте сразу сказать: меня волнует, сколько людей посещают сайт плагина — это косвенный показатель того, сколько людей знают о плагине.
У меня нет огромного бюджета на рекламу. И даже если бы он был, я не стал бы тратить деньги на продвижение — это противоречит духу открытого исходного кода. (Было бы иначе, если бы открытый код был просто каналом продаж какого-то продукта или услуги, но это не мой случай.)
Это означает, что я полностью полагаюсь на сарафанное радио. Ради этого я прикладывал немало усилий, чтобы писать качественный контент для блога плагина, надеясь, что этот контент будет распространяться и достигнет людей, которые иначе не узнали бы о плагине.
И пока что я вполне доволен результатами.
За прошедший месяц было 4,5 тысячи посетителей и 6 тысяч просмотров страниц:

Разберём эти цифры подробнее.
Большинство посетителей приходит с Hacker News, где мне удалось попасть на несколько главных страниц «Show HN», и с Reddit — преимущественно из /r/PHP и /r/graphql (где я всегда делюсь своими статьями).
Мне удалось занять 1-е место в Google по запросу «wordpress core graphql», что принесло немало трафика. К сожалению, это было единоразово: через 24 часа позиция исчезла так же внезапно, как появилась. В обычный день я получаю от 3 до 10 посетителей из Google.
Twitter и Facebook приносят заметный объём трафика, но я не знаю, от кого именно (точно не от меня — я крайне плохо разбираюсь в социальных сетях). Я публикую статьи в Twitter, но их редко делают ретвит. А 👎🏾 Facebook я не использую.
(Кстати, тем из вас, кто делится моими статьями в социальных сетях, — спасибо ❤️)
Я получаю скромный, но стабильный трафик из списка GraphQL-серверов на PHP на graphql.org и из статьи, опубликованной мной на dev.to, которая занимает 1-е место в Google по запросу «graphql execute multiple queries».
Наконец, мои статьи регулярно появляются в главных рассылках WordPress (включая WP Owls, wpMail.me, Post Status, WP Builds и The WP Weekly). Я не знаю точно, сколько трафика приносит каждая из них, поскольку источник перехода отображается как Gmail и подобные сервисы. Однако в совокупности эти рассылки дают заметное количество посетителей.
Мои записи в блоге — безусловно, самый популярный контент: три последних (эта, эта и эта) привлекли более 1 тысячи посетителей каждая.
Цифры выглядят весьма неплохо — особенно с учётом того, что сайт запущен менее 2 месяцев назад. Однако не всё радует: показатель отказов составляет 88%, что довольно высоко. Нужно над этим поработать.
Метрики
Трафик на сайт — лишь декоративная метрика для оценки осведомлённости о плагине. Но куда важнее вопрос: сколько людей начали использовать плагин за прошедший месяц?

За прошедший месяц результаты плагина таковы:
🎯 Количество загрузок плагина: 170
⭐️ Звёзд на GitHub: 27
Количество загрузок можно получить из GitHub API, передав параметр per_page=3, чтобы включить только 3 релиза, созданных за последний месяц:
curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/GatoGraphQL/GatoGraphQL/releases?per_page=3 | grep "download_count"Я не испытываю ни радости, ни разочарования от этих цифр. Они не блестящие (и хотелось бы лучше), но это хорошее начало.
Что касается загрузок — говорят, что получить первого пользователя труднее всего. Только после того как несколько человек начнут использовать плагин и рассказывать о нём, его использование станет более широким. Я всё ещё нахожусь на этом начальном этапе — поиске первой группы преданных пользователей.
Что касается звёзд на GitHub — должен признать, что картина довольно ровная: около 1 звезды в день в среднем. Это определённо ничего выдающегося. Если вам нравится то, что я строю с помощью Gato GraphQL, и вы не против проявить немного ❤️ любви, то пожалуйста, поставьте ⭐️ звезду на GitHub.
Финансовая устойчивость
Это болезненная тема: проект должен быть финансово устойчивым. Он либо приносит немного денег, либо долго не продержится.

Если я смогу зарабатывать себе на жизнь, то смогу продолжать работать над проектом столько, сколько нужно. Это всё, что мне нужно: доход. Не инвесторы, стучащиеся в дверь в погоне за миллионами. Просто пара тысяч в месяц, чтобы платить за крышу над головой.
Моя цель — сохранить плагин полностью с открытым исходным кодом. Для этого я сейчас обращаюсь к паре потенциальных спонсоров, спрашивая, не хотят ли они помочь финансировать разработку плагина. Это будет взаимовыгодная ситуация.
Почему я обращаюсь к «крупным» спонсорам, а не полагаюсь на обычное спонсорство от сообщества?
Да, я пробовал и это: я зарегистрирован на GitHub Sponsors. Однако это по-настоящему не работает, если у вас нет уже тысяч пользователей, подписчиков или людей в почтовой рассылке, к которым можно обратиться и рассчитывать, что многие из них вас поддержат.
Например, при стандартной сумме 5–10 долларов в месяц мне понадобились бы несколько сотен спонсоров, чтобы этот подход окупал мою работу. А я ещё далёк от такого уровня.
Но ещё важнее: кто вообще может реально преуспеть с таким подходом? Я знаю, что Caleb Porzio (создатель Livewire) добился этого и сейчас набрал более 1350 спонсоров. Но это скорее исключение, чем правило.
Возьмём Composer, например. Composer фундаментально изменил то, как мы разрабатываем PHP-приложения, однако у него едва наберётся 90 спонсоров. Как я могу рассчитывать получить больше спонсоров, чем Composer?
Вот почему мой нынешний подход — создать взаимовыгодную ситуацию для моего проекта и небольшого числа компаний, готовых его спонсировать. Надеюсь, это сработает, и Gato GraphQL останется бесплатным для всех, со всеми функциями, без необходимости закрывать лучшее за платным доступом.
(Если вы хотите узнать, в чём именно заключается взаимная выгода, пожалуйста, напишите мне на email или в DM. Возможно, ваша компания тоже заинтересуется?)
Я дам этому подходу несколько месяцев — надеюсь, у меня получится. Если нет, только тогда придётся рассмотреть создание PRO-версии плагина и ограничение части функций для платной версии. (Да, это было бы неприятно, поэтому надеюсь избежать такого сценария.)
В следующих выпусках рассылки я буду держать вас в курсе того, удалось ли мне найти спонсоров.
Записи в блоге
Записи в блоге стали для меня настоящей гордостью и радостью.
Обратите внимание: Знаете ли вы, что на сайте есть RSS-лента? Вы можете подписаться на все мои записи в блоге и читать их в любимом ридере.
За прошедший месяц мне удалось публиковать по одной качественной записи в блоге каждую неделю:
🛠 Должен ли WordPress иметь GraphQL API в ядре? обосновывает, что WordPress мог бы выиграть от GraphQL, поскольку WP REST API получил новую функциональность в WordPress 5.6 (пакетные операции), которую GraphQL API способен предоставить нативно.
🥊 Gato GraphQL vs WPGraphQL: схватка! сравнивает мой плагин с WPGraphQL в противостоянии, которое запомнится надолго и заставит поклонников просить продолжения.
👶🏻 Омоложение WordPress через GraphQL демонстрирует, как headless WordPress можно отделить от кодовой базы WordPress, открывая возможность исправить (или хотя бы обойти) накопленный технический долг.
🍾 Gato GraphQL теперь использует scope, благодаря PHP-Scoper! описывает стратегию применения scope к WordPress-плагину с помощью PHP-Scoper, чтобы избежать конфликтов с другими плагинами.
Распространение / Упоминания плагина
Я рад, что плагин был упомянут в нескольких местах.
✅ Я выступил с докладом «Intro to Gato GraphQL» на WordCamp India 2021, продемонстрировав плагин в действии — и (удивительно для демо) всё прошло идеально! Посмотрите видео на YouTube.
✅ Joe Howard взял у меня интервью для подкаста WPMRR. Запись выйдет в ближайшее время.
✅ Chris Coyier упомянул мой плагин в рассылке CSS-Tricks №239!

Понемногу обо всём
Несколько общих новостей о событиях прошедшего месяца.
Jason Bahl переходит в WP Engine
Поздравляю Jason с переходом в WP Engine! Надеюсь, он продолжит в том же духе, как делал до сих пор для WPGraphQL.
Кстати, то, что мы конкуренты (ну, это я конкурирую с ним — он далеко впереди), не означает, что мы не можем быть друзьями или сотрудничать для улучшения проектов друг друга. В конце концов, у нас одна цель: принести GraphQL в WordPress (хотя у нас разные взгляды на то, как это должно происходить).
Но я считаю, что конкуренция — это хорошо, и она принесёт пользу всем.

WP Engine запускает Atlas и заявляет, что знает всё о headless (так ли это?)
Я также поздравляю WP Engine с запуском Atlas — их нового решения для headless WordPress.
К сожалению, они допускают некоторые неточности:
Компании, использующие полностью headless-решение, как правило, размещают отдельное JavaScript-приложение для фронтенда, которое получает конкретные данные WordPress через API — WordPress REST API или плагин WPGraphQL.
То есть Gato GraphQL не существует, да?

Обычно меня это не беспокоило бы, поскольку я не рассчитываю, что все знают о моём плагине. Но я уверен, что они знают о моём проекте и, похоже, намеренно его игнорируют.
После того как они запустили developers.wpengine.com («единый центр лучших практик, туториалов, блогов и документации по headless WordPress»), я связался с ними:
- Matt Landers, Developer Relations в WP Engine по Headless WordPress, в Twitter
- Их команда разработчиков, в репозитории их headless-фреймворка на GitHub
- Кто-то из Torque (журнал, принадлежащий WP Engine), через DM с @TheTorqueMag.
Полагаю, они не восприняли мой проект всерьёз. Или просто не обращали на него внимания, поскольку полностью сосредоточены на WPGraphQL.
Что ж, я не против, если они не хотят упоминать мой плагин. Однако утверждать, что WP REST API и WPGraphQL — это единственные два варианта, крайне вводит в заблуждение. Из-за этого мой плагин несёт ущерб, а сообщество разработчиков вводится в замешательство.
Поэтому да, признаю — я раздражён. Это совсем нехорошо. Надеюсь, они исправят неточную информацию (я уже отправил им email).
Подводя итоги
Вот и закончился первый выпуск «Строим Gato GraphQL открыто».
Как вам понравилось? Смело делитесь своими мыслями в комментариях.
Если вам понравилось, буду признателен, если вы поделитесь рассылкой с друзьями (или, что ещё лучше, пригласите их подписаться).
До встречи в следующем месяце!