On May 18, 2012, at 11:23 AM, Jared Johnson wrote:

> a little OT:  'reject N' seems a little clunky; why not something more
> like 'action [reject | add-header | ...]'?
> 
> -Jared

Having a single action argument is less versatile and less obvious than having 
explicit reject and add-header options . I'd argue it's also more complex to 
code, test, and document. Further, action arguments are likely to have 
disparate meanings among plugins and plugin authors. 

If every plugin that may reject mail has a boolean toggle named 'reject', users 
will have learned from one plugin everything they need to know to configure any 
other plugin to not reject mail. They don't need to read POD to understand what 
a reject argument means for a specific plugin. But they likely will for an 
action argument. By keeping options simple and explicit, it's easier to 
understand the code, test the code, and write the documentation. Code that is 
easy to understand and test is far less likely to have bugs present, or to have 
bugs introduced in the future.

There's several plugins that have something like what you've suggested:

      plugin action [ add-header | deny | denysoft ]

And here's a sampling of the arguments that various plugins use with action:

        add-header, log, continue, reject, deny, denysoft, accept, delete, add

Reject has a simple, explicit, and universal meaning in every plugin, and thus 
my preference for it.

Matt

Reply via email to