Hey all,
I’ve been tinkering with a Kibitz environment for OGS and I’d like to share a proof of concept.
The problem I want to solve is: OGS has chat channels and game chat, but not really a place to spectate games together.
- If you use the Chat Channels, then you can’t watch games. When you click one of the game previews in the channel, you go away from that chat channel to that Game page.
- That game also has chat, but that chat is tied to that game.
- So when the game is finished, you need to coordinate together to which game to go to next.
I think it could be a lot of fun to have a third type of chat room, a Kibitz room, where you can discuss an ongoing game, share and discuss variations and when it’s done, the users propose the next game to view and discuss. While keeping the current chats and requiring no moving across different screens.
For this I made a prototype.
The Concept
It starts with a menu entry: Community > Kibitz
This brings you to the new Kibitz view, with from left to right:
- Rooms
- Main board
- Secondary board
- Room Chat
Main board
The main board is the game the room is currently watching, and it is shared with everyone in this Kibitz room
Secondary board
The secondary board has two functions:
- preview another game privately
- view and create variations, shared through chat
So the room stays together on one main board, while individual users can still branch off temporarily without disrupting the shared view.
Planned is also a list of created variations, so users can quickly find older variations, as the chat stream moves on.
below: second screen showing a preview of a different game
Proposing a new game to watch.
If a main game is over, or too boring, then you can preview other games. For now this is implemented with the Top 19x19 and the Top 9x9 buttons below main board. If you click one of those it shows up on the Secondary board. (The idea is to have a more elaborate game preview system).
When previewing a game, you can propose a board change with the button below the Secondary board.
When that is pressed:
a big banner appear for all players with the voting buttons “Change board” or “Keep current”. This is similar to how voting on maps work in multiplayer games.
below: a vote in progress (blue banner)
If a majority voted Change board then the new board becomes the new focus.
On the right you see that the chat persists. As a result, the same group of people can keep discussing games, see variations, propose new games to watch, etc.
below: Main game changed, chat persists on the right
Result
I think this approach gives a lot of flexibility for different types of Kibitzing; a hangout place for regulars to chill, a place for tournament owners to put games in the spotlight, a place for teaching games (on the main board).
What you see in the screenshots is mostly functional. It is working on my local copy of the OGS frontend, connected to the OGS backend. That said, this is still a proof of concept, not a finished proposal.
Some parts already work well as a recombination of existing OGS functionality (watching boards, creating variations, having chat channels).
Some other parts need backend support to do properly (voting, room ownership functionality).
I have given a lot of thought about how workflows should be; for example what room owners should be able to do, what happens when you were watching a variation but the main game changes. I worked those things out, I can post the design docs if anyones interested.
Feedback
What I’d like to know from you is:
- Does this model of a persisting chatroom with changing games fit the Kibitz need?
- Does the split between shared Main Board and private Secondary Board make sense?
- Are there use cases for which this approach wouldn’t work?
Next steps
The main thing I wanted to test first is the idea. I think this could work and be cool but obviously this isn’t an easy thing to make.
So the idea is:
- first work this out further as a frontend concept
- then identify what backend support would actually be needed
- and turn that into a concrete requirement list for the dev side
So at this stage I’m mainly interested in whether the overall idea feels worthwhile and the feedback questions above.





