added some of uri's utility actions for build script
[urisagit/Stem.git] / TODO
1                        Stem Development TODO List
2
3 Feel free to tackle any of these tasks. Email uri@stemsystems.com if you
4 want design/code ideas or to discuss any of these projects.
5
6 Last edited Fri Jan 16 17:07:14 EST 2004
7
8 Stem::Event::*
9
10         Add support for more event loops (Tk, Qt, tcl, WxWindows,
11         POE). See Stem::Event::EventPM for an example of how to wrap an
12         event loop in Stem.
13
14 Stem::Msg, Stem::Route
15
16         enable tracing of delivered messages
17
18         basic source routing needs design work. new client hubs will
19         flood upstream who they are. master servers can respond
20         downstream which will create a fully aware tree networks.
21
22         add support for a forward. it takes a message, clones it and
23         changes the to address.
24
25         maybe move Stem::Route to Stem::Msg::Route. it is only used by
26         Stem::Msg and that better describes its name.
27
28 Stem::Portal
29
30         finish and test Portal forking
31
32         maybe convert to use Class clone/piped support. not sure if this
33         is reasonable or worth it.
34
35 Stem::Log
36
37         add support for single method ref to do all the filtering. it is
38         passed the log entry and is a stem::log::entry object. it can
39         call all the action methods. there is no need for the current
40         design of a list of key/values. it will be deprecated.
41
42         timestamp is set with a template (strftime like but numbers only).
43
44         add timer based filters. single shot cron entries to toggle
45         state are fine. but how do you set the state at startup? if it
46         is between start and end times, the filter should be
47         enabled. this needs design work.
48
49         define and add more actions
50
51                 email
52                 msg
53
54 run_stem
55
56         write up run_stem man page in pod
57
58         write tech notes for run_stem
59
60 Stem::Proc
61
62         needs much more testing
63
64         test pseudo tty
65
66 Stem::File
67
68         (some of this is done. a good simple project to pick up)
69
70         design parent cell and how it spawns targeted file cells.
71
72         code file stem based transfer stuff.
73
74         add file compare options - size, timestamp, MD5
75
76         add single directory support.
77         filename filters
78
79         add dir tree copy support
80
81         add throttle support? don't want to slurp entire large file in
82         and clog the system. throttle with reply messages and/or timing
83
84         add support for ftp and scp
85
86 Stem::Util
87
88         replace read_file/write_file with File::Slurp. might as well eat
89         my own dog food. this needs to be added to the required modules
90         list in Build.PL
91
92 Stem::Expect
93
94         use proc or socket and use async IO
95
96         hook in Stem::Cell::Flow
97
98         expect handles timeouts from async IO. then it drives the state
99         machine with a timeout method. regular input is sent to the
100         state machine as data. 
101
102         if no input matches but not timed out yet, we wait for more
103         input or the timeout.
104
105         do we need code callbacks? i think the higher level object
106         (protocol::ftp?) would want callbacks itself in some cases. 
107
108 Testing
109         need tests for higher level cells.
110
111         need load testing of various subsystems.
112
113         need cross platform testing.
114
115 Documentation
116
117         full pods for all modules
118
119         accurate docs for all class fields. this can be autogenerated
120         from the $field_info lists. we could parse only that code out
121         easily and eval the string. the either edit the internal pod or
122         some other text file. it would generate a nicely formatted
123         description of all the class fields.
124
125 Tracing
126
127         mark by name which message is currently being delivered
128
129         use the hub/cell/target in the 'to' address.
130
131         any newly dispatched messages get a from/origin of that to
132
133         just copy the to?
134
135         fix registry lookup by object to get cell/name and target
136
137         save current event cell name and target
138
139         create trace file to be written by events and message delivery
140         (or dispatch?)