Zverik's Diary

Recent diary entries

Three screenshots of the editor

Today I’m proud to present my new OpenStreetMap editor. It’s called Every Door and works on both iPhones and Androids. I shared the idea last Summer at a State of the Map, but started writing just late October. In the last month and a half thirty people made ten thousand edits with the editor and helped make it much better. Now I’m launching the open testing.

The official website has links to TestFlight and Google Play, a short video, and a FAQ.

I’ve got just one feeling: at long last. One way or another I was suggesting something like that for OSM since 2013. Made a failed attempt with OpenSurveyor. Watched with hope for big company projects with paid developers — but all these have disappeared. In this time we’ve got one amazing StreetComplete, which I like a lot, although it’s not for me.

Every Door is not StreetComplete. It’s not for everybody who’s got a minute to answer a few questions on the phone. This editor is for dedicated mappers. For her who, walking in a mall with hundreds of shops, thinks it’d be awesome to add each one of these to the map. For him who, pushing a stroller, dreams of mapping every sandpit and swing. For “fanatics” ready to add every street lamp, bench, and every tree in a park. This is a proper editor, with which you can forget about photomapping and trace recording.

Install Every Door today and help me make it better. The open testing will commence till late June at least, and in that time we’ll update the interface, polish input fields, add many heuristics inside. And on the way we’ll map hundreds of thousands of shops. Anything to make using the editor fun and exciting, so that our map grows even richer.

Please Automate

Posted by Zverik on 4 July 2021 in English (English).

There are multiple mapping tasks in OpenStreetMap that people still have to do old-style, like we did in 2010. But with current technology and with current funding of OSM research, these can be automated, improving mapping quality over the world.

If you work on OSM-related projects for a company, like in Facebook or Apple, please ask your manager if they can spare your time on projects useful for the community. For example:

  1. Imagery alignment! People from the US and Western Europe won’t understand, but in most parts of the world, imagery is offset up to hundreds of meters. Mappers need to shift it to start mapping, otherwise different people would map with different offsets.

    We have plugins for automatically tracing roads, buildings and rivers. Why not create a button for JOSM and iD that looks at GPS traces (rasterized or not) and finds the best offset for an imagery layer?

  2. okay I had just that one idea and struggle to come up with more

  3. please share your ideas in comments

Reminding you that there is a big conference coming up: the State of the Map Baltics 2020 in Riga, Latvia. How big? Well, half a thousand attendees have already registered. It’s time for you to buy a flight and meet us and other GIS enthusiasts and professionals on 6th of March:

Why so big? Well, it’s just a part of a bigger conference: Baltic GIT is not related to version control systems, but to geospatial technologies. Think of it as a partly local FOSS4G, only with less focus on open source. And it’s free!

We’ve got Allan Mustard of OSMF, Stefan Gustafsson of ESA, Tomas Straupis, Kirill Bondarenko, Danil Kirsanov, Evgen Bodunov, Rihards Olups and dozens of other speakers and OSM members. Do visit, and let’s enjoy Riga together!

OWG Must Be Destroyed

Posted by Zverik on 11 December 2019 in English (English). Last updated on 12 December 2019.

Note: this post goes too far and may be triggering. I believe OWG does great stuff, but is too powerfull with too few resources.

Thanks to a discussion in OSM Belarus telegram group, I suddenly realized why the new Board would not change anything. We could replace all seven members, and the project will stay the same. We could invite all GlobalLogic employees to run the project, and they wouldn’t harm a node. We are looking the wrong way.

All real work in OpenStreetMap is done by working groups. They decide on license terms, press relations, data policy, and technical stuff. Since we’ve got few volunteers, anybody can join any working group and… start working, I guess. The concept of “working” is what stops people from joining, and many people tried to explain there isn’t that much work.

In his manifesto Steve Coast suggests, besides closing off the Board and the tiles, to drastically increase budget for the Operations Working Group. Which makes sense: they are the only working group to have consistently spent money, which had measurable positive impact on the project. Why wouldn’t we want more servers?

OWG also manages our website. And planet extracts. And our data model. And developer relations. And has a final say over who can and who cannot integrate with our core systems. Which… Is a lot, don’t you think? They must have a vast experience on working in open source, on encouraging developers to join the effort.

Except they are doing exactly the opposite. Despite having 37 tile caching servers, our tiles are slower than ever, with many experienced contributors having moved to alternative tiles. In the past nine years I’ve seen dozens of developers driven off the Rails Port website code. Even active members of the Board were rejected their valuable contributions, like an endpoint to retrieve deleted objects. In their repositories, OWG members are consistently breaking every rule of open communities, by not giving outside people even a bit of control.

And who are the OWG? Strangely enough, in the past eight years OWG has only been shrinking. They are essentially just two people, who’s been in the project since 2006. I have no idea how they’ve managed to keep doing the same thing for 12 years, keeping the servers up 24/7, without any positive feedback.

Individually each of them are awesome, they have lots of experience, they know their job and their devops skills are sky high. They rush to fix our servers in the middle of night. We do not pay them: keeping volunteering to run a million-user project is no small feat. I doubt we can find other people like them. They are irreplaceable — and that is exactly why we need to stop relying on these people.

The Board can rotate on a yearly basis, fight against corporate involvements in matters that don’t matter, and spend five more years introducing microgrants that won’t affect the project in the slightest. Because the project is shut, because the real core group does not share power and shuns away anybody who thinks for a moment they can contribute. And even the hardware part is limited to reactive responses, since two volunteers do not have capacity to plan ahead.

With that, it seems like the only proactive and useful deed the new Board can do is to disband OWG completely.

They cannot go away themselves because of the burden of responsibility — a feeling I have shared myself in the past. Instead we need to plan our budget and hire people to do essential stuff. So they are responsible and humble, and do not have ambitions to run the project — only to make our hardware and devops better.

Managing our website and other core tools should be more open — and the level of OSM Carto is not enough, although it’s something to look up. We need a group of community managers, to attract and keep new developers, to be more bold with changes, to have yearly and quarterly plans for improving the user and corporate interactions. And to finally chart where the project is going.

Juno Leftovers

Posted by Zverik on 21 November 2019 in English (English).

As you might know, as of this week, Juno is no more. It is ceased to be. We had a good run, helped thousand of NYC drivers earn money and provided them with a human, attentive support team. But the increasing regulations in the city benefited Uber and disadvantaged their competitors, especially small companies like Juno. So we decided not to continue this fight.

What happens to the GPS tile layer we were making? It is still there — but not updating anymore. I have loaded two days worth of tracks for the central part, and month for the rest. It should help validate some of the complex cases around the edges, but obviously won’t tell you what has changed in recent days. Sorry for not updating it, and I hope it still helps with mapping New York.

In the meantime we have published another open-source thing: a reverse geocoder. In fact, it seems like the first ready to use, open and strictly reverse geocoder. Unlike others, it is in no way optimized for forward geocoding, but does one thing better than the others: finding an address for a coordinate. You can learn more about why it is not an easy task from my SotM lightning talk. And head to the github repository to see the queries and test cases for yourself:

The moment Juno was over, the whole R&D team, me included, was acquired by Lyft. Which means, instead of asking others to open more data for OSM and to help the community with improving the map, I get to do that myself. Just for the US though, but still better than NYC only. I’m pretty excited for this new opportunity, and looking forward to working with their mapping team and their data — and making OpenStreetMap useful and better for everyone.

Илья показывает на слайд «OpenStreetMap»

На прошлой неделе меня по работе отправили в Бобруйск. Это такой большой маленький город, где делают вкусный ирис, а с недавних пор мы в Juno Lab помогаем там делать умных школьников. Рассказывал, как обычно, про OpenStreetMap. Пришлось много тренироваться, чтобы дети смогли высидеть полтора часа и не заскучать. Разумеется, стоило им открыть iD, как их школа пропала с карты — но затем появилась, заново нарисованная.

Чтобы результат не пропал, повторил весь текст на камеру. Сорок минут отборной картографии. Теперь есть что присылать людям, которые не знают про OpenStreetMap, а вам лень объяснять:

It all started with a bad edit. We in Juno rely on routing over OpenStreetMap roads, and notice every change that breaks the map matching. One day, we encountered a pretty big breakage caused by reversing some one-way roads. Turns out, all sources available to mappers, and even proprietary alternatives, like Google Street View, were obsolete enough to validate the edit. I told the story in my FOSDEM talk, but the main point is that it gave me an idea.

How fresh a source can be? We’ve got plenty of these, but they all are very old. GPS traces come very slowly, and people still trace lines from ten years ago. Satellite imagery is updated once every few years. Street View photos (that is, Mapillary) is always older than you’d like. If something, like a street direction, has been changed in past two months, you’ve got no way to know it and reflect it on the map, save for surveying it yourself. It’s okay for a small village, but not for New York.

Overview of Juno GPS traces over New York City

We need NYC data to be as fresh as possible, so few weeks ago we have published all our GPS tracks for you to trace over. Not as raw data, of course, but as a raster tile layer, looking exactly the same as our standard GPS layer. But with more traces. Tens of thousands tracks — just for one day, never older than two days from now. It is updated daily, so remember to clear your cache when confused.

All the data comes from our drivers, so if you see a line on the layer, you can be sure somebody drove there yesterday or a day before. A line over highway=construction? Time to mark the road open. A line in a wrong direction over a one-way street? That’s an error in the map. A segment of highway=secondary with no lines over it? Check the news: it might have been closed recently. If you zoom close enough (tiles are rendered up to z19), you can spot turning lines, allowing for validating turn restrictions.

I believe this is the freshest geodata source available to OSM mappers. No other source consistently gives you data for updating a map as it was few days ago on this scale. The layer is local, but it can demonstrate a possible future for OSM sources.

Obviously, we take privacy seriously. All traces are trimmed from both ends by a random amount, and everything is cut by a bounding box, so you won’t find a lone track going to a specific neighbourhood of Trenton and back again. Time range is offset slightly, so there is no telling on which day specifically a ride occured. Finally, there is no metadata that could link any pixel from these tiles to our internal data or link to real people in some other way.

The technical part was completed in just a day thanks to the open source ecosystem of OpenStreetMap. A special thank you goes to Eric Fischer, who wrote GPX importing and visualizing scripts for OSM. If you are interested in how it works, it is quite simple: a script downloads all our GPX traces for a day, uses Eric’s scripts to make raster tiles, packages them all in a Docker container and uploads it to Amazon EC2.

Close-up of traces around Grand Army Plaza in Brooklyn

The layer is already included in imagery suggestions in JOSM, when you edit inside New York City, and will be available in iD 2.15 when it’s released. For now you can use{zoom}/{x}/{y}.png for a custom layer (disable “Locator Overlay” to see the lines). The data is published under CC-BY-SA 4.0 with an explicit permission for tracing in OpenStreetMap. We are expecting to expand into New Jersey soon, but there are no fixed dates.

With this data, we aim not only to help mappers in the US to better map the NYC, but also to inspire employees of other companies to share their ride data. Publishing GPS tiles is safe, does not expose any secrets and helps people. If you work in Lyft, Uber, Yandex, Grab or other ride-sharing or car/scooter sharing service, please consider talking to your employer and publishing some open data. Contact me if you have questions or need help convincing.

Victor, Ilya, Vladimir, Timofey, Daniil

“There are empty territories, but then a question arises: if they are completely empty, then why should they be mapped? For some reason, the local people decided that they don’t need to map that.”

“We, as white men, are very privileged, and we simply do not see obstacles.”

“Maybe in some form we will use the technologies made back in 2008-2009 for Osmarender”

“Why women can not program themselves an editor understandable to them, use tagging schemes that are necessary for women…“

“What this is about, is that Mapbox ruined the vector tiles for OSM.”

“To sum it up, we see that OSM is turning into Google Map Maker.”

Last week there was a big OpenStreetMap conference in Milan, where I obviously went. There were a lot of great talks, I met a hundred awesome people and shared many ideas. During the conference I wrote a live feed with thoughts and photos, though in Russian. That’s why I don’t plan to write a separate blog post: I’ve written enough.

At the end of the second day, when most people went to drink beer, me and four other attendees gathered to talk about OpenStreetMap and things learned at the conference. We recorded an 83 minute Russian-language podcast, which was shared on the live feed. But I also wanted to share it with the English-reading community, because some ideas from it were quite important, in my opinion.

Thus, I present to you a complete transcript of the podcast translated into English! I used Google Translate and spent couple hours on fixing words, so it should be understandable. I’d be happy if someone read it to the end and gave their thoughts on things discussed.

And I’d like to thank Dorothea again, who lent us a voice recorder. Without it, it would be unlikely the podcast could be deciphered at all.

On Vector Tiles

Posted by Zverik on 29 July 2018 in English (English).

This is a very rough translation of parts of the discussion that happened on the Shtosm Telegram channel. I’ve translated it so the upcoming vector tiles BoF section does not miss my point of view, while I’m presenting OSM Streak in another room.

Kate in her keynote mentioned the recent article by Richard about what OpenStreetMap needs:

The answer is vector tiles, he writes, but before that he makes a long intro about OSM not being a map; it’s a community and possibilities. He is right. But if we talk about tiles, you should understand one thing. Developers of OSM Carto style have been discussing switching to vector since April. They approach it as a technical task: to repeat the same thing, but with a different stack. And Richard’s point is that it would be wrong.

Style developers are fixated on quality, on cartography, on target audience. The make a product: tiles, which are featured on thousands of web sites. And this product, being showcased on our website, is overshadowing the real product that we make: the geospatial database. That is bad, since people believe OSM is tiles and mapping style, not data. They expect from the website to show traffic, to feature a ruler and satellite imagery. People feel that our product is the website, the routing feature, the mapping style.

What we need is to push the style to the sidelines, and to employ vector tiles. Though not to repeat what we already have in them, because then we’d get exactly the same: a product that overshadows the data. We should do intentionally raw tiles, which adapt to user’s needs. Roads, buildings, some POIs by default. But with a few clicks you could see bicycle routes: make a photo and go cycling. A map like a clay: very plain, but take it — and the possibilities are endless.

This change would mean a revolution in how we relate to our data, especially from admins and style developers. It would require us to relieve control to the user. We do that with the data, but we are yet to learn to relieve control for other parts of the infrastructure. The time to learn is coming.

We’re discussing the website. I’m trying to convey the (not very fresh) idea that non-mappers do not need OSM, and don’t even need to know about the OSM. They can use other wonderful websites, a magnitude better in features and mapping style than our website. And that have a ruler. For example:

If a person opened the OSM website, they came not for features and not for tiles, but to learn about OpenStreetMap. When we make a user-facing service with the website, then it’s weird that Tom closes issues about adding a ruler or improving directions. OSM website is not one of many useful tools for a user, but first of all, an instrument for mappers, and a showcase of OSM capabilities. And in that it is awful. For the price of being slightly useful for outside users — and in the end, nobody gains much.

So, the solution is to send outside people to outside websites, built with OpenStreetMap data, and starting to wreck our website into a fun place for mappers. As soon as OSM Carto is pushed back (not removed, just moved into secondary layers), and when we have a map builder on the front page, people would suddenly understand that all this times they were slaves to the single correct way of looking at OSM, and turns out they have options!

Improve the map builder tool a bit, so you can not only create, but also export maps — and you’re looking at a style database for hundreds of new styles. Then, add a style library, and we get styles for cyclists, styles with 100% POI displayed, pretty background styles for infographics, and thematic styles for those looking for a tobacco shop or a toilet, and weird coloured styles for modern art admirers. All that simply because OSM would stop building a third-tier google maps service, and will switch to pushing its unique qualities. For being simple and useful we have MapCat, and being that is not our thing. We can do better.

A new minor release of MAPS.ME is coming, and just now I’ve got the new data for it — with numbers on size and features difference with the old data. First, sizes:

  • Indonesia_Central.mwm: 107 up to 127 MB
  • Tanzania.mwm: 212 up to 225 MB
  • US_Indiana_North.mwm: 19 up to 25 MB

Basically the same as the last time, except Portugal was replaced by Indiana state. And there was some prominent activity in all of Peru.

  • Somebody has traced a few thousand highway=track around Buenos Aires.
  • In Patagonia, Argentina, ~300 hamlets (50%) were demoted to isolated_dwellings.
  • Austria_Carinthia: import of ~3000 address points, +50%.
  • Brazil_Bahia: somebody mapped ~7000 power towers, +73%.
  • Brazil_Rio Grande do Norte: from 5 salt ponds to 238.
  • Canada_British Columbia_Islands: from 14 natural=cape to 635.
  • Canada_Newfoundland_West: somebody almost doubled the number of mapped buildings: 487 → 806.
  • Chile_North: 81% of place=hamlets disappeared.
  • Congo-Kinshasa_Kivu: traced ~7000 segments of residential roads, +54%.
  • The same in Gabon: +6000 segments, +160%.
  • Ecuador_West: seems like many supermarkets were imported, 845→1923 (+128%).
  • France_Pays de la Loire_Sarthe: somebody likes tracing fences, 350→3350.
  • In French Alpes, especially in Ardeche, ~9000 intermittent streams were added.
  • In Iceland, somebody retagged ~100 footways to cycleways, and added lit=yes tag to ~700 highway segments.
  • India_Assam: +11500 buildings (+90%).
  • India_Uttar Pradesh: 65 → 247 toilets.
  • Indonesia: so many new roads mapped, most prominent +40k residential in Jawa Tengah and +32k tracks in central Indonesia.
  • Ireland_Leinster: +250 wheelchair=limited tags (+54%).
  • Japan_Chubu Region_Gifu: somebody had a great survey walk there, adding ~50 each shops, temples, information boards, graveyards, company offices etc.
  • Mauritania: from 7 to 87 castles.
  • Morocco: at least 12k new surface=* tags on roads.
  • Namibia: all highway=road and highway=living_street tags were replaced.
  • New Zealand: there’s an ongoing address points import, at least ~87k new (+65%).
  • In Nothern Norway somebody imported (or mapped?) ~13k power towers.
  • In Peru, schools and kindergartens were imported: +30k / +186% and +24k / +262%.
  • In Poland, somebody is drawing area:highway=footway, at least 6k new objects.
  • Russia_Arkhangelsk Oblast_North: almost all landuse=garages were removed, 135→18.
  • Russia_Moscow: imported 2700 address points.
  • Russia_Smolensk Oblast: somebody has a good mapping night, adding, among other stuff, 870 barrier=fences.
  • Singapore: 158 → 84 landuse=military. Demilitarization or concealing?
  • In South Africa many rural features were mapped, including farmlands, tracks and especially 2750 waterway=ditch lines.
  • Spain_Catalonia_Provincia de Girona: 388 → 670 admin_level=4 boundaries.
  • Spain_Andalusia_Sevilla and Spain_Cantabria: ~4000 new building:part objects, somebody making everything 3D?
  • The same in Tanzania: +2000 building:part (+78%).
  • UK_England_Greater London: from 78 down to 4 castles.
  • UK_England_South West England_Bristol: deleted all but 99 riverbanks (-97%).
  • US_California_Sacramento_Stockton: imported ~70k buildings, +56%.
  • US_Colorado: removed 2/3 of address points, ~10k.
  • US_Indiana_North: imported 150k address points, +600%.
  • US_Texas: at least 16k new surface=* tags, doubling their count.
  • Vietnam: 73 → 343 jewelry shops.

This list has taken more than a hour to write — but I imagine it took a million human-hours to map all that. Great work!

Not Yours, OpenStreetMap

Posted by Zverik on 8 May 2018 in English (English). Last updated on 11 May 2018.

This is a translation of this article in Russian. Far from perfect, but understandable, I hope. Written by Ilya Zverev, CC-BY.

Riding the wave of Google Maps pricing news, Tom Chadwin reminded everyone of benefits of using open source solutions, and concluded with these words: “You now have a concrete compelling argument to those who have always asked: “Why not just use Google Maps?”.

Have I got a platinum argument towards a metaphorical Google Maps: because your open map does not have any future, that’s why. It doesn’t even have good POI coverage, unlike Google, which has franchise owners lined up with location offerings. Because it presents not a dozen grumpy dudes turning every data contributor down, but a nice mat with “Welcome” on it.

That’s an exaggeration, of course. We’ve got a great, beautiful map, which in many areas not only excels — it doesn’t have any alternatives. Nowhere else can you get a reasonably correct road graph. No other map would allow for estimating population density. Nobody would provide you with the data to install a copy of a service in a closed network.

With that, it is hard to not notice that OpenStreetMap is dying. Not because we’ve got a database for a map, or that we don’t have moderators, or the data is not split in layers, like Serge complained. For a technically skilled person it’s impossible to believe in the fall of OSM: the data is detached and decentralized, which is eternal by definition. On top of that, it is free (as in beer) and a million editors contribute to it: why isn’t every website using it?

Because it is unreasonable to use. OSM loses to any alternative maps for one reason: no control. Nobody has it. Over anything. Since around 2012 OpenStreetMap is headed directly into abyss, and rare attempts at correcting the course are met by grumpy blokes, who protect control levers, saying: “power to the community” and “our project self-regulates”. The project’s advantage became its weakness — and, it seems, the fatal one.

No control over the map. Want to import locations for your franchise? Tough luck, your data quality does not meet our standards. Want to map your town? Meet the local gatekeeper, who would scold you for highway tags choice and then disappear, because you are unbearable. And being a watchman is hard: in fourteen years the best we could do was OSMCha. Users of which are still complaining about wide, albeit thin, changesets. We’ve successfully lost the author of OWL. DWG members are still using outdated Perl scripts for work.

No control over the website. This is familiar to anybody who’ve made a pull request to any part of the core infrastructure. You’ll never hear a thanks, but will get a full bag of comments instead. Two guardians do not let through any unconventional change: it’s like amidst a crumbling world we must hold on to what we already have. They don’t see that the power of their grip is what crumbles their world.

No control over the data model. The last effort to advance the API required money and power of the entire Cloudmade company, which means a dozen osmers, working for venture funding for a few weeks. A hope for an “area” data type was faint five years ago, but by now even the most optimistic osmers stopped dreaming of change. The only thing in plans for the new API is restricting metadata for GDPR compliancy, and that’s only because nobody wants to pay charges.

No control over tagging. The main distinction and advantage of OpenStreetMap is a free tagging model. It has grew so enormous, nobody, not even experienced users, can choose correct tags. Forums are full of humor on heath, forest and namespaces. Proposals are a joke: one side invents alien tagging schemas of hundreds kilobytes, another turns inside out in attempts to sink every proposal. Novice mappers are not freaked out by this only because all editors, even on mobile, put tags away behind the presets.

No control over the mapping style. Long ago, the main mapnik style was so complex, people were afraid to touch it. Then it was converted to CartoCSS, made prettier, and contributors started flocking in. For a few years they were improving icons and colours, updated the database structure, sorted out fonts — and the map started looking decent, like on any other popular service. Same bleakness.

But now it’s obvious that nobody knows where to go next. Well, Paul Norman gives talks exactly about this (in my opinion) for two years. It’s painful to look at developers’ attempts to continue, especially this year: they fruitlessly try to change established tagging principles, because the OSM data model is incompatible with good carthography. We reached the ceiling of the rendering stack made five years ago. The only way out is to throw it all away and start anew — exactly what authors are discussing these days.

No control over developers. “The most precious resource is the community, which moves the project into its bright future.” Haha, just don’t look at developers, who move in any direction but forward. Some invent a twentieth geocoder, or tenth routing engine; some spend two weeks at data wrangling, only to come up with an unimpressive series of dots. “Hurray, I’ve managed to deploy a tile server”, we hear. Congratulations, but no. It’s 2018 outside, and we’ve got no developer environment, no integration tools, no financial support, no strategic plan. Just some lonely volunteers sitting on key elements of the infrastructure.

No control over license. Mappers want to protect their work, which is understandable. From this were born all the copyleft licenses, to make the world a better, more open place. But there was a flaw. To succeed in this world, you need to learn to bargain. To take a buildings dataset from government, and provide them with geometry updates. To allow a booking service to not open their data, as to get a million and a half verified hotels, and be able to improve position errors in a service used by hundreds millions. And so on.

Our license forbids all that, which doesn’t hurt third parties much: they’ve got enough data on their own. It is us who are hurt, because we cannot make any deals. Community members are on lookout to shut any advances. Even with trivial cases, we’ve got issues. Just this year I’ve seen half a dozen requests to use the map in various TV shows. And every time for similar questions, different answers were given. Nobody, not even the Legal Working Group, understands ODbL. But it is status quo, and in OpenStreetMap, status quo is king.

As you know, in this world to stay in place, you must run as fast as you can. I follow the news for Google Maps, Yandex Maps, 2GIS, and I see them trying new algorithms, fresh points of view. They change user interfaces, always improve data models, learn to communicate with their communities in new ways. They react to problems with structural changes. They have the power to change everything — or the opposite, to tidy up the data, smoothen edges, make it comfortable. They can buy and sell, to make their map better.

All the OpenStreetMap community can do is to gather for a weekend to trace buildings in yet another town. That’s why the main use cases for our project are humanitarian initiatives and serving as a base map layer, when one cannot afford a proper map. Try remembering, what major news we had in the past year, worthy of articles in big tech blogs? A new JOSM release with whitespace trimming in tags?

I agree that relying on a proprietary map means giving up some control to a corporation. But are you absolutely sure you want control over every part of carthographic stack? Do you have enough money for that? A commercial provider can change its terms and put you in an unconvenient situation, but unlike OSM, you can make deals with them. A company is people, who have all the power: you can call them and bargain for better limits, or ask for a help with mapping. You are a client to them; to OSM you, when wanting something for your business, are worse than nobody.

That’s why OpenStreetMap stopped growing. On the charts, you can notice negative trends brewing. Like Wikimapia around 2011, our project has tapped out its meanings. With the current direction, we have ten years, after which we would look like Wikimapia does now: lots of data, no community, who have defected to alternative projects. And then people who chose OSM as a replacement to Google Maps, would have to think again.

In the next year or two we must fix at least some of the issues and find new directions for the project. The “free as in beer” narrative, constant for the past ten years, turned from progressive to pathetic. The main question is, why would you want OpenStreetMap, when you can choose from any of alternative maps, each of which is better in some aspect. And don’t start with “but my yard is mapped better here”. Maybe we plan to revolutionize geography teaching worldwide, or become a universal base map for everyone, or become a framework for experiments in modern carthography. Any answer will do — as long as you are prepared to work.

Until then, most companies would prefer Google Maps.

Maps Update: 17th of April

Posted by Zverik on 24 April 2018 in English (English).

Once or twice a month I build data for MAPS.ME application. After the process of downloading OSM data, building coastlines, extracting objects, generating indexes and packaging mwms is done, the final stage is testing. With that, I get notified when a file size changed dramatically, or many objects of a same type were added or removed in a region. I think you might be interested in some of these changes.

So, what happened between 16th March and 17th April?

  • Indonesia_Central: file size increased from 67 to 107 MB
  • Portugal_South: decreased from 56 down to 53 MB
  • Tanzania: 183 up to 212 MB (and it was just 87 MB a year ago!)

And in objects of specific types:

  • In Argentina somebody changed many road classes, mostly up (res→tertiary, primary→trunk).
  • And number of place=town objects fell threefold.
  • In Australia, somebody added surface=aspalt tag on a hundred thousand ways.
  • Austria_Salzburg: 17 thousand more address points (24k → 41k).
  • Bangladesh: office=ngo went from 76 to 121 objects.
  • Bolivia_South: 123% increase in buildings (39k → 87k).
  • Brazil around Minas Gerais: +30k power=tower and +300 substations.
  • Brazil_South Region_West and Cape Verde: lost all highway=trunks (~50 ways each).
  • Burundi: waterways increased by 100%, e.g. streams 6k → 12k objects.
  • Canada_Ontario_Kingston: no more railway=tram.
  • Czech_Stredni Cechy_East: post boxes: 450 → 1332.
  • Germany_North Rhine-Westphalia_Regierungsbezirk Detmold: 64% of railway=light_rail converted to railway=tram.
  • India_Andhra Pradesh: imported 8000 place=village/hamlet.
  • India_Assam: mapped 6600 buildings (+108%).
  • Indonesia_Central: mapped A LOT of roads (~40k tracks and unclassifieds) and 1.6 mln buildings (+180%).
  • Italy_Marche: imported 3200 address points (+120%).
  • Kenya: mapped 6k power=tower (+130%).
  • Libya: mapped 9500 intermittent streams (up from 113).
  • New Zealand North: imported 305k address points (+172%).
  • Norway: imported many thousands of amenity=recycling all over the country, ~500% increase.
  • Peru_Lima: shop=electronics count increased from 341 to 1447.
  • Peru_South: mapped 43k buildings (+52%).
  • Portugal_South: lost around half of natural=wood, =scrub, =grassland, landuse=farmland (36k to 20k), building:part (2500 to 800), railway=station (291 to 176).
  • Russia_Saint Petersburg: leisure=stadium count went down from 172 to just 36. Yes, it’s one of FC 2018 cities.
  • Rwanda and Sudan_West: lost all of highway=living_street.
  • South Africa_Western Cape: added ~7k obscure amenity=* values.
  • In Spain somebody retagged most amenity=doctors as amenity=clinic.
  • Tanzania: building:part count went up from 1081 to 2655.
  • In some regions of the United States, hundreds thousand highway=service ways appeared.

Welcome to OpenStreetMap!

Posted by Zverik on 20 April 2018 in English (English).

— Yay, new mapper! Welcome to OpenStreetMap!

— I see you are using wrong tags. Please read Map Features and don’t come back until you’re done. I don’t care if it’s too long. Go to Google Map Maker if you’re intimidated.

— I don’t know you. Please go to talk@ mailing list and introduce yourself and reasons for your mapping. Yes, I know you have to sign up using some obscure web page, and then receive unwanted mail for eternity. But rules are rules. Go do it, or leave.

— I see you work for a mapping company. I will be watching you, because you do not care for our map. None of you do. Yes, I am working at such company too, but I care.

— I caught you not tracing from Bing like the rest of us. Please explain your sources and acquire specific permissions for using these. Or better stop.

— I see that among 500 buildings you’ve traced, 20 have been recently demolished. I know that they are still on imagery and in the registry. But it looks like your quality of mapping will never reach mine. Please go away and never come back.

— Hey, I’ve seen more edits from you. I think we’ve discussed it. I don’t care if they are good, I have reverted them. Please do not come back.

— Hi new mapper, welcome to OpenStreetMap!

Turn restrictions are pretty common to OSM, them being the second most popular relation type, after multipolygons. Usually a restriction is a relation with two highway ways, “from” and “to” and a “via” member connecting these. The value of “restriction” tag adds a meaning: which kind of turn is forbidden on this route. For example, “restriction=no_left_turn” (and any other no_* value) forbids going from “from” to “to” way using “via” intermediate objects. Alternatively there are “only_*” values, forbidding any routes from the “from” way except the one leading to “to”.

Usually “via” members are nodes, which makes them redundant for all types of restrictions except “no_u_turn” (which has the same way in “from” and “to” roles). Thus supporting them in a routing libraries has been easy. But — a “via” member can also be a way. For example, on a dual-carriageway, like the one pictured below. Supporting ways for “via” members is hard, but they constitute less than 3% of all restriction relations, so developers have often ignored these.

Screenshot of the new restriction editor in iD

On the 5th of March, a new major version of iD editor was released. Among the changes, one stands out: the restriction editor got a big update. Now — finally — it allows adding “only_straight_on” restrictions (and others of the kind). And using ways in “via” roles. It looks awesome, and I’d like to thank Bryan for this feature. It is very intuitive, and I like that the iD team puts user experience first.

This change will obviously affect the number of restriction relations that have ways in “via” roles. And these have been hard to deal with. I don’t know if all routing engines support such restrictions. MAPS.ME currently does not.

So to decide if supporting these restrictions should be a priority, I conducted a small research on how the change to the editor affected the map. First, I looked at the number of restriction relations by “last edited” date:

A chart of restrictions by four categories

The black vertical line marks the day before the announcement.

You can clearly see that after the announcement, mappers started adding all kinds of restrictions, not just the new supported types. The most popular kind are “no_*” restrictions (e.g. “no_left_turn”) with a node in the “via” role. But you can notice the surge in “only_*” restrictions (e.g. “only_straight_on”) after the announcement, which by now has almost receded to the pre-March levels, ~100 a day. And there is a clear rise in new relations having ways in the “via” roles, from 10-20 before the new iD version, to 50-200 (!) after. While coming in waves, the number does not seem to decline.

Let’s calculate percentages of these previously rare kinds of relations:

Percentages of only_* relations and ways in "via" roles

I have extended the period a bit, to account for a “calm” two-month period. Obviously, the rate of “only_*“-type restrictions did not change at all. The increase in their absolute numbers coincided with the similar increase in relations of other types.

But the percentage of relations with ways in “via” roles has definitely started to rise. From 3-5% before the new iD to 10% and rising after. It is entirely possible this line will settle on around 15-20%, which means around 300-400 new such relations every day. Which means, if you make a routing engine, you can no longer ignore relations with ways in “via” roles.

Traditionally such relations were made for restricting u-turns on a double-carriage highways. This chart confirms it:

Number of no_u_turn relations compared to others

The main increase is still in u-turn restrictions: as many as 260 a day the week after the announcement. Naturally, a developer might think they need to implement the support for only that type of a relation with a way in “via” role. It probably could be done with some kind of a shortcut patch.

Alas, other types of restrictions with ways as “via” are no longer virtually non-existent. From 1-2 a day, mappers now add 20-40 relations of other types daily. Here is the list of restriction types for relations with “via” member ways (thanks Roland and Martin for the Overpass stack!):

  • 23429 no_u_turn
  • 690 no_left_turn
  • 442 only_straight_on
  • 386 no_right_turn
  • 240 no_straight_on
  • 185 only_left_turn
  • 114 only_right_turn
  • 7 only_u_turn

Okay, no way around this issue. Looks like any routing engine that does not support ways in “via” roles won’t be able to route properly from now on. And we in MAPS.ME have to catch up.

But… Is that all? Let me show you this:

Chart of relations with more that one "via" member

Yay, iD editor supports restrictions that span two and more ways! We had 800 such relations in total before March, and in just two weeks mappers have added 150 more. I am pretty sure there are no more than two routing engines supporting such chains of “via” members, and that’s being generous. So — get to work, developers: the routing over OpenStreetMap has just got much more complicated.

The Subway Validator evolves

Posted by Zverik on 19 March 2018 in English (English).

First, thank you all for improving the mapping of subway networks all around the world! In just half a year, we made more than 150 networks routable, of 180 total. That is very impressive. Today, OpenStreetMap has more data on subways than any other source, open or proprietary.

Last week, I have made a few improvements to the validator. The major one is a change to how stations are counted. We had an issue of transfer stations: for some cities they were counted once, for other — twice, depending on how they are mapped. This simplified calculating a projected total number of stations (just copy it from wikipedia), but affected mapping.

Now, thanks to disc12, it sums up numbers of stations for each line. This is more predictable and allows for different interchange mapping styles. In the spreadsheet, counts of stations have been mostly updated in form of a formula: =line1+line2+…+lineN. You can clearly see how many stations it expects for each subway line. If you find an error there, add a comment and I’ll update the number.

Having trouble with missing or extra stations? Click on “Y” near the city name, and you’ll get a YAML file with all stations, transfers and lines. What’s new is a number of stations for each line (calculated as a number of unique stations for all its itineraries), along with a list of stations. Comparing it to wikipedia is much easier.

There are some improvements planned still. For example, handling of stations under construction: you cannot add these to routes at the moment, or you’ll get an error. And there is a “nowhere near the tracks” error that is hard to track — I really should do something with it. And the preprocessor calls for a GTFS output.

Thanks for mapping, now let’s finish the last cities and then monitor the world for new subway and light rail stations. If you are an app developer, please consider using the validator output for your app. Contact me if you have any questions.

Subway Routing in Maps.Me

Posted by Zverik on 25 December 2017 in English (English).

Last week we published the latest version of Maps.Me. It’s got the major version number increase — 8.0. And not for nothing: there is a brand new “Discovery” button, which shows interesting places around you. There are christmas markets on the map — not from OSM though. You can register as a “local guide”, meet new people and show them around your city. Hotels from can be filtered by price, rating and availability.

But that is not why the release is worth celebrating. The main thing is, we’ve made a metro routing!

Screenshot of an Underground route in London

It won’t be an exaggeration to say that this is the first even public transport routing application that uses solely OpenStreetMap data. Anybody can employ GTFS data, but using OSM is not that easy. All these relations — “route”, “route_master”, “stop_area”, with enourmous tables in the wiki detailing their usage. Utter mess in the data, a result of mapping for a renderer. Very few people understand public transport mapping, so how did we even use it?

We started with a simple task: visualization and route planning for every subway and light rail network in the world. There are only 180 of these: 700 lines (which require at least 2100 relations, as you might know), 11700 stations. To map all of these, you have to get your tagging straight. And that’s how the “Metro Mapping” proposal was made. Then I wrote the subway preprocessor, which takes a filtered planet file and produces an easy to use structure for every network, and a validation page, so you know what to fix.

And then me and a few other mappers started improving public transport relations in many cities, mainly in Europe. When we started, there were, like, three good metro networks. Just before the MAPS.ME release, there were 78 in 74 cities. I’d like to thank Claudius Henrichs for improving many routes in Asia: he’s the first person outside our company that used the subway validator to improve public transport mapping.

Help us!

What’s for the future? The second proposal about rapid transit mapping is being discussed right now, and in mid-January the voting will start. Please read the proposal and if in doubt about anything, write your questions on the discussion page.

180 networks is not too much, but we need your help. Not a city in the United States has subway routing in MAPS.ME. Zero cities in China. If you live in Asia or any of the Americas and want to have subway routing on your next trip, please read the Metro Mapping tutorial, consult the validation page for your country and fix the tagging in OpenStreetMap.

We’d like to see public transport from OSM being used properly, not only in rendering of lines. If you work on an application, please consider using Subway Preprocessor to provide rapid transit navigation for your users. We in MAPS.ME strive for OSM to be used in as many ways as possible, and we continue to work on making public transport from OSM available to everyone.

I broke my streak

Posted by Zverik on 19 December 2017 in English (English).

A few days ago I forgot to spend a minute in an OSM editor. I had almost a month of consecutive edits, level 3 in OSM Streak with almost a hundred points. And then, after a hard day, I forgot about even opening a laptop. Neither an email, nor a telegram notification helped.

Participating three days in a row

The next day I submitted my first changeset in a row. How much did I lose in the game? I had been receiving five points for each changeset (I was too lazy to complete tasks), now I get three, completing the tasks. The fourth level was two months ahead, now… I don’t know, two and a half? 500 points is a long way to go.

I am practicing for mapping every day in the next year. Now I have seen how the streak could be broken, and to prevent that, I must not push mapping towards the end of a day, but do it the minute I see a notifidaction. Sometimes the task intimidates me: instead of opening the iD editor on a random place and mapping a building (which takes a minute), it requires opening JOSM, finding a specific place, looking at third-party services like Mapillary, remembering some piece of tagging, adding an imagery layer and uploading changes. All of this fits in five minutes, but there are days when I cannot spare that for OSM.

But seeing the point counter increase is still fun. I invite you to register in OSM Streak and spend a few months mapping. You might like it. Or maybe you will have a few ideas for the tasks.

A year of edits with OSM Streak

Posted by Zverik on 3 December 2017 in English (English).

Hi, I am Ilya and I have been uploading changesets 15 days in a row. Not because I’m so into it or somebody makes me: I’ve made a tool that reminds me to do it. In a year I expect my HDYC activity chart to be completely filled. And you can have the same too.

Introducing OSM Streak: a website that gives you points for submitting changesets each day. You get 1 point for the first changeset, and then you get more: for example, I will receive 4 points for my next changeset tomorrow. And that is not all: it gives you a random task each day, so you don’t stare at the map trying to come up with an idea. For completing a task, you get an extra point. And when you map many days in a row, you gain levels, which open more tasks.

Forgetting to visit a website is expectable, so OSM Streak is also a Telegram bot (find the link on the “Connect” page). With the bot, you can forget about the website: it accepts changesets and sends you tasks every day. Alternatively, you can subscribe to e-mail notifications, which will be sent on 1:00 UTC.

All the tasks and the website and the bot can (and should!) be translated into your language. We have English and Russian, and I would be very grateful for more translations.

Finally, there are 26 tasks at the moment, and you can add more by making a pull request or an issue on github. You can also use the source code as an example for writing a telegram bot, doing migrations with peewee ORM, sending e-mails with python or adding i18n with transifex.

Hi. I’d like to ask you to the Metro Mapping proposal page, read it in full and leave your vote below. The proposal mostly summarises subway and light rail mapping practices and introduces a few useful changes, listed in “What This Affects” section.

You will find many opposing votes there. You might be tempted to read only these comments and skip studying the material. It is simpler, and some of the authors are well-known in the community: they must know what they are talking about, right? And there are 8 screens of text, who would read that?

That is what I don’t like in the current proposal system. It does not matter what the proposal actually contains, how deep an author knows the topic or if the features in questions are already mapped in a suggested way. What a great power you have when the voting starts — strike out weeks of work by writing a few words! You must be a fool not to excercise that power. And who knows what might happen if the proposal is approved? Everybody understands you cannot edit a wiki page after that. You would need to write your own proposal, and it might be rejected, so it is safer to just oppose.

For the first time in OpenStreetMap history I started actually using the data to route users through subways. And found out the tagging is insufficient: there was no sane way to map interchanges, and you could put thousands of members into some relations. For a mapper things also looked bleak: to map a subway properly, you would have to know how underground tracks go, and where underground platforms are located. No wonder that a beta version of a validator showed that the world had like three subway systems mapped good enough, out of nearly two hundred.

So I’ve put up this proposal page, that makes mapping subways simpler, and makes using the data easier. You could learn some things from it you’ve never thought about, like types of interchanges or the importance of colours. Then I wrote about the proposal to tagging@ and talk@ mailing lists, and in the course of a month got many great comments, that helped polish most sections, and rewrite some from scratch, adding more pictures and replacing blocks of texts with simple lists.

I have also finished my subway validator, that not only validates, but prepares data structures for metro routing and rendering. With it, I have been tidying up subways all over the world, finding a few flaws in the proposals, but mostly learning about regional specifics. I’ve done Moscow, London, Paris, Berlin (both U-Bahn and S-Bahn), Yokohama, Algiers, Lima, Pyongyang and dozens more cities. Their subways conform to the proposal, and I have not broken any external app that used these, or uploaded any extra tag. Well, except network:metro in Germany, since they have an interesting way of tagging networks (thanks Nakaner for the explanations).

With over 60 metro networks mapped, dozens of questions answered, most of which affected the proposal, after discussions in wiki, talk@, tagging@ and in changesets, I decided that the proposal is ready and started the voting. For a moment I thought the OSM community was reasonable. It’s like in my seven years I haven’t learned anything. Not after the turn lanes proposal, not after hate messages about the water=* proposal, five years after it’s approved, not after stalled pull requests to the OSM website.

Very few people in OSM are willing to compromise. Especially people from Western Europe, who think they own the project. Because you cannot edit a wiki page without a proposal, I assume. Because no matter how many suggestions you’ve accepted, layer=-3 instead of -2 makes the whole work moot. It would ruin the PTv2 schema. Because despite “discussions on the Talk page” policy, when the voting starts, you can write a page of opposing arguments right into the proposal page, and nobody would turn to the Talk page to read answers, not even the person who wrote the arguments. Because it is easier to oppose than to approve: all arguments are already laid out for you, and finding answers to these in a 56-kilobyte Talk page is too hard. For one person, it’s because I should have discussed the proposal in his 3-messages-a-month mailing list, not in talk@ and tagging@.

You don’t even have to understand PTv2 schema to vote for its extension. Like people who +1’d the Carto’Cité comment about stations as nodes and did not even click on the Metros link to see that OSM wiki had already told everyone to map stations just as nodes. OSM is told to be a do-ocracy, but work does not matter anywhere here. You might have studied prior art and mapped hundreds of networks, but Carto’Cité has an authority over french mappers, so you bet all of them will come and vote against your proposal, even understanding that their arguments have nothing to do with the proposal and are inspired by a potential breakage of some of their inner closed-source tools. By the way, we’ve talked that over, I’ve converted the whole Paris subway network to the new way, and nothing broke.

The voting closes in a week, and there are more opposing votes than approving. Of course it would not matter after I have finished my work on tidying up metro systems: the changes will just go into wiki with the “not approved, but widely used” status, like highway=milestone. To help novices understand mapping subways, some of us will direct them to this possibly failed proposal, because the wiki has — and will have — nothing better. The only outcome of failing the proposal will be my continuing frustration of interacting with the OSM community.

So please, if you care about our data not only conforming to some proposals accepted 6 years ago without practical usage, but also being relatively easy to use, please go to the Metro Mapping proposal page and leave your approval. I assure you the OSM database won’t go down in flames after that. Thanks.

We all used building:levels and alt_name without giving it a second thought. Why are these keys built that way? Why not levels:building? To me, it looks like there is a rule for building composite keys.


ref is the basic tag for storing a reference number. For a reference number in some third-party table, we add a suffix: ref:third_party. That is because the new tag still contains a reference number. We have all such numbers in ref* keys. The rule of thumb is, the meaning of a value is defined by the basic tag before the suffix. ref:third_party is still a ref, and source:maxspeed is a source.

Sometimes we cannot use suffixes for historical reason. That is the case with name: we use name:en and other suffixes for names in other languages. For that reason, we build composite keys by prepending a content with an underscore: local_name or place_name. These are still names — a reversed order from the semicolon notation.

Of course, an underscore is also used for multi-word keys: public_transport and admin_level.


Then, there are namespaces. The most known is addr: with addr:housenumber and so on. Without a suffix, addr key has no meaning. The same with contact: and turn:. Namespaces are used for marking a group of tags that have the same meaning, have similar value formats and they are usually described on a single wiki page.

Some namespaces are used for tying properties to a part of the object described by the main tag, and for adding more specific properties of it. For example, building:* tags describe attributes of a building, and we also have roof:type and fire_hydrant:type. These words are most often put on the same object as a key or a value, e.g. building=yes or amenity=fire_hydrant, but also can mean a part of a structure denoted by these tags, like how buildings almost always have a roof.

The definition for namespaces is very vague, and some people mistake basic tags for namespaces. For example, we have 2.6k addr tags in the database. Sometimes people try to impose an prefix on a set of established and well-used tags to group these: it improves sorting in editors and allows for introducing many more similarly-named keys without “polluting” the namespace-less set of tags. That is what happend with “contact:” prefix: it is rare to see imports using “phone” and “website” tags without it.

Suffix or a namespace?

Telling a basic tag with a suffix from a namespace of the second type is harder. For example, what would be correct, building:height or height:building? roof:height or height:roof? This depends on four things:

  1. Which of the basic tags for each of parts is used more often, hence is expected to come first? In this case, building is used 28 times more that height. roof key is virtually unused.
  2. Which of these parts is more commonly used as a namespace? height: is used as a namespace for only three popular (more than a hundred usages) keys, none of which is globally spread. For building:, the number of prefixed keys with more than a hundred usages is around 120, for roof: — around 30.
  3. When removing the suffix, will the value be meaningful for the basic tag? It definitely won’t be for building=100 m and roof=100 m, but will be for height=100 m.
  4. Will the basic tag without a suffix have the same meaning for the kind of objects with other similarly namespaced keys? In case of buildings, height would be enough without a suffix, and these tags are pretty widespread. But roofs are parts of buildings, so you would have either a suffix or a namespace.

So, for building height you would use a plain height key because of the fourth point. But for roof height, you would choose roof:height because roof: is commonly used as a prefix, as per the second point, unlike height:.

A case against brand:wikipedia

The reason for this post is the recent import of thousands of brand:wikipedia and brand:wikidata tags. I argue that the better choice would be wikipedia:brand and wikidata:brand, for the same reason as source:maxspeed and ref:whatever.

I accept the introduction of separate tags for an object and its brand: we can have two links for the McDonalds brand and a single notable restaurant under that brand. That covers the item 4 in the above list, and item 2 is not applicable, since both wikipedia and brand keys have not been used for namespaces. But points 1 and 3 are in favour of wikipedia:brand: the value is still a wikipedia article, and it is processed similarly to the value of wikipedia tag. And we have four times more wikipedia keys than brand keys.

To conclude, I suggest we do a mass-retagging of these imported or automatically processed keys before this mistake creeps into the wiki. Either wikipedia:brand or brand_wikipedia would be better options.

Past mistakes

In some cases we failed to notice composite keys in proposals that are built contrary to the norm described here. Now you have to do some non-obvious tagging, which requires looking for the correct keys in the wiki:

  • bridge:name instead of bridge_name (like old_name)
  • source:ref, though the correct key source_ref is used 10 times more often. Note that ref:source would not be entirely correct, since you should be more specific in the suffix. source=tmnt with ref:tmnt=1 would be the correct choice, better than source_ref=1.
  • This whole section on *:wikipedia prompted by this edit. Thankfully, we have only 20k of these keys, including the imported brand:wikipedia, so there is still time to fix this.