Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Système de plugin #63

Closed
WinXaito opened this issue Apr 20, 2016 · 27 comments
Closed

Système de plugin #63

WinXaito opened this issue Apr 20, 2016 · 27 comments

Comments

@WinXaito
Copy link
Collaborator

Je me demandais s'il était difficile de mettre en place un système de Plugin ? Cela permettrais de mettre certaines choses en options pour ceux qui préfère un éditeur simple et léger. (Par exemple le rendu, MathJax, etc).

@firm1
Copy link
Owner

firm1 commented Apr 20, 2016

Bonne idée, mais ça serait colossal comme boulot étant donné que l'appli n'est pour l'instant pas pensé pour. Mais on peut dores et déjà développer dans ce sens pour la suite.

@WinXaito
Copy link
Collaborator Author

Oui bien sur, cest pas tout simple a mettre en place.

Je n'ai jamais fais sa, tu as quelques conseil a me donner pour un facilité ce futur travail?

@firm1
Copy link
Owner

firm1 commented Apr 20, 2016

Je n'ai jamais fais sa, tu as quelques conseil a me donner pour un facilité ce futur travail?

Le truc c'est que pour un système de plugin il faut mettre en place une API (une interface Java quoi) qui sera generique à tous les plugins. Un plugin sera juste un jar à télécharger et à charger dans le système de plugin.

En gros c'est l'API qu'il faudra bien penser, ce qui necessite de définir ce qu'on veut que nos plugins fassent.

@WinXaito
Copy link
Collaborator Author

@firm1
Copy link
Owner

firm1 commented Apr 27, 2016

Pour information tu obtiens quoi entre ---Start List plugins--- et ---End List plugins--- ?

@WinXaito
Copy link
Collaborator Author

Le dossier plugins, mais le mauvais (Celui dans les build qui contient mes classes compilé (PluginsLoader.class, etc.))

@firm1
Copy link
Owner

firm1 commented Apr 27, 2016

Ah ça c'est normal, quand ton projet est compilé, tout passe dans ton répertoire de build. Et tu as donc tes classes ainsi que tes ressources dans ce même répertoire. Le contenu de ton répertoire plugins dans src sera le même que le contenu de ton répertoire plugins dans build.

Est-ce qu'il y'a une raison particulière pour laquelle tu veux explicitement le répertoire plugin de src/main/resources ?

@WinXaito
Copy link
Collaborator Author

Euh bah pour placer les plugins. En l'occurence mon "FirstPlugin.jar", et il ne se trouve pas dans se dossier la après la compilation.

@firm1
Copy link
Owner

firm1 commented Apr 27, 2016

Ah je comprend mieux. Mais je pense que tu pars sur la mauvaise solution. Tu ne devrais pas mettre les plugins dans ton répertoire projet. Car lorsqu'il sera empaqueté, il ira dans un jar et tu n'aura pas la possibilité de rajouter un nouveau plugin à l'intérieur de ton jar. De plus même si tu arrivais à trouver un moyen de rajouter les plugins dans ton jar, à chaque mise à jour les plugins dans ton jar seront écrasés.

Je te conseillerais la dessus d'avoir une variable a renseigner dans le conf.properties qui contient le chemin explicite vers le répertoire dans lequel les plugins de l'utilisateur seront installées.

@WinXaito
Copy link
Collaborator Author

Oui effectivement.

@WinXaito WinXaito added the WIP label May 2, 2016
@WinXaito
Copy link
Collaborator Author

WinXaito commented May 2, 2016

J'aimerais juste savoir, par rapport à ce que j'avais proposer, c'est à dire mettre le module de rendu (Donc Jython et compagnie) sous forme de plugin.

Ceci afin, pour les gens qui se plaignait que Zest-Writer prenait énormément de RAM, ainsi que ceux qui ont une petite connexion et qui ne veulent pas l'installer de leur facilité la vie.

On pourrait imaginer un autre plugin qui demande à un serveur (VPS) de faire le rendu, donc avec nécessité de connexion. (Mais bon, on ne peut pas avoir le beurre et l'argent du beurre).

(Et au passage, c'est déjà plus ou moins fonctionnel ! Création d'un JAR pour le plugin, sont importation, interprétation et pour le moment gestion des Event de la fenêtre principale)

@firm1
Copy link
Owner

firm1 commented May 3, 2016

Bonne question.

Mon avis la dessus, c'est que l'application se doit rester massivement utilisable hors ligne, sinon on en perd un gros intérêt.

L'idée d'avoir le module de rendu de Zds (avec jython et cie) en plugin est superbe. Par contre l'idée d'avoir un serveur qui fasse le rendu me séduit moins car on aura du mal à avoir un truc qui fasse du temps réel correctement, et je ne suis pas sur d'avoir un serveur à disposition dimensionné pour ça.

Maintenant, moi je vois plutôt la possibilité d'utiliser un autre moteur de rendu markdown dispo en hors ligne, plus léger et écrit en pure Java(oui je pense très fortement au formidable pegdown) quitte à ce qu'il ne soit pas compatible full syntaxe zds. ça permettrai d'avoir un éditeur markdown sur lequel on peut choisir son moteur de rendu. Ce qui rendrait l'éditeur utile pour d'autres que les auteurs de ZdS par exemple.

Voilà un peu ma vision des choses, dit moi ce que tu en penses à la lumière de ça.

Et au passage, c'est déjà plus ou moins fonctionnel ! Création d'un JAR pour le plugin, sont importation, interprétation et pour le moment gestion des Event de la fenêtre principale

Ah ça je savais pas. Mes yeux brillent. ___

@WinXaito
Copy link
Collaborator Author

WinXaito commented May 3, 2016

Par contre l'idée d'avoir un serveur qui fasse le rendu me séduit moins car on aura du mal à avoir un truc qui fasse du temps réel

Nonono :p dans cette version "légère" je pensais juste mettre un bouton pour avoir le rendu quand l'utilisateur le désire. Pas du temps réel.

Maintenant, moi je vois plutôt la possibilité d'utiliser un autre moteur de rendu markdown dispo en hors ligne, plus léger et écrit en pure Java(oui je pense très fortement au formidable pegdown) quitte à ce qu'il ne soit pas compatible full syntaxe zds. ça permettrai d'avoir un éditeur markdown sur lequel on peut choisir son moteur de rendu. Ce qui rendrait l'éditeur utile pour d'autres que les auteurs de ZdS par exemple.

Cest a toi de voir. Pourquoi pas l'intégrer aussi sous forme de plugin.

On aurait donc 3 types de version selon les plugins:

  • Une version lourde mais avec un rendu au top
  • Une version moyennement lourde, mais avec un rendu pas 100% exacte
  • Une version légère sans système de rendu instantané (mais éventuellement par requête sur un serveur)

@firm1
Copy link
Owner

firm1 commented May 3, 2016

Je rejoins ta conclusion. Ceci dit, je prioriserais les 2 premiers
objectifs, ne serait ce que parce que pour le troisième il faudra assurer
la dispo d'un serveur.

Le mar. 3 mai 2016 12:15, WinXaito notifications@github.com a écrit :

Par contre l'idée d'avoir un serveur qui fasse le rendu me séduit moins
car on aura du mal à avoir un truc qui fasse du temps réel

Nonono :p dans cette version "légère" je pensais juste mettre un bouton
pour avoir le rendu quand l'utilisateur le désire. Pas du temps réel.

Maintenant, moi je vois plutôt la possibilité d'utiliser un autre moteur
de rendu markdown dispo en hors ligne, plus léger et écrit en pure Java(oui
je pense très fortement au formidable pegdown) quitte à ce qu'il ne soit
pas compatible full syntaxe zds. ça permettrai d'avoir un éditeur markdown
sur lequel on peut choisir son moteur de rendu. Ce qui rendrait l'éditeur
utile pour d'autres que les auteurs de ZdS par exemple.

Cest a toi de voir. Pourquoi pas l'intégrer aussi sous forme de plugin.

On aurait donc 3 types de version selon les plugins:

  • Une version lourde mais avec un rendu au top
  • Une version moyennement lourde, mais avec un rendu pas 100% exacte
  • Une version légère sans système de rendu instantané (mais
    éventuellement par requête sur un serveur)


You are receiving this because you commented.

Reply to this email directly or view it on GitHub
#63 (comment)

@WinXaito
Copy link
Collaborator Author

WinXaito commented May 6, 2016

Pour les plugins, il faudrait avoir une certaine documentation. Je la fais où et comment ?

@firm1
Copy link
Owner

firm1 commented May 6, 2016

Je pensais a mettre en place le système de documentation, mais je ne me suis pas encore fixé sur la techno. Mais ça sera certainement à base de markdown.

Je dirais que dans un premier temps tu peux créer un dossier docs à la racine dans lequel tu rédige la doc des plugins.

@WinXaito
Copy link
Collaborator Author

WinXaito commented May 6, 2016

Ça joue merci !

@WinXaito
Copy link
Collaborator Author

WinXaito commented May 6, 2016

Petite question encore, comment je fais pour lancer ZW en mode debug ? (Pour avoir les logger.debug("") ?

@firm1
Copy link
Owner

firm1 commented May 6, 2016

La conf par défaut est déjà configurée en mode debug.

@WinXaito
Copy link
Collaborator Author

WinXaito commented May 6, 2016

Ah pour les logs oui, mais y a pas moyen d'avoir directement dans la console ?

(Bon j'avais pas penser au fichier logs donc je peux au moins les voir maintenant)

@firm1
Copy link
Owner

firm1 commented May 6, 2016

il y'a moyen de l'avoir dans la console oui. faudrait que je fasse un log4j.properties spécial dev

@WinXaito
Copy link
Collaborator Author

J'aurais besoin de ton avis ici.

Actuellement, je gère quelques événement, et le plugin peut récupéré la classe MainApp, donc le plugin peut avoir accès à toute l'application.

Je ne pense pas que ça soit dérangeant, c'est même mieux, car le plugin est libre de faire ce qu'il veut et je ne dois pas recodé toutes les fonctions pour lui appliquer des "limites". De toute façon c'est à l'utilisateur de faire attention à ce qu'il installe, car rien n'empêche un plugin d'exécuter du code malicieux et ce pour tous les systèmes de plugins que je connaisse.

Je pense arriver gentiment au bout pour cette PR.

J'aimerais pouvoir géré les plugins avec un Downloader intégré, et éventuellement mettre une restriction pour n'autoriser que les plugins open-source et éventuellement validé. Mais je pense qu'il s'agit d'une PR à part.

@WinXaito
Copy link
Collaborator Author

@firm1

@firm1
Copy link
Owner

firm1 commented May 14, 2016

L'idéal serait de ne pas forcement avoir access a toute la MainApp, mais
bon en soit c'est pas très grave, il faudra a un moment faire une refacto
de MainApp (qui porte trop de chose) et on verra a ce moment là.

Je vais juste prendre le temps de tester ça proprement (et éventuellement
te pousser une PR si besoin).

Le sam. 14 mai 2016 12:12, WinXaito notifications@github.com a écrit :

@firm1 https://github.com/firm1


You are receiving this because you were mentioned.

Reply to this email directly or view it on GitHub
#63 (comment)

@WinXaito
Copy link
Collaborator Author

Yep merci

@WinXaito
Copy link
Collaborator Author

Hello, du nouveau ici ?

@firm1
Copy link
Owner

firm1 commented Jun 16, 2016

J'avoue que j'ai eu la flemme de m'y pencher. Je regarderai ça sans doute
demain.

Le jeu. 16 juin 2016 19:50, WinXaito notifications@github.com a écrit :

Hello, du nouveau ici ?


You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub
#63 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/AFyPX0iRC0F0bg0Qc3maXnsBV9EYPtUCks5qMYzMgaJpZM4ILZ64
.

@WinXaito WinXaito added this to the 1.3.0 milestone Jun 30, 2016
@WinXaito WinXaito closed this as completed Jul 9, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants