jupyter-videochat icon indicating copy to clipboard operation
jupyter-videochat copied to clipboard

Add a simple poll federated API example

Open bollwyvl opened this issue 4 years ago • 2 comments
trafficstars

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 string field with a description
        • a markdown question and then Add an option as a number of markdown fields as a first go-around
    • see preview of form
    • 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.

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.

bollwyvl avatar Feb 13 '21 21:02 bollwyvl

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

bollwyvl avatar Apr 08 '21 00:04 bollwyvl

Awesome, @bollwyvl!!! Can you post it in discourse.jupyter.org too to recruit more people?

yuvipanda avatar Apr 09 '21 08:04 yuvipanda