Page MenuHomePhabricator

Investigation of QS opt-out capabilities [16h]
Closed, ResolvedPublicSpike

Description

This task represents the work with conducting an analysis to learn if/how we can offer an opt-out option via QuickSurveys

User Story
As a user I need the ability to not give consent to taking the survey.

This is a legal requirement.

What we know so far

  • In external mode In QuickSurveys, the external option has a "visit survey" and "no thanks" option. The "no thanks" option will dismiss the survey and not show it again to that user in that device/session. The "seen" flag is saved locally in the device and session. If the user clears their caches or changes browser settings, there could be a chance of them being bucketed again and shown the survey again.
  • In internal mode there is no option to dismiss surveys, this would need to be implemented

Open Questions

  • If user is has the option to dismiss the survey, what’s the probability that the user will be shown the survey again?
    • βœ… The same probability as the initial one. The probability depends on the survey's coverage % and the other surveys that are enabled in the same time period.
      • Currently External Surveys employ a dismissal feature, it is client side and is can be undone if a user clears the cache.
  • Is there a way to avoid clearing the cache issue (i.e. can we store the users' answer or dismissal to surveys somewhere?). What would be the risks?
    • βœ… Yes, surveys will be sent to "logged in" users so we could store a flag/user preference that disables all surveys altogether.
      • Of course the risk is that it is all or nothing approach, because storing specifically which survey is not anonymous and could be exposed inadvertently in the future.
      • It appears the local storage approach is better suited for storing more information about what survey was dismissed whereas recording in user preferences would require more development work and resources, etc
  • What kind of effort are we looking at if we were to implement an option to dismiss inline surveys?
    • βœ… Easiest solution would be to port the existing "dismissal" code in the external surveys codebase. Currently it is a button action but that easily can be put behind a click event.
      • Estimated low effort, but depends on design work and requirements for dismissing internal surveys
  • How many times is a user shown a survey? Each page visit until answering or just once?
    • βœ… Based on code review, indefinitely until answered.
      • An automatic dismissal after first insertion could be implemented as a configuration variable per survey

Event Timeline

Madalina renamed this task from Investigation of QS opt-out capabilities to Investigation of QS opt-out capabilities [16h].Sep 22 2021, 2:58 PM

A couple of questions to add after talking with @Madalina today:

  • How many times is a user shown a survey? Each page visit until answering or just once?
  • Would we want users to be able to opt out of all surveys? Or just temporarily for one survey, or both options? (Maybe a close button that dismissed the individual survey for the session and a "don't show me these again" which updates the user preferences)

A couple of questions to add after talking with @Madalina today:

  • How many times is a user shown a survey? Each page visit until answering or just once?

Great question to clarify, I don't know the answer at this moment

  • Would we want users to be able to opt out of all surveys? Or just temporarily for one survey, or both options? (Maybe a close button that dismissed the individual survey for the session and a "don't show me these again" which updates the user preferences)

This "don't show me these again" would be a nice feature! It's more on the camp of lets improve QuickSurveys than run the Safety survey though.

I'll add the first one to the task description, feel free to add the second one if it is clear what to do to answer it.

@Madalina I am still waiting on info about the last question an will update ASAP

@Madalina got with Joaquin and reviewed the code. Question 4 is now answered.

@eigyan on question 2, can you clarify what all or nothing means in this context? Does it mean that if the user chooses to dismiss the survey and we record that, then all the surveys will be disabled not just the safety one?

@Madalina Oh yes, thank you, let me clarify, I was actually thinking about how setting a flag of DISMISSED for a logged in user could block future "different" surveys from being shown if we simply set a flag that said don't show surveys. However when we are talking about just dismissing the active on screen survey, local storage allows for saving what particular survey should not be seen. For example, if user A dismisses surveyA then SurveyA will no longer be shown, but Survey B is still available to the user as they have not DISMISSED. When we record the value or DISMISSED it, it could potentially block all surveys as we would need a way to persist which surveys are dismissed or not.

Hey @eigyan, while investigating past use of QuickSuvery I discovered this task https://phabricator.wikimedia.org/T187299 where they mention that "Users will have an option to opt out of this surveying permanently". Maybe there's valuable insights there or in the related subtasks.

I've updated some details based on a 1:1 with @Madalina, and it seems ready for signoff, so I'm moving it to her column.

If there are any questions feel free to move it back to review!

It looks like we got everything we were looking for, I'll mark this as solved

Thank you @aminalhazwani for the task info update I will look into that.