Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Cool Ideas for Perl Projects

by moritz (Cardinal)
on Jul 07, 2008 at 08:56 UTC ( #695929=perlmeditation: print w/ replies, xml ) Need Help??

You'd like to learn perl a bit better, but missing a cool and useful idea? Or just want to gather a bit of fame in the Perl community?

Here are a few project ideas that I'd would like to see implemented, and that seem interesting enough for me to implement them. When I have time, which is the caveat - I won't get around to them in the near future.

Enough teasing, here's the list

  • Popularity Contest for CPAN Modules
  • Offline Command Line Search for CPAN
  • Which tests matter?
  • Binary CPAN mirror

They are all related to the perl+CPAN infrastructure, and need perl's facility as a glue language.

Popularity Contest

So you wrote a CPAN module, and after a few weeks you're a bit disappointed - all smokes are green, you've got one or two ratings, but still you have no idea how many people actually use your module. Or at least have it installed.

Debian has a (partial) solution for this, named "Popularity Contest", short popcon. They offer a package which runs a cron job once a week, and reports (anonymously) via email which packages are installed, and (if this information is available) if they were used.

I'd like to see something similar for CPAN distributions. I wouldn't send emails (because not everybody has a mail server installed) but rather report via HTTP POST requests.

I could argue about usefulllness, for example for perl distributors who want to decide what to deliver by default. But mostly I'm just curious about the results.

Offline Command Line Search for CPAN

I'm one of these unfortunate people who are offline rather often, and of course my best ideas come when I can't search CPAN to find out if somebody did the hard 90% of the work already. Also I just don't like to be forced to use a browser for any task. Plain CPAN and CPANPLUS can only search in module and distribution names.

That's why I'd like to have a command line utility that searches the POD documentation, for example using the excellent KinoSearch module. Let's assume there's already a CPAN::Mini mirror available...

Which tests matter?

The other day a fellow Perlmonger told me about a problem of his: Some of his modules have quite extensive test suites that need to be maintained. Over time they assemble some duplicated tests, and removing them would ease the maintenance burden.

There are two nice ideas how to find out which tests matter, both of them involving Devel::Cover.

The first is to run each test separately with Devel::Cover, identify which statements and branches are covered, and then search for test files which don't test anything that is also tested elsewhere.

The second sounds less efficient, but more fun: nuke each test file in turn (and restore the previously nuked), run Devel::Cover and see if the coverage has changed. You can use some evolutionary algorithms to optimize removal of multiple test files.

Binary CPAN Mirror

I love CPAN, but I use Linux with a package management system and CPAN ignores that. It installs to /usr/local/ so it's not that bad, but I'd like it better if I could install all CPAN packages with my package management system (in this case apt).

I can build Debian packages from CPAN packages with dh-make-perl, but it always takes some time, and I have to check (and follow) the dependencies manually.

So what I'd like to have (or build) is a CPAN mirror that automatically builds binary packages from CPAN tar balls.

This is a non-trivial taks because non-perl dependencies aren't encoded in a cross-platform and machine readable format in CPAN packages, but a partial solution for pure-perl only modules would still be formidable.

So if you that inspired you, feel free to implement any of them (or tell me that there already is a solution), or go on and write about your own cool perl project ideas.

(Update: fixed a few typos, Corion++ and Arunbear++)

Comment on Cool Ideas for Perl Projects
Select or Download Code
Re: Cool Ideas for Perl Projects
by jplindstrom (Monsignor) on Jul 07, 2008 at 12:12 UTC
Re: Cool Ideas for Perl Projects
by kyle (Abbot) on Jul 07, 2008 at 12:51 UTC
      Yes, very close. I didn't know about it, and haven't tried yet. But I'll certainly do.

      A small downside seems to be that it's a i386 32 bit repo only.

Re: Cool Ideas for Perl Projects
by dragonchild (Archbishop) on Jul 07, 2008 at 13:05 UTC
    Or, you could just take over one of the many modules that people like to use, but have no maintainer. I have a list of modules I need to give away to someone because they're just withering on the vine for lack of my time.

    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
      Is there a simple way of finding such modules? I know there is the list at cpanforum.com, but it is a very short list right now.

      And does the above list contain all of your modules that you want to pass on?

        Given that I didn't know about cpanforum.com, probably not. My list is: I've got other modules, most of them at 0.01. If someone wants one of them, I'll gladly work with them on that. And, to be honest, I've got like 300 ideas that would make great CPAN modules, but I just don't have time to work with them.

        If anyone wants to work with me on them, please email me at rkinyon AT cpan.org


        My criteria for good software:
        1. Does it work?
        2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Re: Cool Ideas for Perl Projects (The Strawberry Loft)
by Corion (Pope) on Jul 08, 2008 at 09:36 UTC

    One cool idea that is floating in the back and front of my mind from time to time would be the combination of Strawberry Perl together with PAR, DBD::SQLite and The GUI Loft into a Visual Basic/Access/Filemaker clone.

    I have only taken a cursory look at The GUI Loft, and so far I mostly see the need to excise XML::Simple resp. XML::Parser from the prerequisites, as Strawberry Perl "only" comes with XML::LibXML and not XML::Parser. Starting from there, it should be possible to get The GUI Loft to run on a current Strawberry Perl. Then, some wizards to package up everything under a directory into a PAR executable or to even collect the code together with the data in the SQLite database should be fairly easy and it would make Perl a convenient tool to create deployable applications to users when no web server is available.

      I think the only thing XML is used for is config reading/writing, so replacing it with YAML or a hashref should be trivial.

      And I don't think that's used at all in the TGL runtime library.

      /J

      This is such a great idea, I'd love to see it. It would be even better if one could create easily create portable apps.

      I've played a bit with The GUI Loft and I'm quite impressed. The only problem I have with it is that is Win32 only.

      If only there was a similar tool for wx or even Tk that was a nicely done, I'd happily suggest it. Sadly I can't think of anything to suggest.


      TGI says moo

Re: Cool Ideas for Perl Projects
by rafl (Friar) on Jul 09, 2008 at 21:47 UTC
    • Popularity Contest for CPAN Modules

    Nice idea! I'll give it a shot.

Re: Cool Ideas for Perl Projects
by salva (Abbot) on Jul 10, 2008 at 06:48 UTC
    Binary CPAN mirror
    Very related to this one, something I would really like to see is a module to generate native packages for as many platforms as possible.

    Now there are packers for RedHat and Debian and I believe that CPANPLUS has its own, but they do not share any code and are very specific to their platform. So, making a new packer for, say, Solaris, is a huge task.

    The idea would be to create a new module (Module::Packer?) as platform neutral as possible to drive the packing process and handle common tasks (compiling the module, detecting which files have to be installed, etc.) and a set of platform dependant plugins (Module::Packer::RedHat, etc.) that should perform operations like finding dependencies or building the package in the native format.

    BTW, this discussion should be moved to the Perl Wiki!

      Very related to this one, something I would really like to see is a module to generate native packages for as many platforms as possible.

      Very good idea, and I think I saw something similar in the TPF grant proposals. I don't know if the proposal was rejected or just not funded, but I don't think it got funded.

      Update: this is the one I was thinking about: extending BSDPAN

      BTW, this discussion should be moved to the Perl Wiki!

      Feel free to take whatever I've written in this thread to the perl wiki.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (7)
As of 2014-12-28 14:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (181 votes), past polls