musicblocks icon indicating copy to clipboard operation
musicblocks copied to clipboard

[DMP 2024]: Add real-time collaboration to Music Blocks

Open walterbender opened this issue 10 months ago • 18 comments

Ticket Contents

Description

The Python version of Turtle Blocks has a collaboration mode, where the learner can share stacks of code and, in real time, share graphical output. This project is to add similar functionality to Music Blocks. Following the pattern of Turtle Blocks collaboration is pretty straight-forward. What makes this project difficult is that Music Blocks will require a higher degree of synchronization.

Specifically, we would be working toward accomplishing the following:

Server-side data storage and proxying
API to syncrhonize Music Blocks projects across browsers
Features to perform projects in sync, in real time, with low latency

Goals & Mid-Point Milestone

Goals

  • [ ] [Design collaboration architecture]
  • [ ] [Build backend service]
  • [ ] [Build frontend UX]
  • [ ] [Tests/maintenance]
  • [ ] [Documentation]
  • [ ] [Goals Achieved By Mid-point Milestone]
  • [ ] [Design collaboration architecture]
  • [ ] [Build backend service]

Setup/Installation

No response

Expected Outcome

  • Any user should be able to select/offer a project for collaboration.
  • Any user should be able to browse for projects available for collaboration.
  • Once collaboration begins, as users join, they start from the current state of the shared project.
  • Changes by any user are shared to all users.
  • Collisions on merge are resolved by giving precedence based on the order of joining the collaboration -- first to join has priority.

Acceptance Criteria

A working model of collaboration. Scaling is outside of the scope of this initial implementation.

Implementation Details

We'll need to run a server in a docker running on one of the Sugar Labs servers. We can use the existing Planet to store the shared project.

Mockups/Wireframes

No response

Product Name

Music Blocks

Organisation Name

Sugar Labs

Domain

⁠Education

Tech Skills Needed

Docker, JavaScript, Python, WebSockets

Mentor(s)

@pikurasa @walterbender

Category

Backend, Frontend, Research

walterbender avatar Apr 07 '24 15:04 walterbender