Path-Check / safeplaces-dct-app

COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID
https://covidsafepaths.org
MIT License
466 stars 283 forks source link

Improve Google Location Data import experience #69

Closed penrods closed 4 years ago

penrods commented 4 years ago

The Import functionality is great, but still tricky to use. It might take a few iterations to get it to what we want, but here are some thoughts:

Break the Import into three stages, kinda like an old-school Wizard. 1) "Intro" page. Explain what this does and give instructions to log in and start the process w/Google. Q: Can we explore the DOM on the webview? It would be cool to watch for an indicator that the request for a takeout has happened, then move to the "Waiting" step described below. 2) "Waiting on Google takeout" page If the user returns to Import page, show a message that we are still waiting on the takeout file. Include a "Start over" button to go back to Step 1 in case something fails. 3) "Import Complete" After an import completes, the results of the import should be remembered and displayed. E.g. "28 day of data imported from Mar 1 - Mar 28". Also have an "Import again" button that goes back to step 1.

During Step 2 the user should be be able to leave the app or go back to the main page. We should have a background task look for the takeout file when one is pending, so you don't have to go back to Import. The app should show a notification when the takeout file is found and process completes.

Discussion is welcome. I expect the implementer will find challenges and opportunities to improve this sequence. For instance, there might be a step 2.5 that helps with the download of the Takeout file.

penrods commented 4 years ago

Another thought from Google Play store:

As a privacy conscious individual (and the trust the app is looking for),
I find it a bit hard to stomach when it asks for my account details in a
webview inside the app. This helps people unfamiliar with Google
takeout but I would prefer to be given the option to do it manually
(and not risk my account credentials).

Let's consider adding instructions for those who are worried about this. They can do it independently -- although the fact that it is open source does allow them to see what is happening behind the scenes, too.

greggles commented 4 years ago

I had several options from Google Takeout and I didn't know which to select. The instructions should likely give advice on these:

I think resolving this would likely also fix #114.

dankegel commented 4 years ago

I just tried PrivateKit version 0.5.11 on android 10, and can confirm the import functionality is confusing; I got it to download, but was confused about whether it succeeded.

After ten minutes I did see my trace show imported data, so it does work, it's just hard for non-computer-types to use.

diarmidmackenzie commented 4 years ago

Completely agree with this. Extract from my recent test report:

https://docs.google.com/document/d/1Uh1A-h7Ddm6t-rAlHOM90xnsrkLEG9SGcTolf3uIbgQ/edit

"[DHM-S1-9 - Existing 69] I see a lot of problems with the embedded Google panel. It creates a complex UI, that I think many users will not be able to successfully navigate. If possible, it would be much preferable to have this function available natively in the App, with a simplified UX. o There are lots of options exposed, and it is not obvious which steps to take o General google navigation is available, which allows the user to navigate all over their google account, and get completely lost. o There is a “Help” link, but it links to help for Google Account, rather than help for the operation the user is actually trying to perform. o Likewise with the “Send feedback” link – this is available, but for Google. o Lack of control of the content Google display is a risk, e.g. § If you create user documentation of this process (online, in-app, tutorial videos etc.) there is a risk of changing their UI. § Google Help warned me that they were running with a “limited team in light of COVID-19” – not a message you’d want misinterpreted as coming from Safe Paths. o Android “Back” button moves back in the SafePaths app, not in the embedded Google page. o Reduced screen available meant that some Google pages I was able to navigate to were cropped on the right. o Confusing options available for data export like “Export every 2 months for a year”. o “File type & size” – should it be .zip or .tgz? 2GB? o I am in Italy, and the embedded google panel was in Italian, even though the rest of the app was in English."

Unlike other users, I was not able to get the import to succeed, but I'll raise that as a separate issue.

diarmidmackenzie commented 4 years ago

Further evidence that the UX is very problematic. I let my wife try to run through the proces without briefing on her phone.

Several novel problems hit:

kenpugsley commented 4 years ago

Please note ... #410 is is progress that will rework this experience.

diarmidmackenzie commented 4 years ago

Is this a duplicate of #410? Shall we just close this, or does this add anything extra?

tstirrat commented 4 years ago

410 is the code change to improve the import flow:

Lets try to get some of these UX issue fixed, but be aware that Google does not provide a nice progrmmable interface to getting this data because it is inside their account settings, so there will be some UX issues that we cannot solve.

But we can hopefully imporove the text guides, or descriptions so that users can complete the journey effectively.

E3V3A commented 4 years ago

This look very nice!

But the mere potential, that the user has 1 GB to download, is quite a scary idea. What will happen to a lot of people is the following:

Worst case scenario:

That said, we should warn users to only download when on a reliable WiFi connection.

dankegel commented 4 years ago

Actual data usage if they just check location is much lower. (i.e. the Google Takeout interface lets the user select what data types to export. I chose just "location". Looking at the URL it uses, I suspect #410 pre-selects the location data type for the user, which would mean it'd be hard for users to screw up and try to download all types.)

The remaining wording is scary, but that's a minor problem.

E3V3A commented 4 years ago

@dankegel What do you mean with just check location?
I guess it depend on what they have done in the last 2 weeks. Sitting at home, then yes, but biking around the city or driving to other cities, then no.

sergesemashko commented 4 years ago

well, I think we are trying to go too far in a single code change and maybe baby steps made iteratively would be a better option.

let me explain current state of import feature in develop branch which actually doesn't work at all:

  1. IOS throws out a blob as text to the web view and nothing happens
  2. filename to import is hardcoded to 2020_March.json instead of dynamically figuring which month file to import based on current date
  3. somebody brought up a privacy/security concern from GooglePlay review about entering google account password in the web view
  4. Takeout MUST BE downloaded inside the web view in order to import
  5. Downloaded files are stored on the phone filesystem and never deleted

PR #410 is bringing in:

Yes, there might be a concern with big files, somebody mentioned 7 years of locations is about 500mb. Unfortunately, Take out provides only one option to download either all or no locations, no option to select time range.

Thanks for testing and the feedback, at the moment it's kind of hard to extract any actionable points other than updating the instructions, so further suggestions/guidance is still needed.

Yeah, even improved version still requires more improvements 😄 but if user follows instructions and downloads either through link or google drive it should be no problem importing.

If it was up to me, I'd suggest to wrap up and merge #410 as I believe something (what works) is better than nothing, keep the improvement conversation and open another PR when it makes sense.

tstirrat commented 4 years ago

Yes I agree that we should get #410 merged soon, and we can improve the instructions/steps if they need more clarification