[jdev] Re: The State of Our Code-bases
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
>> 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
>> working on that project. But if there are people willing to prove me
>> on that.. I could be very wrong and we'd end up with a very good client
> 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
>> 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
>> language they want to use ofcourse. So if someone wants to start a
>> 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
>> that others will look on it as yet another new client project, rather
>> 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
- 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
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