OpenStreetMap logo OpenStreetMap

qeef's Diary

Recent diary entries

It started by @gustavo22soares’ question on Mastodon (not archived.) My answer was:

@gustavo22soares Hi. If the question is about #damn – there is no delete area function. (It was not needed to demonstrate the concept and there is no consensus about “what after delete?”)

Regarding the name – feel free to use tags for this purpose.

After 2 weeks, there is still no delete area function. Sorry. However, we did something after all.

The damn client may be translated (and it is translated from English to Czech and Portuguese.) Areas may be filtered by tags. There is button to switch between grid and list view. And finally, the damn client supports multiple OpenStreetMap web editors. (No, there is no support for JOSM. Use the damn plugin instead.)

The defaults can be changed easily when deploying – and it was the intention.

And the last thing: I updated the server. (Because I was not satisfied with the function returning the list of the areas.) After the update, I stressed the server a little bit. It was definitely NOT load testing, but I just could not resist.

Divide and map. Now. -- load testing

Posted by qeef on 4 June 2020 in English.

I run load testing with locust.io on the damn server, and I think it’s usable for mapathon with 100 mappers.

The damn server is part of the Divide and map. Now. – the damn project I have published at the beginning of the year. And I am still interested in the performance. I was wondering if I can simulate a mapathon event.

Setup

I run the damn server on $5 per month VPS of do.co. The server runs Debian 10.2 x64, 1 vCPU, and 1GB / 25GB Disk. There is nothing special about the deployement I described in the last diary.

For load testing, I prepared the area. I uploaded a big area (JOSM measurement plugin says it’s 42 852 square km) with the damn manager, that split it to 654 squares.

Then, I simulated a mapathon in the locust file. The “participating” test mapper can choose from:

  1. Get the area and all its commits. (In fact, all commits wouldn’t be used in a real client twice, since since for an area is implemented.)

  2. Request a random square for mapping. If the square is available, work on it for between 1 and 5 seconds and then stop with need more mapping (30 %), split the square (10 %), or ready for review (60 %). (In the brackets, there is a probability of stop reason used.)

  3. Request a random square for review. If the square is available, work on it for between 1 and 5 seconds and then stop with need more mapping (30 %), please, review again (10 %), or done (60 %).

When (1), (2), or (3) finishes, wait for between 1 and 2 seconds and choose again. (2) and (3) are chosen five times more often than (1).

Testing 100 mappers

I tested for ten minutes. There were ten new mappers per second until a maximum of 100 mappers.

  • Median Response Time: 2900 ms
  • Average Response Time: 6052 ms
  • Min Response Time: 177 ms
  • Max Response Time: 70272 ms
  • Requests/s: 12.10

The total request count was 7 310. And there was no error!

Testing 500 mappers

See full entry

At the beginning of the year, I released Divide and map. Now. – the damn project. I present it as the proof of concept that HOT Tasking Manager can be done better.

The damn project consists of multiple repositories – server, client, manager, plugin, and deploy. Damn deploy repository contains setup used for running instance of server, client, and manager. The only changes to master branch of the damn deploy repository are secrets in .env file and email address in traefik.yml.

Why is there a separate repository for deployment? It complies with the philosophy of do one thing and do it well. The team of administrators deploying the project shouldn’t care about the development of the server or any client.

Why am I writing this? I already wrote about the improvements to the client since the damn project release. And the development continues! I like to improve things. I think that deployment is essential. Finally, there is Ray Kiddy’s comment on gitter:

Thinking more about it, I am interested in seeing something that is easy to provision and get running. So I used “flexibility” as a code word for the ability to bring up new damn instances, at will, and without much hassle.

So I was thinking about how to deploy easier.

How to deploy

I believe that if I want to describe something, the best is start from scratch. So, here we go.

Setting up virtual private server

At do.co, I created new Debian 10 droplet, just $5/mo. In the time of publication, this droplet is already down, and testing instances do not work. See https://www.damn-project.org/ for running available instances I am not willing to shut down.

Then I added test-server.damn-project.org, test-client.damn-project.org, and test-manager.damn-project.org DNS A records pointing to the IP address of the droplet. Now, I can ssh root@test-server.damn-project.org.

Prerequisites

All the deployment is in damn deploy repository. The howto is in readme file. So, I will just follow the readme.

See full entry

(Prague) online mapathon

Posted by qeef on 3 April 2020 in English.

So we organized an online mapathon. I want to share what we planned, how it worked, our feedback, and my thoughts about how we should continue.

When I say we I mean core team. By definition, the core team are people who go to a pub after a mapathon. Maybe, it would be better to say that: The Missing Maps is mainly about mapping. However, somebody has to take care of the mappers…. And that’s we, the core team.

In Prague, there are Missing Maps mapathons every last Tuesday of a month (we have an exception in December), and we were not willing to give up on March’s one.

What we planned

We found that we had about 30 registered participants. We do the introduction to mapping in iD editor, we teach the JOSM basics, and we explain how to validate to advanced mappers.

The plan was to have one global chat, video stream for introduction talk, video chat for mapping groups, and video stream again for final talk(s). All of the communication channels must be accessible without registration for participants. Moreover, video chat for mapping groups should be instantly creatable to maximize flexibility.

We needed leaders of mapping groups. Fortunately, there are plenty of capable mappers in the core team. The idea was to limit the capacity of a mapping group (to about 6 - 7 people) to achieve comfort communication.

We got prepared with Introduction to Tasking Manager and iD editor video (in Czech) and written down mapping process (in Czech, too). The video length is limited to 5 minutes. I think it increases the probability that the participants would watch it.

Now about technologies. We used the Freenode IRC channel as the global chat. Participants can connect easily over Kiwi IRC client, just specifying their names. (You can add server and channel after /next/ in the link.) We used Zoom for the introduction and final talks. And we used Jitsi for video chat of mapping groups.

See full entry

I released Divide and map. Now. – the damn project at the beginning of the year. Also, I presented the damn project at FOSDEM. I was pretty nervous, and I have to work on my presentation skills. The talk was too chaotic, I know. Anyway – now, I want to present changes in the damn client since the release.

Inspired by tasking manager stats, I implemented mapping and review rates. The damn project is ready for these upgrades. All kinds of statistics can be computed from the commits.

The mapper can map or review a random square of an area. Square to map/review selection is server-dependent. I am going to implement something like map the nearest square in the future. However, I think that the decision about a square to map should still be on the server. The user should say something like: “Hey, I am willing to contribute with mapping something like this,” and the server replies: “Good, try this one.” I don’t think that the manual square lock is a good idea.

I moved the essentials procedures to the damn client library and implemented a workaround for the geometry of two and fewer points. Just mark such square done automatically.

I speeded up the whole client! (For developers: if you want, you may test it on your own – git checkout v0.1.0, then back to git checkout master.) Also, I changed the design slightly. I am not a designer, so I am doing small changes as I feel it.

I added squares map. It indeed helps mappers to imagine the remarkable work done.

The next is the mappers’ score. There is a list of mappers and reviewers with their corresponding number of squares done. And the last upgrade – it’s finally possible to logout (for developers: delete JWT token stored as a cookie; the default cookie expiration is one year), and there is a user’s last week statistics. It would be possible to load all the user’s commits and compute overall statistics, but it takes quite long.

See full entry

Divide and map. Now.

Posted by qeef on 1 January 2020 in English. Last updated on 18 December 2020.

What?

There is a place to be mapped. The area is usually too large for one guy. Involving a team of mappers is, therefore, evident. And there is an excellent approach to solving big problems called divide and conquer. Therefore Divide and map. Now. – the damn project.

The goal is to split a large area to squares a human can map. Then, lock a square, work on it, and mark ready for review. Lock again, review the square, and mark as done. The project is here to avoid overwriting work between mappers.

If this sounds familiar, you probably know the HOT’s Tasking Manager. (HOT stands for the Humanitarian OpenStreetMap Team.)

Why?

There are issues with the HOT Tasking Manager. Mainly performance issues. Then, slowly forgetting about essential functionality. Unwanted updates as the necessity of email address (I really hate this!). And only one repository for the whole project.

These are technical issues, however. What about community issues? Why Google disk when there is OpenStreetMap wiki? Why Slack where you must be invited and logged to (just!) see the history? Why all these sign-up Google forms to contribute? I will try to guess an answer – because HOT is a company (even non-profit) and does not know how to be an open community.

Before you ask “If you are so smart, why you do not contribute to Tasking Manager?”, I tried 1, 2, 3, 4. However, there is no real discussion about the future of the Tasking Manager. The future is already decided; openness means that you can see the source code and fix bugs. Nothing more.

Who?

Let’s talk about the potential damn community. It starts with mappers. I will split mappers to novices, experts, reviewers (or validators), and mentors. Mappers are the most critical and the largest group, so the tool they use should be efficient, stable, and comfortable.

See full entry

How we mapped -4%

Posted by qeef on 16 August 2019 in English.

To be fair, we were validating. We validated 5% of the tasks and invalidated 4%. So we went over 9% of the tasks. In 2 hours. With the group of 5 people. And one of us was validating for the first time.

The point is that the validation is not fixing. The validation is approving.

I would like to note our small contribution from Prague. Inspired by London Missing Maps mappers, we started small mapathons this summer. These mapathons are for advanced mappers, we use JOSM, and this time, it was a validation time. I went over multiple sources describing how to validate. I used OSM wiki as a primary source. Then LearnOSM, MissingMaps, and browsed multiple links pointed out by these sources. I attended HOT validation training webinar. I found out these pieces of information bloated, so I stripped them and picked up what I consider helpful.

There are fewer validators than mappers. If validators want to keep up with mappers, they need to validate faster than the mappers are mapping.

Our group was validating buildings with the following workflow:

  • Find out if you are going to invalidate task, usually because of not-orthogonalized buildings, missing buildings, lousy geometry, or buildings mapped with bad imagery.

  • Orthogonalize all the buildings with 4 nodes:

    • Ctrl + F and find buildings nodes:4 inview.
    • Press Q.
  • Upload changes and invalidate task with the comment why.

Of course, if there is no problem and everything is mapped as described in instructions, just browse the square and find out if everything is really ok. MarkSeen plugin can help here. If there is one building with wrong dimensions or bad rotation, fix it (Utilsplugin2 and X for resizing help here a lot). If you find out the second one, invalidate. Validating is approving, remember?

See full entry