Category Archives: IMPS

Making XMPP Work for the Mobile Environment

I’ve been thinking about a standards-based client for a mobile environment. XMPP has quite a few strong merits, against it’s competitors such as OMA IMPS and SIP Messaging. For one, it’s a community standard, and it’s actually possible to submit new specs if so required. Secondly, it’s becoming the standard protocol for IM, and it’s emergent in the open Pub/Sub infrastructure, i.e. why-polling-is-bad.

Unfortunately, there are still a couple of key problems with XMPP in a mobile environment – none of them can be solved in a standard way.…

pywbxml revisited

I know I said I was not likely to fix pywbxml, but the alternative was even less appealing. I know I have to move away from Java:

  1. Continuing to use a mix of Java and PHP to leverage the PHP PECL wbxml extension creates an unnecessary complexity.
  2. Moving the PHP code doing wbxml2xml and xml2wbxml transformations to Java is possible but I noticed lack of activity on KML at sourceforge (the project that contains the wbxml library for Java). libwbxml in contrast is owned and maintained by the opensync folks, and it’s only the python bindings that needed some love.

Getting libwbxml on MacPorts

I need to be able to receive wbxml (binary XML) and transform it to xml using the IMPS 1.1/1.2/1.3 dictionary in Python. In PHP, I was using the PHP PECL extension wbxml, which uses libwbxml (wbxml2). In python, I need pywbxml. I like MacPorts, and I’ll use that instead of compiling myself the packages.

  1. Install MacPorts.
  2. Self-update:
    sudo port -v selfupdate
    
  3. Some general goodness I can’t live without (wget will pull a long dependency list of things we’ll need for web development):
    sudo port install wget
    
  4. Wait.

Twisted Virtual Environment Goodness

Python 2.5.1 is bundled into Mac OS X 10.5 (Leopard), which comes also with setuptools. The breadth of easy_install packages is available pretty much at your fingertips on Leopard.

On the downside, Leopard’s python ships with old versions of some packages, and we might need to upgrade them. We are left with three choices:

  1. Overwrite packages with new ones.
  2. Install new ones and set PythonPath.
  3. Use virtualenv.

I prefer to use #3. It’s cleaner, it does not change my system, it allows as many environments as we like without one contaminating the other, while at the same time not requiring a fresh python re-install for every working environment.…

AOL Opens Up AIM

AOL has published the protocol powering both AIM and ICQ (code-named OSCAR). Although the protocol was already well known through reverse engineering, even if it’s significantly more complex and chatty than MSN’s or YMSG, this is really good news since it formalizes AOL supporting third party clients, including Yamigo. Additionally, besides publishing the protocol documentation, AOL has released an AIM SDK for C/C++ and Java, and the ability for creating protocol plugins that can even be monetized through revenue-sharing with AOL.…