I see that there are several shell interfaces to UCI -- /sbin/uci,  /lib/config/uci.sh,  and etc/functions.sh.

When I add new features, which one should I use for future compatibility?

Is etc/functions.sh a back-compatibility layer that will be phased out?

Why is /lib/config/uci.sh needed, given /sbin/uci?