Vocabulaire : opt-in, package, module¶
Ce glossaire fixe le vocabulaire canonique de Forge pour tout ce qui touche aux capacités optionnelles.
Il applique ADR-016 (D1) et le principe §11 de la charte (« une seule façon officielle de faire chaque chose »).
Trois mots, trois référents distincts, zéro recouvrement :
| Terme | Référent | Tu le… |
|---|---|---|
| opt-in | une brique optionnelle officielle | actives / désactives |
| package | le véhicule de distribution PyPI d'un opt-in officiel | (détail interne) |
| module | une unité applicative que tu écris localement (modules/) |
crées / installes localement |
opt-in¶
Le concept central.
Un opt-in est une capacité optionnelle, séparée du noyau minimal (principe §8).
Forge en distribue six officiels : forge-mvc-mfa, forge-mvc-rbac, forge-mvc-workflow, forge-mvc-stats, forge-mvc-images, forge-mvc-iot.
Un opt-in a une source :
- officielle, livré comme package PyPI ;
- locale, un module que tu écris dans ton projet.
Son cycle de vie suit deux axes orthogonaux (quatre verbes) :
install enable
absent ───────────────▶ installé ───────────────▶ activé
◀─────────────── ◀───────────────
remove disable
install/remove→ présence (le code est-il sur la machine ?)
;enable/disable→ activation (est-il branché dans l'app ?).
Deux garanties par construction : install n'active jamais tout seul (§3, « refuser la magie cachée »)
; disable ne désinstalle jamais.
Un opt-in activé vit sous optins/<name>/, quelle que soit sa source.
package¶
Le simple véhicule de distribution : un opt-in officiel est livré comme un package PyPI sous le namespace forge-mvc-*, et expose son API depuis le namespace Python forge_mvc_*.
Terme purement technique, on n'« installe pas un package », on active un opt-in (qui se trouve livré comme package).
module¶
Réservé au système local (modules/, manifeste module.json) : une unité applicative que le développeur écrit lui-même dans son projet, par opposition à une brique officielle qu'il consomme.
Dans le modèle ADR-016, un module local est un opt-in de source locale.
Il garde toutefois ses commandes propres, forge module:install / module:files / module:routes / module:remove, et non la famille opt-in:* (ADR-016, amendement A2) : son cycle de vie d'auteur (déclarer → copier → générer des routes à coller) diffère de celui d'un opt-in officiel qu'on consomme (install affiche / enable câble / disable débranche).
La famille opt-in:* ne gère que les opt-ins officiels du catalogue ; sur un nom inconnu, elle oriente vers forge module:install.
Le mot « module »
ne désigne plus les briques officielles (on dit « opt-in »).
Il reste aussi, hors de ce périmètre, son sens Python habituel (un fichier .py importable).
En une phrase¶
Un opt-in est une capacité optionnelle qu'on active/désactive ; il est livré comme un package (s'il est officiel) ou écrit comme un module local (s'il est à toi).