Cheers,

If I am interpreting XEP-0313 correctly, for person-to-person use case,
archive is obtained by inquiring the 'current server'. This is usually fine.

However, in case of an external transport component communicating with an
IM network that can provide its own history, there does not seem to be a
viable standardized way to inquire the external component about the
additional history.

tl;dr skip to option 4.

Thought process:
- Option 1: Hack the server's mod_mam to take into account any capabilities
that the external components may advertise. If a component advertises MAM,
request additional history (e.g. 50 results). Merge and sort based on
timestamps[^1].
  - For MAM's Result Set Management-based paging purposes, tracking of
merged results becomes trickier; if I were implementing it, I'd permanently
merge the component-provided archive into main server's archive, along with
timespans that were requested from component (so they can be skipped and
duplicates further avoided).

- Option 2: Try using XEP-0355 (delegation).
  - If I am interpreting the XEP correctly, once the namespace is
delegated, nothing is preventing the main server's internal components from
also responding.
  - Just flipping it on for MAM while leaving server's mod_mam active
initially seems like it might do the trick... except I suspect that the
duplication of the <iq/> dance as well as paging would pretty strongly
confuse the client.

- Option 3: Hack clients to discover and use mod_mam on components.
  - Client separately inquires and tracks paging for the archive from
internal and external component.
  - UI layer handles merging (incl. deduplication and sorting based on
disparate timestamps) and display of the unified history.

- Option 4: Hack clients to discover and use mod_mam on individual
full-JIDs. Hack the component to advertise MAM on individual full -JIDs.
  - Additional cap can be advertised by full-JIDs. (No matter if it's from
a component or not.)
  - Same additional notes as Option 3 (separate archives + UI does merging).
  - XEP 0313 gets updated for the use case of querying full-JIDs.
  - full-JID is intentional (because full-JIDs for person-to-person
communications are already queried about capabilities by clients; and
hypothetically it /could/ be end-user's client supplying the archive,
instead of component doing so), but perhaps bare-JID makes more sense?


Of these that occurred to me, Option 4 seems most logical.


Am I misreading something? Am I missing a XEP? Could I already somehow
write an external component that can supply MAM on the exposed full JIDs
for the clients I use -- Conversations, Gajim -- and without modifying the
server?

Is this a use case that would call for extending 0313 or writing a
completely new XEP?

 Am I missing some potential security issue?


[^1]: Most of this mail makes the assumption that component's timestamp is
the same as server's component, and that the sort order is based solely on
the timestamp.
_______________________________________________
Standards mailing list
Info: http://mail.jabber.org/mailman/listinfo/standards
Unsubscribe: standards-unsubscr...@xmpp.org
_______________________________________________

Reply via email to