christopheM has asked for the wisdom of the Perl Monks concerning the following question:

We are using at CENA a perl module called Ivy.pm for more than 5 years now.

It was proven to be very powerfull for developping multi-agents /multi-plateform prototypes. In facts it is a software bus, very easy to use. It works on many languages and many architectures. added explanations: A new agent on the bus just connect, subscribes to messages through simple regexp (part of the regexp being given as arguments to callback) and send messages. Messages are text, and as any agent can subscribe to any regexp, it is very easy to use and add new agents.

Ivy is already freely available on our web site (thx to adrianh for the correction), but has never been uploaded on the CPAN. My question relates to the module name. In-house, we could hardly change this module name because it is used in more than 50 applications and in more than 10 teams.

So I can only see two ways to upload this usefull module:

  • we upload the module with this root name: Ivy
  • we upload the module in a subhierarchy Xxx::Ivy but we need to build a wrapper for our own needs... This solution seems to be a bit tricky and I fear this could be error-prone.

    Do you have some suggestions?

  • Replies are listed 'Best First'.
    Re: Which name for a new cpan module?
    by adrianh (Chancellor) on Nov 22, 2003 at 15:05 UTC

      First off, your web site isn't down - but your URL is incorrect :-) Info on Ivy can be found at http://www.tls.cena.fr/products/ivy/.

      Personally, my view would be to leave it as it is. It's already a publicly distributed module, just not on CPAN. Having different naming schemes for the CPAN and non-CPAN versions will probably cause more problems than it will solve if people are already using Ivy.pm outside of your environment. It looks like you have documentation already written with the existing namespace in mind, and changing it all at this late date is probably more effort than it's worth.

      You might want to join the module-authors@perl.org mailing list and ask the question there, where naming issues are often discussed.

        Your are right. The url was bad. I corrected it

        Your remark about doc is interesting. Changing the module name (or having it in two forms) will necessary impact the current man pages.

        Beyond our inhouse teams using Ivy.pm, I know there is at least 2 or 3 research teams using it and a startup (Intuilab) which business is (partly) based on Ivy.

    Re: Which name for a new cpan module?
    by sauoq (Abbot) on Nov 22, 2003 at 01:06 UTC
      So I can only see two ways to upload this usefull module

      If you did start calling it Xxx::Ivy, what would that "Xxx" part be?

      How about the other way around? Do you see a possibility of many Ivy related modules residing in the Ivy:: namespace eventually? Would you say it provides broad functionality in a specific area like, say, POE, LWP, or PDL? Or is it more narrowly focused like, say, Date::Calc? It sounds to me like this is a framework of sorts, and as such, it might make sense to give it its own top-level namespace.

      -sauoq
      "My two cents aren't worth a dime.";
      
        If you did start calling it Xxx::Ivy, what would that "Xxx" part be?

        It's a networked inter-process communications channel, so perhaps IPC::Ivy or Net::Ivy?

          Net::Ivy seems perfect.

    Re: Which name for a new cpan module?
    by Anonymous Monk on Nov 21, 2003 at 21:09 UTC
      What does it do? (your website is down, we need a better description)

      Don't forget to read perldoc perlnewmod

        I already uploaded two other modules Tk::Zinc and SVG::SVG2zinc. So I have now some little experience on it. However in the case of Ivy, the trad-off is between CPAN namespace pollution and preservation of our numerous existing applications. We can hardly get rid of 5 years of code, just to upload it to the CPAN. That's why I am looking for a wrapper technic or something similar to maintain the current Ivy.pm inhouse, while delivering a Xxx:Ivy on the CPAN.

        You are right, the website is currently down, I pray it will be up again on Monday. Sorry for this.

          That should be easy given you've properly designed your ivy modules. Make the switch to Xxx::Ivy, and upon `perl Makefile.PL' prompt (using ExtUtils::MakeMaker::prompt) users if they wish to install legacy Ivy module, which would do the neccessary mojo so your apps don't break ( if your modules are written well, all that should be neccessary is a
          #Ivy.pm package Ivy; use base 'Xxx::Ivy'; 1;
          ).
    Some Autoloader Magic?
    by bill_mcgonigle (Acolyte) on Nov 24, 2003 at 20:59 UTC
      Somebody here can probably suggest a method by which you could put an Ivy.pm shell in that would automatically call the corresponding Net::Ivy code, to migrate your current users.
        Somebody here can probably suggest a method by which you could put an Ivy.pm shell in that would automatically call the corresponding Net::Ivy code, to migrate your current users.

        Yup; as described above, it's as simple as this:

        package Ivy; use Net::Ivy; *{"Ivy::"} = *{"Net::Ivy::"}; 1;