foxcpp / foxcpp/maddy-storage

Message threading

Offen
#8 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Go
Sterne
3
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Message should be grouped into threads based on In-Reply-To, References Message-Id header fields. Message can belong to one or more threads. Storage layer should be able to produce thread tree (each message is linked directly to the message it is replying to) or flattened thread list (just list every message in thread).

Since each message belong to at least one thread and most threads don't have more than one message, we don't want to create a separate thread object for each message. Consider reusing message object as a thread object - each message contains two references - thread root message ID and thread parent message ID.

maddy-storage should support two threading algorithms (ORDEREDSUBJECT and REFERENCES) described in https://datatracker.ietf.org/doc/html/rfc5256. Note that go-imap v2 does not support THREAD extension server-side yet: https://github.com/emersion/go-imap/issues/533

For future JMAP compatibility, we don't merge threads if messages arrive out-of-order as this would require changing message IDs.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, den Kontext des storage backend und die Abschnitte von RFC 5256 zu lesen, in denen ORDEREDSUBJECT- und REFERENCES-Threading beschrieben werden. Identifiziere die beteiligten Message- und Storage-Einstiegspunkte und lege anschließend fest, wie Thread-Bäume und abgeflachte Listen erzeugt werden sollen, wobei die message IDs erhalten bleiben müssen, wenn Nachrichten in ungeordneter Reihenfolge eintreffen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
go
Bereich
backend, databases
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.