AllStarLink / asl3-menu

This repository contains the ASL3 menu system
GNU Affero General Public License v3.0
3 stars 0 forks source link

do_query_node_defaults() is confusing and is resulting in duplex being set to 2 when users intended to set it to 3. #65

Open davidgsd opened 3 days ago

davidgsd commented 3 days ago

Describe the bug The asl-menu do_query_node_defaults() function is confusing and is often resulting in duplex being set to 2 when users intended to set it to 3.

When a user runs asl-menu and does their initial node setup, many users want duplex to be 3 because they are using either a radio-less node (which support full-duplex by default) or they are using a full-duplex personal node -- ie. not a repeater. The use case of duplex=3 is not at all uncommon, and these users do not want their outgoing audio echoed back to them. I am getting about 1 email per week from users who I have sold full-duplex nodes or interfaces to who get echoed audio and it turns out that duplex=2 in rpt.conf even though they thought they set it to 3.

To Reproduce Steps to reproduce the behavior:

Run asl-menu, try to set duplex to 3. You will see the following:

    "1" "Hotspot (half duplex) with courtesy tones"             
    "2" "Hotspot (half duplex) with no courtesy tones"          
    "3" "Repeater or full duplex hotspot"                   
    "4" "HUB w/no radio"                            
    "0" "None of the above (show all settings)"             

You would think that option '3' above would set duplex to 3, but it does not. Instead, it does the following:

case "$ANSWER" in
     ...
3)  # Repeater or full duplex hotspot
    NEW_INTERFACE_TYPE="SimpleUSB"
    NEW_DUPLEX=2
    ;;

Expected behavior Show users the actual duplex value options and allow users to select that, in the top level menu, without them having to go through extra menu steps (eg. "0" "None of the above"), and without misleading them into thinking that selecting "3 Repeater or full duplex hotspot" will actually set duplex to 3.

Software versions (listed in asl-menu, option 4) Latest ASL3

Allan-N commented 3 days ago

The do_query_node_defaults() function provides a way to choose from a set of common configurations and establish defaults that are reasonable. The 1, 2, 3, and 4 choices do have a direct mapping to "duplex". Selecting "3 Repeater or full duplex hotspot" maps to a SimpleUSB interface with duplex=2.

From rpt.conf :

duplex = 2      ; 0 = Half duplex with no telemetry tones or hang time.
                ;     Special Case: Full duplex if linktolink is set to yes.
                ;     This mode is preferred when interfacing with an external multiport repeater controller.
                ;     Comment out idrecording and idtalkover to suppress IDs also
                ; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
                ;     This mode is preferred when interfacing a simplex node.
                ; 2 = Full Duplex with telemetry tones and hang time.
                ;     This mode is preferred when interfacing a repeater.
                ; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
                ; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.

Are you suggesting that a "Hotspot (full duplex)" should used duplex=3 (no repeated audio) ? If so, I think the answer here would be to add a new common configuration type that one would be able to choose from.

davidgsd commented 3 days ago

I would say a few things,

    2)  # Hotspot (half duplex) with no courtesy tones
        ...
        NEW_DUPLEX=0                             # **2 != 0**
        ;;
    3)  # Repeater or full duplex hotspot
        ...
        NEW_DUPLEX=2                             # **3 != 2**
        ;;
    4)  # Hub w/no radio
        ...
        NEW_DUPLEX=2                             # **4 != 2**

Having arbitrary menu numbers that don't map to the actual setting values is a definite invitation for confusion.

There are probably number of ways the above could be clarified in the menu, but my guess is that the best thing to do would be to show the same settings and descriptions as are in rpt.conf rather than a whole different set of numbers and descriptions.

Thanks, David

davidgsd commented 3 days ago

I should also mention that I realize that most people (probably including most ASL devs) have never used a full-duplex personal node (i.e not a repeater) and thus may have no idea what such a thing actually is or why it would be useful. I have written about what this is, why it's important, and why such a node is in fact not a repeater here: https://allscan.info/docs/diy-node.php#full-duplex

Allan-N commented 3 days ago

Remember, this menu is asking "What configuration settings should we use for node ?". I am asking about general settings for the node with duplex being just one component.

There are probably number of ways the above could be clarified in the menu, but my guess is that the best thing to do would be to show the same settings and descriptions as are in rpt.conf rather than a whole different set of numbers and descriptions.

This menu was/is an attempt at simplifying the initial node setup (e.g "I want to setup a SHARI/HSR/... Hotspot node") so that one could skip picking a channel driver, choosing the duplex, enabling stats, etc.

davidgsd commented 3 days ago

Yes that's great, but it is not working well for those who want duplex to be set to 3.

Allan-N commented 3 days ago

I should also mention that I realize that most people (probably including most ASL devs) have never used a full-duplex personal node (i.e not a repeater) and thus may have no idea what such a thing actually is or why it would be useful.

Right now, the configuration setup lumps "Repeater or full duplex hotspot" together. What I'm hearing from you is that we need to break these into separate choices. Happy to do that.

Do we add :

or do we only need one "Hotspot (full duplex)" with duplex=3?

davidgsd commented 2 days ago

Yes that sounds like probably the simplest thing to do. Though I would also suggest showing the actual duplex value that would result, just to be as clear as possible, or, renumbering the menu options to match the actual duplex setting values.

I think a fair number of users are familiar with the duplex settings, ie. they have set up nodes in the past and already know the specific duplex value they want. So if they go into the menu already knowing they want eg. '3', and the menu seems to highly resemble the text in rpt.conf, the tendency is to type in the desired duplex value and think you're good to go, when in fact eg. the 3 option will not result in duplex being set to 3.

I think there is a also a tendency with the design of these sorts of menus to try and abstract away technical details, as if assuming that the common user is not able to understand the actual config setting values as described in rpt.conf and that the settings need to be presented in a more pedestrian way. So instead of simply asking what duplex value the user wants, the menu asks what kind of node you have. This however creates issues for users who do in fact know the specific duplex value they want, or who have something other than a "hotspot".

I don't want to sound picky, but as this is a fundamental menu that will be used by 1,000's of users going forward I think it's worth putting some thought into, to be sure it's as clear as possible for all users and use cases, without overgeneralizing or trying to unnecessarily abstract it away from the underlying conf settings.

Also, I do not consider the use of the term "hotspot" to be correct in this context because a radio-less node is by definition not a hotspot, thus the use of the term "hotspot" rather than the more general and correct term "node", excludes radio-less and certain other types of nodes, which thereby makes it confusing for some users to know which setting they should pick. This does come off to me as the sort of "lowest common denominator"-targeted menu design, which thinks it's making things easier by distilling the options to the smallest set of simplistic terms, when it reality this misses common use cases, and is unclear for savvier users who already knew what specific duplex setting they want.

Considering the above, and the current options,

    "1" "Hotspot (half duplex) with courtesy tones"         
    "2" "Hotspot (half duplex) with no courtesy tones"      
    "3" "Repeater or full duplex hotspot"               
    "4" "HUB w/no radio"                        
    "0" "None of the above (show all settings)"         

and comparing to rpt.conf,

            ; 0 = Half duplex with no telemetry tones or hang time.
            ;     Special Case: Full duplex if linktolink is set to yes.
            ...
            ; 1 = Half duplex with telemetry tones and hang time. Does not repeat audio.
            ...
            ; 2 = Full Duplex with telemetry tones and hang time.
            ...
            ; 3 = Full Duplex with telemetry tones and hang time, but no repeated audio.
            ; 4 = Full Duplex with telemetry tones and hang time. Repeated audio only when the autopatch is down.

I believe the following menu options would be much clearer and less likely to cause confusion:

    "0" "Simplex node with no telemetry tones or hang time"     
    "1" "Simplex node with telemetry tones and hang time (default)"         
    "2" "Full-duplex repeater with telemetry tones and hang time"       
    "3" "Full-duplex node with telemetry tones and hang time (does not repeat audio)"               
    "4" "Full-duplex repeater (repeats audio only when autopatch is down)"                      
    "5" "Full-duplex node with no telemetry tones or hang time (duplex=0, linktolink=yes)"      

I hope that makes sense, and I believe that would be very clear in a wide variety of use cases, but I can understand that everyone has different backgrounds and ideas of how these settings are being used, so if you want to just keep it how it is that's fine as long as there is a clear and simple option for Full-duplex nodes without repeated audio.

Allan-N commented 8 hours ago

I think there is a also a tendency with the design of these sorts of menus to try and abstract away technical details, as if assuming that the common user is not able to understand the actual config setting values as described in rpt.conf and that the settings need to be presented in a more pedestrian way. So instead of simply asking what duplex value the user wants, the menu asks what kind of node you have.

This is exactly why we are asking the "what kind of node do you want to setup?" question. The initial node configuration menu just showed you the current/default node settings and you were on your own to set the channel driver, the duplex, enable stat posting, etc ... and many people just didn't know where to start. On top of that, finding a reliable source for the "correct" settings to use for your adapter/configuration with this/that software has been a challenge. With the current menus, we ask about the common configurations and if none of those fit you have the option to say "None of the above". I will also remind you that the question about the type of node ends up configuring more than duplex setting.

Also, I do not consider the use of the term "hotspot" to be correct in this context because a radio-less node is by definition not a hotspot, thus the use of the term "hotspot" rather than the more general and correct term "node", excludes radio-less and certain other types of nodes, which thereby makes it confusing for some users to know which setting they should pick. This does come off to me as the sort of "lowest common denominator"-targeted menu design, which thinks it's making things easier by distilling the options to the smallest set of simplistic terms, when it reality this misses common use cases, and is unclear for savvier users who already knew what specific duplex setting they want.

Yes, the initial node selection was/is intended to make it easier to configure common use cases. Did we miss a few? The answer will always be "yes" ... and that's why one can always choose "None of the above".

I also agree that the term "hotspot" may not be correct for a radio-less node ... and have no issues adding another common selection to the list.

What do you think about ?

    "1" "Hotspot (half duplex) with courtesy tones" 
    "2" "Hotspot (half duplex) with no courtesy tones"  
    "3" "Repeater or full duplex hotspot"
    "4" "HUB w/no radio"
    "5" "Radio-less node (full-duplex, does not repeat audio)"
    "0" "None of the above (show all settings)"

Over the last few days I have had another thought that might help strike a balance between asking for a generic "what type of node do you want to setup" with the configuration details. I "could" add a page acknowledging the choice and would explain the configuration changes that are being applied.