XSF Discussion - 2019-06-29


  1. jonas’

    can someone with URI knowledge tell me whether: `xmpp://xmpp-public.sotecware.net:5222/sotecware.net` would be an accurate way to write "Connect to sotecware.net using xmpp-public.sotecware.net on port 5222, skipping SRV record resolution`?

  2. jonas’

    can someone with URI knowledge tell me whether: `xmpp://xmpp-public.sotecware.net:5222/sotecware.net` would be an accurate way to write "Connect to sotecware.net using xmpp-public.sotecware.net on port 5222, skipping SRV record resolution"?

  3. jonas’

    it does not need to be generally understood that it means that, just whether the basic URI semantics are sane

  4. moparisthebest

    jonas’: you don't need the domain if you have a jid to get it from

  5. jonas’

    moparisthebest, depends on the use-case

  6. moparisthebest

    You probably need a jid regardless don't you?

  7. jonas’

    I want this for monitoring purposes, so I might want to monitor the up-ness and certificates and stuff of all possible server endpoints for a given domain

  8. jonas’

    yes, the jid is behind the last ``/``

  9. jonas’

    it’s just a domain, but still a JID :)

  10. jonas’

    (in the specific case I’m thinking about, the client would never even authenticate, so there’s no need for a valid localpart)

  11. jonas’

    I’m trying to coerce this into a single URI/URL because I only have a single string to pass to stuff.

  12. Zash

    I have a thing that accepts domain@host:port (not an URI/URL)

  13. moparisthebest

    Ah ok, I made up my own similarish url syntax for this and ralphm yelled at me lol https://github.com/moparisthebest/jDnsProxy/blob/master/xmpp-dox/jdnsproxy.xmpp.resolver.properties#L27

  14. moparisthebest

    I also needed a single string

  15. ralphm

    🤣

  16. jonas’

    so maybe ralphm can now also yell at me?

  17. ralphm

    Yelling As A Service?

  18. waqas

    Yaas

  19. Zash

    Real-Time Instant Yelling Service

  20. ralphm

    In general, yes, if it looks like a URI, just make it one. Especially if you're using existing URI schemes.

  21. ralphm

    Also, I generally don't like it when people use new schemes in production without having IANA registering it first.

  22. ralphm

    jonas’: but specifically, no, you can't bypass SRV like that. It is explicitly forbidden: https://tools.ietf.org/html/rfc5122#section-5.2

  23. waqas

    ralphm: That's pretty widespread these days, particularly on mobile platforms where apps register their own URL schemes. Almost all modern OS vendors allow apps to define these.

  24. ralphm

    waqas: doesn't mean I have to like it

  25. ralphm

    Or that it is a good idea

  26. waqas

    I have mixed feelings about it. I'm not necessarily fully sold on IANA registry being a registry of all allowed schemes.

  27. waqas

    (the same way I'm not sold on all possible XMPP protocol extensions requiring going through the XSF XEP process, the X for extensibility without relying on central authority is important)

  28. ralphm

    Well, either it is a URI, which requires registration with IANA, or it is a fake.

  29. waqas

    Same for XEPs?

  30. ralphm

    Similarly, without a XEP, you cannot use urn:xmpp as a prefix

  31. waqas

    I'm comfortable with urn:xmpp, and I'd be comfortable with an app using "http:" to always mean the HTTP protocol.

  32. waqas

    But all URL schemes requiring registration is like requiring all namespaces even without the urn:xmpp prefix requiring the same

  33. ralphm

    If you don't use the XSF, you must use your own namespace, e.g. one with a http scheme with an auth part that points to your own domain. Or your own registered URN prefix.

  34. waqas

    It's the registration bit that I'm rejecting

  35. ralphm

    E.g. at Mediamatic, we had namespaces starting with http://mediamatic.nl/ns

  36. Zash

    `xmlns="xmpp:prosody.im/stuff"` :D

  37. ralphm

    waqas: why? URI/URL/URN as concepts are defined by the IETF, the set the rules.

  38. Zash

    Isn't there a DNS tree you can use somewhere? `urn:dns:example.com:whatever` ?

  39. waqas

    Is there a statement from the IETF classifying unregistered as fake?

  40. ralphm

    I haven't considered using xmpp: as a prefix for namespaces. I suppose you can, without auth part like that.

  41. Zash

    ralphm: Should be equivalent to http:// URLs as namespaces as far as anything is concerned, right?

  42. ralphm

    Indeed

  43. ralphm

    But without auth part (//) because xmpp URIs have specific syntax.

  44. Zash

    Tho the original topic was overlap between URLs and configuration syntax.

  45. Zash

    You could spare your sanity and imagine that they're not really UR[LI]s

  46. ralphm

    I think, waqas, you should read RFC 3986 and BCP 35.

  47. ralphm

    Zash: indeed

  48. ralphm

    E.g. by not using an explicit scheme

  49. Zash

    Is there something like vendor prefixes for schemes?

  50. ralphm

    Yes

  51. Zash

    As in, foocorp-thing://magic/syntax

  52. ralphm

    See BCP 35, section 3.8.

  53. ralphm

    Basically reversed domain

  54. ralphm

    Like org.example:

  55. Zash

    `com.foocorp.thing://blah` ?

  56. ralphm

    Also don't use // if it doesn't make sense

  57. Zash

    I distinctly remember that some platform required it. iOS maybe?

  58. Zash

    Leading to weird horrors like `xmpp:///stuff`

  59. waqas

    section 6 of BCP 35 is relevant

  60. ralphm

    That platform is wrong

  61. waqas

    For the most part, platform vendors and app authors have shown little to interest in BCP 35 though :)

  62. ralphm

    Zash: but I guess Apple has more issues like that, e.g. the recent openid connect thing.

  63. ralphm

    waqas: that doesn't mean you shouldn't

  64. waqas

    I mildly equate this to the bazaar ignoring the cathedral except for a few popular occasions :)

  65. ralphm

    I hold some pride in doing it properly.

  66. waqas

    "properly" is up for debate

  67. ralphm

    It is not, though. If you can diverge from standards on a whim, why have them?

  68. Zash

    Anarchy! Chaos! Cats and dogs living together!

  69. waqas

    It would be ridiculous to follow all standards. Much like how we don't actually want clients to follow *all* the XEPs.

  70. ralphm

    There's a reason why we made xmpp extensible, so you can choose to do something else without violating specifications.

  71. waqas

    Indeed, and URI schemes are similarly extensible :)

  72. ralphm

    Yes, when folding its standards.

  73. ralphm

    Of course many people ignore standards

  74. ralphm

    (following)

  75. Zash

    waqas: > (the same way I'm not sold on all possible XMPP protocol extensions requiring going through the XSF XEP process Where did you get this from?

  76. ralphm

    More than sometimes, not following a standard means pain later.

  77. waqas

    I think this is just fundamental disagreement, I disagree with following all possible standards being a requirement. I'm sure in any large pool of standards, I'd consider a significant portion to be inappropriate to implement.

  78. ralphm

    You generally don't have to implement all standards?

  79. waqas

    No, I do not

  80. Zash

    ralphm: "Pain for someone else" ?

  81. ralphm

    If you just follow XMPP Core, you can call yourself an XMPP application.

  82. ralphm

    If you want to use jabber:iq:roster, please follow what's in XMPP IM, though.

  83. waqas

    (technically you can call yourself that even when not following Core fully, which is true for most XMPP software, but I digress)

  84. ralphm

    You can, but you would not be truthful.

  85. waqas

    ralphm: I agree with that! Similar to how I agree followers of HTTP should follow the HTTP specs for the most part!

  86. waqas

    The world is a lie then. Point out any large code base implementing any large spec and I can probably show you it's a lie.

  87. waqas

    But anyway, this is going way offtrack :)

  88. waqas

    I'm cool with central registration being a MAY or SHOULD, but am fundamentally opposed to MUST, particularly for toy, experimental or private use cases, but in general too.

  89. waqas

    A world where MUST was e.g., a legal requirement would be a worst world, IMHO

  90. Zash

    There are usually recommendations for private namespaces and such

  91. waqas

    And people SHOULD follow those when sane :)

  92. ralphm

    I think the text in the specs I linked are to be interpreted mostly as a strong SHOULD, but things will break if you have naming conflicts.

  93. waqas

    Sure, and in various situations that can be an acceptable tradeoff

  94. waqas

    Particularly in situations where anonymity is a requirement. Registration with authority generally translates into breaking anonymity.

  95. ralphm

    Except when it doesn't when later your internal thing became part of a public API and now somebody, usually you, is crying.

  96. waqas

    I imagine that's pretty rare. Most things end up registering when they become big, often turning into de facto standards, and not when they are initially created.

  97. waqas

    I can't recall if this was true for xmpp: too. Did it see usage before it was registered or after?

  98. ralphm

    I don't directly see how anonymity is a factor in choosing a URI scheme, especially if there's a defined way to do private extensions.

  99. ralphm

    No, xmpp didn't exist as such before interacting with IETF.

  100. Zash

    `jabber:` then?

  101. ralphm

    We had to grandfather a bunch of things, and the jabber prefix was indeed wrong.

  102. Zash

    I mean, was there ever a `jabber` URI scheme?

  103. ralphm

    We first changed that to http URIs at jabber.org, eg pubsub, then went on to URNs.

  104. waqas

    I'm curious if all the XMPP proprietary competitors have their protocols registered :)

  105. waqas

    They all have at least one each, that their mobile apps register

  106. ralphm

    You *don't* have to register your proprietary extensions.

  107. ralphm

    However, those can't use the urn:xmpp prefix compliantly.

  108. waqas

    Yep, and my point for URI schemes is that in practice anything not registered via IANA has been fair game for private use. With rare exceptions, the industry as a whole treats things that way.

  109. Zash

    Well, they get to enjoy their time boms then.

  110. waqas

    There are easily more than a single order of magnitude schemes out there in use vs what's in the IANA registry

  111. Zash

    Oh, `jabber` is registered? https://www.iana.org/assignments/uri-schemes/perm/jabber

  112. ralphm

    Yes retroactively

  113. ralphm

    And with all known uses from XEPs and RFCs

  114. ralphm

    Only

  115. Zash

    That's good.

  116. ralphm

    As I said: grandfathered

  117. edhelas

    https://twitter.com/matrixdotorg/status/1144918306211684352

  118. edhelas

    I think we should definitly do some benchmarks between our XMPP servers and Matrix servers on similar features

  119. Zash

    Which "we"?

  120. pep.

    The royal "we"

  121. edhelas

    Zash you and me

  122. Zash

    Lies, damned lies, statistics, benchmarks.