QuickMapServices – 10 миллионов установок

История про правильный фокус

Когда исследователи с Аляски узнали, что рядом с ними за стаканом пива сидит человек, который сделал QuickMapServices, они повскакивали с мест и принялись жать руку. Максим Дубинин, гендиректор NextGIS и автор идеи модуля, говорит об этом просто: «Модуль давно стал как воздух – за него не благодарят, его просто используют». Десять миллионов раз.

Начало: восемь полей настроек – это слишком много

2013 год. Команда NextGIS работает с QGIS и наталкивается на неудобство, которое любой ГИС-специалист того времени опознал бы мгновенно: добавить картографическую подложку – целый квест.

Существовавший тогда модуль TileLayer Plugin для подключения TMS-сервиса требовал заполнить восемь-девять полей. Плюс к этому – у QGIS не было нормального нативного драйвера TMS, а тот, что был, работал криво.

Наше решение должно было позволить в пару кликов подключить подложку. Если есть TMS-ссылка, ничего больше не должно было быть нужно.

Максим поручил задачу одному из разработчиков. Путь оказался извилистым: сначала попробовали написать аналог существующего модуля на C++. Всё получилось, но поддерживать и распространять библиотеку на C++ в QGIS оказалось тяжело, поэтому от этого подхода отказались. Тогда написали собственный TMS-драйвер на Python и встроили его в первую версию модуля. Поверх – простой и понятный интерфейс для добавления сервисов.

Поддержка TMS, при всей кажущейся простоте, оказалась сложной: разные спецификации, домены, нюансы в поведении разных сервисов. Но главное было сделано – инструмент заработал.

От локальной библиотеки к публичному каталогу

С самого начала вместе с модулем поставлялась готовая библиотека сервисов. Пользователь мог и сам завести локальную коллекцию – эта возможность есть в QMS до сих пор. Постепенно появились энтузиасты, которые брали стандартную библиотеку, перерабатывали её и распространяли как единый файл – такая стихийная краудсорсинговая экосистема.

В 2016 году NextGIS запустила централизованный публичный каталог – qms.nextgis.com. Идея простая: единая база, которую пополняет всё сообщество. От откровенного мусора спасает автоматическая валидация и мониторинг. Стихийное распространение файлов потеряло смысл – всё нужное оказалось в одном месте.

Параллельно был написан скрипт, который импортировал сервисы из OSMLab – ещё одной коллекции, которую сообщество OpenStreetMap собирает через GitHub. Несколько таких импортов дали каталогу хорошую стартовую базу. Сегодня в QMS более 600 рабочих сервисов, прошедших валидацию.

В цифрах: как рос QMS

Рост установок QMS хорошо отражает историю самого проекта: сначала медленный набор аудитории, затем – резкое ускорение по мере того, как сообщество стало рекомендовать модуль как более надёжную альтернативу другим способам добавления подложек.

Установки и скачивания NextGIS QuickMapsServices (QMS)
Количество установок модуля по годам

Ниже, на графике пополнения каталога, хорошо виден характерный всплеск – момент импорта коллекции OSMLab. За вычетом этого импорта прирост органический: пользователи сами добавляют сервисы, каталог живёт своей жизнью.

Статистика добавления сервисов в каталог QuickMapServices (QMS)
Пополнение каталога сервисов по годам
География пользователей QuickMapServices (QMS)
География использования, страны-лидеры по установкам – plugins.qgis.org
Установка модулей NextGIS для QGIS
Доля установок QMS в сравнении с другими модулями – plugins.qgis.org

Почему QMS обогнал конкурентов

К 2017 году у модуля было уже больше 130 тысяч установок. Главный конкурент – модуль OpenLayers Plugin – на тот момент был популярнее. Но у него была слабая технологическая основа: проблемы с перепроецированием, экспортом и печатью, нестабильность и падения.

Пользователи, в том числе разработчики QGIS, сами стали советовать на форумах использовать QMS. Кроме библиотеки подложек – это было технологически более здоровое решение.

В 2018 году OpenLayers Plugin закрылся. QMS к тому моменту уже прочно занял своё место. Это история без маркетинга и PR*-кампаний – модуль продвигал себя сам, через рекомендации в тематических форумах и репутацию надёжного инструмента.

Важная веха: переход на нативный TMS-драйвер в QGIS

В 2017-2018 годах QGIS начал активно двигаться к версии 3.0. В платформе появился собственный нативный TMS-драйвер. В NextGIS поначалу отказывались его принимать – драйвер был сырым, в нём не хватало функций, которые уже были в собственном драйвере QMS.

Разгорались дискуссии с другими разработчиками: почему не переходите? «Потому что там нет того и этого, а у нас есть».

Но QGIS дорос. Нативный драйвер стал полноценным. NextGIS организовала краудфандинг – собрала 2000 евро, что тогда воспринималось как большой успех. Об этом писали в Twitter (сейчас X), деньги прислали 27 участников из 11 стран.

Краудфандинг на развитие QuickMapServices (QMS)

На эти средства собственный драйвер в QMS был заменён на нативный от QGIS, а сам модуль портирован* на версию 3.0. Технический долг был закрыт, архитектура выровнена.

Краудсорсинг: честный взгляд изнутри

QMS – это «сервис сервисов». Модуль сам по себе несложный, и большого сообщества контрибьюторов* кода вокруг него не сложилось: за десять с лишним лет – около 43 пулл-реквестов*, часть из которых – просто обновления сервисов.

Иная картина с самим каталогом: огромную часть сервисов добавили пользователи. Краудсорсинг здесь работает, но с оговорками.

Урок простой – если у тебя популярный бесплатный сервис с краудсорсингом, на тебя начинает валиться большое количество мусора.

Без автоматической валидации в каталоге было бы не 654 сервиса, а тысячи – большинство нерабочих или бессмысленных. Пользователи добавляют что попало, не читают инструкции, не отвечают на вопросы модераторов. Это фоновый шум, с которым приходится постоянно работать.

Почему QGIS не поглотил QMS

Команда QGIS практикует включение популярных модулей в ядро. Почему не QMS?

Максим объясняет просто: QMS – это и сам модуль, и его база. Включить модуль в ядро можно, но что делать с каталогом? Тащить за собой зависимость от qms.nextgis.com? Вопрос без очевидного ответа.

Взаимодействие идёт иначе: QGIS развивает базовую функциональность – например, нативный TMS-драйвер, поддержку разных видов сервисов. QMS на эту инфраструктуру опирается и занимается своим – каталогом и удобным интерфейсом. Разделение труда, которое устраивает обе стороны.

Что есть QMS для QGIS и NextGIS

Каждый десятый загружаемый модуль QGIS – это QuickMapServices – один из 30 модулей компании, но самый известный за её пределами. Однако в команде относятся к этому спокойно: 

QMS – это просто пример выбора правильной точки приложения силы. Когда у тебя в голове опыт работы в отрасли 10-15 лет, ты начинаешь видеть проблемы, которые нужно решить. Как минимальными усилиями в правильный момент времени сделать лучше максимальному количеству людей.

Подложки для Марса, Луны и Юпитера в каталоге – пожалуй, самый неожиданный кейс использования.

Картографические подложки на Марс, Луну и Юпитер в NextGIS QuickMapServices (QMS)

В остальном QMS работает везде, где нужна базовая картография: инструмент настолько фундаментальный, что выделить отдельные отрасли не получится.

Планы: векторные тайлы и приватные сервисы

Из ближайшего: поддержка новых типов сервисов, в особенности векторных тайлов. Сейчас в QMS четыре типа: TMS, WMS, WFS и GeoJSON. Недавно добавили поддержку формата WebP.

Из более отдалённого: приватные сервисы как возможная платная функция для организаций.

Из мечты: выделенный специалист, который будет вести направление целиком – и серверную часть, и модуль. Своего рода лид geospatial-интернета в рамках NextGIS.

Одно точно: поддержка модуля продолжится. QuickMapServices никуда не денется.

«Часть команды – часть корабля»

QMS никогда не был стратегическим проектом в классическом смысле. Не было плана на пять лет, инвестиционного раунда или маркетинговой кампании. Был конкретный раздражающий изъян в рабочем процессе и люди, у которых хватило опыта и профессионализма, чтобы устранить его правильно.

Open-source не гарантирует ни благодарности, ни помощи, ни финансовой отдачи. Максим говорит об этом, как о данности, которую стоит принять заранее: «Делайте то, что нужно вам самим. Окружайте себя людьми, с которыми хочется работать. А сообщество подтянется».

Модуль пережил несколько волн усталости, смену разработчиков, технические переломы – и каждый раз возвращался в рабочий ритм.

За десять лет QMS стал для пользователей QGIS примерно тем же, чем становится хороший инструмент для мастера – его перестают замечать отдельно от работы. Он просто есть. Привычный настолько, что уже почти незаметный, и при этом нужный. Десять миллионов раз.

Благодарности

Модуль и экосистема QMS обязаны своим существованием сотрудникам NextGIS, а также всему ГИС-сообществу:

  • Тем, кто писал код и развивал модуль в разные годы, особенно автору первой версии Евгению Никулину 
  • Авторам пулл-реквестов
  • Участникам краудфандинговой кампании
  • Тем, кто добавлял сервисы в каталог
  • И просто пользователям – тем, кто выбирал QMS и советовал его другим

Спасибо всем!

Полезные ссылки


*
PR – связь с общественностью.
Портирование – подстройка, адаптация.
Контрибьютор – человек, который вносит вклад в проект: добавляет данные, исправляет ошибки, предлагает улучшения или участвует в развитии инструмента.
Пулл-реквест – запрос на проверку и принятие изменений в репозиторий.

Комментарии запрещены.