Présentation
TiddlyInstall se présente comme un installateur unique, distribué sous la forme d'un fichier HTML d'environ 6 Mo. Ce fichier embarque le code de génération d'installateurs, le catalogue des runtimes et les scripts de signature, le tout sans serveur ni connexion réseau requise, à l'exception du téléchargement du runtime indiqué. Il supporte les trois grands systèmes d'exploitation : Windows (via NSIS), Linux et macOS (via un script POSIX). La compatibilité s'étend du Windows XP aux bibliothèques glibc 2.17 et macOS 10.9, couvrant ainsi la quasi-totalité des environnements de bureau actuels.
Le processus d'installation repose sur trois étapes simples : fournir l'URL d'un dépôt GitHub (branche, tag ou commit), laisser TiddlyInstall cloner le code source, puis choisir le runtime et les dépendances. Le système génère automatiquement un exécutable .exe pour Windows, un script .run pour Linux et une archive .zip pour macOS, chaque artefact étant construit à partir du même programme de base.
Architecture et isolation
Chaque application installée reçoit son propre répertoire dédié, identifié par un hash court (ex. C:\ti\k3m9q2x7v4p8\ sous Windows). Toutes les dépendances, y compris le runtime (ex. Python 3.14.7, Requests 2.32.3), sont copiées dans ce répertoire, éliminant tout partage de bibliothèques entre applications. Cette isolation garantit qu'une mise à jour ou une corruption d'une application n'affecte pas les autres, au prix d'une utilisation accrue de l'espace disque, jugée acceptable du fait du coût marginal du stockage moderne.
Le mécanisme de vérification repose sur des sommes de contrôle intégrées dans l'installateur. Avant toute copie, chaque fichier est comparé à son checksum ; toute divergence entraîne le rejet du fichier. Le catalogue des runtimes inclut les URL de téléchargement (ex. python-3.14.7-amd64.exe depuis python.org, 28,1 Mo) et les tailles correspondantes, assurant la traçabilité des artefacts.
Gestion des dépendances et signatures
install_python_requests.exeLe système gère les dépendances au moment de l'installation en sélectionnant le runtime le plus récent compatible avec la version demandée. Dans l'exemple fourni, l'installateur télécharge Python 3.14.7 puis le package requests 2.32.3 ainsi que ses quatre dépendances, totalisant 1,4 Mo depuis pypi.org. Les dépendances sont résolues via les métadonnées du package, sans intervention manuelle, ce qui réduit les risques d'incohérence de version.
Trois modes de signature sont proposés : (A) signature du programme d'installation par l'auteur de TiddlyInstall (ex. certificat de Matthew Roberts), (B) signature personnalisée par le développeur de l'application, (C) absence de signature, permettant une édition complète du fichier. La signature porte uniquement sur le programme d'installation, pas sur le contenu installé, ce qui simplifie la validation côté client : le lanceur d'installation peut vérifier l'intégrité du binaire avant toute interaction avec l'utilisateur.
Limites et perspectives
Le modèle repose sur la disponibilité d'un dépôt GitHub accessible en lecture et sur la capacité du client à atteindre les miroirs de runtime. Aucun mécanisme de mise à jour incrémentale n'est décrit, ce qui implique que chaque modification du projet nécessite la génération d'un nouvel installateur complet. De plus, la signature ne couvre pas les paquets téléchargés à la volée (ex. dépendances pip), ce qui laisse une surface d'attaque potentielle si le serveur de paquets est compromis.
Malgré ces contraintes, TiddlyInstall offre une approche modulaire et reproductible pour la distribution d'applications multi‑plateformes, en réduisant le nombre de binaires à maintenir (un seul programme de base) et en assurant une isolation stricte des environnements d'exécution. Son architecture sans serveur le rend adapté aux environnements à connectivité limitée, tandis que la prise en charge de signatures multiples ouvre la voie à des chaînes de confiance décentralisées.