ADR-0001 — Choisir Rust + Tauri 2 comme stack native

ADR-0001 — Choisir Rust + Tauri 2 comme stack native

  • Statut : Accepted
  • Date : 2026-05-12
  • Décideurs : Thibault, Cowork
  • Contexte : Sprint S1 (cadrage technique)

Contexte et énoncé du problème

Sobr.ia doit être une application multi-plateforme (Windows, macOS, Linux, web, mobile à terme) qui :

  • mesure et visualise l’impact environnemental de l’IA générative,
  • incarne par sa propre frugalité le sujet qu’elle traite,
  • traite des volumes de données significatifs (référentiel, audit ledger, scénarios macro).

Il faut donc choisir un runtime applicatif qui soit simultanément multi-plateforme, performant, frugal en ressources, et adapté à la livraison d’un binaire signé.

Options envisagées

A — Electron + Node.js + React

  • ✅ Écosystème massif, recrutable, dataviz JS facile.
  • ❌ Binaire 100-150 Mo, RAM 300-500 Mo : antinomique avec le sujet.
  • ❌ Une instance Chromium par app = caricature de gaspillage.
  • ❌ Politique anti-Electron explicite du projet (cohérence frugale).

B — Native (C++ / Qt ou C# / WPF)

  • ✅ Performance maximale.
  • ❌ Cross-platform difficile, courbe d’apprentissage hétérogène.
  • ❌ Pas de cible web facile.
  • ❌ Toolchain plus lourde, moins moderne.

C — Flutter

  • ✅ Cross-platform mobile + desktop + web.
  • ❌ Dart : écosystème data science / scientifique pauvre.
  • ❌ Binaire moins compact que Rust.
  • ❌ Skia rendering — joli mais lourd.

D — Rust + Tauri 2 (retenu)

  • ✅ Binaire 5-15 Mo, RAM 30-80 Mo.
  • ✅ Backend Rust = performance brute + sûreté mémoire.
  • ✅ Tauri 2 supporte desktop + Android + iOS + Wasm.
  • ✅ Webview système (pas de Chromium embarqué).
  • ✅ Cohérence idéologique parfaite avec le pitch frugal.
  • ❌ Courbe d’apprentissage Rust significative.
  • ❌ Webviews varient légèrement entre OS (WebView2, WKWebView, WebKitGTK).
  • ❌ Tauri mobile encore jeune (mais stable en 2.0+).

Décision

Rust + Tauri 2 est retenu. La cohérence sujet/médium et la frugalité priment sur la courbe d’apprentissage, qui est mitigée par l’allocation d’une semaine S0 de revue/montée en compétence.

Conséquences

Positives :

  • Empreinte mémoire et binaire minimales → argument fort dans le dossier.
  • Sécurité mémoire native.
  • Toolchain unique (Cargo) côté backend.
  • Tauri 2 = un seul codebase pour 6 cibles.

Négatives :

  • Cycle de feedback initial plus lent (compilation Rust).
  • Tests des webviews à automatiser par cible (Playwright).
  • Mobile en bonus, pas une garantie absolue.

Neutres :

  • Choix du frontend reste ouvert (ADR-0002).

Liens

  • CDC §7.1, §7.2, NF-01 à NF-04.
  • ADR-0002 (frontend), ADR-0003 (storage).