		       Stem Development TODO List

Feel free to tackle any of these tasks. Email uri@stemsystems.com if you
want design/code ideas or to discuss any of these projects.

Last edited Fri Jan 16 17:07:14 EST 2004

Stem::Event::*

	Add support for more event loops (Tk, Qt, tcl, WxWindows,
	POE). See Stem::Event::EventPM for an example of how to wrap an
	event loop in Stem.

Stem::Msg, Stem::Route

	enable tracing of delivered messages

	basic source routing needs design work. new client hubs will
	flood upstream who they are. master servers can respond
	downstream which will create a fully aware tree networks.

	add support for a forward. it takes a message, clones it and
	changes the to address.

	maybe move Stem::Route to Stem::Msg::Route. it is only used by
	Stem::Msg and that better describes its name.

Stem::Portal

	finish and test Portal forking

	maybe convert to use Class clone/piped support. not sure if this
	is reasonable or worth it.

Stem::Log

	add support for single method ref to do all the filtering. it is
	passed the log entry and is a stem::log::entry object. it can
	call all the action methods. there is no need for the current
	design of a list of key/values. it will be deprecated.

	timestamp is set with a template (strftime like but numbers only).

	add timer based filters. single shot cron entries to toggle
	state are fine. but how do you set the state at startup? if it
	is between start and end times, the filter should be
	enabled. this needs design work.

	define and add more actions

		email
		msg

run_stem

	write up run_stem man page in pod

	write tech notes for run_stem

Stem::Proc

	needs much more testing

	test pseudo tty

Stem::File

	(some of this is done. a good simple project to pick up)

	design parent cell and how it spawns targeted file cells.

	code file stem based transfer stuff.

	add file compare options - size, timestamp, MD5

	add single directory support.
	filename filters

	add dir tree copy support

	add throttle support? don't want to slurp entire large file in
	and clog the system. throttle with reply messages and/or timing

	add support for ftp and scp

Stem::Util

	replace read_file/write_file with File::Slurp. might as well eat
	my own dog food. this needs to be added to the required modules
	list in Build.PL

Stem::Expect

	use proc or socket and use async IO

	hook in Stem::Cell::Flow

	expect handles timeouts from async IO. then it drives the state
	machine with a timeout method. regular input is sent to the
	state machine as data. 

	if no input matches but not timed out yet, we wait for more
	input or the timeout.

	do we need code callbacks? i think the higher level object
	(protocol::ftp?) would want callbacks itself in some cases. 

Testing
	need tests for higher level cells.

	need load testing of various subsystems.

	need cross platform testing.

Documentation

	full pods for all modules

	accurate docs for all class fields. this can be autogenerated
	from the $field_info lists. we could parse only that code out
	easily and eval the string. the either edit the internal pod or
	some other text file. it would generate a nicely formatted
	description of all the class fields.

Tracing

	mark by name which message is currently being delivered

	use the hub/cell/target in the 'to' address.

	any newly dispatched messages get a from/origin of that to

	just copy the to?

	fix registry lookup by object to get cell/name and target

	save current event cell name and target

	create trace file to be written by events and message delivery
	(or dispatch?)
