For a while, years really, I have been musing about this thing I have wanted to write about naming modules. I get to think about this a lot because lately I've been the one approving (or not) most of the modules submitted to The Module List.
Aside from the usual naming advice I'm curious about how modules which we thought we had named well turned out not to have such great names. Surely that is always going to happen, but maybe there is something to learn there. A "regrettable" module name may have seemed really good at the time, others may have agreed with you, and maybe even I approved the name for the module list. Then time passed and things turned out differently. I don't want to call these "bad" names, or "sub-optimal" names, just "if-i-had-to-do-it-over" names.
Before I invite others to talk about their regrettable module names, I'll go through my own module list. After that, please feel free to tell me privately or in public about your regrettable names, and whether I get to use your stuff in a future article.
Now, on to it:
- I think this was my first module, and if not, my second. Ed Summers now maintains it, and for a couple years he and Andy Lester mused about moving it to a Biblio::* namespace. At the time I uploaded it (1998ish), I wasn't really happy with the name, but there was nothing else like it on CPAN. Jon Orwant had Business::CreditCard, which was another checksumming module, and as I recall he suggested they might live together. Since then, Business::ISBN does a lot more than just checksum stuff (it handles xISBN, EANs, barcodes, and more), and it certainly is not just a business thing: I could use this module to catalog my personal library. Still , that's not how it turned out.
- Ughh. I certainly wish someone had slapped me around a bit when I suggested that name. HTML::LinkExtor::Simple would have been much better since it is just a subclass with a lit decoration. I now know the ugliness of putting too many things into the same namespace name level.
- This one isn't really my fault because I took over the module for some reason I forget: I might have been the sole user. This is the sort of module that everyone writes, like the GetOpt stuff. Just like HTML::SimpleLinkExtor, this one stuffs too much into a namespace level: Config and Reader. Now it writes too. Like Business::ISBN, this one grew out of its name. Better name: Config::Simple.
- I wrote this to get back some functionality that modern versions of Test::Harness lost. I want to decide which tests and the order of tests to run, despite what's in the t directory. I use a file I call test_manifest, so Test::Manifest seemed to make sense. But, with its name, people sometimes think it has something to do with MANIFEST. Better name: no idea, Test::Order?
- I wrote this shortly after Business::ISBN, and this one has two gotchas: Netscape is virtually dead, and it starts specific and goes to general. Company names make for poor namespace names, and product names, like Navigator, the actual product may be better. If I had been thinking about more of the world than just Navigator way back when I wrote this, i would have planned to handle bookmarks for other browsers too. I did this with the various HTTP::Cookies::* modules ( ::Mozilla, ::iCab, and so on), and I wish I had done something like WWW::Bookmarks::Navigator, ::iCab, and so on. Like the HTTP::Cookies::* modules, the WWW::Bookmarks::* could share a common internal format that makes it easy to convert between borwser formats. Naming from general to specific makes for easier expandibility.
So now that I've told you about some of mine, what about yours? Talk about other people's modules at your own risk.
brian d foy <firstname.lastname@example.org>