Microgrants/Microgrants 2020/Proposal/Map Maintenance with StreetComplete/Report
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
Outcome
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:
Given that users are ...
... 97.7% of all tagged opening hours are covered by StreetComplete. |
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 |
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
Learning
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.