Hi Fannys!
On 12/16/23 04:06, Fannys wrote:
As I said in the @xsf room the problem with this XEP
is that the author
is convinced that this is the one answer to everything and assumes a
*lot* of stuff to get there. And besides the title obviously that is
obvious in a few other places.
To try to quickly summarize, we need a lot of info to connect to XMPP
servers, and need to get it in very specific (secure) ways. I've
thought about this a lot over the years, and (very much thanks to your
and other's feedback) tried to explain the reason for every decision. I
am absolutely not married to one solution, but alternatives need to
accomplish the same goals. "I don't like this" isn't helpful without an
alternative proposal that can actually be considered.
Specifically:
- It calls SRV records as legacy which is a pretty big departure from
the status quo.
For the foreseeable future you will need to
maintain legacy SRV
records in addition to this file
Yes, because this document explicitly deprecates SRV records (while
saying they need to be supported for the forseeable future).
- It effectively makes HTTP a hard requirement for all
clients and
servers on the network raising complexity significantly.
HTTPS already is a hard requirement, with POSH, with HTTP Upload which
is currently the only way to share files in MUCs and with multiple
clients / offline clients, and, for most servers, the way they get
certificates from letsencrypt. HTTPS is also a well established, fully
open protocol with many independent implementations exactly like XMPP, I
see no reason to avoid it. XMPP relies on many other standards, just as
good or bad (depending on your POV), like DNS, IP, TCP, TLS, XML etc etc.
- Recommends that everything runs through port 443
which is in itself
questionable for this.
Because it's most likely to work through real-world firewalls in
real-world networks, what's questionable about this?
- Also it introduces a hard requirement for a JSON
parser in all clients
and servers which is another point that raises complexity.
Again, a JSON parser is already a hard requirement due to POSH. I
addressed further reasons I thought this was the best choice in the
Rationale
https://www.moparisthebest.com/xeps/host-meta-2.html#rationale-hm-json ,
but, this is not an absolute hill for me to die on. If the consensus is
that XML is better here, I'm not opposed, but then it should be the
XMPP-subset of XML so that we can actually use the same parser, and
don't introduce the real security risk of requiring an XML parser that
can parse not-XMPP-XML (just one real world example of this
vulnerability in the wild is
https://prosody.im/security/advisory_20220113/ ).
Please note this would introduce the following (imho, downsides):
1. we could not use host-meta.xml as that requires a not-XMPP-subset-XML
parser supporting comments etc etc
2. that means an extra https request when trying to fetch host-meta-2
along with legacy methods
3. so it'd require a new document definition, for a quick reference, it
would look very similar to HACX
https://xmpp.org/extensions/inbox/hacx.html#example-1
And I think the discussion about these items
individually should have
happened before. Especially since from the discussion in @xsf it seems
that some of the alternatives like DNS were rejected on subjective
opinions of the author.
I actually discussed this in xsf@ 21 months!!!! (damn I'm slow...)
before submitting this ProtoXEP
https://logs.xmpp.org/xsf/2022-03-17#2022-03-17-ead56d61d395a6b9
I hopefully explained my rationale re: DNS well
https://www.moparisthebest.com/xeps/host-meta-2.html#rationale-dns but
please if you disagree and/or have alternatives do share.
My opinion is that HTTP and JSON shouldn't be
requirements and i don't
plan to use this XEP anywhere even if it gets voted in. We already have
problems with ports and everything assuming HTTP and I don't want the
problem to be worse. Plus I don't want the complexity at all.
So to summarize my current thoughts:
* I think HTTPS is likely to be a hard requirement for this, at least I
can't think of an alternative that can accomplish the same goals
* JSON is *not* a hard requirement, and could be replaced, but has the
downsides I layed out above and in the rationale
Fannys
I very much appreciate the detailed feedback, thank you!