summaryrefslogtreecommitdiff
path: root/docs/design.txt
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2000-04-26 08:11:21 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2000-04-26 08:11:21 +0000
commit94b37a898bd306c66ef3cc7b98832f983532cbac (patch)
tree76205495b9ee0e88431f5819b9258655d035fa02 /docs/design.txt
parentd29ca0b107a5b6abb4eadd036f37acd33bb72ed0 (diff)
downloadirssi-94b37a898bd306c66ef3cc7b98832f983532cbac.zip
and the docs
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@173 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'docs/design.txt')
-rw-r--r--docs/design.txt117
1 files changed, 117 insertions, 0 deletions
diff --git a/docs/design.txt b/docs/design.txt
new file mode 100644
index 00000000..66790b6a
--- /dev/null
+++ b/docs/design.txt
@@ -0,0 +1,117 @@
+
+ Irssi's hierarchy is something like this:
+
+
+ sub1 sub2
+ \ /
+ xxx IRC COMMON ICQ yyy
+ |____|___________|____|____|
+ |
+ GUI (gtk/gnome, qt/kde, text, none)
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | COMMON ICQ yyy
+ |____|_____|_____|____|____|
+ |
+ COMMON UI
+ |
+ sub1 sub2 |
+ \ / |
+ xxx IRC | ICQ yyy
+ |____|_____|_____|____|
+ |
+ CORE
+ / \
+ lib-config lib-popt
+
+
+ (IRC, ICQ, xxx and yyy are chat protocols ..)
+ (sub1 and sub2 are submodules of IRC module, like DCC and flood protect)
+
+
+ Chat protocols and frontends are kept in separate modules. Common UI
+ and GUI modules also have the common parts which don't know anything
+ about the chat protocols. This should allow implementing modules to
+ whatever chat protocols and with whatever frontends easily.
+
+
+ ** lib-popt
+
+ CORE depends on this for command line parameter handling.
+ (distributed with irssi)
+
+
+ ** lib-config
+
+ Irssi depends on this for reading and saving configuration.
+ (created by me for irssi)
+
+
+ ** CORE module
+
+ Provides some functionality that all other modules can use:
+ - signal handling
+ - keeping list of settings
+ - keeping list of /commands
+ - keeping track of loaded modules
+ - networking functions (with nonblocking connects, IPv6 support)
+ - handles connecting to servers
+ - raw logging of server's input/output data
+ - /EVAL support
+ - fgets() like function line_split() without any maximum line limits
+ - command line parameter handling
+ - miscellaneous useful little functions
+ - handles logging
+
+
+ ** COMMON UI module
+
+ - knows basics about windows and window items (=channels, queries, ..)
+ - printtext() - parsing texts and feeding it for GUI to print.
+ - themes
+ - translation tables
+ - text hilighting
+ - command history
+ - user interface (/commands) for CORE's functionality
+
+
+ ** GUI modules
+
+ - all the rest of the functionality needed for a working client.
+
+
+ ** IRC module
+
+ * CORE
+
+ - IRC specific /commands
+ - flood protecting commands sent to server
+ - creating IRC masks based on nick/address for bans, ignores, etc.
+ - keeps list of channels, nicks, channel modes, bans, etc.
+ - keeps list of servers, server settings, irc networks,
+ server reconnections and irc network splits
+ - redirection of commands' replies
+ - lag detection
+ - ctcp support and flood protection
+ - Handles ignoring people
+
+ * DCC
+
+ - DCC chat, send and get
+
+ * FLOOD
+
+ - detects private or channel flooding and sends "flood" signal
+ - automatic ignoring when flooding
+
+ * NOTIFYLIST
+
+ - handles notifylist
+
+
+ ** IRC UI module
+
+ - placing channels and queries in windows
+ - nick completion
+ - printing infomation of some events