-
Notifications
You must be signed in to change notification settings - Fork 345
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Atom Over XMPP: XMPP (RFC 6120), PubSub (XEP-0060) and Atom (RFC 4287) #1483
Comments
Hi, thanks for the suggestion. Does not XMPP require persistent connection to listen for incoming messages? That is not generally something regular PHP is well suited for. What are the benefits compared to WebSub (previously PubSubHubBub)? WebSub is a W3C standard, widely implemented (including Wordpress and Blogger) and apparently uses WebHooks, so it does not require the feed reader to be persistently running. |
Looks like the IETF draft expired: https://datatracker.ietf.org/doc/draft-saintandre-atompub-notify/ |
Thanks for the link! The formal implementation is XEP-0472: Pubsub Social Feed (experimental) which is implemented by Libervia, Movim and Slixfeed. selfoss to receive data from XMPPAtom Over XMPP is incorporating two standards and is implemented very nicely on Movim (XMPP client system based on PHP).
Subscribing to nodes and keeping a persistent connection to listen for incoming stanzas is the preferred fashion to realize "pushing" as intended.
I do not know. selfoss to send data to XMPPAnother benefit that selfoss may have is to populate nodes and by that turning selfoss into a publishing software for XMPP. Storing data on XMPP would be beneficial for people who use XMPP without a feed reader such as selfoss. People who use XMPP will be able to view news aggregated by selfoss to be viewed from their own clients like Movim and Libervia. Use case: I want to share news with friends of my groupchat, so I set selfoss to send news items of a given feed or selected feeds to node |
Please explain. In XMPP, you get notified when you are connected again, including receiving all messages (private and groupchat) from when you were disconnected. This is a realization:
Another benefit over HTTP would be this: |
Then it would just become pull with more steps.
Unfortunately, the library looks pretty dead and so do other PHP XMPP llibraries. And from the look of it, it actually does not implement XMPP, only Prebind authentication and REST API of OpenFire XMPP server. (Prebind, from what I managed to find, is an authentication method that allows using tokens for successive authentications instead of username/password.)
Right, that was what I assumed. But classic PHP works by running a fresh instance of PHP script for each HTTP request so there are no long lived app processes. Having a persistent connection would require creating a daemon, e.g. using something like ReactPHP or some other similar framework, which would not work everywhere selfoss aims to work (e.g. shared web hosts). We could fall back to polling when daemon is not available but that adds complexity.
In the end, we want to support protocol if it benefits our users. That also require for it to be widely deployed. And WebSub appears to be used https://indieweb.org/WebSub I think it would be nice to support reading data from XMPP to allow following services that do not support Web standards (as appears to be the case with Movim) but it sounds like a lot of work so I probably will not implement it unless there is someone actually interested in using it in selfoss. We would need to find a maintained XMPP library for PHP or write our own. Apparently, the one used by movim is abandoned and only continues to be developed internally. It is also pretty big, uses a global function for sending messages (which would make it annoying to integrate and test), and uses an incompatible license. For writing our own, it is not clear what would the minimal set of XEPs we would need to support is.
Again, this is something that would be a lot of work to implement and maintain, and it is not clear anyone would actually benefit from it. XMPP is unfortunately pretty niche nowadays.
Yeah, that would work, even if it not the preferred method, as you mentioned.
I would argue you would still need to store the JID, and there is not much difference between that and a password if the server is using best practices for passwords (strong unique password for each consumer, easy to revoke) but I acknowledge that is not always the case. |
To follow this important request :) |
@Neustradamus I also think that it is important request, yet @jtojnar has good arguments which put me in an embarrassing position. I think we first have to find a solution for a generic and standalone php library for XMPP, similar in nature to slixmpp which would provide at least a basic set of commonly utilized XEPs. P.S. Thinking of it and the common use of PHP, an XMPP library for PHP would definitely make an opportunity to showcase a set of sample interactive HTML interfaces. |
Greetings!
My name is Schimon and I am a champion of Syndication and XMPP.
For those of you who are not famiiliar, XMPP (previously Jabber) is a messaging system with open standards. XMPP is extensible via XEP.
I will discuss about XEP-0060: Publish-Subscribe.
Almost a couple of decades ago, a discussion arose about incorporating Atom (RFC 4287) with XMPP PubSub, which is really easy because both are XML data.
One of the major benefits of utilizing PubSub is native Push Notifications (yes, that technique was much before HTML5) which do not require HTTP pulling.
That would be a great feature to have selfoss to utilize XMPP PubSub natively!
See a proof of concept I have made to parse PubSub nodes as Atom Syndication Format.
https://datatracker.ietf.org/meeting/66/materials/slides-66-atompub-1.pdf
https://codeberg.org/poezio/slixmpp/issues/3526
Cheers,
Schimon
The text was updated successfully, but these errors were encountered: