# Environnement de développement ## État des lieux ### Pile logicielle Une base de code pour les modèles hydrologiques construite autour de: - Fortran pour le coeur de calcul. - R pour l'interface utilisateur (visualisation, interactivité). Le couple Fortran/R est une possibilité tout à fait valide. R est très utilisé dans le monde scientifique. Fortran est un langage très ancien mais reste la base de nombreux codes de calcul, et connaît même un regain d'intérêt avec des projets tels que LFortran. Difficile de s'en écarter car les permanents maîtrisent principalement ces deux langages. En même temps, les stagiaires, thèsards et CDD amènent parfois d'autres compétences: Python, Rust, C++... On peut souligner aussi le travail de Thibault Hallouin sur l'évaluation des modèles, basée sur une librairie de calcul scientifique C++ (xtensor). Même s'il est utile d'avoir un environnement de travail stable, avec un choix de technologies restreints, il est aussi intéressant d'exploiter les forces d'autres langages ou écosystèmes. Par exemple, de nouvelles possibilités s'ouvrent autour du navigateur, en tant que plateforme permettant de faire tourner des applications partout et sans rien installer (Web app). Aujourd'hui, c'est possible en utilisant la stack C++/Python/JupyterLab. Il semble que l'utilisation d'autres langages se fait dans un environnement complètement séparé, déconnecté de la pile "officielle" Fortran/R. Pourtant, on pourrait imaginer plus d'interopérabilité, par exemple: - Fortran/Python - C++/R - C++/Python ### Distribution Le dépôt GitLab d'airGR contient le code source Fortran des modèles: https://gitlab.irstea.fr/HYCAR-Hydro/airgr/-/tree/dev/src Le code Fortran est compilé lors de l'installation d'airGR: - Cela suppose d'avoir un compilateur (suffisamment moderne) sur la machine host. - Si c'est la source officielle des modèles, les modèles sont indissociables de R? - Sinon, cela suppose de synchroniser le code source Fortran distribué dans airGR avec la source officielle des modèles? ### Piste d'évolution Afin de faciliter l'installation, il faudrait pré-compiler le code Fortran pour différentes architectures de CPU (Intel, ARM) et différents systèmes d'exploitation (Linux, macOS, Windows), et distribuer ces paquets binaires, plutôt que le code source à compiler. Cela permettrait aussi l'interropérabilité entre Python et R, puisqu'ils dépendront des mêmes paquets Fortran, qu'ils n'auront pas à redistribuer. [Conda-forge](https://conda-forge.org) rendrait cela possible. En plus des plateformes classiques Windows/macOS/Linux, une nouvelle plateforme WASM permet de compiler pour le navigateur. La même infrastructure peut donc servir à distribuer une application "native" ou sue le Web. Un exemple a été démontré [ici](https://davidbrochart.github.io/jupyterlite-hydro) (en utilisant la stack C++/Python/JupyterLab).