Archive for Jabber

Psi 0.13-rc2 released

Psi 0.13-rc2 is here!  Notably, voice calling is now a standard feature of the Windows version.  Please download and test.

Final on July 13th if no showstoppers are found.

New in 0.13
- Voice calls (Jingle RTP).
- Basic XMPP URI handler.
- Ability to permanantly trust certificates at connect time.
- Mini command system (Ctrl+7 in chat window).
- Various bugfixes.

If you are building from source (e.g. on Linux) and want voice calls, you will need to obtain the PsiMedia plugin separately.  On Linux, the plugin file is called libgstprovider.so, and must be put in Psi’s $LIBDIR/psi/plugins directory.  You’ll know it worked if “About GStreamer” appears in the Help menu.

Comments off

Psi 0.13-rc1 released

Psi 0.13-rc1 is here!  Please download and test.

Final on June 6th if no showstoppers are found.

New in 0.13
- Voice calls for Mac OS X and Linux (Jingle RTP).
- Basic XMPP URI handler.
- Ability to permanantly trust certificates at connect time.
- Mini command system (Ctrl+7 in chat window).
- Various bugfixes.

If you are building from source (e.g. on Linux) and want voice calls, you will need to obtain the PsiMedia plugin separately.  On Linux, the plugin file is called libgstprovider.so, and must be put in Psi’s $LIBDIR/psi/plugins directory.  You’ll know it worked if “About GStreamer” appears in the Help menu.

Comments off

Psi in 2009

So Psi moves along sluggishly as usual.  0.13 was not released by Christmas.  There were reasonable explanations for that.  Despite this, I think 2009 will be a good year for Psi, and possibly its best year yet.

I suppose I can’t put words in anyone else’s mouth, but I have high hopes we’ll see Kev and Remko return to regular development after their XMPP book, and that Misha will finally be contributing Yandex stuff back.  As for myself, these past few months stand as a record for the longest time Barracuda let me focus on Psi issues (which, being all Jingle stuff targetting Psi 0.14 or later, is easy to miss).

So, post-book and post-0.13, I predict a sudden surge of visible development, and more attention to submitted patches.

Despite the perception that Psi lags “behind” other client projects, keep in mind we have a number of significant features that have already been started (with major progress) and just need to be finished:

  • Jingle audio and video
  • Whiteboarding
  • WebKit chat windows
  • Revamped message history interface
  • Revamped roster
  • Plugins
  • Bonjour chat
  • Automatic updates
  • Certificate/SmartCard authentication
  • SSO
  • XMPP URIs

Feel free to add more to this list.  I often forget what’s on the back burner.

Do note that the above is not a list of priority features, just a list of features that are partially complete for one reason or another.  The priorities going forward are a topic of a different message.  I just wanted to show that when you count all of this unfinished stuff, Psi is farther along than it appears to be.  The project has been around for so many years, and yet there is still so much to do. :)

Here’s to Psi in 2009!  I look forward to a great year with all of you.

Comments (10)

Introducing PsiMedia

PsiMedia Test screenshot

Voice (and video) chat is a feature we’ve wanted in Psi for a long time.  However, implementing voice/video chat is not straightforward, and this is partly due to all of the new concepts that have to be introduced into the application in order to make it happen.  Cameras, microphones, codecs, and RTP are all just very foreign to Psi.  The code necessary to handle a multimedia “stack” could easily exceed the amount of code in our own IM stack!  Fortunately, there are libraries out there to handle the task.

In 2004, we considered RealNetworks’ Helix framework.  For receiving content, we found this framework to be quite mature.  However, for transmitting content, it was clearly not designed for end-user desktop applications and was even GPL-incompatible in that scenario.  Quite some work went into the Psi+Helix effort, but ultimately it was abandoned.

In 2005, we considered Google’s libjingle.  We managed to get voice chat working with it, but the code never went beyond the experimental stage.  This was due to the limited platform support at the time (Linux audio only at first, though Remko managed to add in Mac audio support) and libjingle’s lack of maintenance.  Libjingle works as a black box, handling not only multimedia but also the Jingle protocol.  Unfortunately, this meant that as the Jingle protocol changed, libjingle fell out of spec.  We also felt it was a tad intrusive for libjingle to be handling XMPP stuff.

In 2006, we investigated GStreamer.  This framework has proved to be the most interesting thus far, for a number of reasons.  Unlike the limited libjingle black-box, GStreamer is a comprehensive and flexible multimedia framework, similar in nature to Helix.  It goes further than Helix though, by offering a better API for transmitting, by being GPL-compatible throughout, and by being easier to extend.  I feel confident we can accomplish everything we need with GStreamer.

Today there is Phonon, however it lacks input and transmission facilities at this time.  We will keep an eye on it for the future.  There is also Farsight, which integrates with GStreamer.  We may make use of Farsight, depending on our needs.

In any case, I’ve started a new “wrapper” project called PsiMedia.  The goal of PsiMedia is to offer an API designed for the purpose of adding voice and video chat to Psi or a Psi-like client.  All of the details the client does not care about will be hidden behind PsiMedia.  It solves only the multimedia aspects, and not Jingle/XMPP, as I consider these two problems to be orthogonal.  Currently PsiMedia wraps GStreamer, but the requirements are abstract enough that the client should not care what is actually wrapped.  PsiMedia can be considered the successor of the old “Media” module I started in 2004, to wrap Helix.

Below are the requirements of the system.

What PsiMedia does:

  • Tell you what audio and video devices are available.
  • Tell you what audio/video modes are possible (codecs, sample rates, video resolutions, etc).
  • Allow you to specify your desired modes, and the modes of the remote party, to arrive at a list if common modes.
  • Capture audio/video and encode as RTP into a series of QByteArrays.
  • Accept QByteArrays containing RTP, and playback any audio/video contained within.
  • Play back video in a QWidget.
  • Allow displaying video currently being captured (preview of yourself).
  • Volume controls.
  • Ability to separate the backend into a plugin, so that no new compile-time dependencies are introduced to Psi.

(RTP, by the way, is a standard packet format for transporting multimedia data in real-time.  It is used by SIP, Jingle, and, well, everybody.)

What PsiMedia does not do:

  • Use the network.
  • Implement Jingle or anything XMPP.
  • Expose anything more than very basic multimedia details.  There are no filters, no pipelines, etc.

In short, PsiMedia should make implementing voice/video chat in Psi straightforward.

Comments (16)

Iris and iChat

Ok, so we can do this now:

That’s presence using Link-Local Messaging (a.k.a. Apple’s Bonjour Chat protocol, now documented in JEP-0174). Presence is delivered via local DNS Service Discovery. Chat is done via peer-to-peer Jabber.

Doing Bonjour presence is not all that new actually. The JDNS subsystem has been able to do it since last year. What is notable this time around is that I’m doing it via the new Iris DNS API, which is an abstraction layer, and JDNS is just one possible backend. And there’s also an avatar / buddy icon. That’s good old icon_32.png from Psi. :)

If you want to try it yourself, have a look at the irisnet command-line tool (now committed to the CVS). Quite a few rough edges remain, but it should work. Here is what I ran:

./irisnet pserv justin@ubuntu _presence._tcp 5298
"txtvers=1,1st=Justin,port.p2pj=5298,status=dnd,
msg=coding on iris stuff,
phsh=b12eebe7b5a2f2673aba2f6eb0f3264939a78f67"
-a null:icon_32.png

Yeah, it’s pretty long. :) It is supposed to be a single line, but I’ve broken it up for readability. “irisnet pserv” means to publish a service. Then it goes: JID, service type, port, list of attributes. The -a means to add an extra DNS record, in this case the avatar image (yeah, iChat delivers avatars over DNS, don’t ask questions).

The value of the phsh attribute is the SHA1 hash of the avatar image in hexidecimal. I used the ’sha1sum’ program to do this, which is present on most Linux installations at least:

$ sha1sum icon_32.png
b12eebe7b5a2f2673aba2f6eb0f3264939a78f67  icon_32.png

I don’t know when we’ll see Link-Local Messaging in Psi, but it shouldn’t be too hard to do at this point.

Comments (8)

The Sad State of Jabber

Update (January 29th, 2006): Keep in mind that the following rant describes the Jabber situation near the end of 2004, not the present. At the time of this update, Portugal Telecom is sponsoring the Psi/Delta projects, and Google is making waves with their free Jabber-based Google Talk service. Interesting times ahead, I hope it keeps up!


(excuse my horrible writing style on this one, I threw it together at 5 in the morning)

First, it might be worth reading Peter Saint-Andre’s “apology” about why Jabber is only where it is today.

Jabber is more than Instant Messaging. It’s an XML middle-ware thingy. But really, all most of us care about is IM. Jabber has multiple faces, what I’ll call the ‘public’, ‘corporate’, and ‘lab’. The public face is the pushing of Jabber as an IM solution for the masses. Members of this face include jabberd, Psi, Gaim, Exodus, etc. The corporate face involves the push for adoption by standards groups, as well as by corporations and large organizations. This would include the RFC drafts, Jabber Inc, Winfessor, Jive, etc. Finally, the lab is where a lot of the innovation happens, where people go beyond just basic IM (or beyond IM entirely), with things like RSS bots, ralphm’s Jabber World Map, edrin’s XMPP Client Daemon, Gush, etc.

If you ask the average Jabber user what he thinks about the system, you’ll be told that the system doesn’t have enough features yet. It doesn’t do as much as MSN. The clients are incomplete. The servers are buggy.

So what’s the problem? Why isn’t this stuff all peachy by now?

The main problem is that no one is working on it! But you say, “the Jabber development mailing list seems active, surely something is being done.” You’re right, it would appear that way. But look at the reality. Psi, Exodus, and Gaim move at a snail’s pace. Gabber, Nitro, and jabberd are dead. At least tkabber and ejabberd seem to get regular attention. So just who are all of these people on the mailing list, and just what are they coding? Maybe they are all working on tkabber? Not quite…

The answer: they are working on the corporate and lab faces.

Now here comes the hard truth: no one cares about the corporate or lab faces.

Ok maybe that was a little harsh. These faces are important, but not to anyone watching the public face. No one cares about pubsub or RSS bots or the Jabber World Map. You are in a minority if you think those are cool. The people eying the public face of Jabber want a server that doesn’t suck, and a client that doesn’t suck, and enough features to supplant the big four. And all of this has to be free. It’s really that simple. And yet, everyone is dicking around on the corporate and lab faces.

Awhile back, Peter wrote about the problem of “a thousand points of light”. Jabber developers were competing instead of working together, and so not enough was getting accomplished. I think the truth of the situation is that there is very little competition going on at all. The days of new clients are over, most people try to get involved with an existing one. But it is more than this. Even among the projects that have a solid foothold in the world of Jabber, there is very little work being accomplished. I would argue that we were getting more accomplished back in the jabbercentral days of having a million clients. So it’s not so much that there are a thousand points of competing lights, but rather that there are a thousand points of light working on the wrong stuff. Not that it is bad to be working on the corporate or lab faces, but unless you’re working on the public face, you are not on the Jabber radar, plain and simple. Jabber == jabberd and Psi. Not Gush. Not Jinc.

The solution to the public face of Jabber is to ensure the most important projects are completed. Unfortunately, the lead maintainers of the most important Jabber projects stepped down this year. This should be incredibly alarming to everyone. The public face of Jabber is effectively dead. All that remains is Aleksey, who works on both Tkabber and ejabberd. Tkabber might qualify more as the lab face as opposed to the public, but at least ejabberd is making inroads to solving the “buggy incomplete server” problem.

So out of all of the Jabber mailing list traffic, standards-pushing efforts, promotion, sales, and otherwise, we’ve got one developer working consistently on the public face. God help us.

Unless we find more people to dedicate themselves to the public face (and I mean quality of dedication, not quantity), Jabber is going to move at a snail’s pace in the eyes of the public. Otherwise, all there’s going to be is talk. I’ve read enough blogs about how we need to do this or that, but nothing is happening. Lately there’s been talk of doing another jabbercon, but I say forget about it. All that will advance is the lab. At the end of the day you’ll end up with a cool new jabber blogger or a bot, but who cares?

I’ve done my part. I entered the scene with just the intent to make a decent client that looked like ICQ. I didn’t expect the explosion that occured. Psi is the #3 spot for ‘jabber’ on Google (behind jabber.org and jabber.com). It has the largest user community. It is the most popular pure-Jabber client, and has more users than all of the major single-platform clients combined. Since this realization, I’ve wanted to take the project beyond this. I turned the foundation of the program into a basis for more Jabber stuff, such as a friendly client or a mobile client. Maybe in the future I would have been able to write a server. The only reason I can’t continue is because I’m literally out of money. Literally. I don’t mind admitting it. I’m flat broke. I invested thousands of dollars into the Delta projects, purely to complete my goal and solve this problem that we call Jabber. I only stop now because I am incapable of continuing with dedication. My intent was never to make money doing Jabber, and still isn’t. I only wanted to complete the dream, and it is sad that I can’t.

I have no doubt, given what I was able to do with Psi, that if I had more money to continue to burn on this, I could save Jabber’s entire public face. The client… several of them, possibly even the server if no one else were handling that.

The solution to the problem is to find a way to finance rob and myself. If that can’t be done, then nothing can be done, short of finding equally dedicated replacement philanthropists. Rallying a bunch of random people together to write a reference client/server is not going to work. You need real people, not random people. If there’s anything I’ve learned from world history, it’s that all it takes to change the world are a few talented and dedicated individuals. Good luck with that though, I’ve been watching Jabber for the last 3 years, and it’s tough to find people that care this much. We’re lucky when we land a psa or an aleksey.

I write this as part reality-check and part challenge. Maybe some of you don’t agree with me. Or maybe you don’t use any of my software and you’re wondering what crack I’m smoking. That’s fine. If you can find another way to solve it, do so. ;-)

Good luck, people.

Comments

Bad Behavior has blocked 233 access attempts in the last 7 days.