Please allow me to try to explain the functionality I am looking for in hunt groups, and why ring groups and follow-me don't have the desired functionality.
1) ABSOLUTE timeout on the length of the ring to the caller. If the desired ring time is 30 seconds before going to voicemail (or other final disposition), and the call is not answered, the caller should hear exactly 30 seconds of ringing - no more, no less, no matter what - before the call goes to final disposition.
2) Only ONE extension of the hunt group should ring, no matter what. I want to emphasize this: ONLY ONE extension should ring. In other words, if any extension in the hunt group is free, the call should go directly to that extension, and if that extension doesn't answer, then the call should go to final disposition. This is something you can't get in ring groups or follow-me - for example, in follow-me, you cannot set the second ring time setting (the field labeled "ring time (max 60 sec)") to zero - if you try, a popup box appears telling you that you can't do it - and that effectively means that another extension will ring for at least one second.
3) If a call comes in to ANY number in the hunt group, it would be great if there could be an option to either try the extensions in the listed order, starting with the number the caller actually dialed and then cycling through the list until a free extension is found, OR to assign calls in a "round robin" - that is, no matter which extension is called, extension A will get the first call, extension B the second, extension C the third, skipping any busy extensions, until all the extensions have been given a call, then it should start over at the top of the list. This could be a checkbox option or a drop-down selection.
4) If an extension is off hook but not engaged in an actual call, it should be considered busy for the purposes of the call hunt logic (I mention this because there is a bug in the call forwarding on busy logic, where if an extension is off-hook, such as getting dial tone, but not actually connected in a call, the CF on busy is not activated but instead the call goes straight to voicemail or busy signal).
5) In the event that all the extensions in the call hunt group are busy when the call comes in, there should be an option to either send the call directly to final disposition, or to keep waiting for an extension to become free until the ring timeout (minus about six seconds) is reached. The reason you don't want to go right up to the ring timeout is because if the call is connected to an extension with only a second or two of time left prior to transfer to voicemail/final disposition, it wouldn't be possible to actually pick up the call before it's snatched away.
6) Once the ring timeout is reached, one of the final destination options should be to send the call to a common voicemail box that is shared by all the extensions. This implies that all the extensions in the group should be able to share a common voicemail box, which can actually be done if you are willing to go into the bowels of Linux and symlink mailbox directories together, but there's no way to create shared voicemail boxes from within FreePBX (note: changing the extension's "mailbox" setting from extension@device to some_other_extension@device does not work!). Another final destination option could be to answer and play a welcoming/reassurance message to the caller, then transfer the call back into the same hunt group (or a different one).
7) Also there should be a checkbox to forcibly disable call waiting on all extensions in the hunt group with prejudice (since call waiting enabled on any line in the group could prevent a call from going to another phone in the group that is free to accept calls).
This functionality does not exist in ring groups or follow-me. No matter what you do, you will not be able to achieve all the conditions above (in fact I doubt you could get 4 out of the 7). While ring groups and follow-me both have their place, they do not offer the same functionality as a hunt group. For example, in a ring group, there is no way to set it up so that only ONE of the extensions rings AND the absolute timeout is never exceeded. Ring groups are designed for ringing multiple extensions or ringing extensions in a sequence, hunt groups are specifically intended for the cases where you do not EVER want more than one extension to ring simultaneously or consecutively.