danielwellman/bane — pull request #16 by danielwellman (2014-05-31 21:25:52+00:00)
Title: Rename implementations to preserve Behavior names

## The Problem

In all the history of Bane, we've talked about Behaviors - in the command line help, in the documentation / wiki, and in the code -- where Behaviors were a strategy object plugged into a GServer.

With the introduction of the `TimeoutInListenQueue` (a behavior that uses the `Socket` library directly instead of relying on `GServer`, which does not provide as low-level of access as `Socket` does), we faced a problem with naming - what are these new types of things? From the user's point of view, these are still behaviors - we'd still want to see them in the command line help, still would want to start them the same way. But from an implementation point of view, they're something different -- they respond to the `start` and `stop` messages, unlike the other behaviors like `NeverRespond`, `DelugeResponse`, etc.

## The Proposed Solution

This preserves the name "Behavior" from a user's perspective - `NeverRespond`, `DelugeResponse` and `TimeoutInListenQueue` are all types of behaviors. From an implementation standpoint, we push these down underneath the `Behavior` module name -- we introduce the concept of `Services`, things that can be started and stopped, and `Responders`, things that send to and receive from a socket connection provided by GServer. These are named `Bane::Behaviors::Services` and `Bane::Behaviors::Responders`.

### Looking forward

In the future, I could imagine having different types of `Responders` - for example, these talk to socket once connected, but there might be special types of HTTP/Rack-aware behaviors that simply plug in to a Rack server - rather than doing a naive handling of the HTTP protocol like we do in `HttpRefuseAllCredentials`. Perhaps `HttpResponders`?

So this could mean choose to plan ahead and use a more specific name like `SocketResponders` or something like that instead of simply `Responders`. (Or `Responders::Socket`)

## What do you think?

Do you these names work for you? Do you have an alternative idea?

Thank you, I welcome your feedback!