Frequently there is a need to communicate with People with same interests or located in the same area. Examples:
a hotel guest might want to discover groups of the hotel
at some event men want to organize Minyan and want a way to agree on time and place
a lost child or item was found and want to announce that in “Lost and Found” group of the area
a person wants to discuss some public event with like-minders
For matter of the Machon Tal Term Project Success, the POC would allow flow below:
A person creates “stored query” with properties below:
He reviews results and sees summary of Messages found, grouped by topic name and number of unique posters (implying activity) and wants to subscribe to certain topic:
he creates folder with “chat view” Memo with the topic id, and exports it
the Memo automatically creates “stored query” for Memos of kind:Message, date not older than week ago and that topic id
any message Memo he creates will contain same topic id, and get consumed by other subscribers
he might want to enable popup notification on every incoming message
What essentially happens here, that each participant maintain his own “view” of chat, based on local and incoming posts. Should he ever decide to leave the chat “e.g. dereference the group”, copy of all his messages will remain on all participants “exported storage”.
The scenario above might be extended to cover more cases like these:
ignore someone that posts offensive content
send message about group details to someone (“Invite them”)
propose “group” icon that allows voting. The one with most votes is shown as “group” logo
There might be need to for private Memos exchange between two or more parties. In this flow, the sites are essentially “notifying” others what changes they are suggested to do in their own copy of the folder:
An public/private keypair is created by each participant of the folder
For each recipient, the keypair is encrypted with his public key and Memo of kind “KeyPair” and recipient id is created
Recipients has active subscription to all Memos of kind “KeyPair” and recipient equals his id
recipient receives the “KeyPair” Memo, decrypts it and stores in his keyring.
recipient subscribes to all Memo of kind “Encrypted” and id=hashed keyring, instructs the system to put incoming Memos into speicific folder.
At this point the folder of each participant is empty, all participants have their own empty folder and they are subscribed to each other on suggested updates to the folder. Thus every change to the folder content has two flows below:
For change initiator:
Local Memo is “encrypted” and exported as blob
Reference to the blob it is added to the local folder. The epoch is bumped, folder is encrypted using the keyring and exported
For change recipients
Blob of kind “Encrypted” and id=hashed arrives
Assert Epoch is one-next than the currently known one, abort if not
unpack the blob, replace content (e.g. references) of the existing folder