Redface 2
Le futur client Android pour Hardware.fr.
Voir les spécifications Voir les guides Voir sur GitHub
Pourquoi une réécriture ?
Redface v1 a rendu service à la communauté HFR pendant des années. Mais sa stack technique a atteint ses limites :
| Redface v1 | Redface 2 | |
|---|---|---|
| Langage | Java 11 | Kotlin |
| UI | XML + ButterKnife | Jetpack Compose |
| Réseau | Retrofit 1.9 (!), OkHttp 3 | OkHttp 5 |
| Async | RxJava 1 | Coroutines + Flow |
| Injection | Dagger 2 | Hilt (KSP) |
| Event bus | Otto | StateFlow |
| minSdk | 16 (Android 4.1, 2012) | 29 (Android 10, 2019) |
Retrofit 1.9 n’est plus maintenu depuis 2016. RxJava 1 depuis 2018. ButterKnife est officiellement déprécié. Le minSdk 16 empêche d’utiliser les APIs modernes.
Un refactoring incrémental serait plus coûteux qu’une réécriture. Chaque brique dépend des autres — migrer Retrofit demande de migrer RxJava, qui demande de migrer les patterns async, qui touche toute l’architecture.
Vision
Redface 2 est conçu pour :
- La vitesse — Scroll fluide à 120fps, prefetch intelligent, cache agressif. L’objectif : que le forum semble local.
- Les extensions communautaires — Les meilleurs ajouts des userscripts HFR (alertes qualitay, bookmarks, blacklist, redflag…) intégrés nativement.
- La maintenabilité — Architecture modulaire, testable, où chaque feature est isolée. Facile à comprendre pour un nouveau contributeur.
- L’ouverture — Système d’extensions pour que la communauté ajoute ses propres features sans toucher au cœur de l’app.
Vue d’ensemble
graph TB
subgraph "Presentation"
A[Jetpack Compose] --> B[MVI ViewModels]
end
subgraph "Domaine"
B --> C["Repositories (interfaces)"]
end
subgraph "Données"
D["Repository implémentations"]
D --> E[OkHttp 5 + Jsoup]
D --> G[Room Cache]
end
C -.->|implémente| D
E --> F["forum.hardware.fr"]
style A fill:#e74c3c,color:#fff
style B fill:#e67e22,color:#fff
style C fill:#f1c40f,color:#000
style D fill:#16a085,color:#fff
style E fill:#2ecc71,color:#fff
style G fill:#3498db,color:#fff
style F fill:#95a5a6,color:#fff
État du projet
Phase courante : Phase 4 — Extensions + refonte UI (roadmap). Phases 1 (lecture), 2 (écriture) et 3 (messages) sont livrées : login, drapeaux, forum, topics, cache, deep links, recherche, écriture/édition/citation/création, MPs classiques et MultiMPs (lecture, reply, quote, onglet DT), MPStorage lecture et écriture (opt-in). La bêta 0.16.0 (clôture Phase 3) est publiée (Play open testing + F-Droid) ; seule la sync MPStorage bidirectionnelle complète reste reportée (#6). En cours : refonte UI Drapeaux (#603) / Topic (#604).
Les specs restent la source de vérité du projet, mais elles doivent désormais refléter le code réel : tout écart entre une page canonique et le repo est traité comme un bug de spec, pas comme une dette future. Voir /spec-reality pour la procédure d’audit cross-fichier.
Les contributions sont les bienvenues : ouvrez une issue, commentez les existantes ou proposez une PR sur le slice courant.
Sommaire
Spécifications
- Méthodologie — Comment le projet spécifie, prototype et teste
- Scope fonctionnel — Ce que l’app doit permettre de faire
- Stack technique — Pourquoi chaque techno a été choisie
- Architecture — Couches, modules, data flow
- Navigation — Écrans, flows, deep linking
- Modèles de données — Structures du domaine
- Pattern MVI — Architecture UI en détail
- Protocole HFR — Contrats externes, endpoints et edge cases
- Roadmap — Phases de développement
- Extensions communautaires — Les addons userscript qui deviennent natifs
- ADRs — Les décisions structurantes déjà prises
Guides
- Contribuer — Comment participer
- Pourquoi Redface 2 ? — Le contexte et les doutes assumés
- Nommage — Le futur nom de l’app
- Références écosystème HFR — Clients tiers, docs MesDiscussions, outillage compagnon
- Proxy utilisateur — Router le trafic HFR via un proxy configurable dans l’app