[project @ 2005-06-28 03:16:45 by unknown_lamer]
[clinton/bobotpp.git] / TODO
diff --git a/TODO b/TODO
dissimilarity index 95%
index f7f866e..b55c38f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,66 +1,79 @@
-2.2 will be released when most of these are done
-
-General:
-* Compile with -Wall and kill all warnings
-* Make String more compatible with std::string
-   - Make operator >> act like all other >>'s, and add getline
-   + Add compatibility operators to String
-* Remove gh_* and other deprecated guile stuff
-* finish ISO C++-ification (remove deprecated uses of static, casts)
-* Add Scheme utils function to convert "normal" dates into time since
-   1970.
-* Make bot-random use the Guile RNG instead of C RNG (better?)
-* Add commands to delete a hook
-   - return an iterator to the hook and let the user kill it?
-   - OR give the hook a new field ("name") and use that
-   - all part of the new hooks system I guess
-* Convert UserCommands to use Commands
-* Expand Commands to do everything the bot can do
-* Add new commands to Scheme afterwards
-* It would be interesting to see what SWIG could do here...
-   (eliminate ScriptCommands in favor a SWIG wrapper maybe?)  Why
-   though? Well, maybe not kill ScriptCommands completely.  Just make
-   it's interface a simple wrapper around Commands that automatically
-   adds the Bot* first arg as Interp::bot. This would eliminate a lot
-   of the type checking. OTOH, I'll have to look in to this more when
-   I get back.
-
-Networking:
-* Add a networked interface to guile repl
-   - Admins only
-   - SSH? Telnet? DCC-Chat?
-   - Access to repl will require use to authenticate
-   - Allow the load & reloading of scripts w/o restarting bot
-   - Allow server to be disabled at run because of security...
-* Enable DCC support (I have to find docs on DCC first!)
-* Add Channel logging (log full text of channel if enabled)
-
-Config:
-* Change bot.conf syntax (just load it with guile)
-(set-cmdchar #\!)
-(set-name "DumbBot")
-(set-userlist "bot.users")
-(set-shitlist "bot.shit")
-(set-logfile  "bot.log")
-
-(add-server "irc.openprojects.net")
-(add-server "trollaxor.com")
-
-(add-channel "#bobot") ; all networks
-
-;;; note that (add-server) would be a macro that defines
-;;; a symbol for the network
-(server-add-channel irc.openprojects.net "#umbclinux:::")
-(server-add-channel irc.openprojects.net "#tpu:::")
-;;; add-channels just maps args to server-add-channel
-(server-add-channels trollaxor.com "#trolls:::" "#crapflooders:::")
-(server-set-name trollaxor.com "TrollBot")
-
-  - Support per-server channels, logfiles, cmdchars, everything...
-* Move default config location to PREFIX/Bobot++/default/ and allow
-  users to specify a config folder under PREFIX/Bobot++ to use with
-   -c. E.g. To use PREFIX/Bobot++/foo/, call bobotpp -c foo. Keep -f
-   and -d.
-
-Documentation:
-- Texinfo manual (including scripting section)
\ No newline at end of file
+Done:
+* DCC CHAT min user level
+* Lots of hooks related stuff that I never wrote down
+* Abstract DCC support so that DCC FILE may be easily implemented
+* Wrote config database class
+* Compile without warnings
+* bot:protection/[none|no-ban|no-kick|no-deop] constants
+* bot:aop/[no|yes] constants
+* Utils::valid_nickname_p should have a configurable max nick length
+
+2.2:
+* Finish Texinfo manual
+* Register a lazy catch handler (in Interp::Startup) that prints more
+   debug info to the log (filename, line number, column number,
+   etc.). Check the mod_guile source for the lazy catch handler in it.
+* Utils::valid_nickname_p should have a configurable max nick length
+   (now that most networks allow for longer than nine character
+   nicks). This is dependant upon the new configuration system
+* Finish adding commands to Scheme for sending messages
+  (e.g. bot:send-CTCP to send a CTCP message)
+* Add util functions for doing stuff like quoting CTCP messages
+* Finish adding hooks/send hooks
+* Add DCC_CHAT_END hook for Scheme
+* Commands::sendCTCP, Commands::sendCTCPReply
+
+2.4: 
+* Use configuration database class
+* Extend AOP to support +v (0 = no op, 1 = +o, 2 = +v)
+* Add !setcommandlevel (move ScriptCommands implementation to Commands
+  and add a UserCommands)
+* Improve the help system
+
+2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise):
+General:
+* Eliminate String class
+* Finish converting UserCommands to use Commands
+* Audit code and see what data in classes should be made private and
+  have getters/setters added (e.g. logFileName in Bot--if this is
+  changed the log file doesn't change after the Bot is started).
+* DCC FILE support (sending and recieving)
+* Possibly convert BotConfig to use boost::any instead of std::string
+  as t_value
+* Remove StrinkTokenizer, replace with boost::tokenizer
+* Remove string procedures from Utils, replace with boost::string_algo
+* Use boost::timer for internal timers
+
+Scripting:
+* Add commands to delete a hook
+   - return an iterator to the Hook
+   - this would require a new SMOB to be created
+   - Scheme could pass Hook objects around and do nifty things
+   - At least allow all hooks of a type with the same name field to be
+     deleted at once (also all hooks with the same name). Also allow
+     deleting based on the regexp
+
+Networking:
+* Add a networked interface to guile repl
+   - This can (should) be done as a script, but requires non-coop threads
+     support to be done easily (and thus requires Guile 1.8)
+   - Admins only
+   - Telnet
+   - Store authorized users and passwords in bot.telnet file
+   - Bot master can add new telnet users
+   - MUST HAVE PASSWORD
+* See if Socket::readLine could be sped up (profile it first to see if
+   it even matters)
+
+Definitely 3.0:
+* Remove gh_* when Guile 1.8 is released
+* Replace large select-loop in Bot::waitForInput with multithreaded
+   - To clarify: There will be one thread for DCCs and another thread
+      for the current irc server connection, each with its own select
+      loop. There may also be a thread for the network repls if I
+      implement those.
+
+Maybe:
+* New config values in config db should be added before old values
+   (this is faster but breaks the way server lists work in 2.x)
+* Make it possible to use Scheme functions in the Parser itself
\ No newline at end of file