On 12/06/13 01:10, Joseph Gentle wrote:
... Don't mind me - I get a little ranty :)

I've a thick skin ;-)


On 12/06/13 00:54, Joseph Gentle wrote:
On Tue, Jun 11, 2013 at 4:08 PM, Dave <w...@glark.co.uk> wrote:
Protobuffs in XMPP might not be the most elegant wire protocol, but they're
both proven, solid messaging technologies.
They are???

Well, independently at least. ;-) Not that I'm particularly a fan of XMPP, but I've not seen anything that indicates xmpp as a protocol causes any of wave's headaches. To the contrary, the XMPP layer is quite uninteresting - we just stream xml down a socket.

The more complex bit is the blobs we put in the XML, when we send the blobs and where we send them - all of which is independent of the xmpp pipe they get sent down.

Because you know, wave federation has _never_ worked reliably. I gave
a talk back in 2010 explaining how to set up federation in a virtual
machine. I practiced my talk a few times, and sometimes (with exactly
the same certificates, configuration files, software & OS) it simply
wouldn't work. Why not? Two and a half YEARS have passed and still
nobody knows.

Well, there's a bunch of ways it can go wrong, but most of them are nothing to do with the technologies.

XMPP server extensions are supposed to be a standard, but last I
checked, only a couple of XMPP servers even half-work with wave in a
box. Why? Because everyone has implemented the XMPP standard in
slightly different, incompatible ways. Are the bugs in WIAB itself or
in the XMPP servers? I don't know! The broken behaviour is so
complicated that nobody understands how it works, let alone what the
problem is.

Last I heard, quite a few people use xmpp for messaging and S2S with a bunch of different implementations quite successfully. The component extension isn't one of the more common, but it's also purely an implementation decision within wiab.

Maintaining the wire protocol doesn't mean we can't change the implementation - for example I've been experimenting with an embedded xmpp server (Apache Vysper), rather than the external component interface.

Its pretty clear that we can't maintain federation based on an XMPP
extension. We can't even fix obvious, repeatable bugs.

I might be the only one, but it's not clear to me - nor have I seen a coherent argument about _why_ that would be the case. As far as I'm aware, very little effort has been put into maintaining federation. Until recently I think the last time it was tried was a year ago - but thanks to a couple of tweaks by Ali, the recent attempts were reasonably successful (i.e. it seems to federate largely Ok, but the webclient needed a little massaging)

And we don't even use XMPP for anything! I thought we'd at least use
the XMPP server to log in users but we don't even do that - we
maintain our own user list.

Well, we don't use it for much. It does remote service discovery, stream encryption and a very poor anti-spoofing mechanism (which is still effective). Plus the core S2S bits in the wave wire protocol are widely implemented with many cross platform libraries and servers [1]

I mean, if we were implementing this protocol from scratch, I doubt I would advocate xmpp, but it's what we've got and from what I've seen not at all deserving of the bashing it sometimes gets :-]

Its like we're using XMPP as a buggy, hard
to configure TCP stream that nobody understands. I guess at least it
checks our SSL certificates. Whoopie.

Prosody at least is fairly simple to configure, more so with the ant task Bruno has just contributed (to generate prosody config) and we could improve that even further if we decided to ship an xmpp server.

I don't understand all the hero worship of XMPP. Has anyone else tried
to actually read the spec?
Yup
There's a reason Google, Apple, Facebook,
etc don't use XMPP. Its not because they hate freedom. Its because
XMPP is awful.
The same is true of most specs!
If you want to convince anyone that its a 'proven, solid messaging
technology', you should start by fixing our XMPP extension code.

Are you aware of any specific defects to report? There's slim pickings in jira: [2]

Personally, I'd prefer to eliminate the external dependency by either bundling or embedding an xmpp server when we distribute wave. But there's plenty we can do to make deployment with federation easier, without needing to throw away the wire protocol.


Dave

[1] http://xmpp.org/xmpp-software
[2] https://issues.apache.org/jira/issues/?jql=project%20%3D%20WAVE%20AND%20status%20%3D%20Open%20AND%20text%20~%20%22xmpp%22

Reply via email to