[Twisted-Python] Tendril

Kevin Turner acapnotic at twistedmatrix.com
Sun Oct 28 23:11:59 EST 2001

Tendril is a Words client.
Or maybe it's more of a meta-client, since it manages a whole fistful of
Perspectives (aka words Participants) at once.

Or maybe it's words' ircservice turned inside-out,
because yeah, there's some IRC in it.

Instead of providing an IRC server which people log on to with their IRC
clients to talk to the Words service, Tendril is an IRC Client which
lives with a Words service.  Tendril logs on to a remote IRC server, and
once there, creates a words Participant for everyone it sees.

This gives it an advantage over joining Bridgette to the Words irc
service, as there everyone shows up as a single Participant "ry".  Since
Tendril creates a Participant for every IRC user it represents, each one
appears in the words group just as they would if they had all logged
directly into the Words service.

The difference is

<ry> Acapnotic joined on OPN
<ry> <Acapnotic at opn> Hi!


Acapnotic at opn joined!
<Acapnotic at opn> Hi!


And yes, the link goes in the other direction too; the conversation that
goes on in the Words group is reported back to the IRC channel.  But
because I didn't think IRC operators would appreciate having 20 clients
logged in from the same sever to represent 20 words Participants, when
viewed from the IRC side everyone appears to be speaking through one
"bot"; from this end it looks just like Bridgette.

By putting multiple Tendrils connected to different IRC networks in the
same Words group, you can duplicate Bridgette's effect of joining IRC
networks together.  Since tendril operates transparently on the Words
side, you needn't worry about an ugly chained relay effect when you do
this, even though the Tendrils to the different IRC networks are
separate entities.

<ry1> <ry2 at opn> <foo at efnet> Don't worry, Tendril won't look like this.

In addition to linking IRC channels to Words groups, Tendril also
converts between private /msgs and Words directMessages, so can tell
your Words client to "Start conversation with... Acapnotic at opn", and
Acapnotic will receive your messages via msg over the IRC network, and
you will see Acapnotic's replies in your conversation window.

One final bonus for the IRC freaks: Tendril has a kludge (feature!) to 
broker DCC handshakes between IRC networks.  This doesn't mean that
Tendril receives a file over DCC and sends it out again, it only passes
the *handshake*, and because Direct Client Connections operate entirely
outside the IRC network, this actually works.

The big motivation behind Tendril is now if I want to write an IRC bot,
I don't need to write it for IRC.  I write it as a words client and put
it on a words service instead.  If there's already a tendril from that
channel to a Words service, then I can have my words bot sign on to that
service, otherwise I could run a tendril+words service locally with just
my bot signed on, and that'd work too.

(Actually, the aforementioned DCC handshake brokering could probably be
broken out into a separate Words bot, assuming IRC clients have
implemented CTCP correctly.  Having a Words bot for something that's
exclusively an IRC feature is a bit peculiar though.)

"I-think-that's-a-long-enough-introduction"ly yours,

 - Kevin

Kevin Turner <acapnotic at twistedmatrix.com> | OpenPGP encryption welcome here
The moon is waxing gibbous, 89.0% illuminated, 11.6 days old.

More information about the Twisted-Python mailing list