On Mon, 30 Aug 2004 13:14:16 -0600, Peter Saint-Andre <[EMAIL PROTECTED]> wrote:

 "Tijl Houtbeckers" <[EMAIL PROTECTED]> 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 Mozilla.

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 networks.


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 languages.

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.
_______________________________________________
jdev mailing list
[EMAIL PROTECTED]
https://jabberstudio.org/mailman/listinfo/jdev

Reply via email to