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

feature proposal: marker groups #1272

Open
nadavhames opened this issue Mar 2, 2023 · 0 comments
Open

feature proposal: marker groups #1272

nadavhames opened this issue Mar 2, 2023 · 0 comments

Comments

@nadavhames
Copy link

nadavhames commented Mar 2, 2023

Users can create a bookmark/marker/pin group and share it with other accounts. Accessible/controllable via the main navbar.

Usage:
Every user in the marker group can:

  • Place a marker down on any pasuk/sentence inside any sefaria text. (imagine like how you can see everyone's cursors in a shared google doc)
  • The other users of the group can jump to that location and see the marker as it updates in real time.
  • Marker positions are persisted across sessions as long as the group still exists
  • A user can only have one marker per group, when they select something else, the marker gets updated with the new location
  • (Optional) Separately, we can store a list of markers outside of the context of groups so the user can create bookmarks and save their location but not share it with anyone

Why:
This would be an amazing feature to have for anyone learning together (chavruta, chaburas etc...) over long periods of time and/or on video calls. Keeping track of progress between learning sessions or using it as a bookmark to jump back to while briefly checking a commentary or a reference would become trivial and greatly improve the ergonomics of Sefaria in my opinion.

Implementation:

  • This can possibly be done with minimal impact to server performance via p2p with a lib like peerjs or something equivalent. The only limitation in this case is that each client requires a p2p connection to every other user in the group. If groups are limited to a few users though it should be ok. A server endpoint would need to be established to perform p2p handshakes.
  • Another more standard option I would recommend is some form of django websocket server that broadcasts marker location messages to the group over pubsub (even mongo pubsub might work to get easy persistence)
  • This feature is definitely quite achievable as it does not require any sort of conflict resolution algorithm such as operational transformation or crdts that are normally found inside of a google doc. Simple location updates will do because each user 'owns' their own marker state / that state can only be updated by that user

If this interests anyone and would actually be something that if completed would be merged into the project, I would be happy to try and implement this. Although it may take much less time to implement for someone more knowledgeable in the structure of the project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant