
Simon Marlow writes:
The only way (currently) to have such a guarantee is to use User.To.Cryp.Simons as the root of your library tree.
Does this really guarantee uniqueness? What if I don't own a domain name personally? What if I give up my domain and somebody else buys it? What if somebody doesn't know of this convention and simply uses this exact name because he likes it? As far as I can tell, you cannot guarantee unique names at all if your name space system has an absolute root -- like Haskell does. Whatever you come up with may potentially clash with someone else's name -- and probably will. :-) The only way to guarantee unique names -- without requiring people to abide to some "arbitrary" convention -- is the module names to be relative. If I import a module "Foo.Bar", and I am "Peter.Simons.ToolXY", then this module will be "Peter.Simons.Foo.Bar" for me. In such a system I can uniquely access any module, no matter how it's called. So if we _need_ a convention to guarantee unique names (within our convention), any one is as good any other -- technically speaking. And IHMO the simplest possible convention for a source repository we could provide is: Call it whatever you like, as long as it begins with "Unstable" and it is not taken yet. To refer to current practice one more: This is exactly the way domain names are handled, and despite all the problems, it has worked pretty good so far.
Perhaps there's a demand for a part of the hierarchy that is a "free for all", with no formal process for acquiring names, where collision is "at your own risk". Suggestions for the root name for this hierarchy are welcome: Unstable or Temp perhaps?
I think "Unstable" is a pretty descriptive name. Or maybe "User"? The latter is probably better for psychological reasons. :-) Peter