# Configuration d'un environnement de développement

Quelques indications pour développer avec ScoDoc, à adapter à vos goûts et outils.

Commencez par lire
[Installation du code pour les développeurs](https://scodoc.org/git/ScoDoc/ScoDoc#pour-les-d%C3%A9veloppeurs)

# Machine virtuelle

Il est confortable de développer dans une VM (un container Docker ferait
aussi bien l'affaire).

## Conseils pour la machine virtuelle

[VirtualBox](https://www.virtualbox.org/) est facile à installer sur Linux ou
Windows. Créer une VM avec Debian 10, et suivre la [procédure habituelle
d'installation de ScoDoc](GuideInstallDebian11.md).

Sur les Macs anciens (processeurs Intel), VirtualBox fonctionne bien. Sur les
modèles "M1" (Apple Silicon), je conseille d'utiliser
[UTM](https://mac.getutm.app/) qui est facile à installer et très performant. On
installe alors une VM avec la distribution Linux Debian pour l'architecture
`arm64` (nous ne produisons pas de paquets Debian `arm64` pour ScoDoc 9, mais
l'installation est simple, ne pas hésiter à demander sur le Discord).

En général, vous préférez développer sur la machine hôte pour disposer de votre
éditeur préféré, mais exécutez ScoDoc dans la VM.

### Éditeur de texte / IDE

Si vous êtes expérimenté, vous avez vos outils préférés. Mais si vous débutez,
surtout pour un environnement de développement distant (le code développé tourne
dans une machine virtuelle ou réelle séparée de votre machine de bureau), nous
vous conseillons **VS Code** avec le module
[*Remote-SSH*](https://code.visualstudio.com/docs/remote/ssh). Ceci vous évite
de fastidieuses configurations de partage de fichiers entre les machines, il
suffit d'une connexion SSH fonctionnelle.

### Configuration réseau de VirtualBox

La VM a besoin d'accéder à Internet pour l'installation, et aussi pour les mises
à jour et peut-être certains tests que vous voudrez lancer. L'accès à la VM
depuis l'hôte doit être possible via un réseau privé interne (car vous ne serez
pas toujours connecté à Internet, et ne souhaitez pas que l'on accède à votre
serveur de test de l'extérieur).

Modifier la config réseau via l'UI graphique de VirtualBox, la VM étant éteinte.

- `Adapter 1` : accès à la VM depuis l'hôte: réseau privé hôte `vboxnet0`

- `Adapter 2` : accès à Internet depuis la VM, configurer un interface réseau NAT.

Dans le Debian, j'utilise `/etc/network/interfaces`

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface
    allow-hotplug enp0s3
    iface enp0s3 inet dhcp

(le `enp0s3` désigne chez moi l'`Adapter 1`, mais c'est susceptible de changer.
Normalement, l'installateur a créé ce fichier )

Pour lancer l'interface externe , quand on a besoin d'accéder à Internet depuis
la VM:

    dhclient enp0s8

ici `enp0s8` correspond à l'`Adapter 2`. Si vous travaillez sur une machine fixe
avec connexion permanente, vous pouvez dans Debian activer cette interface
constamment (modifier `/etc/network/interfaces`). 

### Noms des machines
Modifier le `/etc/hosts` (ou équivalent) de l'hôte, et y ajouter l'IP de votre
VM, par exemple (adapter l'IP !):

    192.168.12.10 scodoc scodoc.dev.net

### Partage de fichiers

Pour éditer votre code au chaud sur votre hôte, il y a plein de solutions. 
La plus simple, déjà mentionnée, consiste à passer par une connexion SSH (VS
Code propose un module dédié très simple et performant, mais tout montage de
type `sshfs`peut aussi faire l'affaire).
