ШТОСМ

Главный вопрос OpenStreetMap

Сейчас в Призрене, Косово, идёт конференция State of the Map SEE (юго-восточной Европы). Видеозаписей не будет: она по-настоящему локальная, для той пары сотен человек, кто понимает английский. После моего доклада появились несколько идей, которые стоило записать. Если хотите контекст — следите за телеграм-каналами @foss4g_ru и @shtosm.

Рассказал про OpenStreetMaps во множественном числе. Втопил за многоязычность и разнообразие среди участников — и понимание, что у нас не одна OpenStreetMap с единым всемирным сообществом, а тысяча отдельных OSM с тысячью маленьких и больших сообществ, у каждого из которых свои практики тегирования и мнения о полноте карты. Я не понимаю, как здесь, в Косово, отметят свои кебабные рестораны на карте их владельцы, когда они не могут даже узнать про OSM (сайт этой конференции — только на английском) и узнать его правила (перевода вики на албанский нет).

Сейчас с Феликсом классно обсудили эти наблюдения. Спросил у него про нападки на Missing Maps. Европейцы замечали, что от всей этой инициативы веет колониализмом: белые мужчины решают, как выглядеть карте Африки и Азии. С другой стороны, карта колониальна по своей природе: ты идёшь в соседний двор и решаешь, как ему выглядеть на карте, что должно там быть и что нет. Карта — это власть; нельзя делать карту и не иметь власти. Цель подобных конференций — поделиться этой властью, дать её как можно большему количеству людей.

Но, опять же, среди слушателей нет владельцев кебабных. Они не поймут доклады, хотя среди них есть очень доходчивые ликбезы, потому что они на английском. Нужно ли им это? Закрадывается странная мысль, что может, пусть они жарят свои кебабы, карта им ни к чему. Поэтому их нет в OSM. Это опасно походит на поверье десятилетней давности, что женщин в технических профессиях мало, потому что это не женское дело, это им не интересно. Стыдная мысль, даже писать её неловко.

Другое, о чём мы задумались, — OpenStreetMap как средство получения и передачи знаний. Ты не рисуешь домики, а узнаёшь, как устроена карта, как проекция влияет на прямоту углов, как спутниковые снимки соотносятся с картой. Ты получаешь важные знания и даже не обращаешь на это внимание. Потенциальные картографы в деревнях, охваченных Missing Maps, лишаются этого: всё нарисовано за них. Для компаний и кампаний OpenStreetMap — это данные. Нужно больше данных, нужны свежие данные. Но людям нужны не данные, а знания. Люди — особенно люди из далёких стран — предпочтут научиться, предпочтут освоить удочку, а не получить рыбу. Закрашивая карту из лучших побуждений, мы лишаем этих людей знания.

Важная часть обучения картографии — ошибки. Придя в проект, ты рисуешь кривые домики, выбираешь глупые теги (я помню про свои juridical_faces) и забываешь соединить улицы. Потом понимаешь, в чём ошибка. Придумываешь свои теги, обращаешь внимание на мелочи, которые не интересуют других: на полосы обгона, кусты вдоль дороги, люки. Быть в OpenStreetMap на заре его становления было классно: ты двигался наощупь и узнавал многое в процессе.

Сейчас если ты сделаешь ошибку, тебе в личку быстро придёт кто-то из сотни валидаторов и сообщит о ней. Может, даже отругает. Всё стандартизировано, везде валидаторы. Карту используют в Facebook, Mapbox, Microsoft, Apple. Она должна быть однообразна и корректна. У современных новичков в OSM нет права на ошибку. Они приходят и становятся частью даже не сообщества, а армии картографов, где всё должно быть ровно, параллельно и покрашено в уставные цвета. Из проекта уходит игра и приходят задачи. А игра — это лучший способ получить знания. Корпорации и опытные картографы лишают участников знаний в обмен на большие и качественные данные.

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

26 октября   ВНЕЗАПНО

Не согласны делиться

С первого октября в рассылке osmf-talk люди обсуждают public domain. Сначала Северин спросил, можно ли как-то снять галочку, поставленную напротив согласия с PD при регистрации. Ему быстро напомнили, что эта галочка — не юридически значимое согласие, а, скорее, опрос мнений. Не нужно делать второй аккаунт со снятой галочкой или писать пул-реквест в код сайта: твоё мнение и так ничего не решает.

Чтобы получить значимость, галочка должна сопровождаться длинным списком условий. Например, что пользователь обязуется не использовать источники не в общественном достоянии (такие как спутниковые снимки или открытые данные в РФ). И что он не основывает свои правки — по части геометрии или тегов — на данных других пользователей OSM, не отдающих свои правки в public domain.

Нельзя отрицать, что права на свой вклад готова отдавать значительная часть сообщества: по данным 2013 года, 44% редакторов с хотя бы одной правкой поставили эту галочку. 580 участников с личной страницей в нашей вики поставили на неё шаблон PD-user, который в более строгих терминах разрешает использовать их правки. Правда, людей в вики формально нельзя связать с редакторами в API. А эта галочка… Многие признают, что она выглядит как стандартная «правила не читал, но согласен», свойственная многим формам регистрации, поэтому люди нажимают на неё непроизвольно и не понимая, чем это может быть чревато.

Так что участники пришли к консенсусу: галочку нужно убрать из формы регистрации. Это не должно быть проблемой, потому что список поставивших её недоступен никому, кроме OSMF, и потому никто его не использовал. Фредерик послал официальный запрос в LWG. Участники уже начали заглядывать в код сайта, чтобы понять, насколько сложно будет вычистить оттуда public domain. И нашли там смешное.

Оказалось, что где-то между 2010 и 2015 годами значение галочки про public domain перестало сохраняться в базу данных. Мы не знаем, кто с тех пор был согласен, а кто нет. Команду сохранения случайно удалили во время добавления на сайт условий участия. Поскольку сайтом у нас заведует единоличный Том, никакого code review его коммита не было, строчка просто исчезла.

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

9 октября   odbl   osm.org

Рисование карты по Канту

Прочитал на «репаблике» краткий пересказ тезисов Канта в отношении морали и этики и понял, чем мне не нравится инициатива Missing Maps. Они подменяют категорический императив гипотетическим, этим вредя проекту, перенося его в статус необязательного.

Многие из нас рисуют карту просто потому что могут. «Картировать должен каждый» — эта фраза, в которой обычное «может» подменяется императивом «должен», руководит нашим выбором. Особенно если подменить слово «картировать» на «улучшать OpenStreetMap», где первое слово обозначает всё: и программирование, и написание текстов, и организацию мероприятий. Это категорический императив: он ничем не обусловлен и мир стал бы лучше, если бы им руководствовался каждый.

Тут приходят активисты Missing Maps и говорят: «рисуйте карту — она спасёт жизни!» На призыв откликаются тысячи людей, которые очень быстро наполняют данными белые пятна в OpenStreetMap. Проекты гуманитарной команды один полезнее другого: где помогают оценить ущерб от наводнения, где — спрятать девочек от обрезания, в Филиппинах превентивно закартировали всю страну не только для экстренного реагирования, но и для госпроектов. Всех людей в гуманитарной команде объединяет наличие цели: они не рисуют карту, а помогают людям. Для них карта утилитарна, картировать — это гипотетический императив.

По Канту, следование гипотетическому императиву легально, то есть, полезно и правильно, но не морально. Этически развитому человеку не нужны причины, он следует долгу, и если он знает про открытую карту, то улучшает её, не придумывая, зачем он (или она) это делает. При этом, не имеет значения, OSM рисует человек или «Народную карту»: то и то считается моральным, потому что позволяет реализовывать свой долг его описания. Способ реализации не важен, покуда действие является добром для мира. Поэтому я когда-то вполне мог оказаться в НЯК и рассказывать по всему миру о нём, а не об OpenStreetMap.

Если люди рисуют карту одинаково продуктивно, руководствуясь и категорическим, и гипотетическим императивами, то какая разница? По Канту, поступок, сделанный не из долга, несовершенен. С точки зрения опытных участников проекта OSM разница налицо: имея целью не выполнение долга по улучшению карты, а стороннюю цель («спасаем жизни!»), люди на самом деле не улучшают карту, а вредят ей. Клацают кривые домики «на отвяжись», засоряют города линиями без тегов и дорогами невпопад. Ещё не сформировавшимся местным сообществам придётся не рисовать карту с нуля, как мы любим, а разгребать чужие ошибки. И это мы ещё не говорим про автоматическое рисование.

Проект Missing Maps невероятно эффективен в привлечении редакторов. Но его существование — проблема для проекта, равно как и наоборот. В 2016 году мы спорили насчёт термина craft mappers, которым Майкл Мигурски окрестил людей, препятствующих развитию OSM. Кажется, философия Канта объясняют, в чём именно он был неправ: craft mappers — это люди, для которых улучшение карты является категорическим императивом. Этот императив требует от них контроля и абстрагирования от реальных задач для карты. Их сложно понять тем, у кого карта не входит в число абсолютных ценностей.

Это не значит, что Missing Maps нужно закрывать, или что их мероприятий нужно избегать. Напротив. У лекторов проекта можно научиться заражать своим видением мира других, а затем помочь участникам не сильно портить карту. Они дают шанс подумать, что станет с OSM, когда о нём действительно узнает каждый. В субботу 12 октября в Москве рядом с метро «Белорусская» состоится первый марафон Missing Maps в России. Сходите на него и побудьте ответственным картографом, записавшись в валидаторы и проверяя правки новичков.

4 октября   hot   ВНЕЗАПНО

Желаем того, что имеем

Пока готовился к докладу, прослушал много попыток представить API 0.7 другими людьми, особенно Йохеном Топфом и Энди Алланом. И прочитал, конечно, страницу в вики. Предложений много. Самые радикальные, но с которыми сложно не согласиться, проходят по разряду «наша модель данных сложная, давайте приблизим её к Simple Features». Специальный тип для полигонов, например. Но правильно ли мы хотим?

У нас же всё есть. Мы уже умеем отличать закрытые линии от периметров, умеем разбирать мультиполигоны. Зачем упрощать, когда незачем упрощать? То же самое в предложении Йохена убрать точки без тегов и добавить линиям координаты — по сути, собственную геометрию. Да, сейчас кэширование координат ест память, собирать объекты неудобно. Но кто сказал, что должно быть удобно потребителям данных? Удобно должно быть редакторам, потому что OpenStreetMap — проект для редакторов. С их позиции всё отлично: тайлы рендерятся, данные в базу загружаются, osmium вообще быстрый стал.

Технарям, которые пишут софт, право голоса ни к чему. У них есть рычаг, коего лишены большинство участников проекта: они умеют писать софт. А остальным с моделью данных, на которую они пытаются повлиять, придётся жить. И ни разу не очевидно, что жизнь станет проще: мало ли, разрезать окружности напополам станет сложнее, или потребуется указывать, насколько важна каждая точка. Делать лишний клик на перекрёстках. Вся нужная информация уже есть в базе, а память и хранилища дешевеют быстрее, чем мы рисуем новые объекты.

Разумеется, API всё равно устарел и его нужно менять. Только смотреть не туда, куда показывают натруженные пальцы программистов. А туда, где болит конкретно у вас, картографов. Вандалы замучали? Давайте думать, что нам упростит поиск проблемных правок и их откат. Лень тратить время на исправление тупых ошибок вроде линий из одной точки? Посмотрим, какую валидацию можно встроить в обработчики загрузки данных. Не выбрать между landuse=forest и natural=wood? Давайте запретим один из них на уровне API.

И ещё пора перестать делать вид, что Overpass API — сторонний проект, никак не связанный с OSM API. На минуточку, в вики более сорока страниц про первый и всего одна про второй. OSM API не находится в вакууме, это интерфейс доступа к данным не лучше и не хуже других. Поскольку OSM децентрализован, то ничего удивительного, что API разбросан не только по нескольким странам, но и по нескольким способам доступа. Overpass API — один из них, и он решает очень много пожеланий к API 0.7. У него одна проблема: в отличие от Taginfo, Nominatim или форума он не установлен на серверах OSMF, и поэтому его сложно воспринимать всерьёз участникам проекта. Даже несмотря на то, что сервисов, написанных на Overpass, больше, чем использующих API. Ваш API 0.7 — это Overpass API, смиритесь с этим и думайте, какие особенности OSM API ограничивают все способы работы с данными.

Я поставлю на отказ от пакетов правок: как метаданные, они лучше расстановки одинаковых тегов на всех объектах, но не оправдывают никаких ожиданий. Запрос для скачивания содержимого пакета, а не только тегов, должен быть выкорчеван из API, чтобы не подавать странных идей. И поставлю на лучшие связность и версионирование: не могу не согласиться с Йохеном, что когда внутри одной версии у линии может быть несколько разных геометрий, это дезавуирует всю систему версионирования. Нельзя откатить линию или отношение к прошлой версии, потому что это вызывает вопросы, к каким версиям откатывать их члены. Так мы возвращаемся к API 0.5, когда история адресовалась по меткам времени. Поэтому специфику OSM, «всё связано со всем», нужно подчеркнуть указанием ссылок на родительские элементы, и версии делать либо составными, либо увеличивать на каждый чих.

В докладе на State of the Map, помимо проблем комментариев к правкам, я упомянул, что неплохо бы добавить способ выкачивания полной истории для любого объекта, включая историю его членов. И получение удалённых объектов для заданной области. Которое у нас уже есть для Potlatch 1, но не для остальных редакторов, несмотря на попытки Фредерика. Да, это частично умеет Overpass API, но работа с исходной базой данных поможет получить результат быстрее и помочь в выкапывании истории другим инструментам, которые не приняли Overpass как нашего отца и спасителя. Наконец, задумавшись об истории в API, мы сможем сделать ещё один маленький шажок и добавить в него метод /revert. А затем и соответствующие кнопочки на сайт.

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

27 сентября   api   ВНЕЗАПНО

Гейдельберг 2019: понедельник

С утра дождь, ровно по расписанию, которое я посмотрел неделю назад. Но это же Гейдельберг, тут такое безобразие долго продолжаться не может: к обеду уже снова солнце. Погода тут простая: если солнце, то жара. Если нет, то подмерзаем. На ужине Кристина посетовала, что я пишу сплошь плохие вещи про Германию. Возможно: моя планка ожиданий была очень высока, потому что мне в четырнадцатом году понравился Карлсруэ вокруг SotM EU, и я надеялся, что тут ещё приятнее. А тут — обычно. Красивый старый город, которому повезло пережить войну, красивые горы всегда на фоне. Тропа философов вообще лучшая: будто за полчаса переносишься в совсем другой мир с другим климатом. Везде царит немного южный беспорядок, но он контейнирован, его держат в рамках немецкого приличия. Ездить на автобусах и трамваях с комби-билетом, который подарили каждому участнику конференций, — сплошное удовольствие: доехать можно всюду, пересадки не вызывают такого раздражения, как в России. За пять дней этот билет, правда, не контролировали ни разу.

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

Поехал с утра послушать первые доклады, но как всегда, залип с кем-то поговорить в холле. Даже не помню, с кем. Понимают ли мои собеседники, что если бы не бейджики, я бы на всей конференции опознал бы всего человек десять, и не понимал бы, за какую работу благодарить остальных? Завидую тем, кто запоминает лица. «Кажется, ты меня не узнал» — с улыбкой сказал парень, которого я вечером встретил в ресторане у кинотеатра. Это был Давид из Чехии, с которым мы делали редактор маршрутов транспорта в рамках Google Summer of Code, созваниваясь по видео каждые выходные. Он приехал на SotM впервые и стеснялся вписываться в разные компании, прямо как я когда-то. Потому и сидел в ресторане вместо того, чтобы бегать по городу с Квинси, Йостом, Джанет, Мингом и остальной шайкой.

На сегодня Роланд (автор Overpass API) запланировал большое обсуждение проблем предложений новых тегов. Пропозалов, то есть. Он подготовил табличку 4×2: что желательно иметь и чего избегать, что реально изменить и что нет. Дошли мы едва до третьей ячейки: у каждого из сорока человек в зале были свои мысли. Многие топили за диктатуру: какую-нибудь рабочую группу по тегированию, которая будет руководить обсуждениями. Чтобы искала людей с нужным опытом, проверяла адекватность и имела решающий голос. Вот только кого в неё выбрать, чтобы никто не возражал, и как избежать обычного для рабочих групп выгорания через год-два? Сейчас эту группу как бы составляют авторы популярных редакторов: именно они решают, что попадает в заготовки, которыми пользуются почти все картографы.

Думали про технические решения, стараясь не скатываться в совсем дебри типа модулей для вики. Например, явно стоит посмотреть в базе, кто уже пользуется предложенной схемой. Принятым схемам не хватает указания потребителей: люди же обычно рисуют карту не просто чтобы наполнить базу данных, а чтобы их объекты было видно на сайте или в приложении. Проекты Taginfo — неплохое начало, но на практике пользоваться ими невозможно: что из того, что OsmAnd поддерживает теги highway=*? Вики-страницы про теги плохи тем, что каждый их меняет как хочет, неожиданно и не всегда логично. Какая-нибудь система с RFC, запросами на изменение, могла бы помочь. А то и вообще вынести все схемы тегирования в отдельный специализированный проект.

Потеряв счёт времени, едва успел на короткие доклады. Гильем Ришар, сидевший рядом, тоже чуть не опоздал делать первый из них. А там, как водится, технические проблемы, люди куда-то пропадают, прошло уже десять минут, а люди до сих пор жонглируют флэшками и ноутбуками.

  • Джерри про почтовые ящики. Как всегда, он выдал порцию офигительных историй про атаки суфражисток, взорванные ящики из-за неправильных гербов и разноцветные ящики просто потому что. Для тегирования ящиков применяют полтора десятка тегов, и это нормально: у них действительно столько атрибутов.
  • Тьерри из OSM Brazil. Из презентации я узнал, что у правительства Франции под-домен gouv.fr, а не как мы привыкли. Автор узнал про инициативу сбора адресов во Франции (проект Bano), и захотел то же самое в Бразилии. Стучится теперь в свои муниципалитеты.
  • Майкл Райхарт показал слои в OSM Inspector: дублированные линии, «острова» роутинга и неприсоединённые линии, которые теоретически должны быть соединены.
  • Гильем прокладывает маршрут в OSRM и делает из него отношение маршрута автобуса. Но предпочёл бы, чтобы этой фигнёй не приходилось заниматься, и для отношения маршрута хватало бы списка остановок.

В большом зале после обеда устроили серию докладов про проекты по заказу SNCF, французских железных дорог. Сначала Антуан и ещё один парень показали, как непроста пешеходная маршрутизация по вокзалам. В первом приближении всё просто: рисуешь footway и заводишь роутер. Но платформы отрисованы полигонами: нужно делать роутинг по площадям. Повезло, что масштабы невелики, можно тупо соединить рёбрами все углы и точки входов-выходов. Указатели и запреты делают известными отношениями destination и restriction. Наконец, в помещениях не избежать тегов indoor=*. Таким образом оформили уже 83 станции, маршруты всех устраивают. Всё тегирование они описали в вики.

Но пешеходу непросто следовать указаниям вида «через 300 метров поверните направо». Фредерик Родриго далее повторил свой старый рассказ про использование опорных POI типа кафе и магазинов для аннотирования пешеходных маршрутов. «За макдональдсом направо» куда проще запомнить и найти.

Сотрудники SNCF Грант и Денис втопили про маршрутизацию по железным дорогам. То есть, то, что в 2012 году делал Дмитрий, но чему мы тогда не придумали применения. А в SNCF придумали: рисовать красивую линию в приложении и матчить GPS-треки с поездов (точность 10 см!) к рельсам для аналитики. Попросили Geofabrik написать модуль к движку GraphHopper, почистили данные от рельсов с service=* и usage=branch, подлатали дорожную сеть — и ура, работает по всей Франции. Поскольку опорные точки часто стоят на здании вокзалов, алгоритм не всегда понимает, какой из путей выбрать, поэтому во избежание странных маршрутов с разворотами приходится понижать точность. Конечной целью работы авторы заявляют роутинг от двери до двери: пешком до остановки, на метро до вокзала и на поезде между городов.

В другом зале Виктор с Женей хвастались маршрутизацией по общественному транспорту в OsmAnd. Задумали её год назад на прошлом сотме, где я топил в трёх разных местах про новую схему общественного транспорта. Тем смешнее было видеть «NEW public transport schema PTv2». Ей в мае десять лет исполнилось, она старее API 0.6, вы чего. Главное, конечно, что у авторов всего за полгода получилось класть нормальные маршруты по вермишели отношений, которую никто никогда не валидировал. Это куда сложнее сделать, чем переписать потом на более адекватную и современную схему. Принять эту схему — вот это действительно сложная задача. На фоне понедельничных докладов я решил, что хватит это терпеть: сделаем с Гильемом, Джозефом и ещё парой ребят рабочую группу и сообща пропихнём.

Грегори подытожил конференцию фотографиями с этих трёх дней и вызвал на сцену всех добровольцев, помогавших с организацией. Их было человек тридцать. Примерно понимаешь сложность и масштаб организации: в этом году зарегистрировались 570 человек, и ещё человек сто были бы рады приехать дополнительно. Мы смеялись над странными обедами, но пойди прокорми такую толпу. В Милане и Сиэттле обошлись пакетами с салатами и бутербродами, тут же хоть горячий суп обеспечили. И на этом фоне рабочая группа SotM предлагает думать над проведением конференции в вашем городе через два-три года. Сложновато. Аплодирую смелости и инициативности ребят из Кейптауна, которые заявили и выиграли право провести State of the Map 2020. Жду не дождусь своей первой поездки в Африку.

24 сентября   sotm   sotm19
Ранее Ctrl + ↓