This is an interview to Alexey Shchepin (main developer of ejabberd and Tkabber) conducted by Justin Kirby, first published on
aleksey speaks on 12 February 2005.
The questions were asked on
the interrogations continue, aleksey in the lightbulb's glare.
How do you maintain your productivity?
Actually now I’m not so productive as I was two years ago. In the beginning of project development there is a lot of things to implement, code can be reorganized, API can be changed at any moment without much trouble, so it is possible to develop a lot of code very fast. But now, as my projects have some user base, I need to code very carefully to not broke something and provide backward-compatibility.
What is the right spelling: “Aleksey” or “Alexey"? And what is the history behind those different spellings?
I prefer “Alexey", but “Aleksey” is also correct transliteration of my name. When I started to use Jabber, I was too lazy to invent my original nick, so I tried to register user “alexey” at jabber.org, but this name was already registered, so I registered “aleksey". Later I started to use jabber.ru and at that time user “alexey” was available, but I continue to use “aleksey".
What music do you code by?
From my playlist: Dream Theater, Symphony X, Par Lindh Project, Steve Vai, Joe Satriani, Yngwie Malmsteen, Steve Morse, Tony MacAlpine, Pink Floyd, Led Zeppelin, Iron Maiden, Apocalyptica, Metallica, etc. Also I very like J.S. Bach music, but can’t code hearing it :)
Do you have a website or blog?
No, I haven’t.
What are you currently working on, outside of Jabber?
Also I’m working on my postgraduate work.
More personal questions: Where do you live? And work? And study? Any hobby?
I live in Sevastopol, Ukraine. I’m a postgraduate student in Marine Hydrophysical Institute of National Academy of Science of Ukraine.
My hobby is playing guitar.
What are your favorite programming languages?
Haskell, Erlang, Ocaml and Tcl/Tk. Actually I use Haskell very rarely, but it made very big influence on my programming skill.
What did initially brought you to Jabber?
I first found out information about Jabber in a discussion on http://linux.org.ru/
. I found it very interesting, especially comparing to ICQ: no problems with Russian, a lot of clients, IRC-like conferences, and open protocol. I almost stoped to use ICQ after AOL changed its protocol few years ago, so migration to Jabber was pretty easy for me.
What do you think are the most important strengths of Jabber? What are some of the weaknesses you think need to be addressed?
The main Jabber/XMPP strength is that its protocol is open and extensible. It allows to use it as transport for non-IM data. On the other hand IM support is not fully separated from protocol core (e.g. “presence” packets and message types like “chat” or “groupchat"). And XML usage have some pros and cons: almost every language has XML parsers, you can pretty fast understand and implement XMPP protocol due to human-readability, but representing data in XML have relatively big overhead in size (especially for binary data), in speed (parse of entire packet, while usually server need to know only type of packet, source and destination), and also it is not very natural way of representing data structures (IMHO). I think ASN.1 is much more suitable for that task. But if Jeremie Miller would choose ASN.1 instead of XML in 1998, then probably there would be no Jabber today.
What applications would you like to see built using Jabber technologies?
Probably email transport, as replacement for SMTP.
What’s your perspective on the health of the Jabber community? What can we do to improve?
I hope there will be no problems with Jabber community health, although it will always oscillate. Probably we need much more publicity to increase grow of Jabber user base. And of course more and better Jabber software.
Where would you like Jabber to be two (or more) years from now?
I’d like to say “everywhere", but it is not suitable for every task where it may be used. So at least it should be dominating IM system in the world :)
What's hindering Jabber at the moment to get to your above vision?
Probably even if all people would think that Jabber is the best IM system, they would still migrate to it pretty slowly.
In October 2002 you submitted to Tkabber CVS a plugin called MUTE
. One month later you submitted JEP-0058: Multi-User Text Editing
. The JEP was finally deferred, and you never again updated the Tkabber plugin. This seems the first and the last spec you wrote about Jabber. Since then, you focused only on code. Does that mean you officially support Peter Saint-Andre Mantra #2 Fewer specs, more code!
You were candidate for the Jabber Council in July 2003, and were highly rejected
(yes: 13; no: 48). Do you think the mistake when you wrote “peoples can add comments” in your candidature
has anything to do? If no, do you have any clue on the real reasons? If you get more free time on the future, will you present again for this or any other position in the Jabber Software Foundation?
I was not very active on mailing lists at that time, maybe it is one of the the reasons. On the other hand Jacek Konieczny was very active with very good comments, but he was rejected too (and this rejection very surprised me).
I don’t plan to present again on this position at least for next few years, currently I prefer developing.
Several key Jabber projects lost their lead programmer lately (Psi, Jabberd2, Gabber), without counting a lot of little bulbs. Is your current payed job/incomings guaranteed for the next decade? Is there anything we can do to keep you motivated?
I see no reasons to leave my projects for few next years.
Is there anything you’d like to say about the end-of-2004-crisis about Jabber acceptance on the desktop? The biggest public Jabber server is jabber.org, and has “only” 10.000 concurrent users. Big players could enter the ground in the future, like ISPs (XS4ALL.NL
) or webportals. Has the company where you work considered offering Instant Messaging based on Jabber to their customers?
My ISP start to provide such service lately, but userbase is not very big yet. And I would not call current situation as a crisis, on jabber.ru I see that number of online and registered users doubles every ~6 months, and this gain continues.
Why did you start Tkabber/ejabberd project? Personal, academic, job?
I started Tkabber because I didn’t find Linux client with two features: Unicode and conference support. Gabber had bad Unicode support, and Psi had no conference support. And I didn’t want to improve them, because I dislike C++. So I started my own client in a more suitable language from my point of view.
About ejabberd, it is more “just for fun” project. There are several reasons why I started it: success with Tkabber, rather unstable first alpha release of jabberd2, and my wish to play with Erlang features.
What public do you target with Tkabber/ejabberd: jabberites, geeks, nerds, little business, big business, yourself, nobody, somebody else?
Are Tkabber and ejabberd your first non-trivial projects?
At least they are my biggest projects. Some course works, bachelor and master works in university were non-trivial too.
How much time did you work in Tkabber/ejabberd before releasing the first version on JabberStudio or CVS?
Around one month for Tkabber and three months for ejabberd.
What development environment do you use to code Tkabber/ejabberd? And for debugging? [Eclipse, plain editors/emacs/vim, ?]
Only XEmacs. For debugging I usually use printf/puts/io:format/etc. :)
What does Tkabber/ejabberd lack to reach version 1.0?
ejabberd lacks some important features like virtual hosting, but after 0.9 release I’ll switch to version 1.0.
Tkabber is near 1.0, but I still can’t say when I’ll think that it will be ready for that version.
What are the next features ejabberd will have in the near future? Is virtual hosting planned for anytime soon?
Yes, I’m currently working on virtual hosting, so it will be available in February or March. Also there is almost completed ODBC support, but now I need to update it to support virtual hosting.
Peter Millard is considering software changes in the Jabber Software Foundation public Jabber server. For ejabberd consideration there were some lacking features. What’s the situation now: is ejabberd still in consideration, will you try to fulfill his requirements, will he alleviate some of them??
ODBC support in ejabberd is made to work with jabber.org schema, but I think all will depend on memory usage.
How will you handle ejabberd if it starts receiving patches and new modules with increasing frequency? That could happen if bigger players get interested in it, and will happen for sure as ejabberd grows.
I hope I’ll be able handle all of them, but in any case I won’t apply any patch which have not enough quality from my point of view.
Is the ejabberd/Tkabber development sponsored in any way? What’s the relation between Process-One
I’m hired by Process-One to improve J-EAI and ejabberd, so ejabberd is sponsored this way.
Just curiosity: what client did you use until Tkabber was mature enought?
Gabber. On Windows machines I used Exodus. As you can see, these clients made biggest influence on developing of Tkabber interface.
Did you know Sergei Golovan (big contributor in Tkabber/ejabberd) or Anastasia Gornostaeva (jabber.ru hosting and administration) before starting those projects?
I knew Anastasia from email@example.com chatroom, but I don’t remember if Sergei was in this room before I started Tkabber. But I remember that he started to contribute to Tkabber about one month after I started to develop it :)
Most people know Erlang exists after reading ejabberd specs. Who introduced you to Erlang?
There were big language wars in fido7.ru.linux, from which I know about many languages. Biggest thanks to Vitaly Lugovsky and Victor Wagner, their posts were most influencing.
Why did you choose to use Erlang
I found it the most suitable language for implementing a Jabber server. Its support for concurrency and clustering is great. On the other hand, Erlang is pretty slow on many string operations, but they can be implemented on C, so this drawback can be avoided.
Some key features in ejabberd come as Erlang/OTP inheritance. Did you start ejabberd because Erlang/OTP existed? If Erlang/OTP wasn’t available on that time, would you try with other language? Which one?
Yes, without Erlang/OTP I would not start ejabberd. Probably I would start Jabber-unrelated project, probably in Ocaml. :)
Tkabber in the imperative Tcl/Tk, ejabberd in the functional Erlang. Does the shift to functional paradigm help you regarding coding speed, debugging or maintance?
Erlang is not a pure functional language, it contains imperative features, so one main difference is related to Erlang concurrency support.
If you saw the classic Erlang, the movie
when considering Erlang/OTP for ejabberd: did it help or prevent you from using Erlang/OTP? Do you agree to appear writting “Hey Joe!” on a remake where analogic telephony is replaced by XMPP?
I didn’t saw it.