[jdev] Re: The State of Our Code-bases

Tijl Houtbeckers thoutbeckers at splendo.com
Mon Aug 30 16:27:20 CDT 2004

On Mon, 30 Aug 2004 13:14:16 -0600, Peter Saint-Andre <stpeter at jabber.org>  

>  "Tijl Houtbeckers" <thoutbeckers at splendo.com> wrote:
>> Exactly. There's something I don't understand from these discussions  
>> about
>> the "reference" implementations. People say they want the "Apache" or
>> "Mozilla" or Jabber, and in the next sentence say you really can't use C
>> or C++. Ofcourse you can do an implementation in those languages, just
>> like you can do it Python.
> Wikipedia defines reference implementation in part as follows:
>    "a software example of a standard for use in helping others
>    implement their own versions of the standard"

That's a good definition, no doubt, that we're all familiar with. But is  
that the aim of what you're proposing? Reading your blog I got a very  
different impression. In the first entry on this subject you call for a "A  
modular, hackable, well-documented, cross-platform, easy-to-use,  
protocol-compliant client". The wikipedia entry covers maybe  
well-documented (code), cross-platform and protocol-compliant. Further  
entries and discussion elsewhere also delve into issues other than "a  
software example of a standard for use in helping others implement their  
own versions of the standard".

If I'm not mistaken, Apache was started by a group of people wo wanted to  
write their own webserver rather than writing patches for another one, and  
Mozilla has it's roots in a closed-source product to make money (by being  
sold or hyping up company valuation). If you ask me, by that strict  
definition, what the reference client is for HTTP I won't say Apache or  

> I suggested Python because it easier to read and understand than C or
> C++, thus helping others write their own versions of the protocols.

Though I'm no python fanatic like some in the python community, I like it  
too, and I agree it's more readable than C++. Let's assume for the sake of  
argument Python is the most easy and readable language there is. Will this  
fill such a big need? When you'll implement this reference  
client/server/lib will you look at the code of other clients/servers/libs  
to build your own? In short: is this a part of the jabber community that  
is rotten? I wasn't really under that impression, I've not felt that need  
myself when I learned jabber nor anyone else I know that learned it  
since.. maybe I've been talking to wrong people so far?

>> If you ask me a reference client in
>> Python+wxWidgets (ofcourse there are alternatives to that combination in
>> Python, this happens to be the example from PSA's blog) will probably be
>> more the Amaya of Jabber than the Mozilla, which is why you won't find  
>> me
>> working on that project. But if there are people willing to prove me  
>> wrong
>> on that.. I could be very wrong and we'd end up with a very good client
>> perhaps.
> Well, the OSAF people (http://www.osafoundation.org) are using Python
> and wxWidgets to write Chandler. At least it is being used. Python + Qt
> is another possibility if we can work out the licensing issues.

Well there are plenty of possibilities on the GUI front for Python  
(CPython/wxWidgets/TK/QT/GTK/etc., Jython/SWT/Swing(/QT/GTK/etc.)), Qt or  
SWT probably being the most "native looking", but that might not be the  
most important factor.

>> That's what you need for a succesfull project, developers, people  
>> willing
>> to write docs, and it doesn't hurt to gain a nice community around all
>> that after a while. And those developers will choose for themselves  
>> which
>> language they want to use ofcourse. So if someone wants to start a  
>> Python
>> client project and see right here on JDEV how much intrest from others
>> there is to join him/her in that, it's fine by me. But it's not so  
>> strange
>> that others will look on it as yet another new client project, rather  
>> than
>> the saviour of the jabber community. That's why to me it would seem so
>> strange to complain "too many clients already" and then start a new one  
>> ;)
> I'm not claiming that a reference implementation would be the saviour of
> the Jabber community. However, it might help quite a bit.

I guess I'm still missing the point. Maybe your proposal will answer these  
so I'll look forward to that; I'm really curious about the reasoning  
behind all this. My fisrt question is..

"What is the goal of this project?"

Since it started out with the statement that "something is rotten in the  
Jabber community", I assume the goal is to fix what is rotten. So the next  
logical question would be: "What is rotten in the Jabber community?"
So far I've heard:

 From the "admin" point of view:
- bugs in server implementations and transports.
- hard to install a server.

 From the user point of view:
- Where to get started?
- Dozens of clients, only a few that are useable
- Even the useable clients can be hard to grasp, or confusing to  
inexperienced users.
- different clients have incompatibilities
- and for a special group of users (those coming from the legacy  
networks); complicated migration and limited ireliable support for legacy  

 From the developer point of view:
- those specs take forever
- I want to use those specs but no implementation yet available or being  
used that the specs rely on (PubSub, IBB, etc)
and like I said, I haven't encountered this myself, but I'll add it:
- no reference client/server to learn how to make my own.

The next question would be: "How can we fix what is rotten?"
It puzzles me why *this* client/server project would succeed in solving  
those issues, except for the very last one perhaps.

Because Python is such a great language? I'm sure it is, but I don't buy  
that.. (nor do I think anyone else will claim that as the reason) Many  
different projects in Python, many dead ones too. Different projects with  
simulair goals as well (libraries espc. it seems). Just like most other  

Will it succeed because of JSF backing? If so, couldn't other projects  
that are already more established benefit more? Or projects that try to  
solve some of those problems by something other than writing code for a  
client/server? ("jabber.net", inter-op testing, certification, user  
testing, etc.)

Or is it something I just overlooked in this discussion?

I escpecially don't see how it will solve those things if the ambition is  
"building a reference implementation". That sounds like Amaya: "The main  
motivation for developing Amaya was to provide a framework that can  
integrate as many W3C technologies as possible. It is used to demonstrate  
these technologies in action while taking advantage of their combination  
in a single, consistent environment." That it did, but it's still a  
horrible product to use as a browser ;)

To compare with Apache webserver:

"The Apache Project is a collaborative software development effort aimed  
at creating a robust, commercial-grade, featureful, and freely-available  
source code implementation of an HTTP (Web) server."

That sounds more like it.. hmmm

"The jabberd project aims to provide an open-source server implementation  
of the Jabber protocols for instant messaging and XML routing. The goal of  
this project is to provide a scalable, reliable, efficient and extensible  
server that provides a complete set of features and is up to date with the  
latest protocol revisions."

I guess there is no lack of ambition in the Jabber community either.

More information about the JDev mailing list