Блог

👷🏽‍♂️ Строим Gato GraphQL открыто #1 (март 2021)

Leonardo Losoviz
Автор: Leonardo Losoviz ·

Добро пожаловать в самый первый выпуск рассылки «Building in the Open»!

Это канал для распространения новостей о разработке Gato GraphQL среди сообщества — выходит в первую неделю каждого месяца.

Здесь мы будем узнавать всё, что произошло за последний месяц, в том числе:

✅ Над чем мы работали и какие новые функции выпустили
✅ Над чем будем работать в следующем месяце
✅ Объём трафика на сайте
✅ Как чувствует себя плагин: количество загрузок, подписок на рассылку, звёзд на GitHub
✅ Прогресс в достижении финансовой устойчивости
✅ Недавно опубликованные руководства
✅ Обзор недавно опубликованных записей в блоге
✅ Распространение / Упоминания плагина
✅ Общие новости

Если вам нравится эта рассылка, пожалуйста, пригласите друзей подписаться.

Начнём!

Обратите внимание: Эта рассылка — двусторонний канал общения. Если вы хотите что-то сказать, смело оставьте комментарий (в нижней части записи в блоге).

Приветствие в рассылке от вашего автора

Над чем мы писали код

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

Руководства по "Extending the plugin" ещё не завершены

Мой приоритет — завершить эти руководства. Но прежде чем это сделать, я хочу сделать код плагина максимально простым. Чем он проще, тем меньше требуется документации и тем больше людей смогут его понять.

Имея это в виду, я решил провести рефакторинг кода, чтобы он полностью базировался на компоненте внедрения зависимостей 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»), я связался с ними:

Полагаю, они не восприняли мой проект всерьёз. Или просто не обращали на него внимания, поскольку полностью сосредоточены на WPGraphQL.

Что ж, я не против, если они не хотят упоминать мой плагин. Однако утверждать, что WP REST API и WPGraphQL — это единственные два варианта, крайне вводит в заблуждение. Из-за этого мой плагин несёт ущерб, а сообщество разработчиков вводится в замешательство.

Поэтому да, признаю — я раздражён. Это совсем нехорошо. Надеюсь, они исправят неточную информацию (я уже отправил им email).

Подводя итоги

Вот и закончился первый выпуск «Строим Gato GraphQL открыто».

Как вам понравилось? Смело делитесь своими мыслями в комментариях.

Если вам понравилось, буду признателен, если вы поделитесь рассылкой с друзьями (или, что ещё лучше, пригласите их подписаться).

До встречи в следующем месяце!


Подпишитесь на нашу рассылку

Будьте в курсе всех обновлений Gato GraphQL.