Hi Andy,
There are some guidelines for naming packages, as discussed in the
manual:
https://guix.gnu.org/en/manual/devel/en/html_node/Package-Naming.html.
Ultimately, of course, the final say rests with the commiters who do or
do not accept a given patch in a given state. As for namespaces, Guix
packages being defined in Guile and thus in Guile modules provides
namespacing in most contexts - if not operating at the command line,
one need only use the correct module and reference a given package
object directly.
That said, last night I was just considering the potential for name
conflicts. If a given `guix package -i <package>` command would resolve
equally well to two different packages, for example, it seems the
priority goes to whichever one comes first in some alphabetic
comparisons - or perhaps it's by the order of channels in the channel
list; I didn't investigate much more than to find out if Guix offers
any manual intervention.
I mused aloud about the possibility of adding a switch to specify
channels in such situations and was offered the following addition to
the command: `-e '(@ (my channel packages) foo)'`. This allows one to
specify Scheme objects precisely. In this case, that code resolves to
the package `foo` in the module `(my channel packages)`. Of course,
this is not necessarily obvious or approachable to a relatively new or
casual user - I had to test to understand the incantation above, and I
would not have considered it without advice.
All of that to say, you raise some good questions. I hope these
thoughts prove useful to you in your endeavors.
Best,
Juli