[JDEV] Jabber/C contributing issues, was: MIU

Andrew Sayers andrew-list-jabber-jdev at ccl.bham.ac.uk
Wed Sep 3 19:47:11 CDT 2003

Hash: SHA1

On Wed, Sep 03, 2003 at 05:31:43PM +0200, maqi at jabberstudio.org wrote:
> We have memory leaks in almost all transports (even in jabberd itself) for
> C is a nightmare concerning this.

To be exact, the C standard libraries are at fault here.  Using them to
handle untrusted data is well known to be a Bad Thing, and most highly
secure projects (Apache, qmail, OpenBSD, etc.) have rolled their own
libraries for this reason.

Of course, this still slows down development of secure C apps, but it's
far from an insurmountable problem.

> We do not have decent code documentation for in C there is no standard for
> this (well, one could use Doxygen or something, but obviously this is too
> lame for most C people, and setting up documentation in the WWW would
> make things *by far* too easy for developers obviously). I refer to
> jabberd14 and jabberd2 here also.

I don't see how standardising the documentation format is relevant here.
Documenting software is a very long, boring, hard task, and a flashy GUI
isn't going to make it any easier for me to think of words to explain
what "doInterFast2()" does and why.  As well as that, projects under active
development tend to make documentation obsolete or subtly inaccurate at
a frightening pace, which makes writing it an even more depressing

> We have no functions in the transports that implement for example per-user
> based settings (looks like nobody wants to implement this without OOP).

I like OOP (some of my best friends are object-oriented ;), but I really
don't see how it's useful in a jabber transport.  If I did, I'd use C++,
but that's an argument for another day.

On the other hand, implementing per-user settings really is hard without
pubsub, because we can't expect all client authors to bend over
backwards to support every wacky transport feature - that would negate
the whole point of Jabber.

I have to say I'm with Rob on this one: the whole point of a transport
is that you don't notice it until it breaks, so it's not a job you take
on for the glory (personally, my motivation was simply that *I* needed a
decent MSN transport).  As well as this, there's a cultural issue that
many (but by no means all) of the most central people in the Jabber
community see Jabber as the One True Protocol, and all others as
"legacy" protocols that will be going away some time soon, so take a dim
view of people wasting time on transports.

> If you know a way to quickly learn how for example jabberd14's memory
> spool functions work (I'm not talking of "look at the source"), let me
> know. Same for jabberd's other functions (XML handling, XDB handling...).

It sounds like your problem here is not so much C programs as badly
documented programs.  Again, dislike of documentation is
language-neutral :)

> If you know a good IDE (comparable to Eclipse) that can be used for
> C/Jabber development, let me know.

This is another interesting cultural issue.  I suspect that the type of
people who like C are the same people who like vi/emacs and associated
tools (I know I am :).  If you aren't that kind of person, you'll
probably be quite lonely in the C community, even if you have no problem
with the language.

	- Andrew
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: The following is method of proving my identity.  For more information, see http://www.gnupg.org.  E-mail {andrew-go-away at ccl.bham.ac.uk} if you don't want this.


More information about the JDev mailing list