ШТОСМ

Не вина Niantic

Вчера внезапно написал в mastodon (куда я окончательно переехал из твитера) про ситуацию с Overture и покемонами.

Для контекста, неделю назад Niantic (авторы Pokémon GO) объявили о новых покемонах, которые появляются только на пляжах. Игроки тут же начали рисовать ложные пляжи на OpenStreetMap. Так же, как семь лет назад они рисовали парки. Разумеется, это нагружает лишней работой картографов и растит досаду от Niantic и раздражение от покемоноводов.

Саймон Пул обратил внимание, что за эти семь лет компания Niantic не только не ответила на запросы OSMF или вообще хоть как-то связалась с сообществом. Вместо этого она вступила в фонд Overture Maps! Пользуется картой от добровольцев, но платит корпорациям, как так получилось?

Сюда наслаивается непонимание действий Linux Foundation, который вместо поддержки OSM взял под крыло Overture Maps и этим разделил «вину». Почему корпорациям везёт, а нам — нет?

Я уже писал, почему Overture — это хорошо, и почему OSMF пока нет смысла поддерживать. В треде mastodon примерно то же самое, потому что, как нас учил преподаватель по физике, важные мысли нужно повторять трижды.

* * *

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

Но у нас уже есть фонд. OSM Foundation. Все ожидают, что фонд помогает проекту расти: поддерживает картографов, сообщество, инструменты редактирования и валидации. Те инструменты, которые сделали бы вандализм от покемоноводов легко обнаружимым и откатываемым.

Разумеется, OSMF не просил и не собирался становиться частью Linux Foundation. Зачем нам? Ну и фонды, кажется, редко говорят между собой, это не бизнес.

Есть и другая группа. Она подготавливает геоданные и продвигает их организациям. В невиданном до сих пор масштабе, с известными корпорациями. Вместо коммерческой структуры они хотели оформить открытый фонд — и Linux Foundation им помог.

Да и почему бы и нет? Overture Maps — это открытые данные. Компании-участники уже хорошо проявили себя на поле open source. Они вкладывают серьёзные деньги в продвижение открытых геоданных и конкурируют с Google, а не с нами. Со всех сторон отлично.

Чего Linux Foundation не знают — это что на сегодня нельзя сказать, что OSMF поддерживает картографов. OSMF занят серверами, потребителями данных и конференциями. Почитайте темы ежемесячных встреч Совета.

Раньше осмеров поддерживали организации. HOT, Cloudmade, Mapbox, Grab. Но на сегодня они все отошли в сторону (или развалились). Некому больше нас поддерживать, кроме нас самих.

А когда ресурсов мало, люди начинают думать в терминах не совместной работы и развития, а соперничества и зависти. Overture Maps отъедает наши ресурсы!

Можете подумать: это же нормально, что OSM работает на энтузиазме. Но если обернуться, такая ситуация исключительно редка. Может, лет пять за всю историю проекта.

Проблемы сейчас у всего IT-сектора. Всюду увольнения, сокращения проектов. OSM их не избежал — вот в такой неявной форме. Все страдают, и мы тоже сами по себе. Как мы говорим, OSM — это боль, и нынче чуть больнее обычного.

Так что такие четыре наблюдения:

  1. Высший уровень корпоративного членства в OSMF — 30 тысяч евро. Это смешная сумма, которая никому не поможет, поэтому ничего странного в том, что Niantic и другие не вписываются.
  2. Overture Maps эффективны, стоят своих денег, и они заставят мир перейти на OpenStreetMap. Нам повезло, что они появились.
  3. Поддерживать осмеров — это как поддерживать OpenSSL. Всем пофиг, кто и как делает карту, пока карта не ломается. Overture защищает пользователей от поломок.
  4. На сегодня вообще нет способов поддержать картографов. И это не проблема Niantic или Linux Foundation.

На прошлых выходных члены Совета OSMF собирались на очную встречу, чтобы обсудить стратегию развития OpenStreetMap. Я насыпал им немного идей, так что есть шанс, что через пару лет наш фонд повернётся лицом и к корпорациям, и к нам.

Не база данных

Что такое OpenStreetMap? Новички думают, что карта. Опытные картографы поправляют их, что на самом деле визуальное представление не важно, OSM — это база данных. Ветераны ставят под вопрос и это.

Недавно я объяснял людям-академикам некоторые нюансы OpenStreetMap, и речь, конечно, зашла про базу данных и многочисленные социальные проблемы, наросшие вокруг неё. Да, в сцепке «карта + сообщество» второе важнее: форки без сообщества умерли, а зияющие дыры после перелицензирования быстро перекартировали. В этом смысле OSM — лишь контейнер для наших усилий. Но когда я привычно назвал OSM базой данных, я почувствовал неточность.

Базы данных хорошо изучены, у них есть общие свойства. Все программисты знают их и умеют с ними работать. Есть нормальные формы BNF, есть ключи, типы колонок. Профессиональные форматы ГИС, типа Shapefile или GeoPackage, — те же базы данных, в которых одна колонка с геометрией, а остальное — как обычно. Можно делать update, можно делать join. Например, одно из свойств — каждая строка таблицы (то есть, каждый объект) независима от других. Проблемы с OSM начинаются с этого, но не заканчиваются.

Разработчики приходят в OpenStreetMap, читают, что это база данных, и у них в голове включается режим работы с базами данных. Технарям свойственно туннельное зрение: отбросить неважное и принудительно улучшать мир. Нормализуем теги! Насильно (массовыми правками) или мягкой силой (валидаторы и редакторы). Объединим базы в одну для удобства! Насильно (импорты, ведь они так просты и очевидны) или мягко (ключи-ссылки в ту или иную сторону). Автоматизируем работу с помощью ML! Напишем больше правил, добавим валидацию в API, разделим «строчки таблицы», введя тип area.

Ничего из этого не делает нашей карте лучше. Проблема баз данных — с ними тупо скучно работать, потому что там главенство алгоритмов, а не людей. Технологии обещали улучшить жизнь, будучи помощниками и инструментами, но вместо этого технари сделали людей помощниками и инструментами в руках технологий. Везде: от творчества (люди на копеечной зарплате генерируют базу для обучения AI) до работы (миллионные армии людей-инструментов в руках алгоритмов Uber, Amazon и их местных аналогов). Шаг влево — недовольный «бип» из системного блока и слово «нельзя». Данные не твои, их нарисовала и бережёт машина. Такой OpenStreetMap сделают технари, если им не мешать.

Источник этого — слова. Формулировки важны. Если мы называем OpenStreetMap картой, мы рисуем карту. Если мы называем его базой данных, мы наполняем и курируем таблицы базы данных. И, честно говоря, ни один из этих вариантов мне не нравится. Отсюда и то чувство в разговоре с академиками. Давайте переформулируем.

OpenStreetMap — это отражение реального мира. В окно видны улицы, и на OSM нарисованы улицы. Магазины делятся на продуктовые, мебельные и сувенирные, и у нас тоже такое разделение. Но если ты выйдешь на улицу, то едва ли сможешь согласиться с другими насчёт того, что входит в состав улицы и что отдельно от неё. Классифицировать заведения однозначно иногда невозможно. Граница между лесом и кустарником призрачна.

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

Если принять эту формулировку, то становится понятен источник многих болей. Почему импорты никогда не проходят гладко? Из-за разницы между базой данных и реальным миром: в базе объекты сами по себе, а в реальности всё взаимосвязано. Почему нормализации тегов каждый раз противится сообщество? Теги не сами по себе, и человек, выставивший их, явно хотел что-то сообщить об объекте. Нужно смотреть в комплексе.

Одной из главных «проблем» OpenStreetMap многие технари считают топологичность: то, что геометрии не раздельны, их нужно собирать их кусков. Отсюда их святой грааль в виде нормальных area, с чем Йохен носится уже больше декады. Но выглянем на улицу и поймём: ничего не само по себе. Геометрии взаимосвязаны. Теги взаимосвязаны. Слоёв нет. Правильным было бы принять это «несовершенство» за имманентное свойство и упрощать работу с ним, не уничтожая.

Поэтому any tags you like. Truth on the ground. Мы пытаемся классифицировать мир, но это невозможно. Любая техническая помощь помогает не туда. OpenStreetMap сложен для использования именно потому, что он отражение реального мира, а не потому, что нет типа area и валидаций в API. Отражение взгляда миллионов его редакторов на этот мир, которое невозможно нормализовать. Все они правы. Сопротивление бесполезно.

Главное решение

Сейчас читаю очередного Кори Доктороу и его мысли насчёт схлопывания платформ из-за рукомашества. Мол, «мы сделаем всё тип-топ, не обращайте внимания, верьте нам, крутым пацанам». Кори напоминает о «пакте Улисса»: создайте себе ограничения до того, как появятся соблазны. И тут я вспомнил о главном решении в Maps.Me.

Руководители Maps.Me приняли много решений, которые определили это приложение. Они правильно выбрали конкурента (гуглокарты), правильно не стали покупать данные, воспользовались поглощением, чтобы сделать приложение бесплатным (и, следовательно, доступным каждому). Придумали монетизационную модель, которая не мешала, а помогала пользователям: гостиницы booking.com, работавшие и без интернета, приносили львиную часть прибыли. Работая там, я слабо понимал, насколько деморализующими могли быть альтернативы.

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

Объяснять, зачем нужно открывать код, было довольно просто. Чтобы сообщество участвовало в разработке (хаха). Чтобы доказать свою готовность работать с другими. Маркетинговый повод (мало кто заметил, на самом деле). Важным было не навредить продукту — и я уверял: над Maps.Me работают полтора десятка крутых инженеров, и чтобы кому-то «увести» продукт, понадобится создать такую же команду. Мы ничего не теряем и становимся более благонадёжными.

Mail.Ru сделал пару пресс-релизов, потом мы помогли сделать страницу opensource.mail.ru, которую с гордостью возглавляли. Со временем на ней нас заменила база данных Tarantool, а потом и она отъехала. Мы продолжали кодить, в гитхаб сыпались сотни тикетов от пользователей, но нас это не смущало: мы привыкли работать без баг-трекера. Несколько людей сделали форки для своих задач, в сторах появлялись фейковые копии с платными частями, но MAU рос, Maps.Me был главным и лучшим.

А потом давление мейла заработать деньги стало слишком большим, и команда начала сыпаться. CEO начал дёргаться. Приложение начало плющить. Mail.Ru не понял, зачем им дальше его тащить, и они продали приложение корейским криптанам. Это ощущалось, как поражение.

Но вспомним о «пакте Улисса»: открытый код невозможно провернуть назад. Поэтому стал возможен Organic Maps, вышедший всего через полгода благодаря изначальным авторам Maps.Me. Всё то же самое, но без единого трекера и без реклам. Продолжились сборки данных, продолжились починки багов, и самое удивительное — продолжилась разработка!

Да, чтобы конкурировать со старым Maps.Me, понадобилась бы большая команда. Чтобы конкурировать с новым, который в момент помешательства даже заменил офлайн-карты на библиотеку от Mapbox, достаточно просто не делать хуже. Organic Maps живёт и догоняет Maps.Me по пользователям не потому, что маркетологи покупают установки и рекламируют приложение, а потому что пользователи советуют установить эти карты всем своим знакомым.

Более того, они развиваются! Над приложением работают несколько сотрудников, плюс им помогают пул-реквестами остальные. Только в прошлом году в Organic Maps добавили импорт GPX, линейку, стиль для походов, и даже сборку для Android Auto. По мне, это невероятно, что в отсутствие какого-либо финансирования, разработчики не только делают новые штуки, но ещё и терпят странные требования и ругань пользователей в телеграме.

Это чудо стало возможным, в первую очередь, благодаря главному решению — открыть исходный код. Не знаю, кто из основателей Maps.Me это придумал, — Юра, Алекс, Витя, они все могли. Не уверен, что они ожидали, что из этого выйдет что-то путное. Но заложив основу открытости, они, как оказалось, сделали приложение бессмертным, как OpenStreetMap бессмертен по той же самой причине. Как AMDmi3 комментировал девять лет назад, недостаточно обещаний сделать всё хорошо, важны юридически связывающие действия.

Организация НКО — обычный вариант такого связывания, в этом случае венчурные инвестиции невозможны, и все финансы открыты. Можно принять юридически значимую хартию. Или ограничить себя технически: например, как Mastodon, в который сбежали технически подкованные люди из твитера, не может контролировать какая-то одна компания. Открытая лицензия — очень хороший вариант для приложений и данных. Она делает обещание вечности реальным, потому что отвязывает от людей и юридических лиц. Жаль, что увидеть, как новые или устоявшиеся проекты выбирают открытость, удаётся всё реже.

Светлое будущее

На этой неделе OSMF поделился радостью: Microsoft подарила Фонду 150 тысяч долларов. Эти деньги пойдут на спонсирование трёх конференций, в счёт кампании по сбору пожертвований и сделают Microsoft вторым платиновым спонсором проекта, вместе с TomTom.

Прежде всего, большое спасибо Microsoft. Не в первый раз — когда-то они дали нам снимки Bing, позже — панорамы и контуры зданий. Деньги очень нужны проекту — в первую очередь, как раз на конференции, которые в этом году испытывают проблемы с поиском спонсоров.

Но мне вспоминается 2012 год. MapBox получил полмиллиона на разработку нового редактора. Получился iD — лучший веб-редактор карт в мире, все остальные смотрят и завидуют (кроме яндекса, у них тоже неплохо). В 2010 году Stamen Design получили 400 тысяч на создание картостилей на базе OpenStreetMap (и позже ещё два гранта на их поддержку). Вы все слышали про Watercolor и Toner, они для многих стали лицом проекта. Они вдохновили проект Field Papers, который до сих пор главный в распечатке обходных листов (хотя появился конкурент).

150 тысяч — это был весь планируемый доход от корпоративных спонсоров за 2023 год. Годовой бюджет OSMF — 700 тысяч. Это включает 170 на серверы, 100 на рабочие группы и Совет, и 280 на четырёх сотрудников. Это, мягко говоря, небольшие деньги. Бюджет QGIS втрое меньше, но это один проект, сравним с iD. Бюджет гуманитарной команды — десять миллионов. Полтора миллиона только на «технологические инновации».

OSMF целится удивительно низко для масштабов проекта. Представьте гуманитарную команду или викимедию, спамят они свои каналы благодарностями спонсорам за каждую сотню? Наш Фонд всё время с основания живёт в режиме выживания, каждый фунт на счету, поэтому нет времени на развитие. Попробовали пару раз — с микрогрантами и с моделью данных, испугались реакции сообщества, больше ни-ни. В стратегии OSMF грусть: только про помощь с проведением сборов пожертвований и жизнь в условиях нехватки денег.

Только пожелай

Деньги на выживание никто не даёт, их дают на светлое будущее. «Сначала скажите, куда вы их потратите». Благодаря нескольким заметным членам сообщества, развитие у нас под запретом, потому что «посмотрите, что случилось с викимедией». Пожертвования и спонсорство работают только до какого-то предела, после которого нужно уметь ходить по компаниям и рисовать красивые картины будущего. И это, очевидно в OSMF не умеют — кроме, наверное, Mikel Maron, чей срок вышел. Это демонстрирует ситуация с Overture Maps и то, что для картографов с 2013 года ничего особо не изменилось.

Может ли OSM развиваться сам, силами добровольцев? Конечно. Мы все (почти) рисуем карту бесплатно. Энтузиасты делают новые инструменты — например, StreetComplete и все остальные мобильные приложения. Они пишут плагины для JOSM и выпускают новости WeeklyOSM. Коммерческие компании оплачивают свою разработку: Osmium, Rapid, Osmcha, Mapillary, Tasking Manager. Организации спонсируют картирование по всему миру и обучают людей. OSMF с его рабочими группами не при чём.

Проблема в том, что принимая это состояние дел, Совет заявляет, что OpenStreetMap идеален в его нынешнем состоянии. Ему не требуются изменения, не требуется помощь. Главное — чтобы серверы работали. Корпорации лучше знают, какие инструменты делать и как руководить тысячами картографов на зарплате. Энтузиасты с хорошей работой и свободным временем придумают, как сделать жизнь картографов легче, и сами напишут все приложения, а в награду другие энтузиасты упомянут их в новостях.

Это работает, потому что некоторые люди не могут не картировать. Другие — не могут не писать. Не могут не делать приложения. Но перестаёт работать, когда масштаб работы больше одного-двух человек (кроме JOSM, JOSM — это необъяснимое чудо).

Инновации стоят дорого. Такие, как iD. Такие, как новый API. Как Tasking Manager. Любой новый проект требует разработчиков, проектирования, управления, внедрения, и бюджет будет сопоставим с бюджетом всего OSMF. Целясь низко, OSMF не даёт себе возможности что-то запустить. У Фонда нет ни контроля, ни ресурсов, ни даже способа помочь людям, которые что-то зачинают. Если у тебя нет свободных денег или свободного времени, иди картируй. Если есть — будь готова, что благодарности не будет, а будут отказы от мейнтейнеров и претензии от мапперов. OpenStreetMap — это боль.

Так что 150 тысяч — это отличный подарок от Microsoft. Но то, что эти деньги не нужны Фонду ни на что, кроме поддержки обычных конференций и обычных операционных расходов, огорчает. Хочется светлого будущего.

Тропинки

Идёшь, значит, по лесу, смотришь ягоды по сторонам, гладишь случайного кота. Заглядываешь в Organic Maps и замечаешь, что тропинка не отмечена. Вечером открываешь JOSM, проклацываешь линию — и вспоминаешь, что когда в прошлый раз навесил на тропинку привычный тег highway=path, набежали другие мапперы и завязался спор. Как же правильно?

Довольно долго был консенсус: highway=footway — это пешеходная дорожка, за которой следят (улучшают покрытие, устанавливают освещение и т. п.), а highway=path — это случайная тропинка, типа как люди протаптывают на углах между footway или в лесу. Год назад это было отмечено и в русской вики. Разница казалась очевидной: по path не всегда проберёшься на велосипеде, а footway вполне подходит. Объединение этих тегов на картостиле OSM Carto стало той гранью, за которой некоторые участники разочаровались в его принципах. «Path и footway — совершенно разные объекты по OSM Wiki» — писал vvoovv. Откуда недопонимание?

Оказалось, англоязычное сообщество ещё в 2013 году поспорило на эту тему, почти ровно десять лет назад. Ричард пожаловался в дневничке, что path обозначает «всё вышеперечисленное»: и тропинки, и велопроезды, и грунтовки, с покрытием и без. Никто не знает, что там под path. Шон из Cyclestreets сдаётся: «чёрт его знает, что там». Швед Туре для своего картостиля пытается выжать максимум из дополнительных тегов, но что делать, если их нет? В нашей вики с 2009 года собирают мнения о path, и единственное, на чём сошлись, — четырёхколёсные транспортные средства туда либо не поместятся, либо запрещены.

Как же тегировать правильно? И почему у нас есть нормальный простой тег для пешеходных дорожек, но нет тега для тропинок, которых гораздо больше?

Триединые теги

Простой ответ — такой тег есть, и это highway=path, только указывайте surface и bicycle. Сложный требует понимания трёх уровней access: физического («тут можно проехать»), юридического («тут разрешено проехать») и онтологического («это тротуар»). Первые два из них отмечаются одним тегом (access/foot/bicycle/bus/motorcar/...). Хотя в вики юридический аспект выделен и несколько раз просят не использовать тег для физических ограничений, кто из нас не навешивал access=no на закрытые ворота, или motorcar=no, когда на проезжей части бетонный блок?

Онтологическое ограничение доступа выводится из других тегов и географического контекста — например, highway=footway. В России мы знаем, что по тротуару юридически нельзя ехать на велосипеде, но физически — вполне. Поэтому иногда переключаем планировщик маршрутов в режим пешехода, чтобы построить лучший веломаршрут. А тот, в свою очередь, подключает highway=path в болоте и делает маршрут интереснее.

У нас есть теги highway для всего. Path возникает, когда дорога проваливается сквозь классификации:

  1. Одновременно пешеходная и велосипедная дорожка, или ещё какие-то равнозначные категории. Можно, конечно, выбрать главную и сделать highway=cycleway + foot=designated (т. е. пешеходам знаками тоже разрешено). Но вики и JOSM советуют уравнять их через highway=path + нужное проставить в designated. В этом случае path — это шаблон для footway, cycleway, bridleway и прочих; highway=path + foot=designated = highway=footway.
  2. Дорога без назначения. Здесь ходят грибники или ездят квадроциклисты. Или пропахал осенью джип, тренируясь к заезду. Маршрутов для четырёхколёсных средств нет (иначе бы поставили highway=track или highway=service), но следы налицо. Иногда такие дороги облагораживают, от чего они не перестают быть path.
  3. Ничья дорога. То, что мы называем тропинками. Все остальные значения highway стоят на учёте, эта же возникла стихийно и не зарастает только потому, что там ходят или ездят люди. Покрытие натуральное. Отличие от 2 — тропинка может куда-то вести или быть важной частью велопешеходной сети. Там «не используется, чтобы куда-то добраться», здесь — «не стоит на балансе».

Все три пункта объединяет то, что мы не можем ничего сказать про проходимость path для кого-либо, кроме здоровых пешеходов. Ну, разве что тег bicycle=* поможет. Поэтому для highway=path обязателен хотя бы один дополнительный тег. Да, это surface. Он дополняет 29% path в мире, но 22% в России.

Path недостаточно

Помимо surface, для городских дорожек стоит указать тег юридического доступа (foot=designated) вместе с segregated=yes/no для велопешеходных дорожек. Как ни странно, мапперы ставят footway=sidewalk/crossing и на highway=path: звучит странно, но по первому пункту вверху разницы никакой. Впрочем, и вики, и тагинфо допускают path=crossing.

Загородные и парковые тропинки различаются по проходимости. Её нужно отметить чем-то из этого:

  • Тегом физического доступа bicycle=yes/no. Не совсем легально, но в некоторых случаях альтернативы нет. И гарантированно поможет планировщикам маршрутов.
  • smoothness, хотя он слишком заточен под автомобили (тропинки — very_bad и ниже). Я бы использовал surface:grade.
  • informal=yes для всех «ничьих» дорог, третий тип в списке выше.
  • trailblazed=yes, если по ходу тропинки на деревьях есть отметки.
  • sac_scale для горных троп, trail_visibility для ориентирования, mtb:scale для техничности прохода на велосипеде, wheelchair и width — кажется, уже перебор.

Но главное, что вытекает из первого пункта классификации выше, — тропинки можно отметить как highway=footway! Этот тег подразумевает foot=yes/designated, то есть:

  1. По footway гарантированно можно пройти, он создан, чтобы ходить. При этом для велосипеда разрешение не очевидно: тег bicycle за городом обязателен. В остальном же правила такие же, как для path: добавляйте surface и остальное.
  2. Можно напороться на аргумент, как для highway=cycleway в Петербурге: ставим тег только на тротуары и дорожки, обозначенные знаками 4.5.1-4.5.5. То есть, footway обозначает юридический статус дорожки. Всё остальное — игристый path.

Подытоживая, в OpenStreetMap всё сложно, и прочитав тридцать вкладок, я не стал понимать систему лучше — даже не нашёл никакой системы. Сейчас я бы картировал лесную тропинку с фотографии как highway=footway + surface=ground + bicycle=yes. Что поменялось — раньше я смотрел на тег highway=path и видел тропинку, на которую лучше не соваться на велосипеде. Теперь я вижу тег-заглушку, который не имеет смысла без пояснений. Чего и добивались авторы роутеров и картостилей.

Ранее Ctrl + ↓

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