Позднее Ctrl + ↑

Ничей OSRM

История самого популярного движка для прокладки маршрутов, похоже, приближается к финалу. Или, если повезёт, к новой странице. Проект уже несколько месяцев сидит без программистов: можно сказать, что разработка мертва.

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

Не удивительно, что спустя год его автора, Денниса Люксена, завербовали в Mapbox — сразу после защиты диплома в университете Карлсруэ. В то время это было позитивной новостью: OSRM не откладывался на полку отработанных дипломных проектов, как это случилось, например, с MapSurfer, а получал поддержку деньгами и коллегами от крупной компании. С тех пор OSRM становился всё умнее, получая полезные на практике функции, вроде улучшенных пошаговых инструкций, поддержки полос и restriction:conditional.

Всё поменялось в январе 2018 года. Именно тогда Mapzen объявил о закрытии всех своих сервисов, включая движок роутинга Valhalla. Его особенностью была разбивка данных по тайлам, что предположительно помогало обновлять данные и загружать их в память фрагментами. В то время (да и в это) векторные тайлы захватили воображение руководства Mapbox, поэтому не очень удивляет, что всего через три дня все пять разработчиков присоединились к компании. Спустя месяц Valhalla уже строила маршруты по пробкам на сотнях серверов Mapbox.

А что OSRM? В апреле 2018 активность главного репозитория проекта внезапно снизилась на два порядка: с двадцати коммитов в день до пары коммитов в неделю. Деннис ушёл ещё в начале 2015. Часть разработчиков перевели на другие проекты, но большинство, судя по слухам и активности на GitHub, просто уволили. Из верхних десяти участников проекта (одиннадцатый — Лев из Juno) активность после того апреля проявлял только сотрудник Mapbox Дэниел Паттерсон. Да и то — он лишь проверял и принимал пул-реквесты от пользователей библиотеки, не тратя много времени на разработку. По косвенным признакам ощущалось, что изменения даже не тестировались как следует.

«Линия жизни» репозитория, график коммитов, дважды за последний год прерывалась на месяц: в августе и в декабре. Когда я залил очередной несложный пул-реквест, я ожидал, что нынешний перерыв тоже скоро закончится. Но с последней правки кода прошло уже больше двух месяцев. Дэниела, судя по строчкам вида «42 contributions in private repositories», загрузили работой в Mapbox, и OSRM остался без мейнтейнера. Некому даже нажимать на кнопку принятия пул-реквестов. Другими словами, проект мёртв.

Почему так получилось? У всех всё работает. OSRM как-то страхует Valhalla на серверах Mapbox, но в нём ничего не изменится, потому что вся работа теперь в векторных тайлах. Maps.Me, который когда-то удивил работой движка на смартфонах, пару лет как выкорчевал OSRM из кода, заменив своей, более гибкой навигацией. Для публичных серверов, типа недавно добавленного на глагне роутинга от немецкого FOSSGIS, достаточно старых версий. Вероятно, OSRM просто исчерпал возможности для развития, а отсутствие даже теоретической возможности поддержать различные профили, пробки и прочие динамические ограничения толкают корпоративных пользователей к разработке альтернативных решений. Если энтузиастов не найдётся и среди сообщества OpenStreetMap, проекту крышка.

Не сказать, что это плохо: GraphHopper ещё жив. Разработка движка Valhalla, разумеется, очень активна, но как и другие проекты Mapbox, поднять его на своём сервере будет непросто. А в недрах Гейдельбергского университета Амандус Бутцер и Тим Макколи растят достойную смену: OpenRouteService.

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

Ровно десять лет назад проект перешёл на 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.

Что произойдёт завтра с GPS?

Короткий ответ — ничего.

Вы уже слышали эту историю: приёмники хранят номер недели в десятибитном поле, и раз в двадцать лет оно переполняется. Завтра те устройства, которые давно не обновлялись, могут начать party like it’s 1999. Ошибка не повлияет на позиционирование, потому что внутренние вычисления всегда консистентны. Секунды и минуты тоже будут правильны. Сломаться могут только метки дня, месяца и года.

GPS на сегодня даёт самое точное время, с ошибкой в пределах трёх наносекунд. Для сравнения, сетевой протокол NTP, который обновляет время в вашем компьютере, имеет точность около миллисекунды. Точность важна в GPS, потому что время используется для определения координат. Десять наносекунд — это примерно три метра ошибки. Этой точностью пользуются сейсмологи, энергетики и другие учёные.

Пользовательские навигаторы, которые могут быть обновлены, уже обновлены. Обычное решение — запрограммировать дату отсечки: например, если год внезапно получается меньше 2015, то прибавить двадцать лет. Многие так и латают дыру: очевидно, этот способ только отсрочивает ошибку, что и сломало даты в некоторых навигаторах в 2016-2017 годах.

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

Трёх других спутниковых систем — ГЛОНАСС, BeiDou и Galileo — проблема не касается. Всю информацию я вытащил из этой презентации 2017 года для американского совета по позиционированию и замерам времени, и из позавчерашней статьи в Nature.

Конференций псто

В этом году нас ждут много конференций про OpenStreetMap и картографии в целом. Готовиться к ним нужно заранее. Эти конференции сейчас ждут от вас заявок на доклады, и негоже их разочаровывать. Пройдите по списку и порадуйте организаторов каждой:

  • State of the Map 2019 в Гейдельберге 21-23 сентября: главная конференция нашего проекта снова рядом, в Западной Европе — грех не съездить. Присылайте доклады до 25 апреля. Лучше раньше.
  • HOT Summit 2019 там же 19-20 сентября: главная конференция Гуманитарной команды выросла до двух дней, прикрепилась к SotM как три года назад в Брюсселе, и тоже ждёт ваших историй, включая «5-minute failures». Срок — до 30 апреля.
  • FOSS4G 2019 в Бухаресте 26-30 августа: самая главная ГИС-конференция с недешёвым входным билетом (330 евро без мастер-классов) и количеством треков как на Московском вокзале. Присылайте заявки до 15 апреля и потом помогайте выбрать триста достойнейших.
  • State of the Map US 2019 в Миннеаполисе 5-8 сентября: крупнейшая региональная конференция про OSM уютненько втиснулась между международными. Если можете позволить себе билет в город на полпути из Чикаго в Фарго, заявляйте доклад до 1 июня и ждите тёплого приёма.
  • State of the Map France 2019 в Монпелье 14-16 июня: прибрежный французский город недалеко от Марселя в середине лета — сам по себе хороший повод для поездки, а если вы знаете язык, то встретиться с местными осмерами сам Кост велел. Вписывайтесь в докладчики до 15 апреля и готовьте купальник.
  • State of the Map Africa 2019 в Гран-Басаме, Кот-д’Ивуар 22-24 ноября: доклады они пока не собирают, но язык ожидается французский, океан тоже рядом, так что это неплохое продолжение французской осмерской конференции. Фоточку и новостные каналы смотрите в вики.
  • OSCAL 2019 в Тиране, Албания 18-19 мая: ежегодная конференция касается всего открытого, и докладам про OSM они тоже будут рады. Тема этого года — этика в технологиях.
  • «Цифровые геотехнологии» 20 апреля (суббота) в Петербурге: очередная регулярная встреча любителей картографии, каждая из которых имела свою направленность. В этом месяце обсудят открытые ДЗЗ: если у вас есть мысль доклада, зарегистрируйте её на сайте.

Кроме того, прямо завтра в Москве, в четверг в 19:00 сотрудники «Урбики» бесплатно расскажут про дизайн картографических сервисов — скорее записывайтесь, таких знаний вы больше нигде не найдёте. И 16 апреля команда NextGIS покажет, что они нового придумали за полтора года с прошлого их Demo Day: регистрируйтесь и готовьтесь удивляться.

Картопокалипсис уже здесь

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

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

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

Прослушав десяток передач на разные темы, мы поняли, что среди тем не хватает картографии. То есть, на английском языке уже выходят два подкаста: The Mappyist Hour, в котором ровно год двое ведущих болтают на отвлечённые темы и звонят гостям (но их плохо слышно). И нестареющий VerySpatial, которому примерно столько же лет, сколько OpenStreetMap. Последний хорош, но русскому человеку может быть непросто слушать английскую речь: Google Translate на звуковой файл не натравишь, да и темы в подкасте нередко слишком коммерческие.

Теперь у нас есть приличный подкаст и на русском языке. «Картопокалипсис» выходит раз в две недели, следующий выпуск ждём 12-13 апреля. Подписывайтесь на него в iTunes, Castbox (лучшее приложение для Android), Overcast (приличное для iOS), либо скормите ссылку на RSS вашему плееру. У нас есть план на ближайшие пару месяцев, но мы будем рады предложениям тем и отзывам на опубликованные выпуски. Пишите их в iTunes, Castbox или в телеграм-группу @ruosm.

Ранее Ctrl + ↓

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