getnikola / plugins

Extra plugins for Nikola
https://plugins.getnikola.com/
MIT License
56 stars 92 forks source link

XMPP: Post to PubSub #435

Closed sjehuda closed 4 months ago

sjehuda commented 4 months ago

Requested Feature: (short description) I want to publish my Nikola contents over PubSub node items on my XMPP server.

Related Area: (eg. tasks, compilers, configuration, templates…) Templates as Atom Syndication Format (RFC 4287)

Do you want to contribute this yourself as a pull request? (don’t worry about it if you don’t want to/can’t — someone else can take care of it)

Does this feature affect backwards compatibility? If yes, in what way? No

Rationale and full description:

In XMPP, using PubSub(1) (XEP-0060), it is possible to store posts as Atom Syndication(2) entries into XMPP(3).

There are several XMPP extensions that apply it, namely XEP-0227 (4) and XEP-0472 (5) which make node xmpp:microblog:0 as a common choice to manage news for client accounts (e.g. blog@getnikola.com), yet a component account (e.g. pubsub.getnikola.com) may use all of its nodes for this purpose.

pubsub.getnikola.com/
|
|-- updates/
    |-- Sombre
     `-- Varied
|-- releases/
 `-- events/
pubsub service/
|
|-- node/
    |-- item
     `-- item
|-- node/
 `-- node/

I have made a script that realizes viewing PubSub node items as Atom XML feeds over HTTP.

  1. XEP-0060: Publish-Subscribe
  2. RFC 4287: The Atom Syndication Format
  3. Atom Over XMPP
  4. XEP-0277: Microblogging over XMPP
  5. XEP-0472: Pubsub Social Feed
  6. PubSub Over HTTP

Why should it be added to Nikola? Because it would allow everyone - even those who do not have their own servers nor websites - to publish using Nikola.

Kwpolska commented 4 months ago
  1. Nikola is a blog generator. The primary purpose of Nikola is generating a website. Nikola is not going to start generating some obscure XMPP thing now.
  2. Speaking of obscure XMPP things, nobody uses XMPP these days. The list of users who would be interested in an XMPP thing would be very low and not worth a full overhaul of Nikola.
  3. I can see that you spammed at least 15 other repositories with the same issue, which means you are not genuinely interested in having Nikola do this.
sjehuda commented 4 months ago

Nikola is a blog generator. The primary purpose of Nikola is generating a website. Nikola is not going to start generating some obscure XMPP thing now.

I understand that, yet, supporting PubSub is really supporting Atom and RSS. It is an XML form which is sent to an XMPP server.

Atom is an XML form sent over HTTP. PubSub is an XML form sent over XMPP.

The script I have made shows how little effort is required to utilize PubSub.

Speaking of obscure XMPP things, nobody uses XMPP these days. The list of users who would be interested in an XMPP thing would be very low and not worth a full overhaul of Nikola.

XMPP is used more and more, even today. If you would check Movim, you will see the potential the PubSub system has to offer.

I can see that you spammed at least 15 other repositories with the same issue, which means you are not genuinely interested in having Nikola do this.

  1. I am not hiding my activity, even though I can.
  2. I am interested in every CMS to do this.
  3. It would make a wonders to sharing textual articles and posts.

Of note:

  1. I have wrote that I am willing to contribute code.
  2. The code in clause 6 is written in the same language of this project.

Hence, I do not understand why to reject this idea and also mark it as spam.


Please reconsider.

Thank you.

Kwpolska commented 4 months ago

I understand that, yet, supporting PubSub is really supporting Atom and RSS. It is an XML form which is sent to an XMPP server.

Atom is an XML form sent over HTTP. PubSub is an XML form sent over XMPP.

Okay. Nikola supports Atom and RSS since time immemorial. What exactly is required?

The script I have made shows how little effort is required to utilize PubSub.

The issue you linked to is titled Documentation: Add examples of using slixmpp as an object running in the background. This code seems like a PubSub->Atom translator, and I’m not sure how it would be relevant to Nikola, and I’m still not sure what the requested feature is.

Nikola is not something you actually run on a server. Nikola is a static site generator that you can run on any computer (most likely your workstation, not a server), and the output can be deployed anywhere. Nikola blogs can be served by GitHub Pages, nginx/apache running on a $5 VPS, or a shared web hosting with FTP as the sole upload interface (party like it’s 2005). The audience of Nikola are people who are capable of and comfortable with running a command-line Python program somewhere and distributing its output around. Is the feature you want to add compatible with static site generators?

XMPP is used more and more, even today.

[citation needed]


Neither of your two comments actually describes what feature you want added. Nikola has a plugin-based model of development, so if your idea is compatible with a static site generators, you should first start by implementing it as a plugin and contributing it to getnikola/plugins. Adding a new complex core feature is something we want to limit. We are open to accepting pull requests that add extensibility points required by your plugin if some are required.

sjehuda commented 4 months ago

This code seems like a PubSub->Atom translator, and I’m not sure how it would be relevant to Nikola, and I’m still not sure what the requested feature is.

It can work both ways, reading from PubSub and sending to PubSub.

I used this example because it seems to be complicated to get data from XMPP, which is really easy.

Nikola is not something you actually run on a server. Nikola is a static site generator that you can run on any computer (most likely your workstation, not a server).

It is even confirmed to run successfully on an RPI3. I know, yet having posts on an XMPP account which is associated with someone might be nicer sometimes, and pubsub allows to make posts viewable to some and hidden to others.

Is the feature you want to add compatible with static site generators?

Yes, definitely.

Reasons:

I will look into the plugin system and offer a plugin.

Once I offer a plugin, I will also make a screencast which would clarify what this is all about.

I hope you would like it.

Thank you for the elaboration!

[citation needed]

Check out the Sopranica project.

sjehuda commented 4 months ago

May I move this issue to /getnikola/plugins ?

Kwpolska commented 4 months ago

Moved.

sjehuda commented 4 months ago

Thank you!