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

Element-R iOS #6587

Closed
78 of 99 tasks
Tracked by #745
Anderas opened this issue Aug 18, 2022 · 1 comment
Closed
78 of 99 tasks
Tracked by #745

Element-R iOS #6587

Anderas opened this issue Aug 18, 2022 · 1 comment
Assignees
Labels
A-E2EE T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements T-Epic Issue is at Epic level

Comments

@Anderas
Copy link
Contributor

Anderas commented Aug 18, 2022

An epic with all the task required to build and release Element-R iOS, an element client using Rust crypto crate. The epic serves as an overview and should be updated regularly with missing tasks and concrete implementation tickets.

Phases

The phases are chosen to align with pre-existing breakdowns for Element-R on other platforms

Phase 0 - Setup / Bingings (Done)

  • Compile Rust Crypto SDK as Apple framework
  • Publish MatrixSDKCrypto in CocoaPods
  • Integrate MatrixSDKCrypto under build flag
  • Compile MatrixSDKCrypto for macOS

Phrase 1 - Integration (Done)

  • 1.1 Process Sync
    • Integrate olm machine class
    • Expose Rust Logs
    • Process Sync loop
    • Request Sender
    • Process output of receiveSyncChanges
  • 1.2 Decrypt Events
    • Decrypt messages
    • Decrypt media and attachment
  • 1.3 Encrypt Events And Share keys
    • Establish olm sessions
    • Encrypt messages
    • Discard room key
    • Room encryption state
  • 1.4 Key Backup
  • 1.5 Cross Signing
  • 1.6 Gossiping
  • 1.7 Shields / Device Manager
    • Trust shields
    • Device management
    • Blocked user / device
    • Untrusted vs unverified user / device
    • Refresh verification status immediately on any update
    • Trust own device after restoring cross-signing keys
    • Update tracked users / device keys

Phase 2 - Alpha version

  • 2.1 Alpha TF build without migration by 1/Nov
  • 2.2 Migration from libolm to rust
    • Migrate from libolm to Rust
    • Migrate encryption settings
    • Migrate remaining data from group container
    • Migration UX
  • 2.3 Notifications
  • 2.4 Backup import progress
  • 2.5 Stable verifications
  • 2.6 Analytics
    • Sentry performance measuring
    • Setry error logging
    • Posthog error logging
    • Rageshakes debug info (sync response, encryption/decryption content etc)
    • Sentry dashboards
  • 2.7 Tech debt / Refactors
    • Remaining "not yet implemented" (especially MXCrypto vs MXCryptoV2)
    • Top level / non-silent error handling
    • iOS - Android implementation parity
    • Protocols instead of subclasses (MXCrypto, MXCrossSigning)
    • Strong type checking (log / throw if data is missing)
    • Remove all references to concrete implementations of requests / transactions

Phase 3 - Unit / Integration tests

  • MXAes256KeyBackupTests
  • MXCrossSigningTests
  • MXCrossSigningVerificationTests
  • MXCryptoKeyVerificationTests
  • MXCryptoMigrationTests
  • MXCryptoRecoveryServiceTests
  • MXCryptoSecretShareTests
  • MXCryptoSecretStorageTests
  • MXCryptoShareTests
  • MXCryptoTests
  • MXCurve25519KeyBackupTests
  • MXMegolmEncryptionTests
  • All non-crypto integration tests
  • All polyjuice tests pass
  • New tests for MXKeyVerificationManagerV2 and MXCryptoV2

Phase 4 - Rust crypto crate updates

Phase 5 - Publlic TestFlight

  • 5.1 Release as public TestFlight build
  • 5.2 Target xxx Users, xxx Weeks => Check posthog UTDs
  • 5.3 Benchmark legacy vs rust crypto performance

Phase 6 - Release

  • 6.1 Ensure production stability
  • 6.2 Remove build flag
  • 6.3 Remove legacy crypto code
@Anderas Anderas added T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements A-E2EE T-Epic Issue is at Epic level and removed T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements labels Aug 18, 2022
@Anderas Anderas self-assigned this Oct 3, 2022
@Anderas
Copy link
Contributor Author

Anderas commented Feb 27, 2023

This epic is no longer suitable to track further progress: Element-R is currently available to all users as an Opt-in labs option, and users will be automatically migrated using a phased release. All remaning work will be tracked individually on the crypto sprint board

@Anderas Anderas closed this as completed Feb 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-E2EE T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements T-Epic Issue is at Epic level
Projects
None yet
Development

No branches or pull requests

1 participant