Η αρχιτεκτονική προσέγγιση της μεταφοράς
Η ομάδα του 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. Η διαδικασία ακολουθεί τρία στάδια:
- Διαχωρισμός της λογικής πρόσβασης δεδομένων από το UI.
- Μετατροπή των υπαρχόντων Android XML layouts σε Jetpack Compose.
- Τελική μετάβαση στο Compose Multiplatform για την υποστήριξη του iOS.
Κατάσταση του project και κοινότητα
Η μετανάστευση βρίσκεται περίπου στο 50% της ολοκλήρωσής της. Η ομάδα ακολουθεί μια ανοιχτή διαδικασία ανάπτυξης μέσω ενός Kanban-style project board, ενθαρρύνοντας τη συνεισφορά της κοινότητας. Η επιλογή αυτής της αρχιτεκτονικής διασφαλίζει ότι η μελλοντική συντήρηση της εφαρμογής δεν θα αυξηθεί δυσανάλογα, καθώς οι αλλαγές στον κώδικα θα εφαρμόζονται ταυτόχρονα και για τις δύο πλατφόρμες.