diff --git a/dev.md b/dev.md index 645915a6..45015d78 100644 --- a/dev.md +++ b/dev.md @@ -24,6 +24,46 @@ If you're looking for stuff to implement or fix, the bug-tracker is - You can also work on the other projects on which YunoHost is built (SSOwat, moulinette) in similar ways +### Overview of the 4 main pieces of YunoHost + +#### Moulinette + +It is a small "homemade" framework. [Its major role](https://moulinette.readthedocs.io/en/latest/actionsmap.html) +is to allow us to build both a web API and a command-line API from the same +Python code thanks to a YAML schema which we call +[the actionmap](https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml). + +It handles other mechanisms like authentication, internationalization and +small technical utilitary functions (e.g. reading/writing json). + +Moulinette has its own documentation available [here](https://moulinette.readthedocs.io/en/latest/). + +#### Yunohost + +This piece is the very core of YunoHost. It contains: +- [the python code](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) that manages users, domains, apps, services and other things +- [bash helpers](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/helpers.d) mainly used by application packagers to package applications +- [hooks](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/hooks) and [templates](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/templates) that are used to configure the various pieces of the ecosystem such as nginx, postfix, ... +- [internationalized strings](https://github.com/YunoHost/yunohost/tree/stretch-unstable/locales) +- [tests](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost/tests) + +#### SSOwat + +This is the single sign-on system of YunoHost. It both contains: +- [Lua scripts](https://github.com/YunoHost/ssowat) that are directly interfaced with nginx and handle all the "technical" aspects of authentication and route accesses +- the web [user portal](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) which is the interface used by YunoHost's end users to log in and browse installed apps + +SSOwat is configured through `/etc/ssowat/conf.json` which is generated by YunoHost. + +#### Yunohost-admin + +It is an *optional* dependency of YunoHost and corresponds to an interface for the web API created by YunoHost and Moulinette (c.f. the `yunohost-api` service). + +It essentially contains: +- [view templates](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/views) +- corresponding [javascript controllers](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) that interact with the Yunohost API +- and [internationalized strings](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales) + ### Working on the YunoHost Python/CLI core - Work in `/ynh-dev/yunohost/`. @@ -93,8 +133,8 @@ If you're looking for stuff to implement or fix, the bug-tracker is ##### Don't forget -- Each time you edit the actionsmap, you should restart the yunohost-api : - ```service yunohost-api restart``` +- Each time you edit the actionsmap or the python code, you should restart the yunohost-api : + ```systemctl restart yunohost-api``` (You'll need to retype your admin password in the web interface) - You might need to force-clear the cache of your browser sometimes to refresh diff --git a/dev_fr.md b/dev_fr.md index d161888c..49a3f883 100644 --- a/dev_fr.md +++ b/dev_fr.md @@ -26,6 +26,45 @@ bug tracker est [ici](https://github.com/yunohost/issues/issues) ! - Vous pouvez aussi travailler sur les autres projets liés sur lesquels s'appuie YunoHost (SSOwat, moulinette) de façon similaire. +### Vue d'ensemble des 4 morceaux principaux de YunoHost + +##### Moulinette + +C'est un petit framework "fait maison". [Son rôle principal](https://moulinette.readthedocs.io/en/latest/actionsmap.html) +est de permettre de construire une API Web et une API en ligne de commande à partir d'un même code Python et d'un schéma YAML que nous appelons +[l'actionmap] (https://github.com/YunoHost/yunohost/blob/stretch-unstable/data/actionsmap/yunohost.yml). + +Il prend en charge d'autres mécanismes tels que l'authentification, l'internationalisation +et des petites fonctions utilitaires techniques (par ex. lecture/écriture de fichiers json). + +Moulinette dispose de sa propre documentation [ici](https://moulinette.readthedocs.io/en/latest/). + +##### Yunohost + +C'est le coeur même de YunoHost. Il contient : +- [le code python](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost) qui gère les utilisateurs, domaines, applications, services et autres +- des [helpers bash](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/helpers.d) principalement utilisés par les packageurs d'applications dans les scripts de ces applications +- des [hooks](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/hooks) et [templates](https://github.com/YunoHost/yunohost/tree/stretch-unstable/data/templates) qui sont utilisés pour configurer les différents éléments de l'écosystème tels que nginx, postfix, .... +- des [chaînes internationalisées](https://github.com/YunoHost/yunohost/tree/stretch-unstable/locales) +- des [tests](https://github.com/YunoHost/yunohost/tree/stretch-unstable/src/yunohost/tests) + +##### SSOwat + +C'est le système de connexion unique (single sign-on) de YunoHost. Il contient principalement: +- [du code LUA](https://github.com/YunoHost/ssowat) interfacé directement avec nginx et qui gère tous les aspects "techniques" de l'authentification et de la gestion des accès aux ressources. +- le [portail web utilisateur](https://github.com/YunoHost/SSOwat/tree/stretch-unstable/portal) qui est l'interface finale visible pour les utilisateurs de YunoHost + +SSOwat est configuré via `/etc/ssowat/conf.json` qui est généré par YunoHost. + +##### Yunohost-admin + +C'est une dépendance *optionnelle* de YunoHost et correspond à une interface pour l'API web créée par YunoHost et Moulinette (service `yunohost-api`). + +Il contient essentiellement : +- [des templates pour les vues](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/views) +- les [contrôleurs javascript](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/js/yunohost/controllers) correspondants, qui interagissent avec l'API Yunohost +- et es [chaînes internationalisées](https://github.com/YunoHost/yunohost-admin/tree/stretch-unstable/src/locales) + ### Travailler sur le cœur Python / ligne de commande - Allez dans `/ynh-dev/yunohost/`. diff --git a/package_list_fr.md b/package_list_fr.md deleted file mode 100644 index 4c8d53ce..00000000 --- a/package_list_fr.md +++ /dev/null @@ -1,41 +0,0 @@ -# Fonctionnement de YunoHost - -### Les branches de développement de YunoHost -Afin de mettre en place un système automatisé de compilation des paquets Debian, le développement de YunoHost progresse désormais autour de trois branches principales : -- **stable** : il s’agit du code des paquets Debian utilisés en live par les utilisateurs de YunoHost. -- **testing** : il s’agit du code éligible pour la création d’une nouvelle version de YunoHost, il est supposé stable mais manque de test. La branche testing peut notamment servir pour corriger rapidement certains bugs. -- **unstable** : il s’agit là des derniers codes ajoutés au dépôt mais qui sont connus pour être instables voir inachevés. C’est à destination de cette branche que vous devez faire vos pull request. Si votre travail est conséquent mais inachevé, il convient d’envisager de créer une branche à part, thématique (exemple : backup). - -Les numéros de version des paquets stable sont pairs, les numéros de version des paquets testing sont impairs. Ainsi, la version 2.3 de YunoHost est une version de test qui sera transformée en version 2.4 si les tests sont concluants. - -### Paquets YunoHost -Avant d’aller plus loin, il convient de rappeler le rôle des différents paquets YunoHost. - -#### Paquet moulinette -La moulinette est un framework qui permet de créer une API web ainsi qu’une API en ligne de commande à partir d’un même code Python et d’un schéma en yaml. - -La ligne de commande `yunohost` est écrite avec ce framework, La moulinette est donc une dépendance de YunoHost. - -La moulinette est un code écrit par les développeurs YunoHost. À l’origine, la moulinette était fusionnée avec le code YunoHost, mais il a été décidé de scinder les deux afin de permettre l’utilisation de la moulinette pour d’autres projets. - -#### Paquet yunohost -Le paquet yunohost est le cœur de YunoHost, ce paquet contient depuis la version 2.3 (testing) le code du programme en ligne de commande `yunohost`. Il contient également des helpers qui peuvent être utilisées par les scripts des apps YunoHost, ainsi que les templates de configuration des dépendances de YunoHost. - -Note : à partir de la version 2.3 (testing), le code de la ligne de commande `yunohost` initialement dans le paquet moulinette-yunohost a été rapatrié dans le paquet yunohost. Un système 2.2 contient donc deux paquets au lieu d’un seul : yunohost et moulinette-yunohost. - -#### Paquet SSOwat -SSOwat est un système de Single Sign On pour Nginx écrit en Lua. C’est ce système qui génère l’interface que les utilisateurs YunoHost voient. Il permet de protéger des URLs et d’autoriser des utilisateurs à accéder ou non à ces ressources. - -SSOwat est comme la moulinette une dépendance de YunoHost, mais peut aussi être utilisée séparément sur d’autres projets. - -#### Paquet yunohost-admin (optionnel) -Ce paquet contient l’interface d’administration web de YunoHost, obligatoire dans la version 2.2, il est optionnel depuis la version 2.3 (testing). - -L’interface d’administration n’est en réalité qu’un client qui se connecte à l’API web généré par la moulinette et le paquet yunohost. - -Le service yunohost-api doit donc être start pour utiliser l’administration web. - -### Conseils de développement -#### Traduction -Afin d’éviter des problèmes de fusion, lorsque vous ajoutez ou modifiez une clé de traduction dans les fichiers json situés dans les répertoires locales des dépôts git, il est demandé d’ajouter les clés uniquement dans le fichier en.json, même si vous savez faire la traduction pour d’autres langues. -Les traductions se font ensuite sur weblate. Donc si effectivement vous savez traduire dans une autre langue, n’hésitez pas à y faire un tour.