This is a list of things that need to be done to this distribution, features which have been requested, bugs that I've noticed and haven't fixed yet, and similar such things. It's not in any particular order, and definitely isn't in order of priority or severity or any other such useful thing. Some elementary effort has gone into organizing it by type, but even that may not be all that thorough. Patches, suggestions, comments, and additions based on anything on this list are *greatly appreciated* and will result in entries in the THANKS file. Additions to this file are also greatly appreciated. People requesting things are listed in brackets after the points (mostly for my own information for future THANKS entries). CORE * Look at the whole issue of what happens when a module rejects and how to restart the checks. Many modules are currently not restartable; should that change? What should be done instead? Should there be some additional interface that says to run the checks of just module X, or replace the module list with something else? Thought: What we have is an array of modules to call plus a pointer to our current location in that array. Perl has tons of array handling already built in. Can we just use it? * We need a way of accumulating error messages so that all checks can be ran even if some failed. Otherwise, the iterative process can get annoying. [Yusaf Pisan] * If arguments are passed to a module that doesn't take any arguments, currently that generates an autoloader error complaining about the missing _init sub. AUTOLOAD() should catch that case and so something more interesting with it. * An interface to the %HOOKS hash so that a user can add their own modules and have things work correctly. Where to put user modules should also be documented. [Yusaf Pisan] * Look into providing some way for a rewrite module to be run and told to ignore all errors. This may or may not be useful in all cases. * Contemplate ways of merging or working with Majordomo 2, which has a lot of the same hooks as we do. * Would it be possible to ever support underlying article models other than News::Article? * Can we work out some way for modules to specify that they take or require arguments, so that the core code can do the syntax checking? BUILD PROCESS * Find a better way to figure out what the correct permanent failure code is than hardcoding it and expecting the user to change it on install. * Do we want to build a file of stubs the way AutoLoader usually has? use strict 'methods' may require it in 5.005. We may also have to have it to do anything sane about missing methods in the AUTOLOAD sub. Need to look into how one can tell if a sub has been loaded. (Upon further investigation, defined *{$sub}{CODE} appears to do it.) * Put together a real test suite. We should be able to do this for at least the rewrite modules by reading in an article, applying the modules, and then writing the article back out again and comparing it with the expected output. DOCUMENTATION * Add documentation of the additional fatal AUTOLOAD errors that can occur. * Write some more generic front-ends or otherwise provide documentation or ideally a robomoderator constructor for those people who don't like doing the Perl programming themselves. * Check the documentation for references that are too focused on the mail to news direction of gatewaying. * Migrate the extensive comments currently in the source out into a separate INTERNALS file to decrease the source code comment size? Should we also be doing the same thing for the modules? How would we handle module-specific internals documentation? What formatting language should we use for all this stuff? * Write a guide to writing robomoderators that both includes a step by step guide of what people should be thinking about and something about general philosophy, accumulated wisdom, what's a good idea, what isn't, and so forth. It occurs to me that quite a bit of this isn't News::Gateway-specific and would make a good Usenet FAQ. * Write a guide to writing modules. * Build local queuing and message logging into an example so that people can see how to do it. * Reimplement newsgate using this module. * Combine the listgate documentation with the comments at the beginning of the source and rewrite in POD. * Write documentation on the issues involved in mail to news gatewaying. * Consider including the Stanford local gateways as examples. * Rip the comments out of the beginning of the newsgroups module and put them in a general document about mail to news gatewaying where they belong so that font-lock won't take so long to colorize that file. REWRITE MODULES * Do full PGPMoose including sending posts on to other moderated groups. * Modify the cleanbody module to finish its scan even if it finds invalid characters, and have it return the line number on which it found an invalid character. * Add support to the newsgroups module for automatically figuring out the group name from the address. * Consider keeping a message ID cache and using that to reject duplicates. This may be much more robust than the current attempt to reject duplicates in the newsgroups module. [Igor Chudov] * The whitelist module (and perhaps the keywords module) should really allow comments to be added after the address and keyword. * Allow the whitelist and keyword modules to take db files instead of just flat files. * The fact that the keyword module takes an argument rather than a configuration directive specifying the keyword regex violates the standard distinction between arguments and configuration file directives. * The anykeyword module should take the same directive to specify the regex for keywords as the keyword module. * Expand the headers module to be able to do more manipulations of headers and behave properly in cases of existence of multiple headers. It should really provide an interface to all of the header manipulations News::Article supports. * Authenticate posts via checking signatures with PGP against a keyring for known authors. * Work out how to handle multiline header additions. * The keywords module should really allow for some keywords which are usable only in conjuction with other keywords. * The nobinaries module should actually understand multipart posts and delimiters and know where to look for other headers so as not to use the hack body searching it uses right now. * Fix the nobinaries module to take in the various tunable parameters as configuration directives. * cleanbody should only do the ISO 8859-1 check if there's no charset specified or if iso-8859-1 is given as the charset. Should probably special-case us-ascii too.... * The various things that cleanbody does should ideally be deselectable by configuration directives. [Yusaf Pisan] * Add a way to detect the case where followups are set to a different set of groups than the article was posted to and do something about this. [Yusaf Pisan] * A module to run an MD5 checksum on the message body and cache the last several, to use to suppress duplicate postings. [Yusaf Pisan] * Modify the header module to take action based on the content of a header. (Just add support for :/regex/ when the header name is specified for an action and only take action if the regex matches.) * A module to drop all headers in an incoming message *except* for a given list. [Randal Schwartz] * Do real RFC 822 address parsing in a lot of places (most notably the whitelist module and the newsgroups module, but possibly including the error module). Can we use Graham's Mail::Internet module? * Modify the various rewrite modules that use disk files to use the new hash module and support configuration directives listing individual items as well. * Detect crossposts to other moderated groups. [Chris Meadows] * Include a module to detect overquoted text. [Tom Christiansen] * Remove variable substitution from the headers module and revisit how we're storing information from configuration directives, since I'm fairly sure there are much better ways. * Include all of the new modules Curtis Whalen sent me. [Curtis Whalen] UTILITY MODULES * Consider having config_parse() do something other than call error() for syntax errors. * The mail_error() message is mail to news specific and has a variety of other problems (may be partially qmail-specific, although not in a harmful way). * Possibly write a regex utility module for the use of keywords and anykeyword (for starters). newsgroups and mungeids could also use this. We won't need this when we have Perl support for compiled regexes. * Add the ability to associate a given server with a given group, for use when posting? [Ernie Longmire ] * Write a module to do generic handling of hashes, both tied and untied, both read-only and read-write. This may be something we can eventually spin off into another full module. May only want to handle the read-only case at first.