210

This is a request for the SO chat system to have an XMPP interface.

The whole idea of a chat system is to bring people together, and a key way of doing that is to allow people to access the system using more than one method. Right now there's a web interface, but it's limited to being a web interface. XMPP is a standard mechanism for real-time presence and messaging, intended exactly for this purpose.

3
  • See also: IRC access for the chat? Commented Aug 5, 2010 at 14:43
  • Somewhat related: Please add XMPP (Jabber/GTalk) notifications in addition to the RSS feeds
    – Flow
    Commented Dec 16, 2012 at 16:43
  • 4
    This is old, I know, but I agree. I think it's very important to implement some sort of external interface (be it XMPP, IRC, etc.). I'm a mod over at Tor.SE, and I always feel bad trying to push the chat when I have no desire to hang out in it myself since Ihave to keep a browser open (which of course makes it even worse if I'm on my phone).
    – user188152
    Commented Nov 8, 2014 at 21:20

5 Answers 5

62

UPDATE 2012-08-27: I wasn't able to keep up with this project and it stagnated... with multiple people interested I migrated the project to GitHub. However, in the 1+ years this project wasn't updated, it no longer works :-( as it stands, sending messages through XMPP works still, but receiving messages does not. (I remember balpha predicted this, too) Anyone who wants to help is welcome to!

UPDATE 2010-11-14: My XMPP Bridge now has write support, albeit very crudely built. In addition, I just got the user list partially working, rich text messages now work almost flawlessly and the code is fairly stable. It was running for almosta whole week, 24 hours a day last week. (I forgot what finally crashed it, probably a message by radp, he's always causing trouble)

Next goals are to make the user list work and improve authentication, because right now it's very kludgey and poorly documented.

How cool is that?


UPDATE 2010-10-29: I now have very, very, very basic XMPP support working, written in Ruby as an XMPP component. The code can be checked out from http://trac.sitepalette.com/soxmpp/browser/trunk and I am documenting the progress in the Trac wiki.

At the moment there is no write support but I have ideas on that. Only two rooms work, "The Tavern" (because I love that room) and the XMPP Room itself. To try it out, you'll need an XMPP server of your own which you can add a component to. After I have the code a bit more stable and functional, I'll fire it up and keep it running on my own XMPP server, and post the address of that server here (and in the chat and on the wiki)

For the most up-to-the-minute info on this project, the XMPP Room is the place to be.

Happy Friday

Happy Friday!


I'm going to take a crack at this over the weekend, using the methods I outlined in the comment to Jeff's answer. I'll update this answer with progress as I go, and I've created an XMPP chat room to test with and discuss issues/progress/etc.

Wish me luck! :-)

9
  • 4
    Cool! Let me know if I can be of any help. Commented Sep 5, 2010 at 8:25
  • @Greg: Done any write support yet? :-D Commented Oct 29, 2010 at 21:57
  • Is the code still available somewhere? Perhaps on BitBucket or GitHub? Commented Oct 12, 2011 at 12:51
  • 2
    @IvanVučica: Yes -- I fixed the links in the above post. The code is available in subversion and the Trac repo is still up. I haven't maintained the code in a while but do intend to pick it up at some point. In the meantime, feel free to hack away and send any improvements back t me! Commented Oct 12, 2011 at 13:14
  • The link 404's :-(
    – nanofarad
    Commented Aug 9, 2012 at 17:11
  • 1
    @TheUnhandledException Github would be perfect :)
    – Flow
    Commented Aug 14, 2012 at 12:56
  • @ObsessiveFOSS Good news: Project is on GitHub. bad news: it no longer works :-( Commented Aug 27, 2012 at 22:11
  • @Flow: See above Commented Aug 27, 2012 at 22:11
  • hello! does your messanger work now? where can I find it, please :) Commented Jul 26, 2013 at 10:37
7

Six years after the initial post (2016) and five years after the SOXMPP project, I've decided to develop one myself.

It's based on the SleekXMPP and ChatExchange Python libraries, and it currently only supports servicing one room and one stack/XMPP user per process.

I've posted more about XMPPExchange on Stack Apps, and if you'd like to just jump into GitHub, check the code and installation steps here.

2
  • I'd like to state that SOXMPP was an XMPP server while XMPPExchange is a client.
    – ave
    Commented May 23, 2017 at 18:21
  • @PhaniRithvij, apologies. I thoroughly checked the URLs provided and found that the OP had linked to: gitlab.com/aoz/XMPPExchange (which is 404). The new URL: gitlab.com/a/XMPPExchange is buried a few links deep. --- Often it's best to explain in a more detailed "edit reason" comment than to make the reviewers search for support for the edit. This appeared like an attempt to promote a different author's work when the old URL still works; and the new URL hasn't been updated in as many years too.
    – Rob
    Commented Nov 29, 2022 at 7:48
5

I am working on an XMPP-to-Google Chat bidirectional pipe.

It is still a work in progress, but I just programmatically drive a Firefox browser that's rendered in Xvfb with Selenium. Then screen-scrape it. It's here and is not fully functional yet, but it is a work in progress.

The passing to another protocol thing I'm trying to set up is to be pretty modular.

In my case it's so I can have Empathy open and have a Python pipe a room to me. My responses are posted back as me.

User lists and what-not will be searchable with commands sent to the parser instead of a separate UI component.

-2

I don't know if there is any work being done on this by Stack Exchange developers, but if there is, why not look at building on top of Matrix? Similar to XMPP, it is an open communications protocol and federated. I do believe however that Matrix is more widely used and has wider comparability due to the way it is structured. I haven't spent any time in the XMPP world so I don't know how true it is, but it may be something that SE may want to look into.

1
  • The more fundamental issue is the lack of a chat API - the matrix side is likely "Easy" - SE chat bridges essentially end up scraping the chat page in various ways
    – Journeyman Geek Mod
    Commented Feb 26, 2022 at 10:49
-20

How would XMPP handle authentication?

Reading is no problem, but to write, we need to see that you hold a valid cookie on the target site with +20 reputation.

(and we have no idea what your username or password is, since that's handled through your OpenID provider.)

9
  • 19
    Easy; add a field in the user profile for the user's XMPP identifier. Unlike IRC, identity in XMPP is not anarchy, and users can choose an XMPP host such that they can be sure others can't impersonate them. Commented Jul 17, 2010 at 2:20
  • @greg there is already a field in the user profile for their OpenID identifier -- that's what needs to work here. If it can't, this is a non-starter. Commented Jul 17, 2010 at 4:49
  • 74
    You're dismissing this as a non-starter too quickly. If there were an XMPP interface, then everything else would work today just as it already does, including the one-click OpenID authentication. If a user wants to set up XMPP, then they would have to fill in their XMPP identifier in their profile. This is exactly the same as if they want email to work - you can't email to an OpenID, so the user has to enter their email address. Commented Jul 17, 2010 at 5:22
  • 18
    I'm with Greg on this. You already support multiple OpenIDs, and you ask me for my email address even though you don't need it. XMPP IDs are basically the same as emails (in fact, in my case they ARE the same, but nevermind that) and no less valid as an identifier than OpenID...
    – Jaykul
    Commented Aug 6, 2010 at 15:39
  • 3
    @Jeff, this could be done in a variety of ways. XMPP supports components which could authenticate the user first, and then allow the user to chat. This could be like a bot -- when you join the chat, the component emails you a link to a web interface where you log in, and that sends a token to the component. I'm thinking of writing something like that this weekend; I've toyed with XMPP components before. Commented Sep 1, 2010 at 21:46
  • 4
    @Greg: FWIW, even in IRC identity is not anarchy: the protocol allows specifying a password with your chosen nick and it's up to the server how to handle that. The tradition is to allow unauthenticated users and then use NickServ to identify known users, but there's nothing that says you can't refuse unauthed connections and prevent changing nicks.
    – Gnome
    Commented Oct 27, 2010 at 3:10
  • 14
    Sorry Jeff, -1 now that I have XMPP write support working. It handles authentication by the user sending the fkey and cookie to the chat Commented Nov 14, 2010 at 21:36
  • @TheUnhandledException Does that seem like a big security issue with everyone able to see your chat login details or am I misunderstanding your comment about sending the fkey and cookie to the chat? Commented Aug 7 at 7:46
  • I have long since abandoned this project (last work I did was 14 years ago!) but as I remember the transport would intercept an XMPP message with the fkey and cookie and store them in memory. The user sent them as an XMPP message (a message to the chat in their client) but they were never actually posted to Stack Exchange. (The “chat” was a virtual XMPP construct created by the transport) Commented Aug 7 at 14:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .