streetcomplete / StreetComplete

Easy to use OpenStreetMap editor for Android
https://streetcomplete.app
GNU General Public License v3.0
3.83k stars 348 forks source link

Add quest presets #1654

Closed Helium314 closed 3 years ago

Helium314 commented 4 years ago

In issue #1301 @westnordost suggested to open a new issue regarding quest profiles, i.e. different quest selections and priorities to select depending on the current situation. Sorry if this issue is already somewhere around and I just didn't find it.

These profiles can be useful for switching between e.g. a "normal" and a "train" profile, where the train profile has no quests like road name or opening hours you can't solve from a train anyway. Another example would be "day" and "night" profiles, where the "is ... lit?" quest is disabled or low priority in the day profile and high priority at night.

In a comment to #1301 @westnordost asked for UI proposals of this feature. So my idea is that profile selection could be in a menu that is invoked from an (to be added) point in the "..." menu. Or simply in the settings, either below quest selection, or part of it (profile selection dropdown on top, including a "new profile" point).

westnordost commented 4 years ago

I think the current profile should always be visible for traceability, especially if the profile is selected automatically somehow.

Helium314 commented 4 years ago

I didn't mean the profile should be selected automatically. Using "day" and "night" was probably a bad example...

If the current profile should always be visible, I see no way around adding an additional line below the star and upload counts. In that case it should perhaps be possible to disable profiles to have the UI as it is now.

Helium314 commented 4 years ago

Some thoughts on how this could look: (I keep calling this "profile", but in the end it should maybe have a different name to avoid confusion with the OSM profile)

In settings -> quest selection there is possibility to add a new profile. Either in the "..." menu or some extra button. Adding new profiles asks which profile to copy from (or create a new one, which is like after resetting quests), and allows to enter a name (some "profile \<number>" could be default) Renaming and deleting profiles should be possible in the menu.

Where to put profile selection:

waldyrious commented 4 years ago

(I keep calling this "profile", but in the end it should maybe have a different name to avoid confusion with the OSM profile)

FWIW, "preset" is a common term for this sort of thing.

rugk commented 4 years ago

…and maybe the title of this issue should be changed to that as it is currently not that descriptive…

westnordost commented 3 years ago

I'm still unsure what would be the best UI for this. Some input, mockups with suggestions etc. are welcome!

So what problem are we trying to solve?

Possible Solutions

  1. By default, all are enabled as they are now, but after first download (if quest count passes a certain threshold?), a notification is shown which informs user about that he can disable quests in the settings. Per convenience, the dialog could directly lead him there and/or even let him choose quest groups directly in that dialog.
  2. By default, only show the most important quests, all others are disabled first. That leaves ~75% of all quests to the "completionists" / "power users" among StreetComplete users. Maybe show a notification after download to inform the user that there are more quests if the quest count is below a certain threshold?
  3. By default, only show the X most important quest dynamically calculated by the quest density passing a certain threshold.
  4. Other...?

Comments on the possible solutions

  1. A little downside(?) is that this way (point 1), not showing all the quests will be a deliberate choice of the user, thus it will always be in the back of his head that he is not solving "all the things". This knowledge in itself might be demotivating
  2. On the other hand, the other solution (point 2: not showing all quests by default) might come across as patronization of the user. Also, I already see a lot of bug reports being opened up here in the issue tracker about that certain quest types do not show up anymore, because people, in general, don't read.
  3. The dynamic "smart" solution (point 3) has even more potential for confused users.

Current Idea

The solution I have currently in mind is thus the following:

Info Dialog

After the first download (after the update that includes this feature), the following dialog is shown

image

Basically, there should be three options:

This dialog is shown only once to make users aware of this.

I am not entirely sure how best to put all these choices into one dialog without it becoming too cluttered. I am also not sure about "users who like control". Maybe supplying a link "take me to the settings" is enough here. It would be best if the "default" choice in this dialog would be the "show only the important quests" because most users will not want to have to adjust all the things but just use the app. So maybe something like this with the first option pre-selected:

image

Important quests

But which quests are important & easy to solve? It will be difficult to define and draw the line. Maybe it should rather be a negative-list, i.e. leave out certain "spammy" quests like the building types, traffic signal features etc. After all, the user still wants a certain variance in quests because this makes using the app interesting.

Quest selection screen with categories

Here I do not have a mockup yet, but hte quest selection screen should be changed to accomodate for:

  1. people who want to control enablement of each single quest type (users who like micromanage control)
  2. people who want to select categories, such as "for road users", "for pedestrians", "for cyclists", etc. (users who like control)
  3. people who want to select all (power users)
  4. people who want to let the app (developer) decide what is shown (casual users)
smichel17 commented 3 years ago

I don't have time to give my full thoughts, but what about something like this?

Main menu with additional Quest Display Mode option, showing 'Pedestrian (casual)' ⇒ click ⇒ List of options that would appear when clicking the item, with 'Customize' option at the bottom

The customize item would take you to the current customize screen, with an added control to change which mode you are customizing.

Then you don't need to ask up front, you can just start them in casual mode and they will see the opportunity to change modes later.

westnordost commented 3 years ago

Hm, this takes the categories from the other direction. Not grouped by category but grouped by movement profile. @Helium314 occupied himself more with this , do you remember what was the outcome? You closed your PR.

smichel17 commented 3 years ago

There are 3 axes:

  1. Movement Profile — which quests I am able to solve
  2. Casual vs Completionist — how many quests I want to see at once
  3. Category Interest — which quests I want to see first
    • e.g. If I primarily use osm data for car navigation, I probably care more about street names, lanes, house numbers, …

1 and 2 change frequently depending on how the mapper is feeling that day. Originally I had them as separate settings in the main menu, but for some types of movement (e.g. in the passenger seat of a car) you do not have time to answer if every single quest were shown. So, they can be combined into one picker with two entries for those that need it (e.g. "Pedestrian (casual)" and "Pedestrian (completionist)"). (I am not sure "Completionist" is the best word, it's just one that I chose quickly).

3 does not change very often so it is fine to bury deeper in the settings. I do not think it should be used to determine quest display density, because it is still possible to have an overwhelming amount of quests even from a single quest type, like "building type". Instead this is about prioritizing which quests to hide shown first when there is some other restriction (e.g. from 1 or 2). So I would suggest a ranking, like the current quest selection screen (but it will be less overwhelming with fewer options). You could remove the ability to toggle categories individually and just have a cut-off line where anything below it is not shown.

For the "Casual" modes, I think it would be good to do something like this:

smichel17 commented 3 years ago

I am not sure "Completionist" is the best word, it's just one that I chose quickly

Yeah, this word really does not capture the nuance well. It is really two separate things:

  1. Efficiency vs Impact — Do I prioritize solving quests as quickly as possible and not returning to the same place more than once, or solving the quests I think are most important before moving on to less important ones?

    • Also, do I care about less important ones at all? But this is more related to Category Interest — all of the "less important" ones are actually just quests in the "Map visualization" category — people mapping for its own sake as opposed to for a specific use.
  2. Casual vs Power User — aka prefers false negatives or false positives?

    • I think this is often a false dichotomy — Both types of people would prefer that the app to read their mind and show them only the quests they care about and hide everything else. Since we cannot read their mind, we are bound to mess up and either hide quests they care about or show quests they do not care about. So the difference between these two is whether they find would rather the app err on the side of missing quests or cluttering the interface.

    • As far as this goes, I think adding a setting to control how many quests are displayed at once, so the user can find a level that works for them, is basically a last resort. First we should try to just do better at hiding clutter without hiding important information. For example, when you are actually surveying, you seldom need to solve a quest that is far from your current position. But obviously it is still important to see quests that are further away for planning your route. So we could solve this by adding a "planning" function that shows all quests and allows you to select the route you intend to walk. Then, returning to mapping mode, all quests not along that route are hidden (this could also be used to prepare for offline mapping, and maybe replaces "scan for quests here").

I suppose my suggestion for "casual mode" above is actually a compromise between efficiency & impact, not optimizing for one or the other.

edit: augh, this list spacing always bothered me on gitlab; why is github doing it now, too?! > ![image](https://user-images.githubusercontent.com/6563664/101676061-8b13ec00-3a52-11eb-9ecd-108de9fe35d0.png) I don't understand why there is a smaller space between the nested item and below it, than the item it is nested under. Looks so bad and is not logically grouped :(
westnordost commented 3 years ago

@smichel17 Hm, since you dart off in a completely different direction, maybe you can make a concrete suggestion with a mockup?

smichel17 commented 3 years ago

The three (now 4) axes is just how I am thinking about people's different motivations that we may want to address. And then a few suggestions based on them, which are not fully thought out. I was not planning to post until I had a fully thought-out idea, but it seems like you may work on this soon, so I wanted to share before you started implementation :)

This is what I was thinking of for asking about preferences(3), in the introduction at the beginning. Although, upon reflection I think the "disabled below this" line is probably a bad idea. And on the right, where the "Customize modes" option would take you.

image image

On the right, the second bar is supposed to resemble this: image

westnordost commented 3 years ago

This feature is not on my (official) roadmap. But then again, the whole download refactor which had such a big impact wasn't either and this problem has been addressed for quite some time now by different people, so I am thinking about implementing it. What held me off from implementing it so far was that there are so many things to address (as you point out) and I find it very difficult to find the right way to go about this.

peternewman commented 3 years ago
  1. Movement Profile — which quests I am able to solve
  2. Casual vs Completionist — how many quests I want to see at once
  3. Category Interest — which quests I want to see first

Also some people wanted day/night as mentioned above, which doesn't really fit into your three/four groups @smichel17 .

As a power user I'd like some custom presets too, which I'd suggest might make sense for the day/night people too.

For example until/unless #124 gets done, being able to easily toggle a quest off works around that, or while testing/fault finding it's nice to have a dev preset rather than breaking my normal custom order and selection of quests.

For example rather than just the two proposed walking ones, I might want wandering and commuting presets (the latter walking one just has stuff you can do at a glance, but not say house numbers, vegetarian/vegan or building types where you need to look more carefully. Whereas does X exist, tactile paving etc, can all be done with no real impact on my speed.

I think this whole suite of issues could perhaps be looked at in a few ways:

  1. I want to easily select different groups of quests at different times (e.g. for walking/in a car etc)
  2. I'm seeing too many quests
  3. I'm seeing boring/uninteresting quests - Which is similar to 2.

1 needs effectively presets (I guess it could be done by adding more properties to each quest, but that's probably more work and less flexible). Pre-loading some presets and maybe giving them easy access makes it fairly simple for novice users, without losing the flexibility for power users. You've already got a nice UI for selecting quests, so there's not much to gain by making it all hard-coded.

2 feels like it can be done in code, the quest system already has the idea of priority, as @smichel17 suggests, with a bit of an algorithm this could be used to tune how many are displayed at once.

3 is perhaps more subtle, it can either be 2 with a static or dynamic cut off, or 1 with lots of stuff disabled.

Doing a quick review of the other issues linked to this, I'd say 1 is by far the most popular request and IMHO, #2358 is fairly unique in wanting something automated for 2 and 3. It seems like most other people would be happy with the ability to customise their own presets as part of 1 so they can tune to what they want. But perhaps that's confirmation bias as it's what I want. :smile:

Helium314 commented 3 years ago

The interface for (quickly) switching profiles I had in mind was pretty similar to @smichel17's first mockup in https://github.com/streetcomplete/StreetComplete/issues/1654#issuecomment-741905874.

I closed the PR because I (still) don't have enough time, especially because I would need to learn a lot more about how to do a proper UI. Then there were some other problems I couldn't reproduce, e.g. sometimes the wrong profile was shown in the quest selection screen, and one time quest reset was applied to all profiles instead of only one (would not be a problem with fixed presets)

(comments on the rest later, I need more time to go through this)

smichel17 commented 3 years ago

Disclaimer: I may have gotten a little abstract. Feel free to skim :)


I approach this problem (and any design, really) from two different directions:

Put differently, this is the difference between something I want to accomplish in the real world, compared with something I can do in the app.

  1. I want to easily select different groups of quests at different times (e.g. for walking/in a car etc)

  2. I'm seeing too many quests

  3. I'm seeing boring/uninteresting quests - Which is similar to 2.

2 and 3 are both motivations; they do not prescribe a specific solution. 1 is more of a feature. "For walking/in a car" is one use case, but not the only one. For example, sometimes I turn off the building levels quest when I am walking, because I often have to think hard to answer it and I want a more relaxed mapping session.

Other times I turn off building levels (and building type) because I want to go on a faster walk and I cannot answer so many quests without slowing down. That's another example of the same feature addressing a different use case. But in this case, it's probably not the ideal feature for that, more of a workaround. Because really I'm just trying to get quest density down; in areas with not many quests, I'd be fine if building levels were shown. Maybe a better option would be be a route planner, which would pick quests along the route at a certain density, and then not show any more quests until the route is complete. (Actually I'd really like this — one of the reasons I use SC is to get myself outside and moving.)

That's also an example of how 2 and 3 are not the same thing. 2 is about when to hide quests / how many to show at a time. 3 is about, when some quests must be hidden, choosing which those should be — noting that there are two levels of "hiding", completely gone vs collapsed to a dot, so 3 is relevant even when all quests are enabled. Although they do overlap in some cases. I may not care as much if my screen is flooded with quests, if they are all top priority.


Generally I want to figure out all the motivations / use cases, and which level/type of feature is right to solve them.

These are broad categories with somewhat arbitrary distinctions. For example, the main UI could be divided into controls at hand, like panning the map, vs controls in a menu. And a settings screen isn't fundamentally different from a menu; it's just a larger context switch. But it's useful to draw boundaries somewhere.

Then, we can decide whether it is best to design one feature which addresses many use cases, or separate features for each, etc.

In our case, depending on how we make them work, profiles could address many different combinations of use cases. For example, you could use the left interface in my original mockup to choose all of:

This assumes that the use cases have related motivations. E.g. that people who are interested in cycling quests are also likely to want to use SC while biking, so they'll also want the biking profile enabled / near the top. When the assumption is correct, it makes the app simpler. When incorrect, it makes the app inflexible/awkward. For example, I may be interested in public transit quests but not in mapping while on public transit; now the app would not have a way to disable public transit profiles which I do not use, without also hiding those quests.


Anyway, I suspect to some extent this is stating the obvious. For simpler features, the answers are often obvious from intuition and this is overkill. But for a complex feature like this, I think it is useful to be explicit. If nothing else, it helps to communicate more clearly about the goals of different design suggestions.

I started writing this intending to do this analysis of the different motivations, use cases, and how to best address them. But this post is very long already and I need to do other things. So, another day. See also: https://github.com/streetcomplete/StreetComplete/issues/1914 is an earlier stab at this.

waldyrious commented 3 years ago

IMO, from all the axes mentioned so far, I'd say it's more important to cater to the ability angle first (aka "movement profile"), since IIUC all the others are preference-based, but this one is really a practical issue. After all, if I'm seeing quests that I can't solve, and not seeing those that I can, that prevents me to make valid contributions regardless of whether I'd want to solve them or not.

Quoting two passages from above comments which reflect situations I'm often faced with:

for some types of movement (e.g. in the passenger seat of a car) you do not have time to answer if every single quest were shown.

rather than just the two proposed walking ones, I might want wandering and commuting presets (the latter walking one just has stuff you can do at a glance, but not say house numbers, vegetarian/vegan or building types where you need to look more carefully.

peternewman commented 3 years ago

Other times I turn off building levels (and building type) because I want to go on a faster walk and I cannot answer so many quests without slowing down. That's another example of the same feature addressing a different use case. But in this case, it's probably not the ideal feature for that, more of a workaround. Because really I'm just trying to get quest density down; in areas with not many quests, I'd be fine if building levels were shown.

I think that's still simplifying slightly @smichel17, building levels always takes longer than tactile paving or traffic light button and building type sometimes does too. Even lit (which is generally still yes/no) sometimes needs more time and consideration than those other two boolean quests, so if you actually want a faster walk its the type not just quantity of quests.

I could half imagine (although wouldn't fancy doing myself) some sort of HIIT exercise regime where you sprint between areas of very high density (e.g. crossroads) while maybe picking up one or two simple quests (e.g. the tactile ones) on each sprint. :laughing:

IMO, from all the axes mentioned so far, I'd say it's more important to cater to the ability angle first (aka "movement profile"), since IIUC all the others are preference-based, but this one is really a practical issue. After all, if I'm seeing quests that I can't solve, and not seeing those that I can, that prevents me to make valid contributions regardless of whether I'd want to solve them or not.

Obviously you could go into the settings each time you change movement type and disable all the irrelevant quests, but that would quickly get boring, and if you've already custom disabled some stuff, it would likely get complicated to remember too.

I might be being optimistic again, but this one also strikes me as the low hanging fruit. The system can already save a preferred order and enabled state of all quests, so to cover movement profiles that just needs to become an array or similar and have an attached name, then a simple drop down or equivalent to switch between them. Pre-seed with some default movement profiles and you're done. It could even be a rough fix for 3 and 2 to some extent, by having an important preset that just enables the most beneficial tests (for some measure of important).

smichel17 commented 3 years ago

my quests solved, from my profile screen. Largest 4 are building type, building levels, road surface, and lit way, in that order. For what it's worth, I mostly take leisurely walks are through rural-ish* residential neighborhoods. I'm not or training for anything, and if I were I would not be mapping at the same time :P. Although I do walk relatively quickly. It's more about not having to stop walking in order to answer questions.

This is what my quest distribution looks like ⇒

*If you are from the city, read this as "rural". If you are from the country, you probably understand why I am making a distinction :smile:


I generally agree that profiles / modes / presets (whatever you want to call them) are probably the first thing to implement. I suspect that it may cover enough of the other use cases (or can be adapted to do so) that there is no need to build a feature specifically for those cases. Or that the implementation could be modified this way — for example, by allowing profiles to control not just which quests are shown, but also the algorithm for showing/hiding them.

Helium314 commented 3 years ago

Assuming a division into ability (movement by e.g car/bicylce/foot) and preference (focus on specific sub-group for various reasons):

But this would mean splitting profiles into 2 more or less indepentent parts, not sure how good this kind of duplication is...

mnalis commented 3 years ago

My premises:

So I'd propose:

streetcomplete-presets-select-b1

When clicking on presets dropdown triangle, a list of 3 presets with their names and icons would show (better then the one in this quick mockup), allowing user to select which preset to activate

streetcomplete-edit-preset-b2

clicking on dropdown triangle would allow to change which preset user wants to edit. The rest of quest editing would remain as it is now (moving to change priority, enabling/disabling etc).

waldyrious commented 3 years ago

As long as the preset name can be edited as well, I'd be happy with @mnalis' proposal.

Maybe I'd suggest there to be just one preset out of the box, called Default or Main, and two empty slots for additional presets (with all three being editable, including the name). That way we avoid priming users as to how presets should be used.

A help/info screen (or maybe just a paragraph in the list of presets view, which should have plenty of space in the bottom half of the screen if we limit the number of presets to 3) could then provide additional context and suggestions for how to use the presets.

smichel17 commented 3 years ago

My original thinking was to have something like this.

Same image as mnalis' suggestion for the main menu, but with an additional row, 'quest density' with +/- buttons

But I'm not sure if the density actually needs to be so easily changed, and whether a strict +/- is the right type of control for density. That's why I want to spend some more time thinking through the actual use cases we want to support.

peternewman commented 3 years ago
* it is **impossible** to make **fixed** sets of preferences which is useful for **all types of mappers** (eg. casual pedestrians, cyclist, passenger in a car/train, do not want to be bothered with useless building height quests, pedantic who want everything, those who want everything including complicated/problematic quests disabled by default, those who want to prioritize mapping for wheelchairs / vegeterians etc). So user-specified **flexibility is required**.

* have  just 3 presets (named something like "**important only**", "**standard**", "**everything**"), with a quick way to change them (icon on a main screen or at most one click away), something like this:

* note: I'd advise against going for more than 3 presets, even if it seems tempting -- even for power users, it would be nightmare to maintain 3 complete sets with tons of quests each, and for casual users it would also be more confusing.

IMHO you're in direct conflict with yourself here @mnalis . You've sent it's impossible to make fixed presets and listed seven different possible presets, then you've said the list should be arbitrarily limited to exactly three. :confused:

I'd agree people need to be able to switch between at least some of the presets easily and your suggested three seems like a good set of defaults but I'm struggling to see why a power user such as myself shouldn't be allowed more presets? Or indeed what maintenance I'd need to do on them, I think SC does a fairly good job of merging in the new quests when they appear, I've never particularly noticed issues.

My commute consists of train then walk, so that's two presets gone. As mentioned above, I'd probably have separate brisk walk and questing walk presets (e.g. with/without opening hours and building type), so that's all my three allocated presets gone. I still desperately want a spare preset for debugging/troubleshooting (which will have nothing except one quest enabled at a time), otherwise I have to keep resetting one of my existing presets.

By all means just list the first n presets somewhere, either in general order or most recently used, but I'd be interested to hear what I'm missing about maintaining my other suggestions.

I think also any specific arbitrary limit just invites PRs to bump the number limit as it will never fit someone's use case.

But I'm not sure if the density actually needs to be so easily changed, and whether a strict +/- is the right type of control for density. That's why I want to spend some more time thinking through the actual use cases we want to support.

I think density is still a cover for two somewhat different issues/requirements; being overwhelmed by the total number of quests shown at once, and for spending too long on individual quests and hence slowing your overall rate of travel (because you're seeing lots of longer quests). Although while say a dietary quest is longer than a tactile one, in my experience I want to see all of them still because I can afford the 30s delay looking at one menu, but I personally need to choose which restaurant I look at the menu of, based on which one is actually/easily on display.

westnordost commented 3 years ago

Okay, here is what I've taken from this discussion so far and this would be my suggestion now:

westnordost commented 3 years ago

If this suggestion is somehow a good compromise, the way forward is to sort all the quests into these categories. Maybe this could be done collaboratively, in a diagram like this:

image

Anyone knows a good software for this? Miro probably, right?

matkoniecz commented 3 years ago

Maybe one more category (extreme/all+) with also vegetarian/vegat/wheelchair quests?

Or maybe question "do you want also this kind of quests requiring extra involvement"?

And I guess that there are quests that would require extra-special manual enablement like kosher/halal.

smichel17 commented 3 years ago

IMHO you're in direct conflict with yourself here @mnalis . You've sent it's impossible to make fixed presets and listed seven different possible presets, then you've said the list should be arbitrarily limited to exactly three. confused

@peternewman This is confusion between the different use cases. The proposed solution doesn't take movement profile into consideration at all. Basically it would add two dividers to the quest selection screen which could be dragged up or down. The resulting 3 modes would be: (1) only show quests above the top divider (2) show quests above either divider, and (3) show all quests. It is the equivalent to only the +/- part of my mockup in https://github.com/streetcomplete/StreetComplete/issues/1654#issuecomment-747812461 (and if @westnordost decides to go with it, I would suggest using that sort of interface instead of a drop-down).

in the future, there may be a setting called "automatic" which automatically selects the movement profile based on speed somehow. This and the currently automatically selected profile would need be visible on the main screen.

This seems incredibly difficult. How do you pick between a train and car/bus profile? Or a car in traffic vs pedestrian/bike (these are different because in a car your path is much more fixed, whereas on foot you can move to look at things from a different angle). The only thing I could really see — regardless of profile — is changing the download strategy based on speed of movement. If I am moving in roughly a straight line at 80km/h, then selecting a different bounding box for downloads will go a long way toward displaying quests in time for me to answer them.

If this suggestion is somehow a good compromise, the way forward is to sort all the quests into these categories. Maybe this could be done collaboratively, in a diagram like this:

I am not sure that the categories actually overlap as neatly as you lay them out. For example, the quests that you must be inside to answer definitely have no overlap with passenger quests; a pedestrian may wish to answer them; and also someone (in @peternewman's example above) may wish to see the inside quests but not most of the pedestrian quests. There is no way to allow all 3 of those in the strictly monotonic layout you have drawn.

I would suggest:

I am not sure the best tooling to do this with. One way would be to create a new repo; add everyone as collaborators; create one quest for each issue; and use labels for categories. But it is hard to visualize or export to a visualization tool. GitLab is slightly better there, since its kanban boards are based on labels, but still not great.


I am kind of missing threading here, so I can reply on what I think are tangents, without derailing the thread. But I'm also hesitant to convert this issue into a discussion. I also want to get back to the analysis that I started earlier and carry it through to its conclusion. I think will open a new discussion and copy-paste my existing comments on that topic, and plan to spend some time on the weekend working my way through it.

mnalis commented 3 years ago

TL;DR please make user presets configurable by user!

* Have either a (dropdown)button on the main screen or in the menu (like @mnalis proposed) in which the user 
   can select **a filter based on the mode of transportation**. Proposed selection possibilities are: 
   All/No filter, Pedestrian, Cyclist, Passenger. The first shows everything, the others are designed so that 
   they you don't need to stop to answer the quests.

@westnordost This would be quite reasonable...

* The quest selection screen stays as it is. You can select and de-select quests individually.
   Any quests disabled here are disabled for all the above filters, i.e. it is additional to that

... if not for this. If I read this correctly, user would have no option to customize each preset to his liking, but only disable (and not force?) some option in all of them? This basically reduces the functionality to currently existing setup for me (unless we were to add much more presets which cover most possible situations, if even then).

For example, if customizable, my 3 presets would be: 1) walking with mostly everything enabled (except things I'm always ignoring - eg. I have a lots of time to kill) 2) walking or cycling with only things I deem most important (so no house related quests, no crossing, no foodtype etc -- eg. I'm in a hurry so stopping or slowing down is rarely an option, but I can still make use of the time) 3) fast moving vehicle (usually at distance of objects being mapped - often things I do not deem that important, but are only ones available to me being in fast vehicle I have no control of).

Note, when cycling I'd sometimes use (1) with frequent stop-cycle-stop and sometimes (2) (mapping only while waiting for red light or feature I deem very important for future navigation so it warrants stopping)

(1) can be substituted with your "all" circle, but in (2) lies the problem - things that are important to me are probably different for everybody. For example, mapping _openinghours of cafes/convenience shops is often one of the most important things (eg. my favorite activity of cycling off city relies heavily on weather I'll be able to replenish on trip or would have to make expensive emergency pickup call), as is sidewalk/cycleway existence; with somewhat lower priority lit status and navigation for blind persons. For someone else, those may be totally unimportant. Same is with others quests - lanes of roads or parking / charging spaces for cars, or vegetarian food choices are totally irrelevant to me and I'll only map them as last resort if I'm bored and I've cleaned up everything else, but for someone else they may be the most important things. So in this proposed solution, I would basically have to use only "all" preset, and them manually disable and enable each quest all the time, or use "all" preset and only use SC when I'm in "bored" mode (1).

If needed, I would even give up (3) (as it happens much more rarely) and stick to only "everything" and 1 user configurable preset if that was only alternative (which would probably be much easier to implement, eg. leave everything as it is currently and only add "show everything" checkbox).

But I really deem it impossible for programmer to determine what is useful user preset for each and every user with their different preferences.

* in the future, there may be a setting called "automatic" which automatically selects the movement profile 
  based  on speed somehow. This and the currently automatically selected profile would need be visible 
  on the main screen.

Probably not worth time needed, as I can imagine more ways of such automatic getting things wrong than of getting them right. But harmless enough if users can easily turn it off and make it stay off.

westnordost commented 3 years ago

Well, let's try it if the quests are actually sortable into the categories I proposed. Here is the link to miro, who wants to help?

https://miro.com/welcomeonboard/yLCaipyWenWHkiTDZMp7W8qDsEsmWXO6qyu5QiO15CIpdsPabYSGo2FQu7lf9EPN

peternewman commented 3 years ago

TL;DR: Essentially the whole quest selection of SC is currently driven by the order in the priority list in quest settings, because you can currently ONLY answer the highest priority quest for each object in that list, I believe it's overly simplistic to think it's optimal to apply the same set of priorities to every mode of transport.

* Have either a (dropdown)button on the main screen or in the menu (like @mnalis proposed) in which the user can select **a filter based on the mode of transportation**. Proposed selection possibilities are: All/No filter, Pedestrian, Cyclist, Passenger. The first shows everything, the others are designed so that they you don't need to stop to answer the quests.

I've done a bit of categorising @westnordost on Miro and the more I've done, the more I'm feeling this is an overly simplistic solution which won't be entirely optimal. Your charts all imply a linear progression of essentially moving slower, correlating to more involved quests appearing, but I think the order of priority can vary within each quest.

I'd hope we'd all agree that street name is more important than road surface for example in terms of the benefit they provide to OSM. Therefore when it's possible to chose (i.e. anything where the user in in control of their movement such as walking), we want to show street name, then road surface in terms of priority. However if we're on a bus/in a car, realistically unless we stop at some traffic lights or similar, we're more likely to be able to answer road surface, but we should show street name after that's completed in case the user gets lucky.

Similarly when walking, bus stop name/number is more useful than shelter or bench, but when I'm on a bus, the order should be shelter, bench then name, because I can see those two for a stop on the opposite side of the road or on a side road, but I can't guarantee I'd be able to see it's name (or read it accurately) unless we stop at it.

I am not sure that the categories actually overlap as neatly as you lay them out. For example, the quests that you must be inside to answer definitely have no overlap with passenger quests; a pedestrian may wish to answer them; and also someone (in @peternewman's example above) may wish to see the inside quests but not most of the pedestrian quests. There is no way to allow all 3 of those in the strictly monotonic layout you have drawn.

Personally I'd probably leave the levels/roof enabled, but just at a lower priority than they normally are, so I wouldn't need to switch presets when I went outside after I left the venue and I could fill in the other bits having answered the inside ones.

I guess one way to think about solving this would be a list of override presets, so you've got your basic priority list, used for the normal one, but for passenger/indoor etc you could effectively prepend a slightly different list above, so my indoor vegetarian override would be higher than the normal quests so would take priority. Personally I suspect that could be confusing for most people to handle, the only advantage is if I tweak a few quests in my general list (say I favour bikes over motorbikes), I don't have to mirror that into every preset if we're running the multi-preset model initially proposed.

Implementing #124 would possibly make this comment a bit less relevant, but from a time point of you, you probably still want the most important quest shown first (unless it was a clock or something and you could see the other available ones at a glance).

westnordost commented 3 years ago

So basically the filter should be what to show first.

mnalis commented 3 years ago

@westnordost I think @peternewman is right that it is overly simplistic idea. I've register account at Miro just for this, and tried marking few things, but the more I look, the more impossible such a solution seems, so I'd better stop before I get accused of vandalism...

Especially, "cycling" being a superset of "passenger" is IMHO totally broken. In fact, if anything, those two are more like exclusive than subset/superset - eg. most things in "passenger" are things I most definitely won't be solving when cycling. For example, no way I'm going to stop the bike to solve such a low-value quest like "does bench have a backrest".

Actually, the only two quests (out of about 30 of them from "passenger") that I'd have in "cycling" are "street_surface" and "lit", and perhaps two or three crossing related quest (if I happen to be stopped at red light anyway). Also, I don't agree with many of the cycling quest -- when cycling, I'd only want to stop for really important quest that will be useful for cycling in the future.

That is because when one is passenger, one mostly gets low-value quests, but they're bored and sitting safe anyway, and have no control over where they go, so they'll solve them...

On the other hand, when on bike, even throwing a look at your phone to see if there is anything to map is dangerous road behavior, and to solve any quest on bike you should really stop and stand down; and stopping/starting on bike is a process which cyclist usually want to avoid doing unless the thing to map is really important to them (if not; then you are really in "pedestrian lugging a bike" mode, eg. "casual" mode).

Even if the order were reversed, (eg. "passenger" being subset of "cycling" instead of other way around), while it would be much better, it would still be far from ideal... So I'd suggest one of the following (from more preferred to less preferred):

westnordost commented 3 years ago

I have another idea, spurred from @peternewman's last comment: What about if the default order of quests was actually based on how easy and quick (at a glance) a quest is solveable rather than by importance?

I.e. even if the bus stop name is more important, the other questions regarding the bus stop (shelter, ...) are so easy and quick to answer that it doesn't hurt to have them answered before.

peternewman commented 3 years ago

So basically the filter should be what to show first.

* important first (default)

* well solveable when moving fast first

Sorry is this a question or a statement? If the latter, surely only some quests should go in there, i.e. the ones that are particularly well suited to do when moving fast (e.g. road surface), but then I've still lost the ability to personally prioritise.

Especially, "cycling" being a superset of "passenger" is IMHO totally broken. In fact, if anything, those two are more like exclusive than subset/superset - eg. most things in "passenger" are things I most definitely won't be solving when cycling. For example, no way I'm going to stop the bike to solve such a low-value quest like "does bench have a backrest".

Doesn't this somewhat depend on quest density though? If I understand @cyclingcat 's workflow they effectively use SC to plan a random route to get a handful of outstanding quests some distance away and apart, although I guess either their area has few quests left and they presumably disable some or when SC adds a new quest like the lanes one, their screen would be flooded with them.

perhaps two or three crossing related quest (if I happen to be stopped at red light anyway).

Yeah I suppose that's one major difference between cyclist and passenger, you're only likely to stop at a red light, not in traffic as you can weave through it/go past it.

I have another idea, spurred from @peternewman's last comment: What about if the default order of quests was actually based on how easy and quick (at a glance) a quest is solveable rather than by importance?

Do you mean in general, or just in some transport modes? While it would appeal to the people who are heavily driven by gamification (probably not many people), I wonder if you'd risk losing a lot of people interested in mapping who didn't realise how to change it. They'd want to be doing worthy/useful stuff like road names and speed limits but they'd be flooded by roof types and surface quests. Even looking at a house, floors is likely to be quicker to answer than number, but the latter is more likely to be useful unless you're particularly interested in 3D renders and flight simulators.

I.e. even if the bus stop name is more important, the other questions regarding the bus stop (shelter, ...) are so easy and quick to answer that it doesn't hurt to have them answered before.

Yes, I'd agree entirely when I'm sitting on a bus. Personally if I'm walking along and a bus stop name is missing, I'd like to add that first, I wear a coat so I'm not bothered about the shelter and I'm fortunate to not currently need a bench, but knowing the stop to navigate is more useful.

Is this not also a strong argument for #124 and/or reverting https://github.com/streetcomplete/StreetComplete/issues/1969#issuecomment-723457563 if they're that quick to answer?

peternewman commented 3 years ago

What about if the default order of quests was actually based on how easy and quick (at a glance) a quest is solveable rather than by importance?

Going back to my waiting in a restaurant example from previously, that still needs its own special list of priority as the dietary ones can be answered trivially while sat at the table but anything else requires me to get up.

mnalis commented 3 years ago

I.e. even if the bus stop name is more important, the other questions regarding the bus stop (shelter, ...) are so easy and quick to answer that it doesn't hurt to have them answered before.

I'd argue that when riding the bicycle, no quest is "easy and quick to answer", except if you happen to be off the bike due to stopping at red light or something. So IMHO at least in bicycle scenario only very important tasks should be given - those which warrant stopping and getting off bike to safely map the feature (and definition of "important" is probably best left to each individual mapper to decide for him/herself, instead of being shoven down their throats).

smichel17 commented 3 years ago

think will open a new discussion

I finally made https://github.com/streetcomplete/StreetComplete/discussions/2457 and got around to writing the first use case as an example. There are more that were already brought up in this thread that I would be interested in discussing in a thread there — the current bicycle discussion, @peternewman's restaurant example, my walking… And I can think of a few I haven't mentioned yet.

I will probably get around to copying them over at some point. If anyone else wants to add a use case there, try to stay specific and feel free to include more than just the list of quests — longer explanation in #2457. Also feel free to be way less detailed than I was (details can be discussed in the reply thread).

edit: "@peternewman's commute to work" is another good use case. I would write it as one case that requires two different profiles (not two separate use cases), because this is where the feature to be able to switch profiles quickly comes from. Otherwise, it would be fine to put it deeper in the settings.

Helium314 commented 3 years ago

I really don't want to start another immensely long discussion... But since I would still like to have some nice way of quickly changing quest visibilities: one more proposal for how this could be done (aims to cover a good range of the use cases from the discussion in #2457, and to be reasonably simple at the same time):

We have some lists of quests: 'important' quests, quests relevant for wheelchair users, quests solvable from outside (currently the quests enabled by default), quests solvable from car, quick to solve, quests solvable day and night (or whatever you want to call a list that excludes the lit quests), quests solvable when there is snow (excludes surface quests),...

Somewhere (quickly accessible) there is a button that opens a menu with 2 columns, both columns can contain the mentioned quests lists.

Some examples (not mentioned lists are disabled):

A few points at the end

mnalis commented 3 years ago

related: looks like there is (currently somewhat buggy?) implementation of quest profiles in @Helium314 fork mentioned at https://github.com/streetcomplete/StreetComplete/discussions/3003#discussioncomment-963592?

westnordost commented 3 years ago

By the way, there have been a lot of related issues been brought up - filtering by quest name in preferences, quest filters, quest presets etc. and all of these contain some ideas how to solve some overlapping use cases. I read through all of them and decided to implement certain things that make some/all of these use cases easier or mitigate some problems with this.

Thread starting here: https://github.com/streetcomplete/StreetComplete/issues/2565#issuecomment-871737089

I write this here too because this issue had many participants and many people upvoted this issue. This issue will likely then be closed because it is not necessary anymore / mitigated / will not fix.

mnalis commented 3 years ago

@westnordost It is of course your absolute prerogative if you want to mark something as wontfix, but I cannot see where the claim that quest presets "are not necessary anymore" or "are mitigated" comes from? Surely not from different ordering implemented in quests-order branch?

I absolutely agree with you in https://github.com/streetcomplete/StreetComplete/issues/2565#issuecomment-874221731 that map looks more diverse and less boring for newcomers in that quests-order branch (and thus is improvement!), but that was never the issue that quests presets/filters https://github.com/streetcomplete/StreetComplete/issues/1654 were aiming to solve!

Their purpose (at least as I understand it as one of proponents) were defined by this premises:

and the conclusion coming from those premises is:

and not:


To make an analogy: sometime people wear rain boots, sometimes they wear sandals, and sometime they wear formal shoes, and sometimes they wear sneakers. The goal of quest presets was thus to:

westnordost commented 3 years ago

What makes it difficult is that all these tickets that are related were trying to solve a couple of different use cases. What the stuff on the quest order branch solves is:

The remaining use cases for quest presets mentioned in #1654 are really fringe, IMO, like "don't show quests that require to see the surface" aka "there is new snow" - how often would that preset be used really? Also, even a quest preset like that is partly solved by the new quest order because the surface quests etc come much later now.

What presets would be most important to you, i.e. which one would you regularly use?

mnalis commented 3 years ago

@westnordost asked:

What presets would be most important to you, i.e. which one would you regularly use?

You mean, which two I would regularly use? Because, if it was just one, I'd set it up, call it a day, and never change it :smile: Whole idea of presets makes sense only if there are at least two (or preferably more) of them.

So, if I had to limit myself to just two presets, those would be:

(also, although not seen in list of quests, but is very important, is opening tons of new notes by long pressing on the map (for missing shops/cafes/drinking_water and other important things for bicyclists the SC didn't ask about)

If I could pick three presets, then I'd add the new default from quest-order branch to the two presets above, as a good mid-way compromise.

If I could pick four or more presets, I'd add some housenumber/streetname quests which I deem very important, and some of https://github.com/streetcomplete/StreetComplete/discussions/2457 that I created/commented on, and well as "really everything" preset.

So, sometimes people will want to solve anything useful (or really anything, it they are that bored) just out of goodness of their hearts. But sometimes, people have specific agenda that they care about the most (in my case, usually bicycle related stuff; but it could address mapping often too) and are willing to endure extra hardships to achieve it (ie. their cycling tour taking 15 hours instead of just 12, due to frequent stopping and getting off the bike to map stuff important to cyclists)

peternewman commented 3 years ago

What makes it difficult is that all these tickets that are related were trying to solve a couple of different use cases. What the stuff on the quest order branch solves is:

I'd agree the new quest order solves the things you mentioned, people could also order like that themselves already, but having this as the default may well be better for newcomers. Variety is probably good for all of us too to keep us interested and engaged.

It does feel to me that the main thing that's being consistently missed in proposed suggestions is the ability to change prioritisation. SC used to prioritise the most worthy/important quests first, with the quest order branch, it now starts with the easy/simple ones first. What this now means is that anyone with time to kill will spend most of it burning through the easy quests, although they may be low value and others could easily pick them up while wandering past, when ideally they would start with the ones that other people aren't likely to pick up most of the time (names of things, opening hours etc).

If you were going to only implement two presets, then having one default to the current order (or something similar to it) and one defaulting to the new quest-order branch, would seem a good place to start (although personally I'd probably favour more and more flexibility).

The naive approach of just reversing the priority order may be a possible starting point, but that would for example put step count at the top, whereas opening hours is probably similarly fiddly but more useful in the real world (I also feel ramp status is more useful than step count whether I'm going for quick or slow/worthy). It would possibly also push some valuable but quick quests too far down the list (tactile paving, parking payment etc).

mnalis commented 3 years ago

@peternewman I agree, SC is not (just) a game where you need to collect as many quests (the easier the better) to gain better score (which quest-order branch promotes, and which might be a good way to attract/engage new users) but should IMHO longer-term be primarily a way to collect more useful/important data.

The problem with that approach is that while we can easily agree which quests are easier/quicker to solve (what quest-order branch prioritizes), it is when we try to reach consensus about which quests are more important that the problems arise; for example:

But even when those are priorities for them, it does not mean they won't (at some times, but not always) be willing and interested to solve some other quests - unless it involves huge administrative drudgery as it does currently, which is huge turn-off. Users need an easy way to try some more quests outside of their priority zone, and even easier way to get back to their preferred setup when they've had enough.

Manually going through list of 100+ quests is not easy, so users won't be doing that, and would likely either staying with the default (which as @peternewman notes is somewhat problematic as it demotes some very useful quests to promote easy to solve quests) or will set it up once so only the few most important quests for them are shown and never change it again (which is again problematic, as when they clear the area, SC will be showing blank maps without quests so after few blank maps they will likely stop using SC altogether and forget about it)

(Also note that even for quests that vast majority of users might agree that are useless of low utility for most data consumers, like roof types, bulding levels, pole material, royal cipher, house type or bridge structure; they will be some who will vehemently oppose those opinions and claim that those are important quests - maybe even with arguments to back it up).

rugk commented 3 years ago

cyclotouring specifically, mostly rural

@mnalis Your use case sounds common, but the quests you select are quite interesting, "potable water" etc. Because you do not seem to care how easy is is to solve the quests "on the go" with your bike, but how useful they are for you and others.

What I mainly want to say is: I doubt another user would have the same quest preset. As such Was there a discussion already, about using quest profiles instead, i.e. no given presets by StreetComplete, but just profiles the user can add and remove as they wish? Something like Firefox about:profiles or such a thing (just an an explanation, of course it should be less complex here), so where you can add and configure your own profiles?

Each profile should then just be an alternative "quests enabled + order" part, where you switch between these profiles and you can configure it as you wish. We could always anyway talk about adding default profiles there then…

Edit: Ah this is https://github.com/streetcomplete/StreetComplete/issues/3034 apparently…

westnordost commented 3 years ago

Solved (differently) in #3210 / #3034