jupyter-videochat
jupyter-videochat copied to clipboard
Add a simple poll federated API example
Elevator Pitch
Make a separate labextension, jupyterlab-viedochat-poll, still packaged as part of the same python package, which uses Video Chat Manager to implement a moderator-lead poll using the Jitsi text messaging API.
Motivation
Breakout rooms (#5) is probably a pretty big goal, and might need to be an external extension.
A more incremental step would be a second lab extension that implemented a simple shared poll data object between all participants of a meet. This would demonstrate some integration patterns, and be useful in its own right.
Design Ideas
- Moderator starts chat
- some Participants join
- Moderator presses a Start New Poll button
- fill out a minimal form to build a JSON Schema
- a sensible default might be a single
stringfield with a description- a markdown question and then Add an option as a number of markdown fields as a first go-around
- a sensible default might be a single
- see preview of form
- a quick win is jupyterlab-rjsf
- have a few Workflows, e.g. Anonymous, Show users, Hide Answer
- broadcasts a JSON object to all participants
- each clients interpret the message, pops open a new DockPanel Tab with a poll
- each Participant (and Moderator) can vote with their name/icon (or be Anonymous)
- sends private JSON object back to the Moderator
- depending on Workflow, re-broadcast the current state of the object
- or some limited information (how many participants have responded)
- depending on the Workflow, results of the poll are available to the Moderator or all Participants
- download as CSV, Notebook, etc.
- fill out a minimal form to build a JSON Schema
Future Work
Initially, this poll definition doesn't really need to be stored anywhere, but could be a server-configured thing, e.g. a ready-to-use simple Likert scale, a three-question session survey, etc.
Similarly, ephemeral poll output could stored on a configurable server route, wrap Google Forms, etc.
I've signed up for the Winning over the classroom with Jitsi hackathon for (26th April until 3rd May), nominally for implementing this feature, though I mentioned it being a stepping stone to #5.
For me, most likely, this will only mean evening and weekend tinkering hours (US Eastern), unless I can swing some support from $DAY_JOB... but am definitely interested in supporting/collaborating with/mentoring any folks that want to:
- provide feedback on features that would be useful for this in a teaching setting
- get their hands dirty with any of the technology in play
I may cheat a bit and add some DX junk (doit, maybe robotframework) prior to then, focusing on validating existing features, which would give us some more meaningful CI. This would help make co-development more effective during the critical period.
Given we've already got a lot in place, I'm pretty sure we could get something that works on binder out the door, which should demo nicely.
cc @yuvipanda
Awesome, @bollwyvl!!! Can you post it in discourse.jupyter.org too to recruit more people?