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

WIP: Eventually consistent multiplayer 🤝 #2296

Draft
wants to merge 73 commits into
base: main
Choose a base branch
from
Draft

WIP: Eventually consistent multiplayer 🤝 #2296

wants to merge 73 commits into from

Conversation

Pangoraw
Copy link
Collaborator

@Pangoraw Pangoraw commented Sep 26, 2022

collaboration

Still very wip. Different take at #1729.

TODO:

  • Entering Unicode characters
  • Evaluates the size of updates array after a while and maybe drop old
    updates.
  • Playing nice with FileWatching (is it possible?)
  • The client is not always synced when sending run_multiple_cells
    -a cell [ ] Global state manager
  • Rebasing updates on the server to not refuse client updates.
  • Make running a cell as simple as dispatching a Run effect, this means that
    we can get the history up until a run. Also this is a similar mechanism to Add run_requested_timestamp state to delete the run_multiple_cells action #2542 where we can merge run updates.
    last_schedule_time will just a be a revision in the codemirror update history.
  • Send JuliaSyntax.jl diagnostics as transaction effects from the server.
  • Investigate using Deltas in the backend instead of manipulating codemirror update types.
  • Add possibility to select/change name and show other people's name
  • Rework code differs since it now relies on the server synced version (use cell local state instead).
  • Save last_run_code instead of code? Solution: save the code as cell metadata if they are not the same and when loading take this into account.

Cursor stuff:

  • Don't show your own cursor.
  • Only show focused cursor.
  • Integrate with
    f3fce3e
    for client disconnects (hiding cursors), etc...
  • Register pinot

See
Pinot.jl.

@github-actions
Copy link
Contributor

Try this Pull Request!

Open Julia and type:

julia> import Pkg
julia> Pkg.activate(temp=true)
julia> Pkg.add(url="https://github.com/fonsp/Pluto.jl", rev="pb/ot")
julia> using Pluto

@Pangoraw Pangoraw changed the title WIP: Operational Transform implementation WIP: Eventually consistent multiplayer Sep 26, 2022
@Pangoraw Pangoraw changed the title WIP: Eventually consistent multiplayer WIP: Eventually consistent multiplayer 🤝 Sep 30, 2022
@fonsp fonsp added enhancement New feature or request frontend Concerning the HTML editor backend Concerning the julia server and runtime HTTP/WS The connection between backend and frontend online deployment About deploying to binder, heroku, self-hosted labels Oct 5, 2022
Pangoraw referenced this pull request in JuliaPluto/codemirror-pluto-setup Sep 17, 2023
@gdalle
Copy link

gdalle commented Sep 30, 2023

Hey there! Small question: how can I decide to run this branch of Pluto on Binder?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend Concerning the julia server and runtime enhancement New feature or request frontend Concerning the HTML editor HTTP/WS The connection between backend and frontend online deployment About deploying to binder, heroku, self-hosted
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants