Roadmap : plan de relance Redface
Issue générée par Claude (Opus 4.6) à la demande de @XaaT, après un audit complet du repo, des branches, des issues et des dépendances. L'objectif est de proposer un plan structuré pour remettre Redface sur les rails.
État des lieux
Ce qui va bien
- L'app fonctionne, est publiée sur le Play Store (v5.1.0)
- CI/CD en place (GitHub Actions, signing automatique)
- Architecture DI propre (Dagger 2)
- Support AndroidX et Material à jour
- Communauté active (issues récentes, utilisateurs qui remontent des bugs)
Ce qui bloque
- 49 issues ouvertes dont ~40 datent de 2016 (beaucoup probablement obsolètes)
- 4 PRs mortes (2019-2021), jamais mergées ni fermées
- Branches divergentes : master et develop ont divergé silencieusement (master a rollback SDK 36, hotfix sans backport)
- Vieilles branches de migration abandonnées (okhttp3, butterknife, dependencies-cleanup — toutes 2016-2019)
- Dette technique critique sur les dépendances cœur (voir ci-dessous)
- minSdk 16 (Android 4.1, 2012) — impose multidex et bloque l'accès aux API modernes
Dette technique — dépendances
| Lib |
Version actuelle |
Dernière stable |
Âge |
Impact |
| Retrofit |
1.9.0 |
2.11+ |
10 ans |
API totalement incompatible, bloque toute évolution réseau |
| OkHttp |
3.14.9 |
4.12+ |
7 ans |
Pas de TLS 1.3, pas de HTTP/2 push, EOL |
| RxJava |
1.3.8 |
3.x |
8 ans |
Déprécié, plus maintenu |
| Glide |
4.9.0 |
4.16+ |
5 ans |
Bugs images probables (#239, #237) |
| Firebase BOM |
28.4.2 |
33+ |
6 ans |
Crashlytics v1 en fin de vie |
| ButterKnife |
10.2.0 |
— |
Déprécié |
ViewBinding le remplace nativement |
| Otto |
1.3.5 |
— |
12 ans |
Square l'a abandonné pour RxJava |
Plan proposé
Phase 0 — Hygiène du repo
Prérequis à tout travail. Pas de code, juste du ménage.
Phase 1 — Quick wins (bugs critiques)
Corriger les bugs qui font fuir les utilisateurs. Maximum de valeur, minimum d'effort.
Phase 2 — Fondations
Moderniser la base pour débloquer le reste. Chaque étape est indépendante et mergeable seule.
2a. Remonter minSdk 16 → 29 (Android 10)
- Voir le commentaire dédié ci-dessous pour la comparaison 29 / 30 / 31
- Supprime multidex, débloque Scoped Storage natif, TLS 1.3 garanti, dark theme système
- Simplifie massivement le code de gestion des permissions et du stockage
2b. OkHttp 3.14 → 4.x
- Migration douce : l'API est quasi-compatible (
okhttp3 reste le même package)
- Débloque TLS 1.3 (requis par de plus en plus de serveurs)
- Meilleur support HTTP/2
- Prérequis pour Retrofit 2 à terme
2c. Glide 4.9 → 4.16
- Corrige potentiellement les 403 images
- Meilleure gestion du cache et de la mémoire
- Support des formats modernes (WebP, AVIF)
2d. Firebase BOM 28 → 33+
- Crashlytics SDK v2 (l'ancien est en dépréciation)
- Meilleure intégration avec les outils Firebase
- Correctifs de sécurité
2e. ButterKnife → ViewBinding
- Migration fichier par fichier, pas de big bang
- ViewBinding est généré par le build system, zéro runtime
- Chaque fichier migré = un commit atomique
Phase 3 — Architecture nouvelle génération
Pour le nouveau code uniquement. L'existant reste en place et migre progressivement.
Phase 4 — Fonctionnalités
Une fois les fondations posées, ces features deviennent beaucoup plus simples.
Phase 5 — Migration long terme
Chantiers de fond, à mener progressivement sur plusieurs mois.
Principes
- Chaque phase est optionnelle et indépendante — On peut s'arrêter à n'importe quelle phase et l'app est dans un meilleur état qu'avant
- Pas de big bang — Chaque changement est un commit/PR atomique, testable, revertable
- Le code existant n'est pas l'ennemi — On ne réécrit pas ce qui marche. On modernise ce qu'on touche.
- Nouveau code = nouvelles pratiques — Kotlin, Coroutines, Compose pour tout ce qu'on écrit from scratch
- L'utilisateur d'abord — Phase 1 (bugs) avant Phase 2 (modernisation). Toujours.
Ressources
- Audit dépendances complet : voir
MEMORY.md sur la branche xat/ai-workspace
- Analyse des branches : même fichier
- Inventaire des issues : 49 ouvertes, triées par date et pertinence
Cette issue a été générée par Claude (Opus 4.6) via Claude Code + MCP, à la demande de @XaaT. Le plan est une proposition — toute discussion, critique ou réorientation est bienvenue.
Roadmap : plan de relance Redface
État des lieux
Ce qui va bien
Ce qui bloque
Dette technique — dépendances
Plan proposé
Phase 0 — Hygiène du repo
161-okhttp3-migration,develop_butterknife_migration,dependencies-cleanup,caching-layer-enhancements,bump_to_5_0_1et les branches d'issues mergéesPhase 1 — Quick wins (bugs critiques)
Phase 2 — Fondations
2a. Remonter minSdk 16 → 29 (Android 10)
2b. OkHttp 3.14 → 4.x
okhttp3reste le même package)2c. Glide 4.9 → 4.16
2d. Firebase BOM 28 → 33+
2e. ButterKnife → ViewBinding
Phase 3 — Architecture nouvelle génération
kotlinx-coroutines-rx1). Les nouveaux écrans utilisent les coroutines, l'existant garde RxJava.Phase 4 — Fonctionnalités
Phase 5 — Migration long terme
ApiServiceV2en parallèle, migrer endpoint par endpoint, supprimer l'ancien quand tout est porté.Principes
Ressources
MEMORY.mdsur la branchexat/ai-workspaceCette issue a été générée par Claude (Opus 4.6) via Claude Code + MCP, à la demande de @XaaT. Le plan est une proposition — toute discussion, critique ou réorientation est bienvenue.