The best, most obvious for an Elm GraphQL package is elm-graphql. I agree that there exists a second-best name that is not quite as good, but still descriptive. Also a third-best, and so on. A long tail.
If the naming policy is “come up with a name that is short, descriptive, and has never been used before” then the first person to ever publish an Elm GraphQL package gets elm-graphql and everyone else after that has a harder job - come up with a name that’s still short and descriptive, but which none of the N package authors who came before thought of - and the end result is still a less descriptive name than elm-graphql.
What a thankless, unrewarding job, compared to having it be okay to choose elm-graphql!
To be maximally successful in a naming system like that, you have to be first to publish. (When I realized elm was not taken on npm I told Evan he needed to grab it immediately before someone else took it, even though there was no installer to publish yet.) This very directly rewards work that’s done quickly over work that’s done carefully, which is a really damaging incentive to create for an ecosystem.
Given this, it’s no wonder people throw up their hands and start using animal names! If you can’t win on clarity because others already took the best names, optimize for personal gratification instead. It seems to me that the ineveitable result of a “come up with a short, unique, descriptive name” policy is packages with names that have no relation to what they do. The incentives push package authors toward that outcome.
What happened in npm will happen in Elm unless we take steps (like the “choose obvious names” policy) to avoid it.
The leftpad problem was that an author unpublished a package, breaking everything that depended on it.
What does that have to do with naming?