ШТОСМ

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

С первого октября в рассылке 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

Гейдельберг 2019: воскресенье

У нас есть друзья, которые переехали в Германию и теперь грустят — от другой культуры, языка, от непонятных процессов и будто враждебной среды. Их можно понять. Германия предоставляет какой-то базовый уровень комфорта, но это не значит, что можно расслабиться. Нужно выдавать результаты на более высоких уровнях. Все бегуны, кого я тут видел, бежали в гору. Фредерик развернул огромную карту университета, и я с ужасом обнаружил, что он уточняет размеры и виды каждого дерева на территории. А тут их целый лес! Всегда нужно быть начеку: от тебя ожидают, что ты знаешь все расписания и все возможные проблемы. Немцы постоянно в курсе, что нужно хотя бы раз в месяц заглядывать в захламлённый подвал невзрачного административного здания, в неприметную дверь с плакатом «осторожно, леопард!»: там могут быть важные документы. Здесь нет неожиданностей, но есть неосведомлённость. Непонятно, что хуже.

Воскресенье — чудовищный день, потому что у меня сразу два доклада, и для основного ещё нужно допилить слайды. Поэтому решил выйти попозже, сначала потренировавшись пару раз. Смотрю в расписание — а у меня рассказ про штосм в 10:30. Делать нечего — пришлось садиться на трамвай. Короткие доклады были сплошь демонстрациями: Саид показал валидатор распознанных знаков в Mapillary, Беата — модуль ImproveOSM для JOSM, Алина — аннотирование снимков в OpenStreetCam. Я же призвал людей перестать считать за достижения только код (как везде на State of the Map) или только картирование (как везде на HOT Summit). Было бы здорово почитать мысли участников, а для этого нужно, чтобы они остановились, подумали и написали в дневнички или бложики.

Чуть позже Томас рассказал про приватность в сети, про то, что ваши координаты могут рассказать про вас. И, конечно, первое приложение, которое появляется в слайдах, — maps.me. Он покликал в точки, подвигал карту. Смотрим логи: что ушло на сервер? В фейсбук ушли название телефона, ширина экрана и уровень громкости, в mopub — идентификатор мобильного оператора. При клике на гостиницу букинг узнаёт, куда вы кликнули. В приложении можно отключить статистику и за деньги отключить рекламу. Последнее заметно сократило список серверов, куда отсылали данные, — до трёх. Хорошо бы убрать всё, кроме, разве что, crashlytics. Османд тоже что-то спрашивает у своего сервера, но это терпимо. По мне, любой продвинутой карте рано или поздно приходится заводить серверную часть.

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

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

После докладов — Poster Session: всех пригласили в соседнее здание, где развешены плакаты про OpenStreetMap. Карт среди них печально мало: три или четыре из примерно пятнадцати. Остальное — научные исследования или просто наблюдения. Как плакат с шестью видами адресации в Великобритании. Или пара плакатов от YouthMappers: они много слышали про то, что если картографов-новичков вдохновить, то мероприятие получится эффективнее. Ну как в Missing Maps всегда вначале рассказывают, что картой вы спасаете жизни, вот это всё. YM проверили это утверждение, поделив новичков на две группы. Оказалось, вдохновление поднимает мораль, но не делает из плохих картографов хороших. Всё это описано в материалах академической секции, на предпоследней странице. Постер-сессия удобнее обычного разглядывания плакатов: рядом стоят люди и объясняют всё, что сложновато.

За пивом с рыбным канапе в углу разговорил мужика из какой-то страны в средней Азии. «Что я могу рассказать на конференции, вон пусть люди, которые делают картовстречи, говорят». Разумеется, за следующие десять минут я услышал от него потрясающие рассказы про картирование близ военных частей и как он однажды учил работе с картами местную армию. То же с Джерри Кло: стоит его поймать, как байки из его профессорского опыта обеспечены. Хорошо, что последнего не нужно заставлять выступать, он сам меня приглашает на пятиминутный ликбез по почтовым ящикам завтра. Тут и там кто-то роняет на пол бутылки пива Ruprecht, замечательного тем, что на этикетке у него карта и правильная атрибуция в углу.

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

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