94 заметки с тегом

osm.org

Позднее Ctrl + ↑

Здесь вам не двач

Неделю назад к заметкам на сайте OSM запретили добавлять анонимные комментарии. Это был самый популярный запрос на трекере сайта, открытый в 2017 году после нападения спамерских ботов на заметки в России. Год спустя Фредерик Рамм подготовил пул-реквест, и теперь, после очередного напоминания Фредерика, его код приняли.

OpenStreetMap начинался анонимно. До 2009 года, когда мы перешли на API 0.6, можно было дизассоциировать свой логин и правки. Никто бы никогда не узнал, что дорогу переименовал «москвич1812». Теперь все такие люди деанонимизированы, в базе больше нет объектов без указания пользователя. Анонимно можно править отдельные атрибуты в сторонних приложениях: например, в WheelMap исправления отсылаются от коллективного аккаунта wheelmap_visitor.

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

Закрытие анонимных комментариев не спровоцировало никаких дискуссий, кроме отдельных замечаний про невозможность атрибутированных комментариев из-за политических преследований и предложения ввести тест тьюринга или байесовский фильтр для отсечения спамеров.

Также, вчера на сайте рядом с тегами для цвета появились квадратики соответствующих цветов. Чтобы понять карту, всё меньше нужно быть роботом. Спасибо Стефану Баблеру и Энди Аллану.

2019   osm.org

Не только карта улиц, и не слишком открытая

OpenStreetMap — открытая карта улиц. Это назначение зашито в название проекта, потому что атласы всегда были для автомобилистов. Улицы, шоссе, грунтовки с подписями на фоне бледных лесов и городских районов. Лора Блисс в статье для CityLab вспоминает, как рассматривала атлас Лос-Анджелеса в детстве, когда водители считали за честь держать всю сетку улиц в голове и знать, как объехать пробку на магистрали, — и понимает, почему атласы уступили навигаторам.

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

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

Сложно представить человека, который рассматривает карту в навигаторе. Она не предназначена для долгого взгляда. Главное на экране — синяя лента маршрута, чуть менее важны все остальные дороги слева и справа по ходу движения. Остальные элементы неинтересны, потому что по ним нельзя ехать. Хорошо бы их убрать или затенить, чтобы не отвлекать водителя. Мобильная карта — карта для автомобилиста, это карта улиц.

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

Мне с детства нравится рассматривать карты. Следить за линиями и обозначениями и находить взаимосвязи. Но рассматривание карты ушло в прошлое вместе с атласами. Теперь печатные карты — лишь историческая ценность. Две коробки моего картографического архива спрятаны где-то в шкафу, толстые красивые атласы пылятся под потолком, карты из спинки автомобильного сиденья я не доставал лет пять. Всё устарело, стимула покупать новое нет: там то же самое, только на свежих данных.

Каждый год на конференциях State of the Map и FOSS4G устраивают конкурс плакатов. Кажется, вот оно: стой и рассматривай. Задерживаюсь у каждого на несколько минут — но это же не карты. Это либо исследовательские работы, поданные в форме плаката, с горой текста, несколькими графиками и парой простых обзорных карт. Либо художественные работы, которые не сколько рассматриваешь, сколько воспринимаешь. Да, встречаются красивые, «Pop Art» когда-то я утянул домой и не жалею об этом. Но карты — красивые, глубокие карты больше не вешают. Карта стала утилитарна; если она не выполняет предназначение, она не нужна.

Любопытные глаза теперь рассматривают спутниковые снимки. Присматриваются к контурам домов, прослеживают грунтовку через поля и леса. Находят правильные контуры военных объектов или деревню в глуши. Что это за пятно? Кто здесь живёт? Когда на одну точку есть шесть разных снимков, интересно их сравнить, посмотреть, как застраивался город или меняла русло речка. Снимки бесконечны как вширь, так и вглубь: всегда есть интересный район или история, которую открывают две спутниковые фотографии, разделённые десятилетием.

Для таких любопытных была сделана викимапия: люди просто подписывали все объекты на снимках, чтобы другие получили ответ на «а что здесь такое?» Подписывали без разбора, дом так же, как озеро, как военную часть или тропинку через лес. Оставляли комментарии: «о, я тут рыбу ловила, пока не заросло». Викимапия была уникальным проектом для любопытных — пока авторы проекта не забыли, кто к ним ходит, и не угробили проект рекламой и смещением фокуса на картографию.

Казалось, вот два очевидных решения: люди смотрят на карточки — баннер же не помешает? И обвесили рекламой всё по периметру и немного внутри, чтобы пользоваться сайтом без адблока стало противно. И второе, наши редакторы же обводят снимки, а тут один шаг до классификации, чтобы получилась карта. Сделали — офигеть, карта начинает получаться, люди трассируют дороги и обводят населённые пункты. Вот только эти люди перестали уделять время тому, чем сайт был полезен: подписывать снимки, описывать спрятанные чудеса. Теперь они зачем-то дублируют работу, которую делают пользователи НЯК, OSM, Here. Делают недо-карту. Викимапия из уникального источника превратилась в никому не нужное подобие. Теперь на неё заходишь из жалости.

Рассматривать викимапию неприятно, а карты гугля, яндекса и подобных — бессмысленно. Атласы ушли в прошлое, а на спутниковых снимках можно что-то различить, но не понять. Получается, рассматривать нечего? Напротив: ответ был перед нами все пятнадцать лет.

Это OpenStreetMap. В отсутствие альтернатив OpenStreetMap стал главным атласом для рассматривания. Откроешь глагне  — и залипнуть в карту можно надолго. Не только дороги и дома: тропинки, болота, фонтаны и места для пикника. Именно поэтому когда-то люди возмущались, что railway=abandoned убирают со стандартного стиля: да, эти линии обозначают снятые рельсы, это не-объекты. Но когда смотришь на карту, они многое рассказывают об истории. Объясняют, почему там просека или тропинка. Интересная карта рассказывает историю, и сотни тысяч редакторов своими кусочками историй превращают OpenStreetMap в величайшую сказку на земле.

Опытные участники знают, что наша карта внутри гораздо больше, чем снаружи. Модель данных OSM со свободными форматами и бесконечными схемами тегирования подталкивает редакторов к слишком детальному картированию. Они указывают номера квартир в подъездах, виды деревьев в парке и напряжение в ЛЭП. Загружая кусочек города в JOSM, никогда не знаешь, какие мелочи заинтересовали местного картографа. То дороги окажутся усыпаны пожарными гидрантами, а то придётся ворочаться промеж отрисованных поребриков.

Карта богата внутри, но увидеть это богатство непросто. Раньше был набор из нескольких десятков визуализаций Ito Map: они показывали ограничения скорости, колеи железных дорог, освещённость, адресацию и кучу других атрибутов. К сожалению, в июле этот проект закрыли. У нас остались несколько тематических проектов типа OpenRailwayMap и Parking Lanes. Проблема с ними в том, что их не найти. Ссылки рассыпаны по случайным страницам нашей вики, сайты включаются и выключаются в произвольные моменты времени. Они не столько углубляют представление об OpenStreetMap, сколько бросают: «а вот ещё какая штучка у нас есть». Вместо единой шкатулки драгоценностей получилась сеть музеев одной брошки.

OpenStreetMap сродни карьеру, полному смыслов и геоданных. Чтобы в него углубиться, картостилей недостаточно, нужны более точные инструменты. Такие как Taginfo и Overpass API. Нашли интересный тег — запустили запрос, чтобы выкопать подобные объекты в своём районе — раскрасили и сделали себе тематическую карту. Подождали, пока лимит на плотность запросов отпустит, и продолжили раскопки. Скачали GeoJSON или подкрутили карту в редакторе. Очень увлекательно, это как править «матрицу», смотря на стекающие зелёные буковки. Только Level0 не хватает для комплекта. Думаю, лишь 400-500 человек на весь мир умеют смотреть так глубоко.

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

Любой картографический стиль делит классы объектов на карте надвое: те, что он отображает и те, что прячет. Это нормально: чем продуманнее картостиль, тем короче его легенда. И это свойственно печатным картам. Но у нас на сайте интерактивная карта с бесконечным количеством атрибутов. Глупо отображать для всех одно и то же, по-барски позволяя включить аж четыре других стиля. Сколько атрибутов — столько картостилей. Нас спасут только векторные тайлы. Каждый посетитель должен получать свой собственный срез данных, чтобы посмотреть и офигеть от разнообразия. Мы обсуждали этот подход во время прошлого State of the Map, но, кажется, никто не понимает, что нужно делать.

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

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

Быстрее загружай

Возможно, вы заметили, что правки передаются на сервер быстрее. Или не заметили, потому что это не особенно тормозило и раньше. На прошлой неделе код сайта osm.org, Rails Port, отстранили от ещё одной части API: загрузки пакетов правок. Ваши пакеты теперь обрабатывает Cgimap.

Cgimap — это программа на C++, которая обрабатывает часть запросов к OSM API. Сайт написан на Ruby on Rails, поэтому каждый запрос к нему проходит через длинную цепочку обработчиков, не всегда оптимальную. Кроме того, передача данных от базы к клиенту в Rails требует много памяти и задействует сборщик мусора, который напрягает систему. Поэтому запрос /map на скачивание данных был переписан на C++ ещё в 2009 году.

Предполагается, что если появится API 0.7, то он целиком будет сделан внутри Cgimap. Мы давно хотим отвязать API от кода сайта, чтобы дневнички и интерактивная карта остались в Rails Port, а запросы к базе были отдельно. Но работа не кипит, скрипт обрабатывает лишь малую часть запросов. Сложным барьером была поддержка авторизации OAuth, но в 2016 году Мэтт Эймос, главный разработчик Cgimap, её сделал. В мае 2018 Mmd приступил и написал обработчик второго по количеству перекачиваемых данных запроса: /upload для отправки пакетов правок на сервер. Только в начале этого года у разработчиков дошли руки подчистить концы, отрефакторить и приступить к тестированию.

Второго марта бета-версию Cgimap 0.7.0 (это версия программы, не API) подключили к dev.osm.org, 28 марта тестирование закончилось и версию отправили в репозитории. Но у Тома, как водится, руки дошли подключить только после третьего напоминания. Пара дней ушла на настройку доступа к базе данных, и с 28 мая пакеты правок обрабатываются сервером быстрее, особенно большие. Поскольку это первый запрос, на котором Cgimap требует аутентификации, в ней нашлись несколько проблем, которые поправили в трёх версиях Cgimap за три дня.

 1 комментарий   2019   osm.org

Вечно ноль шестой

Ровно десять лет назад проект перешёл на API версии 0.6. API, или протокол, — это то, к чему обращаются приложения-редакторы карты для скачивания и загрузки данных на сервер. Как видно, этот протокол менялся пять раз, причём каждый раз серьёзно: то отношения появятся, то сегменты (отрезки между двумя точками) пропадут. Шестая версия API — последняя. Вчера у неё был юбилей.

Зачем мне об этом знать?

API — это не столько протокол обмена информацией, сколько описание модели данных. Именно он определяет, что карта состоит из точек, линий, отношений и тегов, что у объектов есть версии, что в линии не может быть более двух тысяч точек и так далее. Когда менялся протокол, менялась модель данных. Как в реальном мире полезно знать основы физики, в OpenStreetMap полезно знать API.

Насколько всё странно было раньше?

Изменения в четвёртой, пятой и шестой версиях перечислены в вики. Вторая версия API стала работать через ссылки (REST), а не через сложные запросы XML-RPC, и в ней появились теги. В третьей версии теги вынесли из строкового атрибута xml в отдельные элементы <tag>, а сегменты объединили в линии (way).

Что изменилось в версии 0.6?

Появились пакеты правок и номера версий. Раньше объекты загружали по одному, а история адресовалась только по меткам времени. Линии ограничили 2000 точками, пакеты правок — 50 тысячами объектов (позже снизили до десяти тысяч), а члены отношений стали упорядочены (раньше они возвращались в случайном порядке). Кроме того, базу данных перевели с MySQL на PostgreSQL.

Зачем понадобилось менять протокол?

В феврале 2008 года, через четыре с половиной месяца после включения API 0.5, Фредерик Рамм написал пропозал «Пакеты правок и откаты», который поднимает важную проблему проекта: отмену ошибочных правок — и выводит из неё всё, что со временем вошло в API 0.6.

3-4 мая участники из Великобритании, Германии, Австрии и Нидерландов собрались в Лондоне на «Monitoring and Rollback Hack-a-thon», где обсудили новый API, составили его черновик в вики и наметали новые функции в коде.

Кто и как писал новый API?

Короткий ответ: Cloudmade. С 2007 по примерно 2010 годы эта компания была крупнейшей, связанной с OpenStreetMap. Венчурное финансирование помогло фокусироваться не на зарабатывании денег, а на развитии OSM. Среди её сотрудников были известные разработчики Стив Кост, Энди Аллан, Мэтт Эймос, Шон Макдональд и Гарри Вуд. В октябре 2008 они плотно взялись за код Rails Port, оценили фронт работ и разметили задачи. Примерно за две недели большая часть работы была сделана — но было непонятно, где её конец.

Финишный рывок разработчики сделали на неделе 3-9 ноября в лондонском офисе Cloudmade. Присутствовали те же сотрудники плюс Фредерик, Ричард и Грант. Сначала на встрече «APIzza 0.6» участники договорились об окончательном виде API. Затем на хакатоне на выходных они запрограммировали тесты и оставшиеся методы. Немного допилили напильником — и в середине ноября код был готов, а Бретт выпустил Osmosis с полной поддержкой нового API. Напомним, что Osmosis до сих пор является центральным инструментом в OSM: на нём работает репликация, а в то время только эта программа умела вырезать куски из карты и фильтровать по тегам.

Как переход проходил для пользователей?

11 декабря Шон Макдональд объявил о публичном тестировании нового API. На временный сервер загрузили карту Лондона и предлагали пользоваться Potlatch, JOSM, Merkaartor и Osmosis, чтобы отловить все возможные ошибки перед окончательной миграцией.

В конце января Стив Кост объявил о переходе на новый протокол через два месяца. Новая база данных должна была встать на новый сервер, но его не привезли вовремя: переход отложили на 17-20 апреля 2009 года. За день до назначенного времени Энди Робинсон предоставил официальную информацию о переходе. 21 апреля в 9:43 UTC Ричард Фэйрхёрст объявил: «Мы вернулись — с API 0.6, постгресом и новым сервером».

Так что, отменять правки теперь легко?

Впервые этот вопрос задали через три часа после включения API 0.6. Тогда был ответ «нет», и сейчас он тоже «нет». Но, по крайней мере, нынче есть выбор инструментов разной степени сложности. До кнопки отмены в интерфейсе а-ля википедия нам ещё очень далеко.

Отлично, а когда перейдём на API 0.7?

Теперь уже очевидно, что никогда.

Почему?

Протокол и модель данных достаточно хороши. Участники проекта накидывали идеи для следующей версии в эту вики-страницу; в её разделе «See Also» вы найдёте ещё несколько списков. Но не встретилось ничего настолько важного, что могло бы сподвигнуть сообщество взяться за написание API 0.7. Ни один человек самостоятельно не сможет улучшить протокол, потому что в OpenStreetMap слишком много несущих систем и участников, с которыми нужно договариваться.

Нельзя ли как-нибудь изменить по мелочам?

Современный API 0.6 заметно отличается от того, что мы получили десять лет назад. Примерно с 2012 года к нему начали прикручивать дополнительные функции, не затрагивающие модель данных. В мае 2012 приложения смогли узнать, какие у них права. В августе для перелицензирования в API добавили скрытие версий объектов. В апреле 2013 появились заметки. В ноябре 2014 пакетам правок добавили комментарии. Последний раз протокол улучшали полгода назад, когда улучшили поиск заметок через /notes/search.

Перелицензирование?

Забавный факт: 27 февраля 2009 года, в разгар подготовки к замене сервера и протокола, рабочая группа по юридическим вопросам предоставила план перехода на ODbL. По нему, весь процесс должен был занять всего три-четыре месяца — именно во столько поначалу Фредерик оценивал время на переход на API 0.6.

 1 комментарий   2019   osm.org

«Этот пользователь является вандалом»

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

Автором этого улучшения можно считать Энди Аллана, который работал над пул-реквестом с июля прошлого года. Но его история куда длиннее. Идея появилась в сентябре 2014 после очередной волны спама в дневничках. Том Хьюз тогда написал, что планирует добавить кнопку модерации к объектам сайта. Но ничего не произошло.

Далее, в 2015 году Shrey Bagroy предложил поработать на модерацией в рамках Google Summer of Code. Под руководством Серге Вроцлавского он программировал всё лето. Ветка была готова, но из-за каких-то разногласий Shrey не создал пул-реквест, ветка начала стареть, а студент, как водится, исчез сразу после получения денег.

Год спустя Гильем Ришар оформил ту ветку в пул-реквест. Оказалось, в ней немало проблем: непереводимые сообщения, странные костыли в модели данных, беспорядок в разграничении прав. Мэтт Эймос попробовал исправить самые явные проблемы, но сдался. По традиции, все выждали полгода перед комментированием и затем, в феврале 2017, посокрушались, что работы тут непочатый край. Наконец, в июле Энди взял работу Shrey с исправлениями Мэтта и каждый месяц что-то улучшал. Спустя год и более сотни коммитов, его пул-реквест приняли и выкатили на сайт.

Этот проект был в числе десяти важнейших задач, список которых в феврале этого года обновила рабочая группа по разработке. Теперь задач осталось девять. Среди них есть как технически простые, вроде списка комментариев к пакетам правок для пользователя, так и сложные, вроде типа area или наследника OWL. Если решитесь помочь сообществу, взявшись за одну из задач, то там же найдёте ссылки на работы на ту же тему и людей, к которым можно обратиться за помощью и руководством.

 1 комментарий   2018   osm.org
Ранее Ctrl + ↓

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