alexylem / jarvis

Jarvis.sh is a simple configurable multi-lang assistant.
http://openjarvis.com
MIT License
806 stars 197 forks source link

Store de commandes de la communauté que les utilisateurs peuvent installer #52

Closed alexylem closed 8 years ago

alexylem commented 8 years ago

Description

L'idée est que chacun puisse contribuer à un repository de commandes que d'autres utilisateurs pourront découvrir et télécharger via le "Store" de Jarvis (gratuitement bien entendu)

remjou1 commented 8 years ago

c'est a dire ?

alexylem commented 8 years ago

Qu'est-ce que tu ne comprends pas? c'est écrit dans la description. Peux-tu être un peu plus précis? Merci.

remjou1 commented 8 years ago

non c'est pas vraiment ce que je voulait dire... j'ai lu vite fait donc j'avais pas tout saisi... euh... ce store inclueras-t-il les dossier genre script python shell etc ?

remjou1 commented 8 years ago

ce serait plus pratique ainsi on pourrait envoyer la commande + le scipt...

(désolé pour le double post j'ai un bug...)

alexylem commented 8 years ago

Oui mais je pense que dans un premier temps le store de limitera aux commandes inline. Donc tout ce qui peut être fait depuis le fichier de commandes. Ce qui est déjà pas mal... Je verrais comment faire pour que les utilisateurs puissent contribuer, il faudra que ca soit simple, et idéalement depuis Jarvis sans avoir de compte GitHub. Je pense malgré tout faire un système d'approbation pour éviter les mauvaises blagues...

remjou1 commented 8 years ago

oui je pense que ce serait bon le système d'approb.... donc du coup pas de script pour l'instant ? :+1:

alexylem commented 8 years ago

Pas pour le moment mais surement à l'avenir avec un système de modules... je procède pas à pas, comme d'habitude 😄

physicien commented 8 years ago

Intéressant comme idée. Il commence à y avoir pas mal de branches au projet. Ne serait-il pas possible d'avoir un schéma ou un plan à quelque part sur le Github afin de voir ce qu'il y a à faire à moyen/long terme afin d'avoir une meilleure vision d'ensemble du projet et de voir où les efforts doivent être mis en priorité? Par exemple, tu as déjà mentionné qu'éventuellement, tu veux ajouter de la reconnaissance faciale avec OpenCV. Ce serait un truc à mettre sur le plan pour le long terme afin de voir la direction générale du projet. Il y a aussi tout ce qui est STT engine sur un serveur local et toute amélioration prévue.

alexylem commented 8 years ago

Je viens de créer le ticket pour formaliser l'intégration à opencv #56 J'utilise aussi les milestones pour classifier les demandes d'évolutions stratégiques et celles qui ne le sont pas:

physicien commented 8 years ago

C'est bon à savoir. Personnellement, je préfère les schémas, mais c'est parce que je suis visuel et que ça permet de synthétiser tout en un seul endroit :laughing:

Pour ce qui est du système de vote, Je ne pense pas que le projet soit assez avancé encore pour que ça vaille la peine. Un système de vote est bien quand tu veux ajouter des évolutions non essentielles. Actuellement, plusieurs évolutions à venir sont essentielles à mon sens.

remjou1 commented 8 years ago

on en est où pour ce store de commandes ?

alexylem commented 8 years ago

Il semble y avoir plusieurs personnes intéressées, je mets un milestone

remjou1 commented 8 years ago

ok

alexylem commented 8 years ago

Voici ce que je propose:

jarvis/
  jarvis.sh # jarvis program
  jarvis-commands # your own commands
  community-commands/ # community commands
    clock_fr/ # suffix for the language
      command # the command (can be multiple lines)
      info # information about the command (see below)
      config # (optional) user config for the command
      install.sh # (for v2) for commands needing additional software

Fichier command

*QUELLE HEURE*==say "il est `date +%H:%M`"

Fichier info

description="Donne l'heure qu'il est"
example="
you: S'il te plaît quelle heure est-il?
jarvis: Il est 9h00
"
authors="alexylem" # comma-separated list of contributors
url="https://github.com/alexylem/jarvis/issues/XX"
- Start Jarvis
- Commands
- Store
  - Installed commands # list commands install (to uninstall)
  - Search # search commands by keyword
  - Browse # browse commands (list all or by category?)
  - Publish # publish a command on the store

❓ A discuter:

J'ai aussi pensé à faire un site web complètement custo (html / javascript / php / mysql) avec une api pour s'intégrer avec jarvis (à la google play store). Mais cela me prendrait plus de temps, il faudrait faire un autre système de compte (sauf s'intégrer avec git), et payer un hébergement... Donc je pense que pour commencer c'est une bonne approche.

Je pense que la clé du succès sera la facilité pour les utilisateurs de partager leurs commandes, donc je travaillerai sur le "Publish" pour permettre à n'importe qui de publier de nouvelles commandes, sans pour autant connaître les pulls request de git (ca sera donc un "wizard").

Vous en pensez quoi?

physicien commented 8 years ago

Ça semble un bon plan de match. Je ne vois rien à redire pour l'instant.

alexylem commented 8 years ago

Je rencontre déjà une difficulté sur la fonction de partage de nouvelle commande. Je ne suis pas un expert GitHub mais j'ai l'impression qu'on ne peut pas soumettre de pull request à partir d'un clone local. Apparemment ca se fait depuis un fork. Le problème est qu'aujourd'hui la procédure d'installation de jarvis se fait via un clone, et la mise à jour automatique via un pull. Il faudrait donc que je change la procédure d'installation pour faire un fork et changer le système de mise à jour. Ce qui m'embête aussi est que pour le fork cela nécessite beaucoup plus d'étapes (notamment sur le site) ainsi que la création d'un compte git, d'une clé ssh, etc... Du coup je me demande si c'est la bonne approche (la plupart des utilisateurs de jarvis ne savent même pas ce qu'est git). 😞 edit: d'ailleurs je réalise que ceux qui ont fait un fork (15) n'ont pas bénéficié des mises à jour, mais bon ils doivent savoir comment synchroniser depuis le repo d'origine...

alexylem commented 8 years ago

J'ai réalisé que github permettait de directement créer un fichier sur le repo d'un autre. Il fait le fork automatiquement: https://github.com/alexylem/jarvis/new/master image Il suffit de choisir un nom et le bouton commit créer automatiquement le pull request: image Si j'arrive à tout regrouper dans un seul fichier, ca pourrait être une possibilité. Donc la contribution et la création du fichier se ferait depuis GitHub.

Autre piste: je laisse le clone pour tout le monde, et pour ceux qui veulent contribuer, je fais un script qui génère un fork et le clone en local (nouveau dossier jarvis-fork) afin qu'y copier le dossier de la commande que l'utilisateur souhaite partager (depuis son clone), et soumet un pull request.

D'autres idées?

alexylem commented 8 years ago

Bon après avoir mûrement réfléchi 2 minutes 😄 je pense que je vais commencer comme ca: Dans le store du programme jarvis, il y aura un wizard Publish qui permettra de publier une commande sur le store. Le wizard demandera le nom, la langue, la description, la commande, un exemple d'utilisation, un URL, etc... ensuite compilera le tout dans un fichier special avec une extension spécifique (ex: clock_fr.command). Il donnera ensuite le lien à cliquer pour créer une command sur le repo de GitHub et le contenu du fichier à copier coller. C'est en cliquant sur ce lien que l'utilisateur pour créer si nécessaire un compte GitHub. Ca me semble être le moins pire d'un point de vue expérience utilisateur. Vous en pensez quoi? D'autres idées les experts GitHub?

Sopalin06 commented 8 years ago

Je ne connais pas assez bien Github pour t'aiguiller, mais le fait de séparer les nouvelles commandes dans chaque fichier est une bonne piste et permettra de débugger facilement en cas de besoin. Est-ce que Jarvis peut lire plusieurs fichiers de command ou il faut agréger toutes les commandes dans un fichier unique ?

alexylem commented 8 years ago

Oui j'agrègerai vos propres commandes (menu Commands) et les commandes installées depuis le store. J'attends vos feedback sur la question suivante posée plus haut:

Lorsqu'un utilisateur "installe" une commande, soit je l'"inclue" à la liste des commandes de l'utilisateurs, soit je la "copie". Si je l'"inclue" il aura le droit automatiquement aux mises à jour et améliorations de la commande. Si je la "copie" il pourra la modifier en local à sa guise (ex: la traduire ou améliorer son texte). J'attends vos retours.

alexylem commented 8 years ago

J'ai créé une procédure sur le wiki pour soumettre des commandes sur le store. Elle n'est bien sûr pas publique (le store n'existe pas encore). https://github.com/alexylem/jarvis/wiki/store Pouvez-vous la revoir et me dire si ca vous semble assez simple? Je ne vois pas encore trop comment je vais pouvoir gérer les notes & avis (et surtout les afficher dans le store depuis Jarvis). J'y réfléchis toujours... Sinon il y a toujours la solution complètement customizée... (sans passer par GitHub)

Erim32 commented 8 years ago

Bonjour, et bravo pour ton travail. J'ai développé une première version d'un plugin permettant de contrôler sa liveboxtv grâce à jarvis. (je me suis basé sur le plugin élaboré pour SARAH). Bref, le plugin comprend donc des commandes à ajouter mais utilise également un script. Juste pour clarifier un détail, cette procédure n'est pas le système de plugin? Juste des suggestions d'ajout de commandes natives? N'hésite pas à me dire si la structure du plugin est correcte. Plugin jarvis liveboxtv_fr: https://github.com/Erim32/liveboxtv_fr/

npotier commented 8 years ago

Salut Alexandre,

Bravo pour ton travail que je découvre aujourd'hui. La procédure de création de nouvelle commande me parait bien décrite, et je pense que les utilisateurs de jarvis sont suffisament à l'aise avec Git / Github pour la comprendre :)

Bonne continuation. Nicolas.

alexylem commented 8 years ago

Bon je pense que je vais repartir sur mon idée d'origine avec une structure de dossier. L'idée du fichier consolidée est trop limitée. J'ai pris le postulat que ceux qui contribueront (contrairement à ceux qui utiliseront) seront un minimum calés en GitHub... J'ai mis à jour la procédure détaillée pour publier un plugin sur le store: https://github.com/alexylem/jarvis/wiki/store

@Erim32 il te faut suivre la procédure ci-dessus (ne créé pas de nouveau repo) Tu peux te passer du fichier liveboxtv.sh ainsi: Fichier config.sh:

liveboxtv_ip="192.168.1.21" # ip address of your livebox
liveboxtv_url="http://$liveboxtv_ip:8080/remoteControl/cmd?operation=01&mode=0&key=" # do not change

Extrait de commands:

*ALLUME LA TELE*==say "J'allume la télé" && wget -qO /dev/null "${liveboxtv_url}116"

Je ne vois toujours pas comment je vais pouvoir gérer les notes & avis (et surtout les afficher dans le store depuis Jarvis). J'attends vos retours, et en parallèle je continue de coder le store dans Jarvis à partir de cette nouvelle structure.

alexylem commented 8 years ago

Merci @npotier pour ton message, et pleins de belles choses pour la suite avec ACSEO! 👍 👍

alexylem commented 8 years ago

Bon voila la première version du Store est disponible! Mettez à jour votre Jarvis! Pour le moment le nombre de plugin sur le store est au nombre incroyable de 1!!! J'attends vos contribution, voir ici comment publier vos plugins: https://github.com/alexylem/jarvis/wiki/store

physicien commented 8 years ago

Ça fonctionne tempête! Vraiment une excellente update! Bon, qu'est-ce qui suit?

francoismartin commented 8 years ago

Super @alexylem :)