Difference between revisions of "Gajim PubSub"

Jump to navigation Jump to search
19 bytes removed ,  01:55, 17 December 2020
m
no edit summary
m
 
m
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
===Abstract===
===Abstract===


XEP-0050 (http://xmpp.org/extensions/xep-0050.html) describes the Ad-Hoc Commands extension to Jabber/XMPP protocol. It allows building user-friendly remote interfaces to XMPP applications like bots or other jabber clients. XEP-0060 (http://xmpp.org/extensions/xep-0060.html) describes a generic protocol to publish data and notify users about new content. Both can be used to create a Jabber-based discussion groups, similar to Usenet. My goal is to implement both protocols in Gajim - Jabber client written in Python, then build a pubsub-based discussion groups service.
XEP-0050 (https://xmpp.org/extensions/xep-0050.html) describes the Ad-Hoc Commands extension to XMPP protocol. It allows building user-friendly remote interfaces to XMPP applications like bots or other XMPP clients. XEP-0060 (https://xmpp.org/extensions/xep-0060.html) describes a generic protocol to publish data and notify users about new content. Both can be used to create an XMPP-based discussion groups, similar to Usenet. My goal is to implement both protocols in Gajim - XMPP client written in Python, then build a pubsub-based discussion groups service.


===Python, xmpppy and Gajim===
===Python, xmpppy and Gajim===


Python is a very easy to use scripting language. It was developed to allow writing software fast and without bugs. I like it very much, so I choosed xmpppy library and Gajim jabber client to work on. xmpppy is very modular jabber library, which was used for example to write transport to irc. Gajim is a relatively new jabber client. Despite that it already has many features, like avatars, file transfer and MUC.
Python is a very easy to use scripting language. It was developed to allow writing software fast and without bugs. I like it very much, so I choosed xmpppy library and Gajim XMPP client to work on. xmpppy is very modular XMPP library, which was used for example to write transport to irc. Gajim is a relatively new XMPP client. Despite that it already has many features, like avatars, file transfer and MUC.


===Discussion groups===
===Discussion groups===


Why yet another protocol? There are already such things like Usenet, mailing lists and web-based forums. Actually, they have one common disadvantage for me: they aren't jabber based ;-). All of them are based on the "pull"-type protocols, that often have no means of notifying the user of new content, user needs to check periodically for it. They also have other drawbacks: doesn't allow to easily browse older messages (mailing lists), are uncomfortable (forums), provide no means to configure service by user (usenet). Besides, PubSub looks like it was written to make a board :-).
Why yet another protocol? There are already such things like Usenet, mailing lists and web-based forums. Actually, they have one common disadvantage for me: they aren't XMPP based ;-). All of them are based on the "pull"-type protocols, that often have no means of notifying the user of new content, user needs to check periodically for it. They also have other drawbacks: doesn't allow to easily browse older messages (mailing lists), are uncomfortable (forums), provide no means to configure service by user (usenet). Besides, PubSub looks like it was written to make a board :-).


The payload of pubsub items are simply an atom entries. Some fields of entry are filled by posting user agent, some by the server (these are marked with asterix (*). Elements used by the implementation are:
The payload of pubsub items are simply an atom entries. Some fields of entry are filled by posting user agent, some by the server (these are marked with asterix (*). Elements used by the implementation are:
Line 49: Line 49:
* (2006.07.07) The GUI works with the wrapper, now i just have to implement all field types and fine-tune the GUI.
* (2006.07.07) The GUI works with the wrapper, now i just have to implement all field types and fine-tune the GUI.
* (2006.07.12) All fields are implemented. Example screenshot: [http://files.exroot.org/dump/screenshot-20060711_1427.png] (65 kB)
* (2006.07.12) All fields are implemented. Example screenshot: [http://files.exroot.org/dump/screenshot-20060711_1427.png] (65 kB)
* (2006.07.15) Gajim does not use disco wrapper class from xmpppy, so I could not use commands class from xmpppy. Now it looks well and works well too... I looked at the [http://www.pubsub.com/docs/pubsub_xmpp_draft.html pubsub.com service description], and at the [http://www.ietf.org/internet-drafts/draft-saintandre-atompub-notify-05.txt atom-over-pubsub proposal], they don't differ too much. Good to know. It is possible to implement both in one interface.
* (2006.07.15) Gajim does not use disco wrapper class from xmpppy, so I could not use commands class from xmpppy. Now it looks well and works well too... I looked at the [http://www.pubsub.com/docs/pubsub_xmpp_draft.html pubsub.com service description], and at the [https://www.ietf.org/internet-drafts/draft-saintandre-atompub-notify-05.txt atom-over-pubsub proposal], they don't differ too much. Good to know. It is possible to implement both in one interface.
* (2006.07.17) Adhoc Commands code finished. Now Atom&PubSub!
* (2006.07.17) Adhoc Commands code finished. Now Atom&PubSub!
* (2006.07.22) My branch of Gajim can now receive notifications from pubsub.com, when logged in to their server. Some GUI glitches left.
* (2006.07.22) My branch of Gajim can now receive notifications from pubsub.com, when logged in to their server. Some GUI glitches left.
* (2006.08.08) The service bot can list groups, subscribe and unsubscribe jids. I will soon publish its code. Gajim can present the list of nodes, now working on (un)subscribing UI. I had small delays, but now everything is ok.
* (2006.08.08) The service bot can list groups, subscribe and unsubscribe jids. I will soon publish its code. Gajim can present the list of nodes, now working on (un)subscribing UI. I had small delays, but now everything is ok.
* (2006.08.19) The service agent works, Gajim allows to send messages and receive them (actually as single messages, there's now special gui for now - this means that after subscribing to a node using gajim user can get messages using any jabber client capable of displaying messages with subjects). I had some delays due to family affairs, but now it is done! Now I'm going to finish the data forms wrapper. After that I'll start extending groups service, a post-SoC effect :-).
* (2006.08.19) The service agent works, Gajim allows to send messages and receive them (actually as single messages, there's now special gui for now - this means that after subscribing to a node using gajim user can get messages using any XMPP client capable of displaying messages with subjects). I had some delays due to family affairs, but now it is done! Now I'm going to finish the data forms wrapper. After that I'll start extending groups service, a post-SoC effect :-).


[[Category:Summer of Code 2006]]
[[Category:Summer of Code 2006]]
216

edits

Navigation menu