Aller au contenu

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 / removeprésence (le code est-il sur la machine ?) ;
  • enable / disableactivation (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 propresforge 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).