Skip to content
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

[FR]: XMPP (RFC 6120), PubSub (XEP-0060) and Atom Over XMPP (RFC 4287) #1548

Open
sjehuda opened this issue Dec 9, 2024 · 6 comments
Open
Assignees
Labels
Status-Not-Enough-Data Ticket creator must append more precise info to the ticket. Type-Enhancement This is request for brand new feature.

Comments

@sjehuda
Copy link

sjehuda commented Dec 9, 2024

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 RSS Guard 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

P.S.

The proof of concept script has been developed into an HTTP gateway.
I encourage you to view the video demonstration (length 7:44).

Cheers,
Schimon

@sjehuda sjehuda added the Type-Enhancement This is request for brand new feature. label Dec 9, 2024
@martinrotter
Copy link
Owner

That would be a great feature to have Newsboat to utilize XMPP PubSub natively!

You mean RSS Guard, right. Right?

So, I understand that this is some rather-proof-of-conceptual thing and is in fact not actively used by any audience, right? If so, it is likely waste of my time (or anyone's time) implementing client-side RSS Guard plugin for this? I may be wrong. Perhaps indicate clearly and very specifically what exactly needs to be implemented for RSS Guard etc.

@martinrotter martinrotter added the Status-Not-Enough-Data Ticket creator must append more precise info to the ticket. label Dec 10, 2024
@sjehuda
Copy link
Author

sjehuda commented Dec 10, 2024

You mean RSS Guard, right. Right?

Yes, and other syndication projects as well.

Pardon. I will correct the post.

So, I understand that this is some rather-proof-of-conceptual thing and is in fact not actively used by any audience, right?

No. It is being actively used.

The script was a proof-of-concept, instead of asking to actually install a software such as Blasta, Libervia or Movim and attempt to understand how syndication over XMPP work.

The software Rivista XJP is a gateway (XMPP -> HTTP) which produces Atom Syndication Feeds out of XMPP PubSub nodes.

If so, it is likely waste of my time (or anyone's time) implementing client-side RSS Guard plugin for this?

No. It will not be a waste of time.

  1. This is extensively utilized by people over XMPP, particularly on the Movim network.

  2. More people be aware of syndication over XMPP once they see an option for XMPP in their new reader.

I may be wrong. Perhaps indicate clearly and very specifically what exactly needs to be implemented for RSS Guard etc.

In order for RSS Guard to be able to read syndicated content over XMPP, the only things that need to be implemented are:

  1. Ability to connect to an XMPP account.
  2. Support XMPP specification XEP-0060: Publish-Subscribe to retrieve the data.
  3. Parse the data (in XMPP everything is XML).

Note: Support for "roster" might be necessary, but probably not, unless it is requirement to be able to subscribe to nodes.

The video, which I have linked to, should explain everything.

@martinrotter
Copy link
Owner

RSS Guard is Qt application, so something like https://github.com/qxmpp-project/qxmpp could be integrated into RSS Guard and used?

Maybe I am asking wrong but I hardly have ever used XMPP/Jabber and only know it very very rougly. Technicaly not at all.

So there is is "special" xmpp server/service ready to use, which is able to send me "special" xmpp messages which will include pieces of arbitrary (ATOM in this case) syndication format?

@sjehuda
Copy link
Author

sjehuda commented Dec 10, 2024

RSS Guard is Qt application, so something like https://github.com/qxmpp-project/qxmpp could be integrated into RSS Guard and used?

Yes. And as I recall, Squawk and LeechCraft utilize qxmpp.

Maybe I am asking wrong but I hardly have ever used XMPP/Jabber and only know it very very rougly. Technicaly not at all.

So there is is "special" xmpp server/service ready to use, which is able to send me "special" xmpp messages which will include pieces of arbitrary (ATOM in this case) syndication format?

Thankfully, due to the prevalency of the OMEMO encryption system, which requires PubSub (XEP-0060), over 99% of XMPP servers provide PubSub nodes.

The PubSub nodes that I refer to are of specification XEP-0163: Personal Eventing Protocol which is in fact an implementation of XEP-0060: Publish-Subscribe for XMPP accounts.

@martinrotter
Copy link
Owner

Wait, so, pretend that I am an idiot and want to implement this.

I take qxmpp, I see it has "client" class which has "connect" method and also has "messageReceived" signal. So simply listening for some "special" messages would be enough? Do you have any on-line xmpp server for me which sends these "ATOM" messages for me, so that I could actually implement and properly test the solution?

@sjehuda
Copy link
Author

sjehuda commented Dec 10, 2024

I take qxmpp, I see it has "client" class which has "connect" method and also has "messageReceived" signal. So simply listening for some "special" messages would be enough?

No. PubSub is not a message.

Message is of the XMPP standard (RFC 6120).

What RSS Guard needs is the ability to view (and subscribe) to PubSub nodes, hence I have mentioned that only support for XEP-0060 is required.

Please. Join to the group chat JDev and Squawk as there are people who are more knowledgeable and of understanding than me.

Do you have any on-line xmpp server for me which sends these "ATOM" messages for me, so that I could actually implement and properly test the solution?

Yes. There are many servers, most of the activity is communicated by Libervia and Movim.

You can find node items that are formatted as Atom Over XMPP on any Movim server.

I have listed several nodes from several servers at https://git.xmpp-it.net/sch/Rivista#viewing-pubsub

Typically, Jabber IDs (JID) that have the sign AT (@) are of type account (e.g. goffi%40goffi.org) and utilize XEP-0163, and JIDs without sign AT (@) are of type service of type pubsub (e.g. pubsub.movim.eu).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status-Not-Enough-Data Ticket creator must append more precise info to the ticket. Type-Enhancement This is request for brand new feature.
Projects
None yet
Development

No branches or pull requests

2 participants