# Annexe : Comment nous avons développé GrimOS

Ce projet a été développé de manière innovante avec l'assistance d'un agent IA de codage nommé Google Antigravity. L'approche consistait à concevoir et générer le système sur une machine locale de développement puissante, puis à déployer, tester et itérer sur un vieil ordinateur via une connexion SSH.

Le principe fondateur de GrimOS est de s'exécuter sur du matériel ancien ou très modeste. Cependant, écrire du code, tester, et utiliser des outils modernes (comme des assistants IA ou de gros IDE) nécessite de la puissance. Alors comment développer confortablement pour GrimOS ?

La solution est de séparer l'environnement d'exécution de l'environnement de développement.

> Le flux de développement idéal : on code sur un ordinateur moderne (à gauche) et on envoie instantanément le résultat sur la machine cible (à droite).

## 1. La philosophie du développement à distance

Plutôt que de brancher un clavier et un écran sur le vieil ordinateur (la "machine cible") et de s'épuiser sur un petit éditeur de texte lent, on utilise un ordinateur moderne (la "machine de développement").

Cela offre des avantages considérables :

- Vous pouvez utiliser votre éditeur de code favori (VSCode, PyCharm, etc.).
- Vous pouvez vous faire assister par des intelligences artificielles.
- Le vieil ordinateur est laissé 100% libre pour faire tourner GrimOS sans être ralenti par l'environnement de programmation.

## 2. Préparation des machines

### A. Sur la machine cible (L'antique ordinateur)

Sur cette machine, l'installation doit être la plus pure possible.

1. Système de base : Installez une version de Debian sans aucun environnement de bureau (désélectionnez GNOME/XFCE à l'installation).
2. Outils requis : Une fois installé, vous aurez besoin d'un serveur d'affichage (X11), de Python, et surtout d'un serveur SSH pour accepter les connexions à distance :

> 💻 Terminal :

    sudo apt-get update
    sudo apt-get install xorg python3 python3-tk openssh-server

### B. Sur la machine de développement (L'ordinateur moderne)

Sur votre ordinateur habituel (Windows, macOS, ou un Linux moderne), vous n'avez besoin que de deux choses :

1. Votre éditeur de code.
2. Un client SSH (inclus nativement dans le terminal de tous les systèmes modernes).

## 3. Sécuriser et faciliter la connexion (Clé SSH)

Pour éviter de devoir taper le mot de passe de la machine cible à chaque fois que vous y envoyez du code, nous allons créer une "clé numérique" (une clé SSH).

Étape 1 : Générer la clé sur l'ordinateur moderne Ouvrez votre terminal et tapez :

> 💻 Terminal :

    ssh-keygen -t ed25519 -C "mon_ordinateur_dev"

Appuyez sur `Entrée` à toutes les questions pour accepter les choix par défaut.

Étape 2 : Transférer la clé sur la machine cible Nous allons dire à l'antique ordinateur de faire confiance à cette clé. Remplacez `utilisateur` par votre nom d'utilisateur sur Debian, et `192.168.1.xxx` par l'adresse IP locale de la machine cible :

> 💻 Terminal :

    ssh-copy-id utilisateur@192.168.1.xxx

(Il vous demandera le mot de passe une toute dernière fois pour enregistrer la clé).

Désormais, votre ordinateur moderne a un accès administrateur direct et transparent à la machine cible !

## 4. Le Flux de travail quotidien (Workflow)

Une fois les ordinateurs reliés, voici comment se déroule la création d'une application pour GrimOS.

### 1. Coder (En local)

Vous ouvrez le dossier source de GrimOS sur votre ordinateur moderne. Vous y ajoutez un fichier, par exemple `apps/mon_app/app.py`.

### 2. Transférer (SCP)

Dès que vous sauvegardez votre code, vous pouvez envoyer l'intégralité du dossier `grimos/` vers la machine cible grâce à la commande de copie sécurisée (`scp`) :

> 💻 Terminal :

    scp -r ./grimos_build/* utilisateur@192.168.1.xxx:/home/utilisateur/grimos/

Grâce à la clé SSH configurée plus tôt, le transfert est instantané et invisible.

### 3. Exécuter et Déboguer (SSH)

Pour tester votre code, pas besoin de changer de clavier ! Depuis le terminal de votre ordinateur moderne, vous lancez la commande d'exécution à distance :

> 💻 Terminal :

    ssh utilisateur@192.168.1.xxx "cd /home/utilisateur/grimos && DISPLAY=:0 python3 main.py"

L'interface graphique de GrimOS s'affichera immédiatement sur l'écran branché au vieil ordinateur, et si votre code contient des erreurs (bugs), les messages d'erreurs s'afficheront directement dans le terminal de votre ordinateur moderne.

C'est ce qui rend le développement de GrimOS si agréable : une boucle de rétroaction instantanée alliée au confort du matériel moderne !