Skip to content

Commit

Permalink
formating
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Gultsch committed Mar 23, 2014
1 parent ed2fbd1 commit 8cb0427
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions docs/obeservations.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,15 @@ which make the life on mobile devices a lot easier but states that they are
currently very few implementations of those XEPs. So I went ahead and
implemented all of them in my Android XMPP client.

General observations
--------------------
###General observations
The first thing I noticed is that XMPP is actually okish designed. If you were
to design a new chat protocol today you probably wouldn’t choose XML again
however the protocol basically consists of only three different packages which
are quickly hidden under some sort of abstraction layer within your library.
Getting from zero to sending messages to other users actually was very simple
and straight forward. But then came the XEPs.

Multi-User Chat
---------------
###Multi-User Chat
The first one was XEP-0045 Multi-User Chat. This is the one XEP of the XEPs I’m
going to mention in my article which is actually wildly adopted. Most clients
and servers I know of support MUC. However the level of completeness varies.
Expand All @@ -36,8 +34,7 @@ userMobile but just user. Both ejabberd and prosody support this but with
strange side effects. prosody for example doesn’t allow a user to change its
name once two clients are “merged” by having the same nick.

Carbons and Stream Management
-----------------------------
###Carbons and Stream Management
Two of the other XEPs Lukas’ mentions - Carbons (XEP-0280) and Stream Management
(XEP-0198) - were actually fairly easy to implement. The only challenges were to
find a server to support them (I ended up running my own prosody server) and a
Expand All @@ -47,8 +44,7 @@ mobile device. I had sessions running for up to 24 hours with a walking outside,
loosing mobile coverage for a few minutes and so on. The only limitation was
that I had to keep on developing and reinstalling my app.

Off the record
--------------
###Off the record
And then came OTR... This is were I spend the most time debugging stuff and
trying to get things right and compatible with other clients. This is the part
were I want to help other developers not to make the same mistakes and maybe
Expand Down Expand Up @@ -77,17 +73,15 @@ honor the private tag on outgoing messages. While this is easily fixed I presume
that having both the private and the no-copy tag will make it more compatible
with servers or clients I don’t know about yet)


####Rules to follow when implementing OTR
To summarize my observations on implementing OTR in XMPP let me make the
following three statements.


1. While it is good practice for unencrypted messages to be send to the raw jid
and have the receiving server or user decide how they should be routed OTR
messages must be send to a specific resource. To make this work the user should
be given the option to select the presence (which can be assisted with some
educated guessing by the client based on previous messages).

Furthermore a client should encourage a user to choose meaningful presences
instead of the clients name or even random ones. Something like /mobile,
/notebook, /desktop is a greater assist to any one who wants to start an otr
Expand Down

0 comments on commit 8cb0427

Please sign in to comment.