Microgrants/Microgrants 2020/Proposal/Map Maintenance with StreetComplete/Report

From OpenStreetMap Wiki
Jump to navigation Jump to search

Final Report for Map Maintenace With StreetComplete

type = final status = submitted

This is the final report for the Map Maintenace With StreetComplete project. The report for the first half of the project is here: Interim Report

Methods and Activities

The final bits of the project were to extend two quests with a more effortful implementation of resurveying: Most quest types are answerable with just one tap, such as "Is there tactile paving at this intersection?" - Yes or no. So, for most quest types, the implementation of the re-survey constituted of the same question being asked again in certain intervals without even showing to the user if or what has been tagged before. However, for cycleways and especially for opening hours, it takes longer to input the data. This is why for these two quest types, the current data should be shown and the user is asked if the data is still correct. If the data didn't change, he can solve the quest by simply answering "Yes [it is still correct]". If it changed, he can edit the data without having to specify everything again.

So, what was still left to do was:

  • finish and merge the resurveying opening hours pull-request by Mateusz Konieczny
  • extend the cycleway quest to show and edit current data


The outcome of this project is v23.0 of StreetComplete, which contains all the advertised features. You can download it from Google Play or F-Droid. See the Changelog.

Detail Report

... of the things done since the interim report

Target outcome Achieved outcome Explanation
Complete and merge https://github.com/westnordost/StreetComplete/pull/1676 See https://github.com/westnordost/StreetComplete/pull/2045

In the end, the work done by Mateusz only served as a basis or first iteration of the final feature. I redid both the complete UI, the parsing of the opening hours as well as the conversion from UI to the data model, after all. I took this as an opportunity to let the UI support more edge cases for opening hours so that more of the currently tagged opening hours can safely be re-surveyed with this app. Additionally to what the opening hours UI already supported, it now also supports:

  • not specifying weekdays (12:00-16:00)
  • if specifying months, specifying months only for some of the rules (Mo-Sa 14:00-16:00, Jun-Jul Mo-Sa 10:00-12:00)
  • "off" days (Mo-Sa 14:00-16:00; PH off)
  • multiple month ranges in the same rule (Mar, Jun-Jul 10:00-12:00)

Given that users are ...

  • prompted to resurvey invalid opening hours that cannot be parsed by Simon Poole's opening hours parser
  • not prompted to resurvey "24/7" opening hours because they are unlikely to change
  • not prompted to resurvey opening hours where rules collide with each other because these are likely but not necessarily mistakes (and to decide that, a mapper proficient with the intricacies of the OSM opening hours scheme is necessary anyway)

... 97.7% of all tagged opening hours are covered by StreetComplete.

  • Form when resurveying opening hours
  • Editing opening hours: Showcasing weird opening hours
Parse and interpret current cycleway tagging, display it and let user resurvey cycleways on roads every few years. See https://github.com/westnordost/StreetComplete/pull/2058
StreetComplete cycleways form.png

If I were to wind back the time, I probably wouldn't have implemented this. It looks all simple, but interpreting and updating cycleway tagging on the road with its ~4 different methods of doing so (cycleway:left/right, cycleway:both, cycleway, opposite-tagging vs oneway:bicycle=no tagging etc.) is no joke: Just for parsing and interpreting the current data, I wrote about 3200 lines of test code alone. For correctly updating current data when the user provided an answer in the form, another 500 lines of test code alone. On the plus side, StreetComplete users save up to 4 taps when resurveying cycleways.

All changes together can be viewed in this PR: https://github.com/westnordost/StreetComplete/pull/2060


After the basic stuff was implemented after 11 of the estimated 15 days, I decided to do also the optional features (described above). This turned out to be much more effort than I imagined to implement well, so I somewhat overshot the budget (I set myself). This is okay, though. After all, OpenStreetMap and StreetComplete is my hobby, I am happy to have received the grant so I consider this a little bonus.

Grant funds used

I spent about 20 of the estimated 15 days working on this feature plus overhead to create and release test and final versions of the app. I'll probably additionally have to schedule some time for bugfixes and maintainance for this in the future. I only underestimated the effort by a few days, most of the additional time spent went into features that I initially declared as optional if there is enough time. I later changed my opinion and instead implemented everything.