Upgrade Riot-Android application with RiotX code base
See original GitHub issueThe decision has been taken to upgrade the Riot-Android application with the RiotX codebase, and to properly migrate the existing account data to let users enjoy the new version of the app without having to log in again. RiotX application will be then removed from the PlayStore and so will never be a production application.
Here are the identified steps so far:
on the RiotX codebase:
- 1. Change applicationId to
im.vector.app
. No need to rename the folder of the source code. - 2. Import previous credentials to let logged user stay connected after the upgrade of there Riot-Android application
- 3. Import the previous crypto database to avoid users loosing there keys after the upgrade The two last steps should not impact the user and should be transparent for him.
- 4. There is no need to migrate the session store. An initial sync will be performed.
- 5. Cleanup all the previous files created by the legacy codebase and not used anymore by the RiotX codebase.
- 6. Implement every issues with the label riotx-go-live
- 7. Check permissions. Some permissions may have been already granted to Riot-Android (ex: read_contact), and not used yet in RiotX. If we remove them from the manifest during the upgrade, we will ask again the user to use the permission in the future. So add them now to the RiotX Android Manifest to keep the user grant access allowance. EDIT: permissions will be added when we will add the feature which require them
- 8. VersionCode: ensure current version code generation of RiotX is compatible to generate an update of Riot-Android
- 9. SecureStorage: this is a point, study what are the problematics and how we can handle it
- 10. User agent: restore user agent of Riot-Android on RiotX?
- 11. RageShake: study impact
- 12. Appname: change the app name to “Riot.im”
- 13. Icon. Keep the RiotX icon and look and feel (?)
- 14. Outdated homeservers: RiotX does not support to get connected to outdated homeserver. Lazy-loading of room members is required. Other checks are done to know if login and registration are supported by RiotX. So we have to deal with current users of Riot-Android who are connected to an outdated homeserver. The current idea is to check, during the migration process, if the homeserver is uptodate regarding RiotX codebase requirement, and if it is not the case, to warn the user about the fact that their homeserver has to be updated, for security reason, and that some features may not work properly. Though the access to the application should not be blocked anyway.
- 15. Update (remove?) the popup “Welcome to the beta”
RiotX end of life:
- A branch created before all the previous changes could contains the very last version of RiotX published as a RiotX application, to inform the beta RiotX users that they now have to use (or install) Riot-Android. There will be no migration from RiotX beta app to Riot-Android, but RiotX users are considered power users and won’t have difficulties to eventually log in again with the new Riot-Android. Thanks to all the RiotX beta users for there useful contribution!
on the Riot-Android project:
- Nothing but update the README.md files to let people understand that the code will now die
on Android Matrix SDK:
- Nothing but update the README.md files to let people understand that the code will now die, even if the new SDK will not be exported from the RiotX codebase for the moment.
Other steps to consider:
- 1. Remove RiotX application from the PlayStore
- 2. Ensure Weblate will create PRs on the RiotX codebase and not in Riot-Android and Android matrix SDK project anymore.
- 3. Update PlayStore description of Riot-Android?
Identified limitations:
- Riot-Android in minSDK 16 and RiotX is minSDK 19. Every devices running API 18 and less will not get the upgrade of the application. EDIT: RiotX is now API 21+
- Feature parity will not be reached when we will do the upgrade. This is assumed and the following releases will hopefully contains the remaining features. People really annoyed by this can still alternative client, like miniVector (which I know is deliberately missing some features) or download the legacy application from other stores like F-Droid
F-Droid store
- F-Droid store is also hosting two versions of the application. I assume it will be the same than for the PlayStore: RiotX codebase should replace Riot-Android application.
Forks
Several forks are known by the team (Tchap, miniVector, etc.). The Riot-Android project will stay the same, and the RiotX Github project will stay the same. So it will be up to the forked application owners to fork RiotX and do again the change they have done to their previous fork of Riot-Android. It’s worth noting that all the work done to properly handle migration of existing users will also be useful for forked applications.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:20
- Comments:8 (3 by maintainers)
Top GitHub Comments
F-Droid currently still has
im.vector.alpha
as riot-android as we never made the migration due to the signing key compromise. I guess we could just ask everyone to reinstall at this point.@progserega