Why do reviews only allow one party with control at a time?

Is it a network issue? Something deeper? Is there no chance that OGS will implement shared review control in the future?

2 Likes

Not implemented.

But, if you create new account and 2 people will login in it and go to Demo Board…
Did anyone try it?

2 Likes

I’ve just tried this. Changes do not update in real-time. The second window needs to be refreshed to reflect the changes.

1 Like

If more than one person control how does that work? Do they share a branch?

2 Likes

In theory, any changes that any person makes would be immediately reflected on the other’s screens

1 Like

Because making 2 people able to control is technically difficult: what if both people place a stone at the same time in the same position, or one plays a move which would capture a group at the same time as the other plays a move which extends its liberties so it doesn’t get captured. When 2 people review in real life the fact your hand cannot be inside the other person’s hand, or you won’t play a stone on top of theirs acts as a mutex, which would need to be explicitly coded for in a virtual version. Not impossible to do, but quite a lot harder than single person review.

7 Likes

tldr: It eats up a big chunk of development time to change the way the reviews work. To allow multiple users to interact with the same board at the same time introduces a bunch of new issues to consider.


The Problem is how to handle concurrent events.

  • In the review both reviewers play for both colours.
  • Both should see the same variation (board state).

Let’s have a look at some problems we will have when both reviewers want to extend a variation arround the same time:
User A wants to explore black K4, B wants to explore black C16 at the same time:

  1. The reaction time.
    Let’s assume user B is in the process of clicking C16 while their browser receives the black K4 from user A. When B actually clicks C16, black K4 is already played on their board, so they submit white C16 instead of black C16.
    Each player can correct the mistake by either deleting the white C16 variation or by just moving 1 move back in the move tree. → this can trigger the next concurrent interaction → chaos.
    We can mitigate this problem by disabling one’s ability to submit a move for a few seconds after the client receives a change. (This has the inconvenient side effect from delaying B’s ability to submit a response to K4)
  2. Actual concurrent events (on connection level).
    If the timing of both users is even tighter, the server receives and processes black K4, and then receives black C16. What is the correct outcome? The review allows placing multiple stones for one colour consecutively, but most probably it was intended to be a normal move sequence.
    → we have to implement a process to reject the variation black C16.
    Here we have to deal with the possibility of bad connections, where the signal takes a second until it’s received by the server and another second for the rejection to be send back to the client. In this 2 seconds, B can not only extend on their C16 variation, but their client will also receive the black K4 from player A.
    → This gives us 2 problems to solve:
    a) What should the client do when they receive black K4?
    b) How should the rejection be structured to make sure, the client knowns what was rejected, and the client needs to handle it consistently.
  3. Actual concurrent events (on server level).
    We have to harden the processing of move submissions in the server to ensure the server doesn’t process 2 conflicting moves at the same time. Otherwise, the review record could be damaged.
    I hope some protection is already in places, since the order of transmissions can change on the way from client to server.

All these concerns can be handled, but it will require big changes in the code. This asks for extra care to not risk the integrity of the whole service.

It can be done, but it’s not just flipping a switch. My estimation is it would take as much time as any new major feature.

8 Likes

It could be useful to allow the following options:

  • The creator (C) of the review can give control to any spectator.
  • C keeps control of one color and a spectator controls the other color (i.e. they can play a short sequence together). C still controls all other features (arrows, deleting branch, annotating board, etc).
  • C gives control of Black to one spectator and of White to another.
  • At any time, C can take back full control.

This way, C can engage discussions with a spectator (S) like:
C: can you kill Black?
S: yes I think I can
C: I’ll let you control White, please click
S: clicks white
C: clicks black
S: clicks white
C: clicks black
S: oops. It doesn’t work.

8 Likes

The thing is people can already do this, you’re not locked into following the person in control unless you choose to sync it.

That said they won’t be able to see what you’ve been doing.

That kind of goes with the idea of reviewing though, there is someone showing some variations with both people talking and watching.

What’s the use case where you want two people exploring independently and adding variations to a common tree?

2 Likes

You may already know this, but in case you don’t: you can give control to another user during the review. Don’t recall exact details, but you should be able to click on his “user box” and “give control”. something like that

2 Likes

I’d really like to be able to get a quick board that would allow two people, for example a teacher and student, to interact simultaneously. If I’m giving a lesson while we talk on Zoom, we could take turns placing pieces, or I set up a puzzle for them to solve, occasionally I need to place some markers or draw something. It’s not a big deal if we accidentally click at the same time and have to go back. But the give/take control formalities and needing to log into an account, find the other user, etc. are too much of a barrier for anyone who is not already an OGS expert.

Don’t we already have this problem? If the viewer has control, and I click take control and place a stone quickly, they might be clicking right as I was doing it.

In fact, if the front end could just enter a mode where every time I try to do anything, it wraps it with take/give control events, wouldn’t that effectively allow both players to interact with the board? I don’t really use reviews, so I might be missing some subtleties.

3 Likes

I tried a bit just now doing some things like this:

  1. A gives control to B
  2. A disconnects from network
  3. B plays a variation
  4. A takes control and plays a variation
  5. A reconnects to network

It didn’t seem to blow up. Both variations showed up, with A in control but on B’s variation.

1 Like

Thank you for the in-depth reply!! This helps me a lot to understand the technical challenges involved.

3 Likes

That could be a very interesting research topic, and not only in go.
But maybe some well thought tools exist already aside reviewing a go game? (Like for managing a discussion, to be adapted to go)

Shared reviews would almost be the perfect tool for teaching or learning go. The perfect tool would start by simulating a real board and stones, with the freedom for both sides of demonstrating and experimenting with move sequences simply by placing stones, chatting the whole time by text and/or voice, with a record of the session available to take home at the end, and with the ability to empty the board or start with a prestored board position at any time. Just my opinion. Note that I’m not attacking anyone and do not wish to be attacked for my opinions.

You have great opinions, why would anyone attack you for them??

2 people can sit near 1 iPad and use OGS review.
THAT situation should be emulated. But 2 people would be connected by internet instead of by using same iPad.
Forced sync of which move both people are looking at should be enabled. Just that. Simple. No additional interface abilities are needed.

1 Like

I’m not so sure that allowing all is the way to follow and that’s why i wrote “research”.
Just take an informal meeting around a table, not everyone want everybody to talk at the same time. Maybe because online we can stock more the information of each we can have more simultaneous talks but i am not sure this is the most efficient, just imagine you may have to study afterwards (rewinding) and may have difficulties even to produce some coherent participation. Especially because it’s not only collecting all, but it’s interacting too. Listening, reacting… So a few frames on the interactions may give better chance to quality produced collectively. Just some hypothesis.
Don’t think i want to stay as it works till now, i 'm sure we could have a much better tool.

I m wondering if by any chance (and because of past covid and stay at home work and such) some new debates tools were developed to help communicate with some better efficiency. Wondering because i wasn’t involved myself in staying at home and comunicate, living in some safe haven.

1 Like

It beats me. I think my opinions are pretty good, too. But I’ve been attacked often here, sometimes bitterly so,

1 Like

Me, too. Then I’d both teach and learn here, not just play.

2 Likes