Сумерки OpenStreetMap
В середине ноября на глагне добавили ночной режим. Когда браузер считает, что на улице темно, он передаёт это сайту, а тот заменяет белую заливку на чёрную, и в целом пытается не выжечь глаза пользователю. Есть люди, которые живут с тёмной темой день и ночь (чтобы не слишком освещать свой подвал), и для них это изменение оказалось самым заметным за последние годы.
Любое движение на «лице проекта», сайте openstreetmap.org, широко обсуждается: ведь каждая кнопка важна, наличие или отсутствие чего-либо описывает наше сообщество лучше, чем очередное интервью со Стивом Костом. Так и тёмная тема: в сентябре её просили, но получив желаемое, ищут способы откатить.
Затенённые тайлы — главная проблема. Именно на них жалуются в тикете github. На reddit делились способами их отключения. Недавно в настройки сайта, всё-таки, добавили отдельный переключатель. Действительно, это довольно странное решение — но разумный компромисс, если подходить к вопросу с точки зрения дизайна. Традиционный способ, инвертировать цвета и повернуть палитру на 180°, работает. Но он не идеален: цвета становятся темнее, чем нужно, и хочется что-то подправить.
Правильным было бы создать палитру с нуля. Каждый оттенок на карте — плод размышления картографа, цвета влияют и взаимодействуют с друг другом, важен контраст, яркость, различимость для слабовидящих. Простое инвертирование забивает на все эти нюансы, делая карту, которая практической цели достигает, но эстетически — будто AI-картинки, на которые невозможно смотреть, если есть какой-то художественный вкус. Поэтому организации отдельно работают над ночным оформлением, и именно это предлагали для стиля osm-carto. К сожалению, у нас нет столько добровольцев, чтобы вместо одного стиля поддерживать два.
Да и остальному интерфейсу глагне помогло бы более кропотливое перекрашивание для ночного режима. Как видно даже на заглавной картинке, яркие значки и кнопки остаются яркими, цвета необычных элементов интерфейса (например, границ пакетов правок) неприятно выделяются на приглушённом фоне. Но — это много работы, и это двойная работа для всех последующих изменений сайта. Поэтому ночные темы в интернете не так распространены. Но хорошо, что наш сайт начал хоть как-то заботиться о наших глазах.
История с ночной темой интересна тремя обстоятельствами, которые мы рассмотрим в трёх следующих разделах. Потому что в прошлом году произошло много чего, ускользнувшего из поля зрения штосма.
Мейнтейнеры
Сам пул-реквест для ночной темы состоит из всего одной строчки ( плюс ещё десяток для починки мелочей, типа кнопки закрытия панели). Он стал возможен благодаря пяти годам непрерывной работы Энди Аллана, переводившего оформление сайта на Bootstrap. Поэтому не пришлось думать над цветами и править компоненты — обо всём уже подумали сотни разработчиков фреймворка.
Написал и помёржил ночной режим новый мейнтейнер сайта, Антон Хорев из Петербурга. О нём мало чего известно вне OSM, но в проекте он делает немало. Прежде всего, он участник рабочей группы по данным с 2019 года, составляет компанию другому русскоязычному участнику, Владимиру «Mavl». В 2018 году он написал четыре восхитительно дотошные статьи про картирование заведений, но и остальные 19 заметок его дневника в OSM так же вдумчивы и полны практических наблюдений. Его смотрелкой заметок пользуются все, кому не безразличны незакрытые заметки в своём городе.
Антон начал валить пул-реквесты в код сайта с лета 2022 года, и до сих пор невероятно плодовит, создаёт их по десятку в неделю. Если заглянуть в историю, там много черновиков, незакрытых реквестов, споров — но Антону всё нипочём, он просто продолжает создавать новые. Тут поменять шрифт, там поправить отображение на телефонах, здесь оптимизировать код. Из 157 открытых сейчас реквестов больше половины — его. Только летом 2024 Энди сообразил, что пора вписать Антона в список мейнтейнеров.
Так что хотя кажется, что сайт OpenStreetMap не меняется годами, внутри происходит постоянное бурление, что-то меняется местами, что-то становится чище или удобнее. В октябре Энди транскрибировал свой рассказ с лондонской конференции про опыт работы над сайтом — из него можно многое узнать про проблемы переводов и безопасного вывода HTML.
Но ощущение, что ничего не происходит, не безосновательно. Как только кто-то (даже мейнтейнер) хочет поменять что-то по-крупному, как Том, бессменный вахтёр сайта с 2007 года, отказывается во всё это вникать и затягивает обсуждения до бесконечности. Ещё во времена maps.me я делал несколько пул-реквестов, но все по тем или иным причинам закрывали. Либо Том вручную переписывал код и коммитил сам — одна из порицаемых практик в открытых проектах. Я забил на сайт, ещё десятки людей ушли точно так же. Остались те, кто вместо качественного осовременивания сайта и ответа на множество вопросов вида «что сайт говорит о сообществе» вылизывают код и исправляют форматирование HTML. Если рефакторинг длится пять лет, а похвастаться нечем, — то зачем вообще?
Надстройки
Куда уходят разработчики? Вернёмся к ночной теме: до ноября сайт затемняли с помощью надстроек браузера. Пользовательские скрипты и расширения браузера, для которых не требуется санкции авторов сайтов, — отличный способ добавить что-то небольшое быстро, без длинных обсуждений, которые рискуют зайти в никуда. Например, участники народной карты Яндекса именно любительским расширением упрощали себе редактирование карты.
Для OSM скриптов немного, но все они подсвечивают недостатки самого сайта. Например, OpenSwitchMaps: добавляет кнопку со ссылками на другие карты, геопорталы, два десятка osm-инструментов и прочее, вплоть до запуска редакторов. Можно ли что-то из этого добавить официальным путём? Ну, редактор Rapid под кнопку «править» пытаются добавить с 2020 года, и как-то не очень. Как я вещал на SotM в Кении, философия OSM предполагает, что всю нужную функциональность воплощают в отдельных проектах, но при этом мейнтейнеры предпочитают не размещать на сайте ссылок ни на что постороннее.
Или помните редактор тегов, который встраивается в страницу объекта на osm.org? Элементарно воплощается в Rails Port и без хаков, потребовавшихся для расширения браузера. Но пройдёт ли такой редактор через забор мейнтейнеров? Опыт участия не даёт даже желания проверять. 119 пользователей в прошлом году, 18 тысяч правок, но только один человек, чьё мнение имеет силу.
Самое впечатляющее расширение последний год пишет Роман Деев. Его better-osm-org добавил пункт «Edit with Rapid» в меню правки, который меня озадачил, и я двадцать минут искал коммит в коде сайта. Он делает списки компактнее, рисует геометрию на странице пакета правок, показывает, какие теги изменились в истории, даже прокидывает лайки из OSMCha. Всё это в картинках описано в дневничке Романа. Сотни мелких улучшений: с этим расширением для картографов появился смысл заходить на глагне!
Можно ли эти мелочи было встраивать сразу в код сайта? Конечно — но пришлось бы не только договариваться (или два года делать пул-реквесты каждый день, чтобы втереться в доверие), но и изучить, для начала, архитектуру проекта на Ruby on Rails. 18 лет назад этот фреймворк был новым и модным, но сейчас разработчиков на нём ещё поискать. Поэтому люди предпочитают более распространённые JavaScript (на котором и пишут браузерные расширения) или Python.
Новое поколение
Альтернативная глагне ночной режим пока не поддерживает, и это единственная строчка в её публичном плане. Кнопка для редактирования в Rapid на ней уже есть.
Секунду, альтернативная? Если вы пропустили, Камиль Монич (тот самый NorthCrab) уже чуть больше года почти в одиночку переписывает весь бэкенд OpenStreetMap на Python. Да. Весь. 50 тысяч строк кода сейчас, демо-сайт откроет со дня на день.
Проект OpenStreetMap NextGen задуман заменить всю нынешнюю гору кода: Rails Port, CGIMap и разрозненные скрипты экспорта-импорта. Если выгорит, для участия в разработке не нужно будет знать минимум три древних языка: достаточно двух самых популярных на планете, Python с известными библиотеками FastAPI и SQLAlchemy, и JavaScript. Казалось бы, как этот банальный стек может сравниться с отточенным за 18 лет кодом, тем более с C++? Камиль парирует — большую часть времени код всё равно ждёт ответа PostgreSQL. И как заметил Пол Норман, Rails Port бы справился без C++, но запросы в Ruby заметно устарели, потому что на них забили в пользу CGIMap.
Год назад люди — да и я в их числе — были настроены скептично. У нас у всех есть отрицательный опыт, когда приходишь с горчщими глазами и пуленепробиваемой идеей сделать жизнь всех осмеров лучше, а тебя на подлёте сбивает кто-нибудь из «старичков». Начать что-то на стороне безопаснее, потому что никто не закроет пул-реквест. Как сказал Matija Nalis, для нас это сродни получению бесплатной коробки лотерейных билетов: да, шансы выиграть всё равно микроскопические, но коробка-то бесплатна, почему бы не попробовать? Обсуждение вообще получилось неожиданно оптимистичным: не считая пары «старичков», все поддерживают Камиля и ждут результата.
Спустя год и три месяца после анонса, скорость разработки не снижается. Камиль каждый месяц хвастается новыми возможностями движка, которые напоминают то об API 0.7, то о расширении better-osm-org Романа. Roadmap несколько раз переписан, дата публикации демо-сервера откладывалась с прошлого февраля на май, затем позже и позже, и вот теперь как будто осталось доделать ночную тему — и всё. Ух, предвкушение!
Деньги
Первого января фонд NLNet внезапно объявил полсотни получателей грантов NGI Zero, среди них — OpenStreetMap-NG. Никто не знает, на какие деньги Камиль жил весь прошлый год (пожертвования он распределял между остальными разработчиками), но теперь его точно ничто не остановит.
Это означает, что где-то через полгода-год в OSM-NG загрузят все 14 терабайт базы данных (большую часть которой засунут в единственную таблицу). И тогда мы узнаем, реальны ли все эти приросты скорости. Но учитывая запал Камиля, вполне вероятно, что в течение месяцев он всё оптимизирует, и мы встанем перед вопросом, менять ли Тома как главного вахтёра всея осма на Камиля. Зря ли Антон фигачил свои 700 пул-реквестов в Rails Port.
Как ни удивительно, у нас будет человек с мандатом на решение подобных дилемм. Но начать надо с того, что не только OSM-NG получил грант за последний месяц. Сам OSMF удостоился сначала 178 тысяч евро от Meta (2% от их ежегодного членства в Overture Maps), а на следующий день немецкий фонд Sovereign выделил нам вдвое больше, 384 тысячи евро на два года. Так что стоны отдельных участников в мастодоне «зачем давать деньги на тупиковый OSM-NG, когда у нас тут OSM недофинансирован» немного необоснованы.
Разумеется, ни на какие неожиданные радости эти деньги не пойдут. Всё как обычно: конференции и инфраструктура. Необычно то, что второй пункт раскрыли чуть подробнее: «обновление кода по современным стандартам, привлечение разработчиков документацией и тестами, исследования на темы типа вандализма и новых способов работы с данными». И это 1) обнадёживает, хотя и не слишком, вспоминая исследования про модель данных, 2) чудовищно запоздало, 3) один в один цели проекта OSM-NG.
Что в Совете поняли правильно, — сами по себе дела не делаются и нужен человек на зарплате, который будет помогать и направлять разработку. Поэтому на прошлой неделе фонд OSM опубликовал вакансию, первую с 2021 года. До 21 января мы ищем координатора разработки сайта OSM и сопутствующих проектов. Нужен кто-то с опытом управления проектами, кто, в идеале, работал с добровольными участниками, открытым кодом, а то и с сообществом OSM. В идеале. Может, вы знаете кого-нибудь подходящего. Увлекательные задачи и вызовы предоставим.
***
Потянув за ниточку не слишком заметного нововведения на osm.org, мы вытянули историю, которая показывает 2024 год в OpenStreetMap с интересной позиции: оказалось, это был год, когда недовольство руководством центрального сайта OSM вылилось в несколько независимых инициатив по его улучшению в обход обычных пул-реквестов. Надстройка Романа и сайт Камиля не только ломают представление об osm.org как о чём-то неудобном из глубин веков, но и подначивают задуматься: а не будь вахтёры так строги, могли бы мы радоваться новым удобствам сайта и API каждый месяц все эти годы? Стоит ли стабильность сбитых несменяемыми «дедами» разработчиков-осмеров?
Кажется, в этом году мы узнаем, сколько мы потеряли, и какое у сайта OSM будущее по мнению участников и Совета.