96 заметок с тегом

osm.org

Сумерки 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 будущее по мнению участников и Совета.

 Нет комментариев   10 дн   osm.org

OAuth 2

Как знают немногие осмеры, с 1 июня на сайте openstreetmap отключили аутентификацию по паролю и через OAuth 1.0a.

Первую версию протокола OAuth сайт поддерживал с августа 2009 года, через год добавили поддержку 1.0a (потому что в 1.0 была дыра). Вторую — с августа 2020, так что неудивительно, что десятки сайтов и приложений не спешили на неё перейти. Популярности OAuth 2 не добавляли сложность внедрения, проблемы с тестированием, меньший уровень безопасности и прочие проблемы из статьи Эрана Хэммера, главного автора спецификации.

Тем не менее, поддержка трёх способов аутентификации была тяжела для всего трёх человек, поддерживающих сайт, поэтому они составили список приложений и начали агитировать их разработчиков перейти на OAuth 2. Все тянули до последнего момента, но потихоньку переключались. Админы дождались публикации новых релизов Organic Maps и медленно вынули вилку из розетки.

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

Level0 — один из редакторов, автор которого не успел обновить код. Сейчас он не работает: пользуйтесь расширением для браузера и ждите. У маленьких редакторов нет поддержки от OSMF, как у iD, или от армии джава-язычных немцев, как у JOSM. Код Level0 был написан десять лет назад на PHP, так что трогать его — себе дороже.

Разработчики open source часто вынуждены посвящать всё своё время работе и семье, что оставляет их собственным проектам считанные часы в неделю. Большие корпорации, чья инфраструктура опирается на работу таких людей, горячо их благодарят и просят писать ещё. Взамен они готовы поставить звёздочку на гитхабе. Как писал Брэндон Лиу, автор Protomaps, «если компания спрашивает, почему в открытом проекте не хватает важной функции, но не готова платить за её написание, то эта функция не так уж и важна». В мире open source разработчиков поддерживают другие open source-разработчики.

Например, компания OpenCage Эда Фрейфогла не только делает один из лучших API для получения метаданных на любую точку планеты (как Nominatim, только лучше). Она также проводит мини-конференции Geomob, составляет увлекательные треды в mastodon и поддерживает финансово проекты, связанные с геокодированием и OpenStreetMap.

Сегодня эти две истории объединились: OpenCage спонсировала перевод Level0 на OAuth 2 в течение этого месяца.

Это означает, что к 1 июля не только код редактора будет обновлён, но он также переедет на новый сервер и получит сертификат SSL для https. После чего единственным браузерным редактором, не требующим JavaScript, снова можно будет пользоваться.

Надеюсь, что для кого-нибудь эта новость стала откровением: «а что, так можно было?» Пожертвования — это хорошо, и молодцы те, кто оформляет регулярные перечисления фондам, газетам, авторам и разработчикам. Но ещё лучше — организационная и институциональная поддержка. В контексте OpenStreetMap помощи можно ждать только от фонда NLNet, а на OSMF надеяться нечего, как и на крупных пользователей наших геоданных, типа Meta, Apple, Microsoft и Grab. Но для заметных улучшений многого и не требуется: всегда есть какая-то мелочь, неудобство, до которого у автора просто не доходят руки. И это те случаи, когда средних размеров компания может сделать ощутимый для осмеров вклад. Стоит только открыть метафорическую дверь и осмотреться.

7 мес   osm.org

Внезапная топо-карта

На глагне новый слой карт — впервые с января 2021 (когда туда добавили CyclOSM). Он называется Tracestrack Topo, выглядит контрастнее и чище на близких масштабах, но топорно на z11 и дальше, где протекают его истоки из OSM Carto и OpenTopoMap. Из всех стилей на osm.org этот приятнее для глаз и удобнее, если планируешь поход. И он очень быстрый: три сервера для рендеринга и ещё пять кэширующих!

Откуда он взялся — загадка. Для начала, не было ни предупреждений, ни объявлений. Он просто появился. Слоя нет в списке предложений на вики — автор добавлял его в декабре и сразу удалил, а с мая Пол Норман вообще очистил все предложения и попросил писать напрямую OWG. Которая не публикует протоколы совещаний с января. Совет OSMF здесь ничего не решал. Короче, процессы в OpenStreetMap понемногу закрываются, в основном из-за непрозрачного OWG.

Автор — Qing Cai из Нидерландов. Это примерно всё, что можно узнать о нём и его компании Tracestrack из одного человека. Публичная история примерно такая:

  • 2015—2019 — интересовался записью и отображением GPS-треков, о чём написал пару постов в Medium.
  • 2020 — пришёл в OpenStreetMap и начал картировать Китай и улучшать страницы по нему в OSM Wiki.
  • 2021 — создал картостиль для своего приложения на базе OSM Carto.
  • 2022 — зарегистрировал компанию Tracetrack для продажи тайлов и сфокусировался на ней.
  • 2023 — открыл исходники TracesMap, как сообщил WeeklyOSM, а теперь ещё и добавил свой слой на osm.org.

Это довольно вдохновляющая история — не каждая компания может позволить себе достаточно серверов, чтобы справиться с нагрузкой от глагне! И слой на osm.org — лишь вершина айсберга. Если всмотреться в демонстрационный сайт, он собран из нескольких растровых и векторных слоёв: заменяемой подложки и надписей (выбор из 21 языка), плюс дополнительные слои типа велотрасс или машрутов общественного транспорта. Похоже на то, с чем мы экспериментировали лет десять назад, но, как видно, работает!

2023   osm.org   картостили

Современные тайлы

Этим летом отключили две незначительных штуки, связанные с тайлами OpenStreetMap. Про них почти никто не знал, но это знание придавало ощущение «внутреннего круга», техничности. Сродни умению написать запрос в API без подсказки.

Во-первых, веб-карты больше не должны добавлять префиксы к названию сервера тайлов. Никаких b.tile.osm.org и никаких {s} в шаблонах для Leaflet и JOSM. Соответствующие изменения уже приняты в Leaflet, OpenLayers, FlutterMap, OsmDroid, Overpass Turbo, MapsForge и других. Уберите и вы из своих карт, добавив ссылку на пул-реквест или коммит в тикет по ссылке выше.

Эти префиксы были придуманы, чтобы обойти ограничение браузеров на параллельное скачивание. Они грузили картинки в один-два потока на сервер, а карта на экране обычно состоит из 20-40 тайлов. Чтобы не ждать, пока они загрузятся по порядку, их качали как бы с трёх адресов параллельно. Не важно, что они указывают на один и тот же физический сервер.

С внедрением протоколов HTTP/2 и HTTP/3 подобные ухищрения устарели. Теперь ограничений нет, можно качать хоть всё одновременно. А без префикса становится проще кэшировать тайлы: в кэш попадает нормальный адрес, для всех один. Сейчас запросов по всем трём версиям протокола примерно поровну. HTTP/1, скорее всего, пользуются только приложения, а не браузеры. В том числе те, что грузят тайлы бочками.

Во-вторых, больше не работают суффиксы /status и /dirty для отдельных тайлов. Знающие люди добавляли их к адресам единичных тайлов, чтобы узнать, когда они были отрисованы, и при необходимости перерисовать. Они устарели и отключены: когда тайлы отрисовывают семь серверов, команды отправляются на любой из них — часто не тот, который прислал картинку.

Интересно, как нестабилен интернет даже по отношению к вещам, которые, казалось бы, не должны меняться. Тайлы — всего лишь картинки с фиксированными адресами. Формат один и тот же с 2006 года. Но если вы сделали веб-карту пять лет назад, то за это время она существенно устарела. Два года назад нужно было заменить http на https, а теперь — убрать префиксы. Иначе карта будет медленнее, чем возможно, и рано или поздно сломается совсем. В OpenStreetMap, чтобы оставаться на месте, бежать не обязательно, но важно хотя бы ползти в правильном направлении.

 2 комментария   2022   osm.org

Савёловские Мнёвники на Кушелевке под Семково

С этого дня поисковик Nominatim на главной osm.org по запросу «Савёловский» возвращает точно такие же результаты, как по «Савеловский», без «ё». Сара Хоффманн встроила в обработчик данных токенизатор ICU, благодаря которому взаимозаменяемые буквы можно заменять. Это требовало перезаливки данных в базу, которую приурочили к выходу Nominatim 4.0.0.

Действию, очевидному для любого, кто владеет русским языком, Nominatim просили научить с 2018 года. Было два способа: воспользоваться новым токенизатором, добавленным в PostgreSQL за пару месяцев до просьбы, или поправить таблицу автозамены в Nominatim. Последнее K Rahul Reddy сделал слишком поздно: его пул-реквест отклонили, потому что таблицу планировали убрать.

Русскоязычным сервисам было бы разумно забыть о номинатиме и воспользоваться альтернативными поисковыми движками: Pelias или Gazetteer. Не Photon — тот работает на данных Nominatim и пока различает эти буквы. К сожалению, размер имеет значение: несмотря на проблемы с поиском и сложный процесс установки, люди предпочитают пользоваться движками из списка Top 1.

В этом году разработка Nominatim набрала невиданную скорость: релизы выходили один за другим, а Саре постоянно находила что-то новое, о чём рассказать на конференциях или в блоге проекта. Причина — в деньгах. Движок останется открытым на 100%, но это не означает, что разработчики будут голодать. На сайте упомянуты несколько спонсоров — NLNet, OpenCage, GraphHopper, Komoot и другие. Судя по их количеству и по тому, что OSMF, чей грант запустил ускорение проекта, упомянут последним, денег там достаточно, чтобы Сара не занималась ничем другим. Это обнадёживает: может, скоро движок научится другим полезным эвристикам, типа учёта дефисов, пробелов и литер в номерах домов.

Помимо замены самопального токенизатора на стандартный ICU от ассоциации Unicode, в четвёртой версии убрали скрипты командной строки на PHP в пользу единого инструмента на Python. Этот инструмент помогает во всём, от подготовки базы данных до её обновления и администрирования. То есть, кажется, теперь не нужно устанавливать PHP для подготовки данных. В документации дописали большой раздел про настройку движка. И теперь можно подключить базу почтовых индексов для любой страны, а не только для США и Великобритании, как раньше.

2021   nominatim   osm.org   проекты
Ранее Ctrl + ↓

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