[Adium-devl] Google Summer of Code: Bonjour Support
Evan Schoenberg
evan at adiumx.com
Fri Mar 23 15:10:13 UTC 2007
Erich, it's good to see that you've apparently done your "homework"
in terms of the current state of things - that's fundamental to a
good SoC application.
An addendum to one thing you said: The modernize_bonjour branch does
not currently compile -- I basically spent about an afternoon doing
research on what the modern calls would be and dropping them in place
of the old calls. It might serve as a worthwhile reference or
starting point, but my guess is that for anyone but the person who
did the original incomplete work (me) using it as any more than just
a reference would be more frustrating than starting with the current
implementation in trunk :)
In my opinion, the strength of the built-in mDNS stack in OS X, a
stack which is known to work, is maintained by Apple, and of course
doesn't interfere with other OS X libraries or daemons, strongly
recommends the use of libezv or a derivative of it for our Bonjour
implementation. Andreas has, on the other hand, made the point (and
please correct me if I'm mis-restating, Andreas) that really we
should be basing Bonjour support around a solid Jabber / XMPP
implementation, as that's what the protocol is at heart.
I think the question to ask is: How small or large a subset of the
XMPP spec is supported over Bonjour?
If it's all of it, then it's truly duplicative to implement XMPP a
second time, and we might look at adopting libgaim's implementation
of Jabber and going from there. Note that I say libgaim's
implementation of Jabber, not of Bonjour -- presently, libgaim
implements Bonjour as an entirely separate protocol plugin ("prpl" in
Gaim parlance), and so there are no true advantages in that direction
to be had by adopting the current libgaim Bonjour implementation. I
said "might" because bringing Bonjour support to the Jabber prpl (as
a subclass of sorts) might be a huge undertaking with perhaps
insufficient payoff to be warranted.
If it's a reasonably small subset of it, I think we should expand
the libezv-based Bonjour plugin to do the right things in the right
places. The advantage of the OS X mDNS stack makes this an even more
attractive direction.
Knowing no more than what I know now, my inclination is to fix up
libezv. Erich, you've done a good job listing the major bugs and
shortcomings of libezv as it stands so far as I can tell... I'm not a
huge Bonjour user, but in my uses, I've run into all of those and
can't think of any others that have recurred, though surely you'll
run into other areas which could be improved over the course of
modernization and expansion.
Cheers,
Evan
On Mar 23, 2007, at 10:18 AM, Chris Forsythe wrote:
> The two perspectives here are basically that if we go with the libgaim
> approach, it would utilize XMPP. This would break support for iChat
> 1.0
> in some way. My stance is that we shouldn't be actively knowingly
> breaking other clients if we can at all help it.
>
> However, someone (I think hal2k?) asserted in irc last night that
> iChat
> in 10.4 breaks on iChat 1.0 in the same fashion. My opinion of the
> whole
> situation is that if this is the case, and Apple doesn't care about
> iChat 1.0 anymore, perhaps we shouldn't either. iChat is the major
> share
> of Bonjour clients as far as I know, which is why I've been holding
> them
> up as a direction to look at taking.
>
> Can anyone confirm, via apple documentation or something else
> conclusive
> (testing even?) that the above is actually correct?
>
> Chris
>
> Erich Kreutzer wrote:
>
>> Dear Adium Developers,
>>
>> My name is Erich Kreutzer and I am applying for Google Summer of
>> Code. I would like to work on a mac-specific project and Adium fits
>> the bill quite nicely as I have used it for quite some time now.
>> After looking through the suggested project proposals I was extremely
>> interested in improving Bonjour instant messaging support.
>> I have looked through trac and the libezv source code and have an
>> idea what this would require. However, I was perusing the adium-devl
>> irc channel last night and there was discussion as to whether an
>> update to libezv or transition to libgaim to handle Bonjour messaging
>> would be better. I am curious what the consensus on the idea is.
>> From my brief research the benefit for updating libezv seems to be
>> the ability to use the OS X Bonjour stack (according to evands on
>> http://trac.adiumx.com/ticket/5492 ). In fact it seems Evan worked
>> on converting libezv to use modern DNS calls about 4 months ago in
>> the modernize_bonjour branch (http://trac.adiumx.com/browser/
>> branches/
>> modernize_bonjour). Also since other Mac instant messaging clients
>> currently use libezv any updates would also help other open source
>> projects.
>> On the other hand using libgaim to support Bonjour messaging would
>> reduce the number of external library dependences and also possibly
>> simplify the code for Bonjour support. Implementing Bonjour support
>> in libgaim was a past gaim summer of code project, however, I do not
>> know the current state of project and libgaim currently uses howl for
>> mdns support. As I learned last night on irc Howl is no longer
>> actively developed (confirmed at http://www.porchdogsoft.com/
>> products/
>> howl/ ).
>> Before I read the irc chat last night I had worked up a proposal
>> which involved starting by fixing the outstanding bugs in libezv and
>> Adium regarding Bonjour support. Some of the more important bugs
>> include the inability to send multiline messages, improper user
>> status updates, incorrect reporting of current users online, and
>> intermittent failure to send messages. I also plan on continuing
>> Evan's work on updating the DNS calls. The major goal once I
>> modernize libezv would be to add file transfer. I have researched on
>> a few of Apple's mailing lists ( http://lists.apple.com/archives/
>> rendezvous-dev/2004/Feb/msg00044.html ) and found a post regarding
>> how iChat(an early version, I don't know the exact version number)
>> handles file transfer. After I have completed the update to libezv
>> and included file transfer I have a few ideas (starting
>> infrastructure for audio/video chat over bonjour), however, I don't
>> know how much time will remain.
>> My big questions now are: should I alter my proposal to deal with
>> adapting libgaim? And if updating libezv is still an option, are
>> there any suggestions and or critiques to my ideas? Thank you all
>> very much for the help.
>>
>> Sincerely,
>> Erich Kreutzer
>>
>>
>
>
> _______________________________________________
> Adium-devl mailing list
> Adium-devl at adiumx.com
> http://adiumx.com/mailman/listinfo/adium-devl_adiumx.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20070323/4fa5489b/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://adium.im/pipermail/devel_adium.im/attachments/20070323/4fa5489b/attachment.sig>
More information about the devel
mailing list