diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dbe7c69..584cb8f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog -## v??? +## v??? (not published yet) + +### Features + +* Brand new documentation, in french and english. (Work in Progress) ### Minor changes and fixes diff --git a/CODE_OF_CONDUCT.fr.md b/CODE_OF_CONDUCT.fr.md new file mode 100644 index 00000000..24c177cc --- /dev/null +++ b/CODE_OF_CONDUCT.fr.md @@ -0,0 +1,130 @@ +# Code de conduite _Contributor Covenant_ + +## Notre engagement + +En tant que membres, contributeur·trice·s et dirigeant·e·s, nous nous +engageons à faire de la participation à notre communauté +une expérience sans harcèlement, quel que soit l'âge, +la taille corporelle, le handicap visible ou invisible, l'appartenance ethnique, +les caractéristiques sexuelles, l'identité et l'expression de genre, +le niveau d'expérience, l'éducation, le statut socio-économique, +la nationalité, l'apparence personnelle, la race, la religion, +ou l'identité et l'orientation sexuelle. + +Nous nous engageons à agir et interagir de manière à contribuer à une communauté +ouverte, accueillante, diversifiée, inclusive et saine. + +## Nos critères + +Exemples de comportements qui contribuent à créer un environnement positif : + +* Faire preuve d'empathie et de bienveillance envers les autres +* Être respectueux des opinions, points de vue et expériences divergents +* Donner et recevoir avec grâce les critiques constructives +* Assumer ses responsabilités et s'excuser auprès des personnes affectées par nos erreurs et apprendre de ces expériences +* Se concentrer sur ce qui est le meilleur non pas uniquement pour nous en tant qu'individu, mais aussi pour l'ensemble de la communauté + +Exemples de comportements inacceptables : + +* L'utilisation de langage ou d'images sexualisés et d'attentions ou d'avances sexuelles de toute nature +* Le _trolling_, les commentaires insultants ou désobligeants et les attaques + personnelles ou d'ordre politique +* Le harcèlement en public ou en privé +* La publication d'informations privées d'autrui, telle qu'une + adresse postale ou une adresse électronique, sans leur autorisation explicite +* Toute autre conduite qui pourrait raisonnablement être considérée comme inappropriée + dans un cadre professionnel + +## Responsabilités d'application + +Les dirigeant·e·s de la communauté sont chargé·e·s de clarifier et de faire respecter nos normes de +comportements acceptables et prendront des mesures correctives appropriées et équitables en +réponse à tout comportement qu'ils ou elles jugent inapproprié, menaçant, offensant ou nuisible. + +Les dirigeant·e·s de la communauté ont le droit et la responsabilité de supprimer, modifier ou rejeter +les commentaires, les contributions, le code, les modifications de wikis, les rapports d'incidents ou de bogues et autres contributions qui +ne sont pas alignés sur ce code de conduite, et communiqueront les raisons des décisions de modération +le cas échéant. + +## Portée d'application + +Ce code de conduite s'applique à la fois au sein des espaces du projet ainsi que +dans les espaces publics lorsqu'un individu représente officiellement le projet ou sa +communauté. Font parties des exemples de représentation d'un projet ou d'une +communauté l'utilisation d'une adresse électronique officielle, la publication sur +les réseaux sociaux à l'aide d'un compte officiel ou le fait d'agir en tant que représentant·e désigné·e +lors d'un événement en ligne ou hors-ligne. + +## Application + +Les cas de comportements abusifs, harcelants ou tout autre comportement +inacceptables peuvent être signalés aux dirigeant·e·s de la communauté responsables de l'application du code de conduite à git.[at].john-livingston.fr. +Toutes les plaintes seront examinées et feront l'objet d'une enquête rapide et équitable. + +Tou·te·s les dirigeant·e·s de la communauté sont tenu·e·s de respecter la vie privée et la sécurité des +personnes ayant signalé un incident. + +## Directives d'application + +Les dirigeant·e·s de communauté suivront ces directives d'application sur l'impact communautaire afin de déterminer +les conséquences de toute action qu'ils jugent contraire au présent code de conduite : + +### 1. Correction + +**Impact communautaire** : utilisation d'un langage inapproprié ou tout autre comportement jugé +non professionnel ou indésirable dans la communauté. + +**Conséquence** : un avertissement écrit et privé de la part des dirigeant·e·s de la communauté, clarifiant +la nature du non-respect et expliquant pourquoi +le comportement était inapproprié. Des excuses publiques peuvent être demandées. + +### 2. Avertissement + +**Impact communautaire** : un non-respect par un seul incident ou une série d'actions. + +**Conséquence** : un avertissement avec des conséquences dû à la poursuite du comportement. +Aucune interaction avec les personnes concernées, y compris l'interaction non sollicitée avec +celles et ceux qui sont chargé·e·s de l'application de ce code de conduite, pendant une période déterminée. +Cela comprend le fait d'éviter les interactions dans les espaces communautaires ainsi que sur les canaux externes +comme les médias sociaux. Le non-respect de ces conditions peut entraîner +un bannissement temporaire ou permanent. + +### 3. Bannissement temporaire + +**Impact communautaire** : un non-respect grave des normes communautaires, notamment +un comportement inapproprié soutenu. + +**Conséquence** : un bannissement temporaire de toutes formes d'interactions ou de +communications avec la communauté pendant une période déterminée. Aucune interaction publique ou +privée avec les personnes concernées, y compris les interactions non sollicitées +avec celles et ceux qui appliquent ce code de conduite, n'est autorisée pendant cette période. +Le non-respect de ces conditions peut entraîner un bannissement permanent. + +### 4. Bannissement permanent + +**Impact communautaire** : démontrer un schéma récurrent de non-respect des normes de la +communauté y compris un comportement inapproprié soutenu, le harcèlement d'un individu +ainsi que l'agression ou le dénigrement de catégories d'individus. + +**Conséquence** : un bannissement permanent de toutes formes d'interactions publiques au sein de +la communauté. + +## Attributions + +Ce code de conduite est adapté du +[Contributor Covenant](https://www.contributor-covenant.org), version 2.0, +disponible à +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. + +Les Directives d'application ont été inspirées par le +[Code of conduct enforcement ladder][Mozilla CoC] de Mozilla. + +Pour obtenir des réponses aux questions courantes sur ce code de conduite, consultez la FAQ à +[https://www.contributor-covenant.org/faq][FAQ]. Les traductions sont disponibles +sur [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.fr.md b/CONTRIBUTING.fr.md new file mode 100644 index 00000000..42fc5d87 --- /dev/null +++ b/CONTRIBUTING.fr.md @@ -0,0 +1,48 @@ +# Bienvenu sur le guide de contribution pour le plugin peertube-plugin-livechat + +Intéressé⋅e pour contribuer ? Super ! + +## Code de conduite + +Merci de lire le [code de conduite](CODE_OF_CONDUCT.fr.md) (ou la version [anglaise](CODE_OF_CONDUCT.md)). + +## Traduction + +Vous pouvez nous aider à traduire ce plugin Peertube en créant ou modifiant des fichiers de traduction dans le dossier `languages`. + +Merci de travailler sur la branche `develop`, et de faire vos _pull request_ sur cette branche. + +Si la langue dans laquelle vous souhaitez traduire n'existe pas encore, créez un fichier `code.json` dans le dossier `languages`, où `code` est le code langue. +Le code langue doit être dans le même format que les codes langues de Peertube (voir la [documentation Peertube](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). +Ensuite, ajoutez le fichier de langue dans le fichier [package.json](package.json), sous la clé `translations`. + +Les traductions sont sous la forme suivante dans le fichier de langue : + +- les fichiers sont au [format JSON](https://www.json.org) +- les clés JSON sont le texte en anglais (voir les clés existantes dans [le fichier de traduction français](languages/fr.json), qui fait référence) +- la valeur JSON est la traduction +- NB: il n'y a pas de fichier de traduction pour l'anglais (c'est la façon de fonctionner de Peertube) + +## Donnez vos retours + +Vous n'avez pas besoin de coder pour commencer à contribuer à ce plugin ! +Les autres formes de contributions sont également précieuses, parmis lesquelles : vous pouvez tester le plugin et remonter les bugs que vous rencontrez, partager vos retours d'expérience, proposer des fonctionnalités qui vous intéressent, remonter vos remarques sur l'interface, le design, etc. + +## Développer et proposer des modifications de code + +Toujours annoncer les fonctionnalités sur lesquelles vous voulez travailler en créant un ticket ou en commentant un ticket existant, avant de commencer à travailler dessus. Et annoncez clairement à la communauté que vous commencez à travailler dessus. Ceci afin d'éviter que plusieurs personnes travaillent sur la même chose et entrent en conflit. + +Merci d'utiliser la branche `develop`. La branche `main` est réservée aux versions publiées, pour que la documentation affichée reste synchronisée avec la version publiée du plugin. + +Quand vous êtes prêt⋅e à montrer votre code pour avoir un retour, soumettez une Pull Request *draft*. +Quand vous êtes prêt⋅e pour une relecture de code avant merge, soumettez une Pull Request. Dans tous les cas, merci de lier votre Pull Request au ticket concerné en utilisant la syntax de GitHub : «fixes #issue_number». + +Le code du front-end est dans le dossier `client`. Le code backend dans `server`. Il y a du code partagé entre les deux dans `shared`. + +Pour les instructions génériques concernant le développement de plugins (building, installation, ...), merci de vous référer à la [documentation Peertube](https://docs.joinpeertube.org/contribute-plugins?id=write-a-plugintheme). + +Vous pouvez *builder* le plugin avec des infos de debug supplémentaires en utilisant : + +```bash +NODE_ENV=dev npm run build +``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bb7ee29d..1ff32e55 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,29 +2,33 @@ Interested in contributing? Awesome! +## Code of conduct + +Please read the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md). + ## Translate You can help us to translate this PeerTube plugin by creating or modifying translation files in the `languages` folder. Please work on the `develop` branch, and do your commits and pull request on this branch. -If the language you are interesting in does not exist yet, create a file `language_code.json` in the `languages` folder. -The language code must be the same as the Peertube's langage code (see [peertube documentation](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). +If the language you are interesting in does not exist yet, create a file `code.json` in the `languages` folder, where `code` is the language code. +The language code must be the same as the Peertube's langage code (see [Peertube documentation](https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/translation.md)). Then add the language file in the [package.json](package.json) file, under the key `translations`. Translation strings are set in the language file as follow: -- files are in [json format](https://www.json.org) -- the key is the english string (see existing keys in the [french translation file](languages/fr.json)). -- the value is the translating string +- files are in [JSON format](https://www.json.org) +- the JSON key is the english string (see existing keys in the [french translation file](languages/fr.json)). +- the JSON value is the translating string - NB: there is no english translation file (this is how translation works for peertube's plugins) ## Give your feedback You don't need to know how to code to start contributing to this plugin! Other contributions are very valuable too, among which: you can test the software and -report bugs, you can give feedback on potential bugs, features that you are -interested in, user interface, design, decentralized architecture... +report bugs, you can give feedback, features that you are +interested in, user interface, design, ... ## Develop diff --git a/COPYRIGHT.md b/COPYRIGHT.md index 82c6d0ec..ea8e24c0 100644 --- a/COPYRIGHT.md +++ b/COPYRIGHT.md @@ -1,11 +1,21 @@ # peertube-plugin-livechat This Peertube plugin is published under the «GNU AFFERO GENERAL PUBLIC LICENSE version 3» license. -Please see [the LICENSE file](./LICENSE). - -3rd party dependencies comes with their respective licenses. +Please see [the LICENSE file](LICENSE). Copyright holders: * John Livingston (https://www.john-livingston.fr/) * Code Lutin SASPO (https://www.codelutin.com/) + +## 3rd party + +3rd party dependencies comes with their respective licenses. + +Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). + +Some material icons downloaded from this website where used for icons: [Material.io](https://material.io/resources/icons). + +Some Prosody Modules in the `prosody-modules` folder are under MIT license. Please refer to README files in each subfolder, and to the [COPYING](./prosody-modules/COPYING) file. For more informations, here is [the official Prosody Modules website](https://modules.prosody.im). + +NPM modules dependencies have their license files in their repective `node_modules` directory. diff --git a/README.fr.md b/README.fr.md new file mode 100644 index 00000000..f39b3917 --- /dev/null +++ b/README.fr.md @@ -0,0 +1,47 @@ +# PeerTube plugin livechat 🇫🇷 + +🇬🇧 English version [here](./README.md). + +Ce plugin pour [Peertube](https://joinpeertube.org/) permet d'intégrer un système de «chat» (clavardage) à coté des vidéos. + +![Chat screenshot](documentation/screenshots/chat.png) + +**IMPORTANT :** ce plugin ne fonctionne malheureusement pas (encore) tout seul, il doit se reposer sur des outils externes. Merci de consulter la [documentation d'installation](documentation/installation.fr.md). + +**Avant de mettre à jour vers une nouvelle version majeure, merci de lire les notes de version, et la liste des éventuelless modifications non rétro-compatibles : [CHANGELOG](CHANGELOG.md).** + +## Documentation + +* [Documentation d'installation](documentation/installation.fr.md) +* [Documentation utilisateur⋅rice](documentation/user.fr.md) +* [Documentation d'administration](documentation/admin.fr.md) + +## Évolutions / suivi des bugs + +Si vous avez des demandes de nouvelles fonctionnalités, des bugs, ou des difficultés à installer et utiliser le plugin, vous pouvez utiliser l'outils [Github issue tracker](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues). Si possible, merci d'y écrire en anglais ; mais le français sera accepté. + +Pour la liste des fonctionnalités à venir, vous pouvez vous référer à la feuille de route (en anglais): [ROADMAP](ROADMAP.md). + +Si vous êtes webdesigner ou expert⋅e ConverseJS/Prosody/XMPP et souhaitez participer à l'évolution de ce plugin, n'hésitez pas à me contacter. + +## Me contacter + +Si vous avez des questions ou souhaitez parler de ce plugin, vous pouvez rejoindre ce salon XMPP avec n'importe quel client Jabber : [plugin-livechat-support@room.im.yiny.org](xmpp:plugin-livechat-support@room.im.yiny.org?join). + +Si vous souhaitez supporter le projet financièrement, vous pouvez me contacter par mail à l'adresse git.[arobase].john-livingston.fr, ou passer par mon [profil Liberapay](https://liberapay.com/JohnLivingston/). + +## Contribuer + +Merci de vous référer à la page [CONTRIBUTING.fr.md](CONTRIBUTING.fr.md). + +## Crédits + +Les fichiers [package.json](package.json), [COPYRIGHT](COPYRIGHT.md) et [LICENSE](LICENSE) contiennent les informations sur la licence du présent logiciel (en anglais). + +Merci à David Revoy pour son travail sur la mascotte de Peertube, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). + +Merci à [Framasoft](https://framasoft.org) pour avoir rendu [Peertube](https://joinpeertube.org/) possible, et pour le support financier. + +Merci à [ritimo](https://www.ritimo.org/) pour le support financier. + +Merci à [Code Lutin](https://www.codelutin.com/) pour le support financier. diff --git a/README.md b/README.md index 5cce82a9..6afdba8e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,20 @@ -# PeerTube plugin livechat +# PeerTube plugin livechat 🇬🇧 -This plugin is meant to provide web chat for Peertube videos. +🇫🇷 Version française [ici](README.fr.md). -**For release notes and breaking changes list, please see the [CHANGELOG](CHANGELOG.md) before updating the plugin.** +This [Peertube](https://joinpeertube.org/) plugin is meant to provide chat system for Peertube videos. -The plugin has to rely on an external tool as web chat backend. There are multiple ways to provide such functionality: +**IMPORTANT:** unfortunately this plugin does not (yet) work by itself, it must rely on external tools. Please read the [installation guide](documentation/installation.md). -* **Prosody server controlled by Peertube (recommended):** this plugin can launch a [Prosody](https://prosody.im) process and auto-configure it. [Documentation](documentation/prosody.md). **This is the recommanded setup, and is almost automatic to setup**. -* **Connect to an existing XMPP server with ConverseJS:** you can use an external Jabber/XMPP server. This server has to provide BOSH or Websocket API, accept anonymous loggin, and accept room creation. [Documentation](documentation/conversejs.md) -* **Use an external web chat tool:** you can use any external web chat tool, that can be included in an iframe. [Documentation](documentation/external.md) +**Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](CHANGELOG.md)**. -For the two first solutions, the connection to the XMPP server is made with the [converseJS](https://conversejs.org/) Javascript library. -XMPP is a protocol for chat applications. It is sometime known has Jabber. +## Documentation + +* [installation guide](documentation/installation.md) +* [user guide](documentation/user.md) +* [administrator guide](documentation/admin.md) + +## New features requests / Bug tracking If you have new feature requests, bugs, or difficulties to setup the plugin, you can use the [Github issue tracker](https://github.com/JohnXLivingston/peertube-plugin-livechat/issues). @@ -25,15 +28,9 @@ If you have any question, or if you want to talk about this plugin, you can join If you want to support the project financially, you can contact me by mail at git.[at].john-livingston.fr, or check my [liberapay profile](https://liberapay.com/JohnLivingston/). -## Settings +## Contribute -For the chat mode, and related settings, please refer to the corresponding documentation: - -* [Prosody server controlled by Peertube (recommended)](documentation/prosody.md). **This is the recommanded setup**. -* [Connect to an existing XMPP server with ConverseJS](documentation/conversejs.md) -* [Use an external web chat tool](documentation/external.md) - -There are several common settings. Please see the documentation here: [common settings documentation](documentation/common.md). +Please refer to [CONTRIBUTING.md](CONTRIBUTING.md). ## Contribute @@ -41,13 +38,11 @@ Please refer to the page [CONTRIBUTING.md](CONTRIBUTING.md). ## Credits +[package.json](package.json), [COPYRIGHT](COPYRIGHT.md) and [LICENSE](LICENSE) files contain the license information for this software and its dependencies. + Thanks to David Revoy for his work on Peertube's mascot, [Sepia](https://www.davidrevoy.com/index.php?tag/peertube). -Some material icons downloaded from this website where used for icons: [Material.io](https://material.io/resources/icons) - -Some Prosody Modules in the `prosody-modules` folder are under MIT license. Please refer to README files in each subfolder, and to the [COPYING](./prosody-modules/COPYING) file. For more informations, here is [the official Prosody Modules website](https://modules.prosody.im). - -Thanks to [Framasoft](https://framasoft.org) for making [Peertube](https://joinpeertube.org/) possible, and for the support. +Thanks to [Framasoft](https://framasoft.org) for making [Peertube](https://joinpeertube.org/) possible, and for the financial support. Thanks to [ritimo](https://www.ritimo.org/) for the financial support. diff --git a/documentation/admin.fr.md b/documentation/admin.fr.md new file mode 100644 index 00000000..3fd9c01a --- /dev/null +++ b/documentation/admin.fr.md @@ -0,0 +1 @@ +Cette documentation n'est malheureusement pas encore prête. diff --git a/documentation/admin.md b/documentation/admin.md new file mode 100644 index 00000000..927f268f --- /dev/null +++ b/documentation/admin.md @@ -0,0 +1 @@ +TODO: this documentation is not ready for now. diff --git a/documentation/installation.fr.md b/documentation/installation.fr.md new file mode 100644 index 00000000..6bb9e45e --- /dev/null +++ b/documentation/installation.fr.md @@ -0,0 +1,19 @@ +# Installation du plugin peertube-plugin-livechat 🇫🇷 + +🇬🇧 English version [here](./installation.md). + +**IMPORTANT :** ce plugin ne fonctionne malheureusement pas (encore) tout seul, il doit se reposer sur des outils externes. + +**Avant de mettre à jour vers une nouvelle version majeure, merci de lire les notes de version, et la liste des éventuelles modifications non rétro-compatibles : [CHANGELOG](../CHANGELOG.md).** + +Ce plugin peut être utilisé de plusieurs manières différentes : + +| Mode | Description | Documentation +---|---|--- +**Serveur Prosody controllé par Peertube (recommandé)** | Ce plugin peut lancer un processus [Prosody](https://prosody.im) et l'auto-configurer. | [Documentation](./prosody.md). **C'est le mode recommandé** +**Se connecter à un serveur XMPP existant avec ConverseJS** | Vous pouvez utiliser un serveur Jabber/XMPP externe. Ce serveur doit pouvoir utiliser le protocole BOSH ou Websocket, accepter les connexions anonymes, et accepter la création de salons de discussion. |[Documentation](./conversejs.md) +** Utiliser un outil de chat externe :** | Vous pouvez utiliser un outils de chat externe, si celui-ci peut être inclu dans une iframe. | [Documentation](./external.md) + +Pour les deux premiers modes, la connexion vers le serveur XMPP est faite via la bibliothèque javascript [ConverseJS](https://conversejs.org/). + +Il y a de la documentation pour des paramètres communs aux différents modes ici : [common settings documentation](./common.md). diff --git a/documentation/installation.md b/documentation/installation.md new file mode 100644 index 00000000..25033f8d --- /dev/null +++ b/documentation/installation.md @@ -0,0 +1,20 @@ +# Plugin peertube-plugin-livechat installation guide 🇬🇧 + +🇫🇷 Version française [ici](./installation.fr.md) + +**IMPORTANT:** unfortunately this plugin does not (yet) work by itself, it must rely on external tools. + +**Before updating to a major release, please read the release notes and breaking changes list : [CHANGELOG](../CHANGELOG.md)**. + +This plugin can be used in different ways: + +| Mode | Description | Documentation +---|---|--- +**Prosody server controlled by Peertube (recommended):** | This plugin can launch a [Prosody](https://prosody.im) process and auto-configure it | [Documentation](./prosody.md). **This is the recommanded setup, and is almost automatic to setup** +**Connect to an existing XMPP server with ConverseJS:** | You can use an external Jabber/XMPP server. This server has to provide BOSH or Websocket API, accept anonymous loggin, and accept room creation. | [Documentation](./conversejs.md) +**Use an external web chat tool:** | You can use any external web chat tool, that can be included in an iframe. | [Documentation](./external.md) + +For the two first solutions, the connection to the XMPP server is made with the [converseJS](https://conversejs.org/) Javascript library. +XMPP is a protocol for chat applications. It is sometime known has Jabber. + +There are some documentation for common settings here: [common settings documentation](./common.md). diff --git a/documentation/screenshots/chat.png b/documentation/screenshots/chat.png new file mode 100644 index 00000000..9a5d21b7 Binary files /dev/null and b/documentation/screenshots/chat.png differ diff --git a/documentation/tutorials/prosody.md b/documentation/tutorials/prosody.md index f85f0981..6de5add8 100644 --- a/documentation/tutorials/prosody.md +++ b/documentation/tutorials/prosody.md @@ -1,5 +1,7 @@ # Tutorial: quick setup for Prosody XMPP server on your Peertube's instance +**IMPORTANT NOTE:** This tutorial is not the best way to use this plugin. If you want to use the recommanded Prosody setup, please refer to [this](../installation.md) and [this](../prosody.md). + ## Abstract This tutorial is meant to help you configure [Prosody](https://prosody.im) diff --git a/documentation/user.fr.md b/documentation/user.fr.md new file mode 100644 index 00000000..3fd9c01a --- /dev/null +++ b/documentation/user.fr.md @@ -0,0 +1 @@ +Cette documentation n'est malheureusement pas encore prête. diff --git a/documentation/user.md b/documentation/user.md new file mode 100644 index 00000000..927f268f --- /dev/null +++ b/documentation/user.md @@ -0,0 +1 @@ +TODO: this documentation is not ready for now.