April 19th 2006 #
random, April 19th 2006
Why I Don't Like inverse.domain.names
Some people like to name their Common Lisp packages with javaesque inverse domain names like com.example.frobber. While I applaud to the sensible desire to keep the global namespace clean I also cringe each time I see these names:
- If such a package goes unmaintained by the original author, and someone else picks up the slack without intention to fork or become a long-term maintainer, what should be done about the name? Keep it pointing to an unresponsive author (who may not even own the domain anymore)? Rename the package even if all changes are backwards compatible bugfixes?
- If the package maintainer loses the domain that was used to name the packages, what will he do? Keep the original name? Rename even though there are no actual changes?
The only advantage of using inverse domain names is that you get an external authority to refer to when deciding who owns which bits in the namespace — except that the DNS system doesn't really govern package names and will not help if I decide to call my package net.yourdomain.foo! Granted, that would be a doggish thing to do, but that fact that it can happen remains, and if it does the only recourse is to speak to the offender and tell him how deeply his actions suck.
From where I stand a simple yourname-packagename seems just as good as an inverse domain name, except that you can't lose it without changing your name — which I presume a rarer occurrence then a domain name changing hands. Same works for companies as well. Problems related to package name indicating maintainer/owner remain.
If you really want to find a hierarchy and stick your name in it, the perlish Topic::Name (pick a delimiter of your choise) names seem fine too, except that it doesn't have much traction in the CL community. Same criticisms that apply to scheme when used with perl are equally valid here, but I don't personally believe it fundamentally wrong.
FWIW, my own preference is for "personable" names like Osicat and Linedit, but I'm also guilty of participating in the trivial-foo meme.