ADR-001 — Découpage Gradle v1 : 15 modules avant les extensions

Statut

Accepté — 2026-04-19

Contexte

Le projet doit rester lisible pour des contributeurs humains et des agents LLM, tout en évitant qu’une séparation purement conventionnelle dérive avec le temps.

Un monolithe unique :app simplifie le bootstrap, mais ne protège pas les frontières. À l’inverse, un découpage trop fin dès le jour 1 crée une complexité de structure avant même que le noyau soit validé.

Décision

La v1 de Redface 2 adopte un découpage en 15 modules pour les Phases 0 à 3 :

  • 8 modules core
    • :core:model
    • :core:domain
    • :core:data
    • :core:network
    • :core:parser
    • :core:database
    • :core:ui
    • :core:extension
  • 7 modules feature de base
    • :feature:forum
    • :feature:topic
    • :feature:editor
    • :feature:messages
    • :feature:auth
    • :feature:search
    • :feature:settings

Les 8 modules d’extensions communautaires arrivent en Phase 4, pas avant.

Conséquences

  • les frontières d’architecture sont enforcées à la compilation, pas seulement par convention
  • :feature:* ne dépendent pas directement de la couche data
  • l’onboarding et la documentation doivent refléter ce découpage exact
  • la complexité des extensions est repoussée après validation du noyau lecteur/forum

Alternatives considérées

  • Single-module Gradle : bootstrap plus simple, mais frontières trop faibles
  • Très peu de modules larges : compromis possible, mais moins bon pour l’isolation des responsabilités
  • Inclure les extensions dès la v1 : trop tôt ; risque d’over-engineering avant validation du noyau

Haut de page

Redface 2 — Specs v0.5.1 — Un projet communautaire pour Hardware.fr

This site uses Just the Docs, a documentation theme for Jekyll.