Contexte du projet

Le dépôt StreetComplete a ouvert une bêta publique iOS afin de tester la portabilité de son application Android vers les appareils Apple. Le ticket #5421 sert de point de coordination et remplace le précédent #1892, qui contenait déjà les premières recherches. Un tableau de bord de projet (Project Board) recense les tâches, et une présentation de la conférence SotM Europe 2024 est mise à disposition pour les contributeurs.

Architecture technique

L’ensemble du code de l’application est écrit en Kotlin, un langage moderne comparable à Swift. Kotlin peut être transpilé en JavaScript ou en code natif, ce qui permet d’utiliser les bibliothèques Kotlin multiplateformes déjà intégrées. La stratégie retenue repose sur Kotlin Multiplatform pour partager la logique métier, et sur Compose Multiplatform pour l’interface utilisateur.

Compose Multiplatform est actuellement en alpha (qualifié de *beta* pour iOS) et constitue une extension de Jetpack Compose. Ce framework réactif définit l’UI entièrement en code, à l’image de SwiftUI ou Flutter. La migration implique de recréer l’interface iOS dans Compose, tout en conservant le même API que Jetpack Compose.

Processus de migration

Le plan de migration se décline en trois étapes principales :

1. Séparer le code spécifique à chaque plateforme du reste de la logique applicative, en remplaçant les dépendances Android/Java par des dépendances Kotlin multiplateformes.

2. Transposer les écrans Android XML vers Jetpack Compose, en suivant la stratégie de migration « bottom‑up » décrite par Android. Cette phase peut être réalisée incrémentalement, chaque composant étant migré indépendamment.

3. Adapter le code Jetpack Compose vers Compose Multiplatform, ce qui représente un petit pas supplémentaire grâce à la compatibilité des API.

Chaque étape est détaillée dans le tableau Kanban du projet, où les tickets sont marqués comme « prêt à être repris » pour les contributeurs. Le texte indique que le port complet nécessiterait approximativement un an‑homme de travail, soulignant la dépendance à la communauté open‑source.

Implications et limites

Le choix de Kotlin Multiplatform minimise le code propriétaire à maintenir : la logique métier reste unique, tandis que seules les couches UI diffèrent. Comparé à une solution Flutter, qui obligerait une réécriture complète en Dart, l’approche actuelle conserve la majorité du code Kotlin existant.

Cependant, la version alpha/bêta de Compose Multiplatform introduit des incertitudes : des API peuvent évoluer, et la stabilité sur iOS n’est pas encore garantie. De plus, la migration de l’UI nécessite la réécriture de chaque écran, ce qui peut ralentir le calendrier malgré la réduction du code partagé.

En résumé, la bêta publique iOS de StreetComplete démontre la faisabilité d’une application 100 % Kotlin sur plusieurs plateformes, tout en exposant les défis liés à l’état précoce de Compose Multiplatform et à l’effort de migration UI.