nouvelle extension par héritage d'une autre extension

Vous vous penchez sur le développement d'applications ou d'extensions pour Mozilla ? C'est alors vers ce forum que se dirigeront naturellement vos requêtes...
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

nouvelle extension par héritage d'une autre extension

Message par noftal »

Bonjour,
J'ai créé une extension à partir d'une extension déjà publique qui s'appelle Signature Switch.
Créer est un mot un peu fort car je n'ai fait que changer 2 lignes de code dans l'extension d'origine afin d'en modifier le comportement à la marge mais de façon à ce qu'elle me convienne mieux
Pour l'instant j'ai réussi à signer l'extension par Mozilla ce qui me permet de l'installer chez moi (et chez tous ceux à qui je donnerais le fichier XPI)
J'aimerais aller plus loin :
- est-il possible de modifier une extension par dérivation d'une première extension qui fait que, lorsque l'extension principale est mise à jour, la seconde extension hérite de ces mises à jour ? Je pense à un comportement comme il en existe pour les thèmes des forums PHPBB ou Wordpress ou, autre exemple, comme le fait le fichier userChrome.css. En effet, mon extension étant techniquement indépendante, quand le développeur de Signature Switch met à jour son extension, je dois reprendre son package et mettre à jour ma propre extension en remodifiant à nouveau toujours les mêmes lignes de code.
- Je n'ai pas osé "publier" l'extension sur le site officiel Mozilla pour deux raisons : 1°/ Ai-je le droit de publier une extension qui n'est qu'un dérivatif d'une extension créée par un tiers qui a fait 99.999% du boulot ? Si oui, 2°/ quelles sont les précautions d'usage pour ne pas avoir d'ennuis juridiques ? Je suppose en effet que la référence à l'auteur d'origine doit figurer quelque part, peut-être le nom de l'extension doit aussi rappeler l'extension d'origine, y a-t-il qqch à faire de particulier dans le manifest.json pour "rendre à César ce qui lui appartient" ? Je sais que le code est libre, et même si ma démarche est à but non lucratif, ça ne veut pas dire qu'on peut tout faire. Comme par ailleurs, le développeur de Signature Switch a l'air d'avoir un caractère de chien si j'en juge par ses réactions aux différents utilisateurs qui aimeraient qu'il implémente le comportement que je souhaite aussi et qui est la raison de ma version de son extension, je crains qu'il ne prenne pas bien ma démarche donc je veux être clean sur le plan juridique.

Je tiens à préciser que j'ai très peu de connaissances en matière de développement en général et d'extensions en particulier. Je serais absolument incapable de faire ce qu'a fait le développeur de Signature Switch. J'ai juste été lire son code pour trouver à quel endroit il fallait modifier son code pour obtenir le comportement désiré. Je ne cherche pas à devenir un développeur aguerri mais juste à faire profiter la communauté de ce que j'ai pu faire. Or, si j'en juge par les critiques publiées sur Signature Switch, mon besoin est exprimé par beaucoup d'utilisateurs de cette extension.
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Vous devriez changer le ID de votre version dans manifest.json afin que ce soit un addon différent et ne soit pas écrasé par l'original. Vous pouvez ensuite charger les deux et en désactiver un. Veuillez ne pas envoyer le module modifié à quelqu'un d'autre avec le même ID que l'original.

L'ID peut être quelque chose d'unique. Je suggère nom_du_module@votre_nom.addons.mozilla.org (Cela ressemble à une adresse e-mail, mais ce n'est pas.)

Je vous recommande de changer le nom aussi - e.g. ajoutez un suffixe. Il se trouve dans _locales/en/messages.json. Ou changez-le simplement dans manifest.json.

Ce que vous pouvez légalement faire avec le code est régi par le Mozilla Public License v2.
http://www.mozilla.org/MPL/2.0/

(Fonctionne-t-il avec les e-mails en 'plain text'?)
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

DaveRo a écrit : 17 déc. 2020, 15:54 Vous devriez changer le ID de votre version dans manifest.json afin que ce soit un addon différent et ne soit pas écrasé par l'original. Vous pouvez ensuite charger les deux et en désactiver un. Veuillez ne pas envoyer le module modifié à quelqu'un d'autre avec le même ID que l'original.

L'ID peut être quelque chose d'unique. Je suggère nom_du_module@votre_nom.addons.mozilla.org (Cela ressemble à une adresse e-mail, mais ce n'est pas.)
J'ai déjà changé l'ID, je crois me souvenir que c'était une condition pour que Mozilla signe l'addon. En revanche, je l'ai généré à partir de ce site :https://www.guidgenerator.com/. Ca donne une sorte de code qui a le même format d'ailleurs que l'add-on d'origine
Je vous recommande de changer le nom aussi - e.g. ajoutez un suffixe. Il se trouve dans _locales/en/messages.json. Ou changez-le simplement dans manifest.json.
qu'appelez-vous suffixe ?
Le nom je l'ai appelé "Signature Switch (legacy)"

Ce que vous pouvez légalement faire avec le code est régi par le Mozilla Public License v2.
http://www.mozilla.org/MPL/2.0/

(Fonctionne-t-il avec les e-mails en 'plain text'?)
Si votre question est : est-ce que l'extension marche aussi lorsque l'option Options/Format de distrivbution est réglé sur "Texte seulement", la réponse est Oui.
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Je vois que vous avez mentionné votre version dans une «critique» de Signature Switch. Je pense que c'était impoli. Si j'étais l'auteur, je serais très agacé.

Proposez vos modifications sur le site d'assistance.
Voir: https://github.com/4ch1m/mozext/issues/10
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

Je n'ai pas mentionné que j'avais développé une extension parallèle mais que j'avais trouvé le moyen de résoudre le problème. Et je conclus en proposant justement qu'il intègre mes modifications dans son extension.
Hi, thanks for your extension which is great and useful.
I've found out how to change the code to place signature above quote or transfered message, which is the setting I prefer. If you're interested to implement it in your code, please tell me. My next step would be to add a checkbox in the option panel leaving the choice to users to decide.
Bref, je crois que sur le fond cela rejoint exactement votre suggestion.

Après, si c'est pas le bon endroit pour proposer ses services, c'est du détail. L'important est le fond.

Je préférerais nettement que le développeur intègre mon "apport" plutôt que d'avoir à gérer une extension moi-même car il est surement bien plus doué que moi. Mais vu le ton qu'il emploie sur ce sujet, en réponse aux différentes remarques des utilisateurs ou au travers de sa FAQ, je doute qu'il réponde favorablement à ma proposition.

Petit florilège :
I want to place my signature at any desired position within the message. Could you please implement cursor-point-insertion to Signature Switch?
Definitely no. Sorry. (And please don't ask me to reconsider.)
Due to the reasons explained for the previous question I can't offer you this. Besides… something like that wouldn't have anything to do with "signatures" anymore.
If you're looking for an easy way to paste predefined text please check out other extensions especially made for that purpose.
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

Voici le mail que j'ai envoyé au développeur. Avec ça, je ne peux pas faire mieux en terme de diplomatie :
Hi A***,

I finally found a way to implement an option to enable the signature to be placed above quotes.

It works both for replys and forward.

By default, it is placed at the bottom of e-mails as it is in your extension.

The option is a simple checkbox in the options/miscellaneous page

the modified files are

- page.html : to add the option's checkbox

- page.js : to store the value of the checkbox

- compose.js : to test the value of the checkbox and place the signature accordingly

If you are interested for incorporating these changes in your extension, that would be great because it would benefit from the improvements you might bring in the future to your tremendous extension. Just let me know what you decide.
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Je pense qu'un tel e-mail est une meilleure façon d'approcher l'auteur. Je ne suis pas surpris que la critique de l'utilisateur de Firefox 0b58a9, 'you really need to fix this thing', ait suscité une vive réaction. Au moins, vous lui avez donné cinq étoiles!

Revenant a votre question original...

Vous ne pouvez pas faire en sorte que votre version 'inclue' l'original, tel que les modifications faites à l'original soient automatiquement apportées à la vôtre.

Puis-je suggérer une alternative? Vous pouviez écrire un simple addon qui DÉPLACE la signature créée par Signature Switch du bas vers après le texte de réponse. Vous pouvez rendre le déplacement automatique en utilisant 'compose.onBeforeSend'. Le desavantage serait que l'utilisateur ne verrait pas le résultat avant son envoi. Une alternative serait un bouton sur la fenêtre de composition en utilisant composeAction. Un addon utilisant l'une ou l'autre méthode serait assez simple; il y a des exemples disponibles.

L'avantage de cette approche est qu'elle est indépendante des modifications apportées à Signature Switch.

C'est peut être possible pour un addon de déplacer automatiquement le sig après que Signature Switch l'ait inséré, mais pas avec un Mail Extension pure. Il faut assurer que votre addon traite la signature après son ajout.
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

Merci de votre suggestion.
Votre approche est intéressante. Elle moins idéale bien sûr car, dans un cas, comme vous le dites, l'utilisateur ne voit pas le résultat avant d'envoyer son mail ce qui n'est pas très confortable quand même (mais a le mérite de ne nécessiter aucune action supplémentaire de la part de l'utilisateur), et dans l'autre cas, elle nécessite une action supplémentaire de l'utilisateur qui doit cliquer sur un 2ème bouton en plus d'avoir ajouté la signature.
L'idéal reste bien sûr que l'auteur intègre le tout
J'ai bon espoir (contre toute attente je dois dire) car il m'a répondu cet après-midi avec des mots encourageants. Il y a apparremment un truc que je dois régler (si j'y arrive car je suis quand même un novice) :
I briefly tried your modifications.
And they seem to work fine! Nice work.
But... it doesn't handle the signature-separator stuff.
Meaning: _IF_ you place a signature before the quotes there MUSTN'T be a signature-separator present. (Thunderbird's native signature-handling does have a similar implementation.)
Otherwise a (different) mail-client might cut off everything below that separator upon replying.

So... there would be additional work to do on that front.
(If not, you'd risk many angry users facing "data-loss".)
Il faut d'abord que je comprenne le problème car ce n'est pas clair pour moi.
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Simplement: un agent de courriel peut tout supprimer après le 'sig delimiter'.

Donc, si vous déplacez ou insérez la signature devant le message cité, supprimez le delimiter. En termes de définition d'e-mail, dans RFC 1855, etc., ce n'est plus une vrai signature.
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

Qu'est-ce que le 'Sig delimiter' ?
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

OK, c'est donc "--" suivi d'un retour à la ligne.
Le paramètre natif de signature TB ajoute en effet ce Sig délimiter devant la signature rédigée par l'utilisateur.
Si l'utilisateur fait un reply ou un forward, TB ajoute la signature sans ce sig délimiter, sans doute pour prévenir le risque d'effacement évoqué plus haut.
Signature Switch n'ajoute pas de "--" devant les signatures. Si l'utlisateur en veut, il faut donc qu'il les rajoute dans sa signature (c'est ce que je fais personnellement et c'est ce que recommande l'auteur).
Pourtant, je n'arrive pas à reproduire l'effacement de données craint, même en ayant une signature qui commence par "--". j'ai beau faire des reply de reply, en ajoutant ma signature à chaque fois, au-dessus des quotes, les signatures dans les quotes sont supprimées (ce comportement est vrai même sans "--" dans mes signatures) et c'est tout (pas d'effacement de textes de mail).
J'en déduis que ce risque ne concerne pas TB mais certains autres clients mails (lesquels ?). Déjà ça limite le pb (ce qui ne veut pas dire qu'il ne faut pas le traiter).

Pour le traiter je vois plusieurs façons (du plus simple au plus compliqué)
1°/ mettre un avertissement explicite à côté de l'option "place signature above quote" pour inviter l'utilisateur à éviter de commencer sa signature par "--", par exemple en rajoutant un troisième tiret "---"
2°/ tester la signature saisie et la refuser si elle commence par "--" si l'option "place signature above quote" est cochée.
3°/ Supprimer le "--" d'une signature qui commence par cette chaîne lors de la sélection de cette signature lorsqu'il s'agit d'un reply ou d'un forward (c'est ce que fait TB en gros)

ai-je bien analysé le problème et les solutions ou bien ai-je oublié un truc ?
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Je n'utilise pas Signature Switch - je n'utilise pas les signatures avec e-mail, seul avec usenet. Je n'ai donc pas remarqué ce que fait TB avec les délimiteurs avec un réponse ou un transfert.

Votre #3 est ce que je ferais.

Si t est le texte du sig inséré (c'est-à-dire un string, pas un object tel qu'un DOM element):

Code : Tout sélectionner

let re = /\n-- \n/g;
t = t.replace(re,'\n------\n');
remplacera tous les délimiteurs de t.

TB peut composer des e-mails en html ou en texte brut, et un e-mail composé en html peut être envoyé en html, en texte brut ou les deux (multipart/alternative). Je ne pense pas que cela affecte ce problème, mais vous devez en être conscient lors des tests. (C'est pourquoi j'ai posé des questions sur les e-mails en texte brut plus tôt.)
noftal
Iguane
Messages : 587
Inscription : 16 mai 2005, 13:12

Re: nouvelle extension par héritage d'une autre extension

Message par noftal »

Si je comprends bien vous remplacez les 2 tirets par 6 tirets ?
DaveRo
Salamandre
Messages : 39
Inscription : 03 déc. 2020, 13:28

Re: nouvelle extension par héritage d'une autre extension

Message par DaveRo »

Remplacez-le par tout ce que vous aimez.
Tant que ce n'est PAS une ligne contenant
tiret tiret espace retour à la ligne
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 8 invités