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

Capytale discussion #2

Open
7 tasks
SylvainCorlay opened this issue Oct 10, 2023 · 6 comments
Open
7 tasks

Capytale discussion #2

SylvainCorlay opened this issue Oct 10, 2023 · 6 comments

Comments

@SylvainCorlay
Copy link
Member

  • OCaml kernel for JupyterLite
  • input() synchronous function support
  • Activityjs support (lab extensions)
  • Matplotlib backend support of Basthon (FigureCanvasWasm)
  • p5: non-webworker Basthon jupyterlite kernel - exploration of alternatives in the case of webworker Basthon kernel
  • Collaborative editing (re-discuss later).
  • Debugger: discuss future development of a DAP in JupyterLite / Look into Thonny's user experience.

@casatir

@jtpio
Copy link
Member

jtpio commented Jan 12, 2024

@tjaisson
Copy link
Collaborator

@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
Copy link
Collaborator

@jtpio @SylvainCorlay @casatir @nicolaspoulain @chardetm

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

  • brancher l'implémentation de son interface
  • consommer l'interface de l'hôte

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 :

  • l'un récupère le contenu. Je le garde en local.
  • on peut modifier le notebook...
  • l'autre bouton remet l'état récupéré précédemment.

@jtpio
Copy link
Member

jtpio commented Jan 24, 2024

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
Copy link
Member

jtpio commented Apr 9, 2024

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
Copy link
Member

jtpio commented May 6, 2024

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants