Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

"Vanity Tagging" on CPAN?

by BUU (Prior)
on Sep 16, 2004 at 09:26 UTC ( [id://391394]=perlmeditation: print w/replies, xml ) Need Help??

This is a mostly hypothetical question, so treat it as such. Just recently I was pondering the idea of writing my own IRC-bot type module, that would of course, provide a framework to connect to irc and the usual stuff people implement in modules like these.

Then I thought, "Perhaps I might actually write something useful and other people might want to use it.. so I might want to upload it to CPAN!". Of course, if I want to upload it to CPAN I need to have a unique descriptive name.

Obviously there already exists a moduled named Net::IRC, so I can't call it that, nut it does the same thing (or similar things) as Net::IRC, so what *other* name could I give it? I suppose I could go with Net::IRC2 or something, but that just feels wrong.

So I came up with the idea of calling it BUU::IRC or something similar. The idea of course is to be descriptive and unique but I thought this might not be a good idea, so I extend my question to you people. Modules with a person's "name" in the title, good or bad?

I will note in passing that there are lots of modules that have a proper name in the title, but mostly these are named after systems of some sort, most notably POE has it's own namespace.

Replies are listed 'Best First'.
Re: "Vanity Tagging" on CPAN?
by borisz (Canon) on Sep 16, 2004 at 10:00 UTC
    Modules with persons name are just noise on CPAN. A name means nothing. It is a missuse of the namespace.
    BUU::IRC BORIS::IRC ...
    For your bot, what about
    Net::IRC::Bot Net::IRC::Generic Net::IRC::Base Net::IRCBase
    But please find a name inside CPAN's namespace and _not_ in the root.
    Boris
Re: "Vanity Tagging" on CPAN?
by Pragma (Scribe) on Sep 16, 2004 at 10:47 UTC
    Before you worry about what name you would like, have you given serious thought to what features are missing from existing CPAN modules that you would like to include in yours? Have you considered extending (subclassing or patching) existing modules, instead of starting anew and reinventing this wheel?
Re: "Vanity Tagging" on CPAN?
by rjbs (Pilgrim) on Sep 16, 2004 at 11:17 UTC
    When I see BUU::IRC, I think, "I wonder what BUU is. Why do people want to connect it to IRC?"

    Sure, as someone said, you're creating some kind of connection between you and your module. Very few people will understand that, though. Even if it was abundantly clear, it would be redundant. Your modules are already stored under your name, and with your name plastered all over them. No one is going to say, "Finally! I can be reminded of the author's name every time I C<use> his code!"

    Find something descriptive. How does your code improve on Net::IRC? Is it faster (Net::IRC::Fast)? Is it easier to use (Net::IRC::Simple)? Is it just an alternate take (Net::IRC::Neo).

    Your code deals with IRC. IRC is a network protocol. Your code belongs under Net::IRC.
    rjbs
      Find something descriptive. How does your code improve on Net::IRC? Is it faster (Net::IRC::Fast)? Is it easier to use (Net::IRC::Simple)? Is it just an alternate take (Net::IRC::Neo).
      My problem with that suggestion is I think nicely stated by sintadil:
      Considering the flakiness and oft brokenness of Net::IRC (and the very admission of its author of these points), I'd completely avoid anything containing that. People are weird creatures, and they often associate bad things with an object just by appearances. If someone feels (like I do) that Net::IRC is broken, and sees "Net::IRC" in your module name(s), that someone will probably think that your module is broken in the same way(s) -- and thus they'll avoid it. It's regrettable, but it is human nature.
      Since, hypothetically, my module has nothing at all to do with Net::IRC in any shape or fashion, other than filling some of the same niche, I really don't want to be associated with it in the manner that Net::IRC::<anything> would give me. Also as rcaputo points out:
      POE components tend to have "POE" in their names because they don't live separate lives from that framework. The implication is "You need POE to use this." In that vein, BUU::IRC implies that some BUU module is necessary to use it.
      So Net::IRC::<anything> seems to imply that some Net::IRC module is necessary to use it. Which wouldn't be true. I guess my best solution is to simple find a new name below net, Net::FrameworkIRC or something similiar, but those are the reasons I don't want to be under Net::IRC.

        If you feel Net::IRC::* is not appropriate for your module because yours is more of a framework, how about taking a page from Simon Cozens' book and create an altogether different moniker that while abstract, would be descriptive of the framework as a whole? For example, "Maypole" is his name for his application framework -- see this weblog nicely outlining the reasoning behind the naming: http://www.oreillynet.com/pub/wlg/4451

        Update: revised to better indicate that I meant an abstract name.

        [Jon]

        I have to say I've never felt the need to connect to IRC, but ... if the module is broken, everyone knows it's broken, even the author knows its broken ... why doesn't anyone fix it? And if the interface just feels wrong (too lowlevel or something) then Net::IRC::Simple sounds like a good match. Even if behind the scenes the old Net::IRC module is scraped and replaced by a wrapper that calls your Net::IRC::Simple.

        You seem to be overly worried of getting associated with Net::IRC, let me tell you something, not once, but quite a few times did I have to explain to people that Win32::Daemon::Simple is not a module that'd stand on its own, but a wrapper over Win32::Daemon. That they can't have Win32::Daemon::Simple without installing Win32::Daemon first. Looks like they did not think Win32::Daemon::Simple is a subclass.

        Jenda
        Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
           -- Rick Osborne

Re: "Vanity Tagging" on CPAN?
by hv (Prior) on Sep 16, 2004 at 10:15 UTC

    I agree with others that your name should not be part of the module's name. Note however that for Perl6, the author's identity will form part of the effective 'version' of the module, so it will be possible for lots of people to release modules called 'Net::IRC', and for the program to distinguish which one it wants to use.

    Hugo

      The problem being that a release version of Perl 6 isn't out yet...
Re: "Vanity Tagging" on CPAN?
by EdwardG (Vicar) on Sep 16, 2004 at 10:15 UTC

    'BUU' does mean something; it means you are associated with the module, even though it means little or nothing in terms of what the module actually does. I would suggest you reverse your idea and go with (if you are going to go at all):

    Net::IRC::BUU

    Which I would interpret as "BUU's version of Net::IRC.

     

      That sounds like a reasonable suggestion, my only problem with it is that it seems to imply that My module is either a subclass or part of or some how affiliated with Net::IRC, when in reality they have nothing at all in common (except for possibly connecting to IRC).
        If you're worried about subclassing considerations, how about something like Net::IRCTool::BotName? This creates a new level called 'IRCTool' for IRC Tools to use, and BotName is whatever you name your module (maybe Net::IRCTool::BUU). It also leaves the door open for other people to release other IRC Tool modules, without causing confusion that something like Net::IRC::Tool or Net::IRC::BUU would cause.
        --
        $me = rand($hacker{perl});
Re: "Vanity Tagging" on CPAN?
by graff (Chancellor) on Sep 16, 2004 at 12:55 UTC
    I'd like to second Pragma's point, and add a few thoughts to that:

    If your hypothetical module is going to be fundamentally different from Net::IRC -- meaning that people would use your module as a replacement rather than as an extension for Net::IRC -- maybe you'd want to think about identifying some feature that might stand out as unique to your version, and find some way to boil that down so it fits into the module name -- e.g. Net::LogIRC, if you worked hard on logging, or Net::UniIRC, if a main goal is to include support for typing/displaying unicode text. At worst, you could try "Net::YAIRC" (before someone else uses this name). But using "BUU" in any way would be a mistake, I think.

    On the other hand, if your creative impulse can be channeled into building a module that extends Net::IRC, then your module name is easier to make up: Net::IRC::Extrafeature (whatever the primary "Extrafeature" may be). Doing it this way has some advantages for all concerned:

    • The module parts that have to do with "infrastructure" (protocols, security, basic efficiency) will receive more effective peer review, and will tend to be maintained and upgraded more reliably, if they exist in a single "reference" module that everyone starts with (Net::IRC).
    • The parts that you're adding to scratch your particular itch will be easier to write and maintain, because you don't have to worry about the infrastructure.
    • Things will appear (and actually be) easier, more meaningful and more sensible for CPAN users. If I needed to write my own special IRC app, I'd prefer looking for a single "base" module and browsing through extensions for it, rather than having to compare a bunch of different base modules.

      On the other hand, if your creative impulse can be channeled into building a module that extends Net::IRC, then your module name is easier to make up: Net::IRC::Extrafeature (whatever the primary "Extrafeature" may be). Doing it this way has some advantages for all concerned:

      This would be nice....in a perfect world. The problem is that some modules need completely or mostly complete rewrites. I have a similar problem right now with Net::MSN, i've worked with a community and we have spent a lot of time rebuilding the whole interface. It works, but where do we put it? It's not a just a patch to the original Net::MSN, its a completely different module with the same goal. I doubt there is a perfect answer, but "build off the current one" often isn't an option. Any best of luck BUU and if you have stroke of genious let us know :) Ohh for the record I don't think adding your name to the module is a solution, it just confuses the name space on cpan.


      ___________
      Eric Hodges
Re: "Vanity Tagging" on CPAN?
by gjb (Vicar) on Sep 16, 2004 at 09:46 UTC

    The naming conventions of Java packages are along these lines, although this is mostly for organizations (e.g. org.w3c.dom.*).

    A reasonable approach to avoid confusion might be to prefix the name to the category name, so for your example that might be 'BUU::Net::IRC'. I think this would limit confusion.

    Just my 2 cents, -gjb-

Re: "Vanity Tagging" on CPAN?
by sintadil (Pilgrim) on Sep 16, 2004 at 14:00 UTC

    Considering the flakiness and oft brokenness of Net::IRC (and the very admission of its author of these points), I'd completely avoid anything containing that. People are weird creatures, and they often associate bad things with an object just by appearances. If someone feels (like I do) that Net::IRC is broken, and sees "Net::IRC" in your module name(s), that someone will probably think that your module is broken in the same way(s) -- and thus they'll avoid it. It's regrettable, but it is human nature.

Re: "Vanity Tagging" on CPAN?
by Aristotle (Chancellor) on Sep 17, 2004 at 00:26 UTC

    Please don't. I'm glad my Perl scripts don't all start with

    use GAAS::Web; use GBARR::FTP;

    and the like. And what happens in case your module is actually useful enough that once you are no longer able or inclined to maintain it, someone else wants to take over maintenance?

    Don't go there. Use a descriptive name. Anything else is pollution.

    The module-authors list is a fine place to get naming suggestions if you have trouble with that.

    Makeshifts last the longest.

Re: "Vanity Tagging" on CPAN?
by jZed (Prior) on Sep 16, 2004 at 15:17 UTC
    I agree with the other posters, especially pragma's point. The only thing I'd add is a more general point about the top level hierarchies. Net::* or DBD::* or Foo::* are categories of modules and it's in everyone's interest to keep that level of naming clean and meaningful. That said, I myself violated this rule when I created the AnyData::* hierarchy. At the time I asked Tim Bunce and the modules list about it and no one objected. It makes some sense because there are lots of modules within the hierarchy. Still, I somewhat regret my decision for the reasons mentioned above.
Re: "Vanity Tagging" on CPAN?
by rcaputo (Chaplain) on Sep 16, 2004 at 18:43 UTC

    BUU writes:

    I will note in passing that there are lots of modules that have a proper name in the title, but mostly these are named after systems of some sort, most notably POE has it's own namespace.

    POE components tend to have "POE" in their names because they don't live separate lives from that framework. The implication is "You need POE to use this." In that vein, BUU::IRC implies that some BUU module is necessary to use it.

    On the other hand, modules based on POE aren't required to be in POE's namespace. People just feel strongly enough about the association to insist on putting them there. So strongly in fact that the POE::Component namespace was set aside to let them without conflicting with the framework itself. From POE::Component's documentation:

    The POE::Component namespace was started as place for contributors to publish their POE-based modules without requiring coordination with the main POE distribution.

    Term::Visual is a notable exception. It provides a three- or four-section terminal interface (title line, scrolling terminal region, status bar, input line). To come full-circle, I think japhy has written an actual IRC client using it and POE::Component::IRC.

    -- Rocco Caputo - http://poe.perl.org/

Re: "Vanity Tagging" on CPAN?
by eyepopslikeamosquito (Archbishop) on Sep 16, 2004 at 22:49 UTC
    Nowadays, Perl monks seems the best place to get decent and quick feedback on almost anything related to Perl. However, if you want a second opinion, post your question to perl module-authors mailing list. From browsing the archives, I think the consensus on that list is that using the CPAN author id as part of a module namespace is bad form.

      How about if you've got a good idea for a module (extending something existing / improving on something or creating something totally new) that those mailing lists are first port of call to ask for suggestions?

      Something that may seem obvious and meaningful to you may be totally obscure to the rest of the community.

      update
      Okay, seems like someone thought that was a bad idea. I short explanation as to why would have been more helpful than an anonymous downvote though :) If we don't know where we're going wrong, how can we learn from our mistakes?

Re: "Vanity Tagging" on CPAN?
by jacques (Priest) on Sep 16, 2004 at 21:28 UTC
    I wouldn't use your name. I agree with boris. You should not use your name as a root name.

    I wonder if other languages (cp. Java & PHP) have the same issues? Perhaps your question points to a broader concern of the structure of CPAN. IMO it is too loose and allows too much autonomy by the authors. And I do not see this as a strength.

      In Java you use your domain name, in reverse order. IE
      package org.perlmonks.why.do.we.have.a.java.class;
      PHP doesn't really have any good namespace system. You can define classes, but that's only one level of namespaceing. You have to resort to the old C style smMdlAbbr_* before your variables and functions.
Re: "Vanity Tagging" on CPAN?
by xdg (Monsignor) on Sep 17, 2004 at 15:03 UTC

    My .02 is that you should consider putting it into some "Bot::" or "Net::Bot::" heirarchy. (There are several like this, search CPAN for bot first -- you might find something you want to extend or subclass and you'll want to worry about namespaces clashes there, too.) That seems to make more sense to me, since the behavior of a bot is the more generic part and a bot implemented for IRC seems the more specific.

    Also, I'd say just write it first with whatever name you want, and worry about what to rename it to put it on CPAN later. Once it works and once you're convinced it's really a significantly better alternative than other bot solutions, that's the time to worry about a CPAN release.

    Personally, I suggest setting aside the advice that says "you should rewrite/extend an existing CPAN module instead of rolling your own". The expression "reinventing the wheel" is tossed around a lot, but few modules on CPAN are really simple enough tools to be considered wheels. Sometimes you need to start from scratch. If you really can make a better tool, go for it!

    -xdg

    Code posted by xdg on PerlMonks is public domain. It has no warranties, express or implied. Posted code may not have been tested. Use at your own risk.

Re: "Vanity Tagging" on CPAN?
by PodMaster (Abbot) on Sep 17, 2004 at 06:32 UTC
    How about something like
    use ORG::CPAN::AUTHORS::BUU; use ORG::PERL::PAUSE::BUU;

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      Would you like fries with that flamebait? :-)

      Makeshifts last the longest.

        No thanks (not intended as flamebait at all, its a reasonable solution).

        MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
        I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
        ** The third rule of perl club is a statement of fact: pod is sexy.

Re: "Vanity Tagging" on CPAN?
by Intrepid (Deacon) on Sep 21, 2004 at 04:57 UTC

    Module-Authors? Really?

    I see here a chance to acquire a startling lack of interest, along with, likely, a handful of idle downvotes ... just because the thread's already so long and "done". So I'll go for it (as is my style) with one final observation:

    I disagree with the characterization of Module-Authors as an automatic resource guaranteed to give quality or authoritative guidance. My experience with it was that it simply wasn't. Nobody with any real wisdom was paying any attention, maybe, that week. Or who knows. For whatever reason, when I asked about a namespace for a CPAN module I was preparing, I got mostly the flakiest kind of bandwidth and time -wasting idiocy from the kind of compulsive person who doesn't yet know what they are talking about (and may never) but cannot restrain themselves from making an appearence anyway. A real flame-bait-resisting waste of time, all in all. I doubt that I'll ever seek guidance there again.

    In my opinion, which is based on my direct experience with it (not hearsay, not theory, not wishful thinking, not an assumption), you'll get good advice from the Module-Authors List if you are both lucky and, likely, persistent. If you are neither, you won't.

    There's a larger issue here. I would be far more hesitant than I see many Monks being here, about advocating in answer to queries like this one, the use of external (to Perlmonks) resources whether they are Web-based community sites, Mailing lists or newsgroups, or whatever newer kind of forum appears next. I humbly suggest that: If you aren't actively involved in that site or forum on a continuing basis and not taking responsibility for some degree for how well it is fulfilling its charter, then: think twice before recommending it to a fellow Monk! Just the fact that you know that something exists that the asker seems not to, is not sufficient grounds to endorse it to them. And furthermore, jusy because something emanates from a particular domain, e.g. perl.org, this also (sad tho it may be to say) does not make it valid to assume that it is a really helpful resource at the current time.

    Of course there are people here at Perlmonks, like everywhere, that just like to see their own name on a node, and whether others take them seriously, or whether they have a reputation for being astute or sensible, doesn't seem to concern them. Thus the old expression "consider the source."

      At least one of the two monks who recommended that list on this thread happens to participate in it, too.

      Makeshifts last the longest.

      I upvoted you b/c you're clearly trying to get downvotes.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://391394]
Approved by Corion
Front-paged by castaway
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2024-03-28 10:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found