Decentralizing Trillian
blog.trillian.im
blog.trillian.im
1) We are obviously aware of XMPP, having been developing client-side interfaces to it for years.
2) We started this project in 2001 - around the same time Jabber was in its infancy - and as smacktoward notes, the main reason we're not using XMPP today is inertia. XMPP is great, but XML just isn't our personal preference.
We figure being more open with our protocol can't be a bad thing and so it's out there for folks to pick apart and send us feedback, which we'd love! Alot of our protocol was built with an eye towards XMPP federation as well; I actually had Trillian interoperating with Google Talk one afternoon but it seems like that ship may have sailed. :-\
Source: https://www.trillian.im/impp/
And the "keep the protocol flow reasonably compatible with XMPP" part only makes it more curious. The more similar your protocol is to XMPP, the stranger it seems that you don't just use XMPP.
The answer may be just inertia; the spec says they started working on IMPP in 2001, back when XMPP was still very young. It could be that they've just built a ton of internal infrastructure on top of this thing and can't afford to move it all to pure XMPP. But that doesn't really explain why anyone else would want to use it in 2013.
We have some experience reverse engineering the rest of the IM protocols out there as well, and they all have their own issues which we kept in mind when building ours. At the end of the day, our actual motivations were simple: publishing the protocol is the right thing to do and so we did it. It's been on our TODO for 6+ years. :)
Since Google has dropped XMPP, at this point it's possible that IMPP already rivals it's usage numbers worldwide (no word on users, but Trillian has >40m downloads).
At least one point in its favor is that it's smaller and lighter weight than XMPP. XMPP feels fairly over-engineered, and then you need to trawl through a huge pile of extensions to figure out which ones you will actually need to implement for interoperability.
However, this does bring to mind the old xkcd: http://xkcd.com/927/
Technology is full of people reinventing the wheel (sometimes better, obviously), but more often than not, unnecessarily.
Once you start to dig into any domain deeply, you encounter so many details you would never have imagined existed at first glance. Federated IM is no exception, and it's not easy. XMPP still has problems that are currently being solved that any new protocols won't even be thinking of for 10 years yet.
Really? MIDI comes to mind, immediately, as a counterexample (it is underengineered, if anything, but it's being used widely to great success).
The maker of an interoperable IM client not running an interoperable IM protocol just felt silly to us, so we decided to spend a week and publish something.
http://blog.trillian.im/?p=2746#comment-31043
Mikael: Mainly inertia; we started this 10 years ago as well
and have massive amounts of development energy to consider.
What we lack is the peer review that a proper standard
can boast, but switching to XMPP at this point would
be a huge, huge project.
We decided to do the next best
thing (instead of doing nothing and running another walled
garden), which was to publish the documentation
to our protocol; we’re also going to consider building
a federation layer that uses XMPP in the future.
This way we get the best of XMPP in terms of
federation but don’t have to throw 10 years of
client and server work out the window.i.e. (1) Open Trillian (or Adium) (2) Sign in to each of the centralized services: AIM, Hotmail, Yahoo, etc. For each authorization, save that user name in the decentralized database in some sort of cryptographically signed form. (Maybe some algo similar to Bitcoin's solution to the byzantine general's problem). (3) Now when someone on another trillian client wants to reach you, they can use any one of your centralized handles to search for you in the centralized database and connect with you directly. (4) Lastly, some sort of handshake occurs between you and your friends.
I see no reason why this can't be fully compatible with XMPP once authentication has been performed by writing to a block chain and lookup of friends has been performed by reading from the blockchain.
This approach basically rebuilds out the network effect of "skype" and other centralized services via a trojan horse approach.
On another note - and forgive me, I'm a bit clueless on this - is there any reason why email clients/providers couldn't have a standard way to do audio and video calls across services? Then they could do text messaging, file sharing, audio and video calls/messages. Any reason this couldn't happen?
The difference is less one of speed and more one of an ephemeral inbox. (In how it's treated by typical use cases; obviously, IM logging makes it less ephemeral.)