Sunday, March 25, 2007

Introduction

A beginning is the time for taking the most delicate care that the balances are correct

Princess Irulan (Frank Herbert: Dune)

Hi. My name is Adam Nemeth, known as Aadaam. I'm a software developer from Hungary, EU. For years I've been using ICQ, as it was the first instant messaging service, and for me, it was a standard, too. However, as years passed by, more and more instant messaging solutions came, the (at least in my viewpoint that time) ICQ-clone MSN Messenger, and the peer-to-peer VoIP software Skype.

I first used Jabber protocol sometimes around 2004 or so: I heard of it before, and some of my friends used it ocassionally, but it was a struggle with icq-transports and clients of that time. But I realized that ICQ is just a service, and as more and more people starts using instant messaging every day, we need to consider it as a part of a communication solution - most of the universities, student clubs were already providing e-mail and webhosting services, as well as some forum and so on. Realtime is getting closer as our life gets faster every day.

When Google introduced its XMPP-service called Google Talk, I was way in jabber: I knew how to use the protocol with a pure telnet, knew how to write a client and even had some ideas how to use it on web with XEP (or, at that time JEP) 124. Now I see it as a communication standard.

But much work has to be done: for example, it's not clear how we could use alias and forwarding features of e-mail. It's not clear how we could connect to accounts to each other. Practically only ejabberd provides virtual hosting, and erlang is an unusual language for an average programmer working with imperative code like Java or C++ or whatever.

There's also a problem with the protocol design itself: given that you have a heterogenous network with all kind of clients, the interoperability between those is the intersection of the supported XEPs of all clients; as more and more clients come in, it gets worse. We need to bundle the logic with the XEP itself, and there are some very good experiments out there for such.

We also need to make jabber easier to spread: embeddable clients in webpages, open hosting providers, etc... its not as easy as it seems but it can be done. Also we need a lot of features from other networks - in Hungary, mostly MSN is used today, because of custom smiley handling, for example. Teens love it, and can't imagine a client without that feature- it'd be 'boring'.

This blog will focus on mainly three topics: first, and not least, possible use cases on jabber services. Then protocol implementation examples, with simple, educational scripts in GPL or even public domain. And also there'll be some discussions about possible new protocol extensions, like the above mentioned custom smiley protocol I'm designing.

6 comments:

ikl said...

"erlang is an unusual language for an average programmer working with imperative code like Java or C++ or whatever."

"Erlang was designed from the beginning to be small and easy to learn - Ericsson had to train many C/C++ programmers in Erlang so it was part of the core brief to make it as easy as possible."

"There are only a small number of concepts to master and most will already be familiar to C programmers."
(source: Erlang for C, C++ and Java Programmers)

Note that there also is a book about Erlang in production, specifically dedicated to Java programmers.

Aadaam said...

OK, I was just speaking from my own experiences (in fact me, and some people in my team). For us, it was definitely the 'whatta ....' kind of code, at first glance... even given by the fact that every of us had years of experience in various languages, including declarative ones. Java is definitively easier for an average enterprise programer who uses java.

It's an SML-kind of language with a prolog-like syntax. I was going crazy because of this for 2 weeks, although I was taught SML and Prolog too, and worked with Scheme (Gimp Script-Fu) years ago.

Jonas Ã…dahl said...

I would say that the fact that ejabberd is implemented in Erlang is one of the very best things about the XMPP server as Erlang is very suited for exactly this kind of areas - high performance "routing" with extreme stability and scalability. Also the changing the internal state of an ejabberd server without having to restart it (add modules, start new services, alter routing table and what not) is a very powerful feature.

Aadaam said...

Yup, that's true, still I think ejabberd as a 'professional solution', not intended for university freshmans trying to learn jabber on a course ;)

But OK, ejabberd _is_ a very good system, and professional, large scale jabber servers should use this server implementation. I just argue that it would be an easy start for someone without prior knowledge on declarative languages, as opposite to a Java/C++ / etc implementations - and this does not mean erlang is hard to learn, I just mean erlang would be strange at first sight, not to mention the admin interface of ejabber (which operates on tuples I think). But that's just some kind of "system-level ergonomy" or I just want to satisfy a requirement, let's call it "maintaining a cheap web hosting site besides uni and want to spread jabber? we have a solution" :)

There are too many of them in Hungary, not to mention schools, universities, etc, run by students, which would be an easy audience...

Unknown said...

Movement is an automatic chronograph which is a Chronoswiss modified .
http://www.watchestoo.com
replica watches
watches
rolex
SWISS REPLICA ROLEX
SWISS ROLEX
rolex oyster perpetual datejust watch
rolex oyster perpetual datejust replica watch
rolex oyster perpetual datejust
rolex ladies datejust
rolex 116200
rolex 18k
rolex stainless
BULGARI
BVLGARI
U BOAT

Unknown said...

Be abiding to do a seek on the internet for the accomplish and appearance of Louis vuitton bags
you wish and you will get the after-effects for any website with that exact louis vuitton handbags
, this includes accepting your 2009 lv
. You will acquisition a louis vuitton
for annihilation in your life.