<?xml version="1.0" encoding="windows-1252"?>
<node id="695929" title="Cool Ideas for Perl Projects" created="2008-07-07 04:56:32" updated="2008-07-07 00:56:32">
<type id="120">
perlmeditation</type>
<author id="616540">
moritz</author>
<data>
<field name="doctext">
&lt;p&gt;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?&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Enough teasing, here's the list&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Popularity Contest for CPAN Modules&lt;/li&gt;
    &lt;li&gt;Offline Command Line Search for CPAN&lt;/li&gt;
    &lt;li&gt;Which tests matter?&lt;/li&gt;
    &lt;li&gt;Binary CPAN mirror&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They are all related to the perl+CPAN infrastructure, and need perl's
facility as a glue language.&lt;/p&gt;

&lt;readmore&gt;

&lt;h2&gt;Popularity Contest&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;[http://www.debian.org/|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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;


&lt;h2&gt;Offline Command Line Search for CPAN&lt;/h2&gt;

&lt;p&gt;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 [mod://CPAN] and [mod://CPANPLUS] can only search
in module and distribution names.&lt;/p&gt;

&lt;p&gt;That's why I'd like to have a command line utility that searches the POD
documentation, for example using the excellent [mod://KinoSearch] module.
Let's assume there's already a [mod://CPAN::Mini] mirror available...&lt;/p&gt;

&lt;h2&gt;Which tests matter?&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;There are two nice ideas how to find out which tests matter, both of them
involving [mod://Devel::Cover].&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;


&lt;h2&gt;Binary CPAN Mirror&lt;/h2&gt;

&lt;p&gt;I love CPAN, but I use Linux with a package management system and CPAN
ignores that. It installs to &lt;c&gt;/usr/local/&lt;/c&gt; 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).&lt;/p&gt;

&lt;p&gt;I can build Debian packages from CPAN packages with &lt;c&gt;dh-make-perl&lt;/c&gt;,
but it always takes some time, and I have to check (and follow) the
dependencies manually.&lt;/p&gt;

&lt;p&gt;So what I'd like to have (or build) is a CPAN mirror that automatically
builds binary packages from CPAN tar balls.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;/readmore&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;(Update: fixed a few typos, [Corion]++ and [Arunbear]++)</field>
</data>
</node>
