QuantStack / jupyterlite-capytale

JupyterLite deployment for integration with Capytale
https://quantstack.net/jupyterlite-capytale/
BSD 3-Clause "New" or "Revised" License
3 stars 2 forks source link

Capytale discussion #2

Open SylvainCorlay opened 1 year ago

SylvainCorlay commented 1 year ago

@casatir

jtpio commented 10 months ago

References:

tjaisson commented 10 months ago

@jtpio @SylvainCorlay @casatir @nicolaspoulain @chardetm

Bonjour Jérémy,

Capytale intègre déjà des outils en iframe mais nous avons utilisé à chaque fois une librairie RPC en surcouche au postMessage natif pour la communication distante.
Cela simplifie les échanges en apportant un fonctionnement bidirectionnel : l'appel d'une fonction distante permet de passer des paramètres mais aussi d'obtenir une valeur de retour.
Nous avons utilisé @mixer/postmessage-rpc (lic. MIT) mais j'ai récemment découvert comlink (lic. Apache 2.0) qui me semble meilleure. Il y en a peut-être d'autres.

Concernant les échanges qui ont lieu via RPC, nous n'avons malheureusement pas fait deux fois la même chose. J'ai décidé de "normaliser" un peu en définissant en typescript les interfaces exposées des deux côtés. C'est publié sur github @capytale/metaplayer-rpc. C'est l'endroit pour se mettre d'accord ! Nous y ajouterons les interfaces définies avec tous nos partenaires.
Ce n'est pas finalisé mais tu peux peut-être déjà y jeter un œil pour voir si le principe te convient.

J'ai l'intention d'y écrire un "agent capytale" que l'outil intégré pourrait utiliser comme un paquet ou comme un .js servi sur notre CDN. Le but est de découpler le code côté outil vis à vis de la librairie RPC utilisée.

tjaisson commented 10 months ago

@jtpio @SylvainCorlay @casatir @nicolaspoulain @chardetm

J'ai publié le paquet @capytale.fr/metaplayer-rpc. Il permet à l'iframe d'obtenir un socket pour :

Il apporte aussi le typage des interfaces.

J'ai ajouté la dépendance et modifié un peu ton code (branche rpc) mais je n'ai pas trouvé comment adapter la page hôte de ta démo car elle n'a pas de build.

J'ai donc modifié la démo metaplayer de @capytale.fr/metaplayer-rpc sur une branche draft pour y mettre l'url localhost de ton iframe.

Je n'ai que deux boutons :

jtpio commented 10 months ago

Super, merci @tjaisson pour les nouvelles et les avancées dans ces repos !

J'ai ajouté la dépendance et modifié un peu ton code (branche rpc) mais je n'ai pas trouvé comment adapter la page hôte de ta démo car elle n'a pas de build.

Oui effectivement il n'y a pas de build car c'est juste une page HTML avec très peu de JavaScript, pour servir de demo.

Peut-être que l'on peut simplement importer @capytale.fr/metaplayer-rpc depuis un CDN via un script tag ? Par exemple depuis jsdelivr.

Sinon on peut aussi ajouter une étape de build si cela permet de simplifier l’intégration.

jtpio commented 7 months ago

Nous avons utilisé @mixer/postmessage-rpc (lic. MIT) mais j'ai récemment découvert comlink (lic. Apache 2.0) qui me semble meilleure. Il y en a peut-être d'autres.

Pour info, il semblerait que le repo qui correspond à @mixer/postmessage-rpc soit archivé:

image

Aussi JupyterLite utilise comlink pour faire passer les messages entre l'application et les kernels, donc on pourrait effectivement partir la-dessus.

jtpio commented 6 months ago

@tjaisson @casatir @nicolaspoulain @chardetm

Pour faire suite au dernier meeting, serait-il possible de poster ici (ou dans une autre issue) la liste des fonctionnalités que l'interface Notebook 7 doit fournir via l'interface des contrats ?

Cela me permettrait de commencer a regarder de mon cote, afin de vous faciliter l’intégration.