gematik / api-ti-messenger

API specification for gematik's TI-Messenger - a messaging standard, which will enable healthcare personnel in the German healthcare sector to communicate interoperable via DSGVO-conform messaging-services. The TI-Messenger builds on matrix, the open standard for interoperable, decentralised, real-time communication over IP.
Other
45 stars 8 forks source link

Client: Archivierungspflicht im Zusammenspiel mit Kick & Ban #214

Closed mlangguth closed 2 months ago

mlangguth commented 1 year ago

Hallo,

gemäß Client-Spec Kap. 5.4.15 "MUSS der TI-Messenger-Client sicherstellen, dass Chatverläufe aus dem TI-Messenger-Client extrahiert werden können,". Wenn der User aber aktiv aus dem Raum entfernt wurde (kick), hat der User und damit sein TIM-Client keinen Zugriff mehr auf die Events des Raums. Möglicherweise hält der Client noch lokale Kopien (eines Teils) der Raumevent - möglicherweise diese TIM-Client-Session aber nicht. Wie soll der TIM-Client dann sicherstellen, dass Chatverläufe an denen der User teilgenommen hat, extrahier werden können?

mlangguth commented 1 year ago

Möglicherweise habe ich die Antwort selbst gefunden. Immer diese Newbies 😉. Gerne bestätigen, ob ich richtig liege:

Nach eine "/leave" hat der User weiterhin das Recht die Events des Raums abzurufen, bis zu dem Zeitpunkt, an dem er den Raum verlassen hatte. Die Events werden bei /sync weiterhin an den Client geliefert. Er mit "/forget" wird der Raum aus der Historie des Clients gelöscht, die Events dieses Raums werden dann auch nicht mehr mit einem "/sync" geliefert.

Richtig?

Vermutlich bin ich darüber gestolpert, dass "meine" matrix-clients (elements und nheko) beim Verlassen eines Raums auch immer gleich ein forget auslösen. Zumindest verschwinden Raume mit status "leave" durch Verlassen oder Kick direkt aus der Raumliste des Clients...

benkuly commented 1 year ago

Die /forget Funktion ist leider sehr fehlerhaft spezifiziert in Matrix. Sagen wir mal, Räume werden erst lokal gelöscht und vergessen, wenn der Nutzer dies explizit auslöst. Dann bekommen alle anderen Clients dieses Auslösen nicht mit. Der sync bietet keine Funktionalität, diese Info an andere Clients weiterzuleiten. Deshalb vergessen die meisten Matrix-Clients bei einem /leave den Raum sofort (oder nach einem Neustart). matrix-docker-ansible-deploy hat sogar per default eingestellt, dass ein /leave zu einem automatischen /forget auf dem synapse-Server führt.

mlangguth commented 1 year ago

Danke für die Info. Hm. Was machen wir dann mit der Notwendigkeit der Archivierungsfunktion auch nach /leave (durch eigenes Verlassen oder Kick)? Haben wir da noch ein zu lösendes Problem?

Johennes commented 2 months ago

matrix-docker-ansible-deploy hat sogar per default eingestellt, dass ein /leave zu einem automatischen /forget auf dem synapse-Server führt.

Ich glaube der Hauptgrund ist eventuell eher die Wirtschaftlichkeit als die UX?

Hm. Was machen wir dann mit der Notwendigkeit der Archivierungsfunktion auch nach /leave (durch eigenes Verlassen oder Kick)?

Die aktuelle Afo interpretiere ich so, dass man Chatverläufe, die man am Client einsehen kann auch exportieren können MUSS. Daraus folgt meiner Meinung nach nicht, dass Chatverläufe auch über das Verlassen eines Raumes hinaus am Client vorgehalten werden müssen denn sonst wäre der Client selbst quasi das Archivsystem.

Wir werden uns demnächst mit dem Thema Bots befassen, so dass ich erwarten würde, dass der Anschluss von Archivierungssystemen in der Spezifikation noch weiter konkretisiert wird.

mlangguth commented 1 month ago

Danke. Wir werden es nun mit einer expliziten Unterscheidung zwischen /leave und /forget umsetzen, damit die Inhalte der Räume, an denen man einmal teilgenommen hat aber aktuell nicht weiter teilnehmen will (oder darf) für den Nutzer erhalten bleiben.