Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notify users about backwards incompatibility on mobile #1980

Closed
holmesworcester opened this issue Oct 17, 2023 · 16 comments
Closed

Notify users about backwards incompatibility on mobile #1980

holmesworcester opened this issue Oct 17, 2023 · 16 comments
Assignees
Labels

Comments

@holmesworcester
Copy link
Contributor

holmesworcester commented Oct 17, 2023

We should create an update to notify users that they are on a deprecated release of Quiet and encourage them to upgrade from the website. Desktop apps should not autoupdate from 1.x to 2.x. We'll create our own community and probably a separate one for outside collaborators and users.

For iOS we'll disable the 1.x testflight release and give a note to users.

For Android users will probably see the 1.x release with the warning and we can include a note in the app description.

We can include an email address to contact us with any questions! [email protected]

This should be released as soon as it's done.

UPDATE: This issue now covers only the behavior on mobile. See: #1980 (comment)

@holmesworcester holmesworcester converted this from a draft issue Oct 17, 2023
@holmesworcester
Copy link
Contributor Author

holmesworcester commented Oct 27, 2023

@EmiM @vinkabuki @leblowl I've been trying to craft a message that makes sense to show before the upgrade, and I think it might make sense to show it after people upgrade instead, if that's possible. The problem is that before the upgrade there isn't really an action for people to take.

Assuming we do an automatic update from 1.x to 2.x (which is what will happen on Android at least) will people have access to their existing messages? Or will we have to reset all data from previous versions?

Is it an option for someone to upgrade automatically and then see a message (like our Quiet "bot" messages when new users join) that tells them the following?

Now you can join communities when the community owner is offline! This makes joining communities faster and more reliable! 🎉 However, it also makes existing communities (like this one) stop working. 😥 We wanted to avoid this, but it wasn't practical given the stage of the project and the size of our team.

Action steps:

  • Members: please leave this community and rejoin with a new invite from your community owner.
  • Owners: please leave, create a new communitty, and re-invite members.

Apologies for the annoyance! Questions? Need more time to transition? Email: [email protected]

If not, here are some other options: https://www.figma.com/file/e48qgyVUq1OrwDttUrNGNp/Backwards-compatibility-notification?type=design&node-id=811-174&mode=design&t=qVt0QQdT9IaRd5gJ-0

@EmiM
Copy link
Contributor

EmiM commented Oct 30, 2023

Showing this after upgrade would be a bit complicated because community will not even launch without psk after releasing #1897 - libp2p needs psk.

I'd stick to what we discussed before - to release a separate version with warning that Quiet will be backward incompatible since version X. Or we could even add a date of release.

@holmesworcester
Copy link
Contributor Author

Showing this after upgrade would be a bit complicated because community will not even launch without psk after releasing #1897 - libp2p needs psk.

What do you mean "community will not even launch"?

Do you mean the app will become unusable?

Do you mean that messages will still be visible but you will not be able to send or receive messages?

What will happen if they reinstall the newest version from tryquiet.org?

What will happen if we do an autoupdate to the newest version?

What we want is:

  1. Existing messages do not disappear from the app until the user is ready for that.
  2. User can easily create a new community. (How will this work on Windows, where "Leave community" is still broken?)

Here's a warning we can show, but we need to make sure that messages will not be lost, and that users can leave the community and start a new one when they are ready.

Image

@siepra
Copy link
Contributor

siepra commented Nov 6, 2023

The next version will not be backward compatible - so the app will become unusable.

To prevent users from bad experience our idea was to disable auto updater with the same version featuring notification/warning, and to inform them to manually download a new one from https://tryquiet.org.

As the user will not be able to enter the community in order to leave it, we should probably point to some other data directory starting with the new version (e.g. suffixed with the major number) @vinkabuki am I right?

Will installing the application cause removal of the data dir? If yes then we should probably advice users to do it before installing a new version (EDIT: I confirmed uninstalling does not cause data dir removal)

@holmesworcester
Copy link
Contributor Author

On Android we won't be able to control when users upgrade I don't think, unless we do a new release. What should we do in that case?

How would users be able to delete the data directory?

How costly would it be to be backwards compatible in the sense that the community exists and messages are readable, even though connectivity won't work?

@siepra
Copy link
Contributor

siepra commented Nov 6, 2023

I did some research and my knowledge is there's no way to prevent auto-updates for users who have this option enabled on their side. However, we can try to:

  1. Initially release breaking changes to open-beta track only. This way people will have to manually sign in to open-beta testing program to receive an update
  2. Implement custom logic for detecting data compatibility. Inform the user and erase data programmatically if lack of backwards compatibility detected

User can always delete data directory by deleting app's data on the OS level. We can place an illustrated instruction somewhere.

Answering your last question: I think it'd be very costly as it indicates making and maintaining a separate flow in the great part of backend just for the backwards compatibility purposes @EmiM am I right?

@EmiM
Copy link
Contributor

EmiM commented Nov 6, 2023

Yes, Wiktor is right. We would have to implement alternative flow, test it thoroughly, check if regular flow did not break because of changes. It's just not worth it at this stage of the application.

@holmesworcester
Copy link
Contributor Author

holmesworcester commented Nov 6, 2023

I propose we show this message on mobile as soon as possible. It should display on startup until the person clicks "I understand".

Image

https://www.figma.com/file/e48qgyVUq1OrwDttUrNGNp/Backwards-compatibility-notification?type=design&node-id=811-10921&mode=design&t=0QaefG8YtjUeMwH8-4

(The design is based on our "you must update" notification for mobile from #1613)

@holmesworcester
Copy link
Contributor Author

holmesworcester commented Nov 6, 2023

On desktop this should work differently and I've created a new issue: #2039

@holmesworcester holmesworcester changed the title Notify users about backwards incompatibility, retire 1.x update branch Notify users about backwards incompatibility on mobile Nov 6, 2023
@siepra siepra moved this from Sprint to In progress in Quiet Nov 6, 2023
@siepra siepra self-assigned this Nov 6, 2023
@siepra
Copy link
Contributor

siepra commented Nov 7, 2023

Emojis cause problems with line height. It's a known react-native issue, although there's no great solution for it yet.
facebook/react-native#4457
facebook/react-native#18559

I think there's no point in spending time on it right now so I suggest we either remove emojis for now, or don't care about it?

Zrzut ekranu 2023-11-7 o 14 05 17

@holmesworcester

@siepra
Copy link
Contributor

siepra commented Nov 7, 2023

Also, what should happen after tapping on Need help? [email protected]?

@holmesworcester
Copy link
Contributor Author

We can remove the emojis. I was thinking the link should be a mailto: link or work like one. (Open the mail app with our address pre filled.)

If that doesn't work let's make a support section in the FAQ or wili and link to that.

siepra added a commit that referenced this issue Nov 7, 2023
@siepra
Copy link
Contributor

siepra commented Nov 7, 2023

The issue is labeled Android. Do we want to limit displaying the warning to Android only?

siepra added a commit that referenced this issue Nov 7, 2023
@holmesworcester
Copy link
Contributor Author

Both platforms is fine!

siepra added a commit that referenced this issue Nov 7, 2023
@siepra siepra moved this from In progress to Waiting for review in Quiet Nov 8, 2023
siepra added a commit that referenced this issue Nov 9, 2023
…2042)

* feat: notifier component #1980

* feat: notifier screen

* feat: navigation pop

* feat: bind pop to the notifier button #1980

* feat: attach notifier screen #1980

* fix: current screen selector

* fix: remove emojis from notifier message

* feat: use mailto for support address #1980

* chore: cleanup

* fix: building mobile package #1980

* fix: lint
@siepra siepra moved this from Waiting for review to Merged (master) in Quiet Nov 13, 2023
@siepra siepra moved this from Merged (master) to Done in Quiet Nov 15, 2023
@siepra
Copy link
Contributor

siepra commented Nov 15, 2023

@kingalg Tested it in version 1.10.10 and claims it works fine

@siepra siepra closed this as completed Nov 15, 2023
@kingalg
Copy link
Collaborator

kingalg commented Nov 15, 2023

I confirm that it is working.

EmiM added a commit that referenced this issue Nov 23, 2023
* Fix - js injection in message input (#1943)

* use notarytool for macos notarization

* Secure backend socket.io from other applications that can access localhost i.e. browser (#1940)

* secure socket IO connection with token and origin, transform token from main.ts to backend and state manager

* Add authorization headers to socketio android notifications client

* Secure socketIO connection on iOS

* Extend lastKnownPort to lastKnownSocketIOData on android

* Handle socketIOSecret for iOS lifecycle event

* feat: getRandomValues and concept for validating options on backend

* fix: use secure crypto for ios socketio secret

---------

Co-authored-by: Vin Kabuki <[email protected]>
Co-authored-by: siepra <[email protected]>

* feat: notifier component #1980

* feat: use mailto for support address #1980

* fix: building mobile package #1980

* Publish

 - @quiet/[email protected]
 - @quiet/[email protected]
 - [email protected]
 - [email protected]
 - [email protected]
 - @quiet/[email protected]
 - @quiet/[email protected]

* fix: pass team id for notarization

* chore: abort build on notarization failure (#2081)

* chore: deactivate 'breaking changes warning' for mobile and desktop #2097 #2096

* fix: use default websocket port in case of none

---------

Co-authored-by: Kacper Michalik <[email protected]>
Co-authored-by: Vin Kabuki <[email protected]>
Co-authored-by: Kacper-RF <[email protected]>
Co-authored-by: siepra <[email protected]>
Co-authored-by: Wiktor Sieprawski <[email protected]>
Co-authored-by: [email protected] <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Archived in project
Development

No branches or pull requests

4 participants