Η αρχιτεκτονική προσέγγιση της μεταφοράς

Η ομάδα του StreetComplete επέλεξε μια προσέγγιση που ελαχιστοποιεί το τεχνικό χρέος, αξιοποιώντας το γεγονός ότι η εφαρμογή είναι ήδη γραμμένη σε Kotlin. Αντί για τη χρήση ενός cross-platform framework όπως το Flutter, το οποίο θα απαιτούσε rewrite σε Dart, η ομάδα χρησιμοποιεί το Kotlin Multiplatform (KMP). Αυτό επιτρέπει τη μεταγλώττιση (transpilation) του κώδικα σε native machine code για το iOS, διατηρώντας την ίδια βάση κώδικα για το 100% της επιχειρησιακής λογικής.

UI και Compose Multiplatform

Η μεγαλύτερη πρόκληση είναι η μεταφορά του UI. Το project υιοθετεί το Compose Multiplatform, μια επέκταση του Jetpack Compose. Η διαδικασία ακολουθεί τρία στάδια:

  1. Διαχωρισμός της λογικής πρόσβασης δεδομένων από το UI.
  2. Μετατροπή των υπαρχόντων Android XML layouts σε Jetpack Compose.
  3. Τελική μετάβαση στο Compose Multiplatform για την υποστήριξη του iOS.

Κατάσταση του project και κοινότητα

Η μετανάστευση βρίσκεται περίπου στο 50% της ολοκλήρωσής της. Η ομάδα ακολουθεί μια ανοιχτή διαδικασία ανάπτυξης μέσω ενός Kanban-style project board, ενθαρρύνοντας τη συνεισφορά της κοινότητας. Η επιλογή αυτής της αρχιτεκτονικής διασφαλίζει ότι η μελλοντική συντήρηση της εφαρμογής δεν θα αυξηθεί δυσανάλογα, καθώς οι αλλαγές στον κώδικα θα εφαρμόζονται ταυτόχρονα και για τις δύο πλατφόρμες.