[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fwd: status of 0.50 (1.0? 0.99?)]



Hi folks,

I'm sorry if you get this twice.  I foolishly
sent it to the old address, which means i have
to apologize to you charter members of infobot-dev :)

kevin


Hi folks,

I just wanted to let you know about the things i've been
workin on a little bit for 0.50 (possibly 1.0).  I'd
like to get a prototype out to you shortly.

1) everything runs under use strict; !

2) everything is a module (see list at end)

3) readline support, CPAN-like shell

 [lenzo@haven i050c]$ perl -MInfobot -e shell
 [    1] Session start at Thu Dec 16 09:45:39 1999 [945355539]
 [    2] Modules +Weather +W3Search +Babelfish +Nickometer +Convert +Exchange +Extras +Purldoc
+METAR +Math +Whois +Nslookup +ModuleMgr +Zippy +Example +Excuse +Insult (17)
 [    3] This is Infobot 0.50 [Quixote]
 > 

4) command-line execution. 

 [lenzo@haven i050c]$ perl -MInfobot -e 'e("x is y")'
 okay
 [lenzo@haven i050c]$ perl -MInfobot -e 'e("x")'
 x is, like, y

5) command-line switches for raw and raw_quote for mail
 filtering, etc.  works on files or on STDIO

 [lenzo@haven i050c]$ perl -MInfobot -e 'raw'             
 hello
 bonjour, Player
 what is x
 it has been said that x is bar

 [lenzo@haven i050c]$ cat > foo.file
 hello
 x is foo
 no, x is bar
 x
 [lenzo@haven i050c]$ perl -MInfobot -e 'raw_quote("foo.file")'

 > hello

 hey, Player

 > x is foo

 ...but x is sdsad...

 > no, x is bar

 OK

 > x

 x is bar


6) Infobot::Modules degrade gracefully and provide
   diagnostic info when they fail.  Bot still works
   without them.  All modules are derived from
   the class Infobot::Module, which does most of
   the heavy work.  Modules can define a regex
   or define a matches() operator. Modules can be
   turned on or off at run-time.

 [    1] Session start at Thu Dec 16 10:02:04 1999 [945356524]
 [    2] Module    Weather ****  NOT OK
 [    3] ./Infobot/Module/Weather.pm did not return a true 
         value at Infobot.pm line 278, <FH> chunk 52.
 [    4] Modules +W3Search +Babelfish +Nickometer +Convert 
         +Exchange +Extras +Purldoc +METAR +Math +Whois 
         +Nslookup +ModuleMgr +Zippy +Example +Excuse 
         +Insult (16)
 [    5] This is Infobot 0.50 [Quixote]

vs a good run (with more verbosity -- 3 is the default).

[lenzo@haven i050c]$ perl -MInfobot -e 'shell(verbosity=>4)'
[    1] Session start at Thu Dec 16 10:04:03 1999 [945356643]
[    2] db         are -> ./data/i-Quixote-are [8 entries]
[    3] db        seen -> ./data/i-Quixote-seen [3 entries]
[    4] db       karma -> ./data/i-Quixote-karma [0 entries]
[    5] db          is -> ./data/i-Quixote-is [14 entries]
[    6] Channel file ./conf/infobot.channels loaded (10 lines)
[    7] Module  Babelfish 0.01  OK
[    8] Module      METAR 0.01  OK
[    9] Module  ModuleMgr 0.01  OK
[   10] Module   W3Search 0.01  OK
[   11] Module    Weather 0.01  OK
[   12] Module      Zippy 0.01  OK
[   13] Module     Extras 0.01  OK
[   14] Module    Example 0.01  OK
[   15] Module      Whois 0.01  OK
[   16] Module       Math 0.01  OK
[   17] Module   Exchange 0.01  OK
[   18] Module   Nslookup 0.01  OK
[   19] Module    Convert 0.01  OK
[   20] Module     Excuse 0.01  OK
[   21] Module     Insult 0.01  OK
[   22] Module Nickometer 1.02  OK
[   23] Module    Purldoc 0.01  OK
[   24] Modules +Weather +W3Search +Babelfish +Nickometer +Convert +Exchange +Extras +Purldoc +METAR
+Math +Whois +Nslookup +ModuleMgr +Zippy +Example +Excuse +Insult (17)
[   25] Term::ReadLine support enabled
[   26] This is Infobot 0.50 [Quixote]


7) A first attempt at internationalization with 
   Infobot::Language and Infobot::Language::English.
   This actually lets us do a lot more -- it can
   let us do things like use the 'rude' variation 
   for someone.

8) fork/don't fork is a bot-level option.  modules
   specify their "weight" and a bot policy decides
   how to process them.

9) all messages are sent using an Infobot::Message
   object that is traceable, and so processing flow
   can be analyzed by watching the message-passing.

10) a start at at least stubbing out POD docs for 
   everything.

OK, now things that need to be done:

1) I ripped out the IRC handling to focus on the 
   basic workings of it, but the hooks are still
   there.  Either POE::Component::IRC will have to
   be hooked in here, and user verification extended
   to handle the new multiprotocol situation.

2) The DBs need some work.  I'd like the dbs to be
   a separate process what other interfaces (like
   the Natural Language -> db query interface) can
   all use, allowing 1 db to be shared by many faces.

3) Set up a SocketFactory to handle random clients;
   POE looks good for the IRC + SocketFactory.
   The bot actually does not require POE by itself,
   but will for the full blown version

4) More work on Entity.pm, resolution of names
   across protocols, and access control.

5) Tests for all modules.

6) Makefile.PL and Infobot::Bundle on CPAN.

7) More documentation.

8) More.


These are the code modules so far:

./Infobot.pm
./Infobot/DB.pm
./Infobot/RDF.pm
./Infobot/Module/Babelfish.pm
./Infobot/Module/METAR.pm
./Infobot/Module/ModuleMgr.pm
./Infobot/Module/W3Search.pm
./Infobot/Module/Weather.pm
./Infobot/Module/Zippy.pm
./Infobot/Module/Extras.pm
./Infobot/Module/Example.pm
./Infobot/Module/Whois.pm
./Infobot/Module/Math.pm
./Infobot/Module/Exchange.pm
./Infobot/Module/Nslookup.pm
./Infobot/Module/Convert.pm
./Infobot/Module/Excuse.pm
./Infobot/Module/Insult.pm
./Infobot/Module/Nickometer.pm
./Infobot/Module/Purldoc.pm
./Infobot/Question.pm
./Infobot/Statement.pm
./Infobot/Process.pm
./Infobot/Console.pm
./Infobot/Interbot.pm
./Infobot/Message.pm
./Infobot/Entity.pm
./Infobot/Module.pm
./Infobot/_hold/Karma.pm
./Infobot/_hold/Seen.pm
./Infobot/_hold/Search.pm
./Infobot/_hold/Speller.pm
./Infobot/_hold/Traceroute.pm
./Infobot/_hold/Help.pm
./Infobot/_hold/Tell.pm
./Infobot/Language/English.pm
./Infobot/Language.pm

kevin
lenzo@cs.cmu.edu