Acme-CPANLists
view release on metacpan or search on metacpan
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The license agreements of most software companies try to keep users
at the mercy of those companies. By contrast, our General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. The
General Public License applies to the Free Software Foundation's
software and to any other program whose authors commit to using it.
You can use it for your programs, too.
When we speak of free software, we are referring to freedom, not
price. Specifically, the General Public License is designed to make
sure that you have the freedom to give away or sell copies of free
software, that you receive source code or can get it if you want it,
that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
For example, if you distribute copies of a such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must tell them their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any program or other work which
contains a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The
Each version is given a distinguishing version number. If the Program
specifies a version number of the license which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
the license, you may choose any version ever published by the Free Software
Foundation.
8. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19xx name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
Changes
LICENSE
MANIFEST
META.json
META.yml
Makefile.PL
README
dist.ini
lib/Acme/CPANLists.pm
t/00-compile.t
t/author-pod-coverage.t
t/author-pod-syntax.t
weaver.ini
{
"abstract" : "CPAN lists",
"author" : [
"perlancar <perlancar@cpan.org>"
],
"dynamic_config" : 0,
"generated_by" : "Dist::Zilla version 6.008, CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : 2
{
"class" : "Dist::Zilla::Plugin::SetScriptShebang",
"name" : "@Author::PERLANCAR/SetScriptShebang",
"version" : "0.01"
},
{
"class" : "Dist::Zilla::Plugin::Test::Compile",
"config" : {
"Dist::Zilla::Plugin::Test::Compile" : {
"bail_out_on_fail" : 0,
"fail_on_warning" : "author",
"fake_home" : 0,
"filename" : "t/00-compile.t",
"module_finder" : [
":InstallModules"
],
"needs_display" : 0,
"phase" : "test",
"script_finder" : [
":PerlExecFiles"
],
}
],
"zilla" : {
"class" : "Dist::Zilla::Dist::Builder",
"config" : {
"is_trial" : 0
},
"version" : "6.008"
}
},
"x_authority" : "cpan:PERLANCAR",
"x_serialization_backend" : "Cpanel::JSON::XS version 3.0217"
}
---
abstract: 'CPAN lists'
author:
- 'perlancar <perlancar@cpan.org>'
build_requires:
File::Spec: '0'
IO::Handle: '0'
IPC::Open3: '0'
Test::More: '0'
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 0
generated_by: 'Dist::Zilla version 6.008, CPAN::Meta::Converter version 2.150010'
version: '0.23'
-
class: Dist::Zilla::Plugin::SetScriptShebang
name: '@Author::PERLANCAR/SetScriptShebang'
version: '0.01'
-
class: Dist::Zilla::Plugin::Test::Compile
config:
Dist::Zilla::Plugin::Test::Compile:
bail_out_on_fail: '0'
fail_on_warning: author
fake_home: 0
filename: t/00-compile.t
module_finder:
- ':InstallModules'
needs_display: 0
phase: test
script_finder:
- ':PerlExecFiles'
skips: []
name: '@Author::PERLANCAR/Test::Compile'
version: '6.008'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':NoFiles'
version: '6.008'
zilla:
class: Dist::Zilla::Dist::Builder
config:
is_trial: '0'
version: '6.008'
x_authority: cpan:PERLANCAR
x_serialization_backend: 'YAML::Tiny version 1.69'
SYNOPSIS
Acme::CPANLists is yet another way to organize CPAN modules/authors
into various "lists".
SPECIFICATION VERSION
0.090
DESCRIPTION
With the multitude of modules that are available on CPAN, it is
sometimes difficult for a user to choose an appropriate module for a
task or find other modules related in some ways to a module. Various
projects like CPAN Ratings <http://cpanratings.perl.org/> (where users
rate and review a distribution) or MetaCPAN <https://metacpan.org/>
(which has a ++ feature where logged-in users can press a button to ++
a module and the website will tally the number of ++'s a distribution
has) help to some extent. There are also various blog posts by Perl
programmers which review modules, e.g. CPAN Module Reviews by Neil
Bowers <http://neilb.org/reviews/>.
For categorizing CPAN authors, there are also the Acme::CPANAuthors
project, complete with its own website <http://acme.cpanauthors.org/>.
Acme::CPANLists is another way to help. One creates an
Acme::CPANLists::SOMENAME module, and inside it puts lists of CPAN
modules and authors with their descriptions/reviews/ratings. The
creator of the list is free to organize her list in whatever way she
likes.
A related website/online service for "CPAN lists" is coming (when I
eventually get to it :-), or perhaps when I get some help).
CREATING AN ACME::CPANLISTS MODULE
The first step is to decide on a name of the module. It must be under
the Acme::CPANLists:: namespace. Since, unlike in Acme::CPANAuthors, a
a separate module under your CPAN ID subpackage, for example:
Acme::CPANLists::PERLANCAR::Unbless or
Acme::CPANLists::PERLANCAR::Task::PickingRandomLinesFromFile.
Inside the module, the two main package variables you have to declare
are:
our @Author_Lists = ( ... );
our @Module_Lists = ( ... );
Obviously enough, @Author_Lists contains author lists while
@Module_Lists contains module lists.
Each author/module list is just a hash structure (DefHash). The basic
structure is this:
# an example author list
{
#id => 'GUID', # optional, can be set to ease list identification/referral
summary => 'My favorite modules',
description => <<_,
(Some longer description, in Markdown format)
This is just a list of my favorite modules.
_
entries => [
{...},
...
],
}
# an example module list
{
#id => 'GUID', # optional, can be set to ease list identification/referral
summary => 'My favorite authors',
description => <<'_',
(Some longer description, in Markdown format)
This is just a list of my favorite authors.
_
entries => [
{...},
...
],
Each entry is another, similar hash structure (DefHash):
# an example author list entry
{
author => 'RJBS',
summary => 'Kick-ass projects',
description => <<'_',
He is my favorite author because he starts some kick-ass projects which I
use daily, one of which is Dist::Zilla. It has saved me so much time, as
well wasted countless, because by using Dist::Zilla I am motivated to
release lots and lots of Perl modules.
_
# rating => 10, # optional, on a 1-10 scale
# alternate_authors => ['SOMEONE', 'ANOTHER'], # optional, if you want to express alternate author(s)
}
# an example module list entry
{
module => 'Data::Dump',
summary => 'Pretty output',
description => <<'_',
Data::Dump is my favorite dumping module because it outputs Perl code that
is pretty and readable.
_
# related_modules => ['Data::Dump::Color', 'Data::Dumper'], # if you want to specify related modules that are not listed on the other entries of the same list
}
That's it. After you have completed your lists, publish your
Acme::CPANLists module to CPAN.
If you are using Dist::Zilla to release your distribution, this
Pod::Weaver plugin might be useful for you:
Pod::Weaver::Plugin::Acme::CPANLists. It will create an AUTHOR LISTS
and MODULE LISTS POD sections which are POD rendering of your
author/module lists so users reading your module's documentation can
immediately read your lists.
USING ACME::CPANLISTS MODULES
As said earlier, a website/online service that collects and indexes all
Acme::CPANLists modules on CPAN is coming in the future.
In the meantime, you can install the acme-cpanlists CLI script (from
the App::AcmeCpanlists distribution). It can list installed
Acme::CPANLists modules and view the entries of a list.
lib/Acme/CPANLists.pm view on Meta::CPAN
=head1 NAME
Acme::CPANLists - CPAN lists
=head1 VERSION
This document describes version 0.90.6 of Acme::CPANLists (from Perl distribution Acme-CPANLists), released on 2016-12-28.
=head1 SYNOPSIS
Acme::CPANLists is yet another way to organize CPAN modules/authors into various
"lists".
=head1 DESCRIPTION
With the multitude of modules that are available on CPAN, it is sometimes
difficult for a user to choose an appropriate module for a task or find other
modules related in some ways to a module. Various projects like L<CPAN
Ratings|http://cpanratings.perl.org/> (where users rate and review a
distribution) or L<MetaCPAN|https://metacpan.org/> (which has a C<++> feature
where logged-in users can press a button to C<++> a module and the website will
tally the number of C<++>'s a distribution has) help to some extent. There are
also various blog posts by Perl programmers which review modules, e.g. L<CPAN
Module Reviews by Neil Bowers|http://neilb.org/reviews/>.
For categorizing CPAN authors, there are also the L<Acme::CPANAuthors> project,
complete with L<its own website|http://acme.cpanauthors.org/>.
Acme::CPANLists is another way to help. One creates an
C<Acme::CPANLists::SOMENAME> module, and inside it puts lists of CPAN modules
and authors with their descriptions/reviews/ratings. The creator of the list is
free to organize her list in whatever way she likes.
A related website/online service for "CPAN lists" is coming (when I eventually
get to it :-), or perhaps when I get some help).
=head1 SPECIFICATION VERSION
0.090
=head1 CREATING AN ACME::CPANLISTS MODULE
lib/Acme/CPANLists.pm view on Meta::CPAN
you want to create many lists, for example: L<Acme::CPANLists::PERLANCAR>. But I
recommend that you put each list into a separate module under your CPAN ID
subpackage, for example: L<Acme::CPANLists::PERLANCAR::Unbless> or
L<Acme::CPANLists::PERLANCAR::Task::PickingRandomLinesFromFile>.
Inside the module, the two main package variables you have to declare are:
our @Author_Lists = ( ... );
our @Module_Lists = ( ... );
Obviously enough, C<@Author_Lists> contains author lists while C<@Module_Lists>
contains module lists.
Each author/module list is just a hash structure (L<DefHash>). The basic
structure is this:
# an example author list
{
#id => 'GUID', # optional, can be set to ease list identification/referral
summary => 'My favorite modules',
description => <<_,
(Some longer description, in Markdown format)
This is just a list of my favorite modules.
_
entries => [
{...},
...
],
}
# an example module list
{
#id => 'GUID', # optional, can be set to ease list identification/referral
summary => 'My favorite authors',
description => <<'_',
(Some longer description, in Markdown format)
This is just a list of my favorite authors.
_
entries => [
{...},
...
],
Each entry is another, similar hash structure (L<DefHash>):
# an example author list entry
{
author => 'RJBS',
summary => 'Kick-ass projects',
description => <<'_',
He is my favorite author because he starts some kick-ass projects which I
use daily, one of which is Dist::Zilla. It has saved me so much time, as
well wasted countless, because by using Dist::Zilla I am motivated to
release lots and lots of Perl modules.
_
# rating => 10, # optional, on a 1-10 scale
# alternate_authors => ['SOMEONE', 'ANOTHER'], # optional, if you want to express alternate author(s)
}
# an example module list entry
{
module => 'Data::Dump',
summary => 'Pretty output',
description => <<'_',
Data::Dump is my favorite dumping module because it outputs Perl code that
is pretty and readable.
_
lib/Acme/CPANLists.pm view on Meta::CPAN
# alternate_modules => [...], # if you are reviewing an undesirable module and want to suggest better alternative(s)
# related_modules => ['Data::Dump::Color', 'Data::Dumper'], # if you want to specify related modules that are not listed on the other entries of the same list
}
That's it. After you have completed your lists, publish your Acme::CPANLists
module to CPAN.
If you are using L<Dist::Zilla> to release your distribution, this
L<Pod::Weaver> plugin might be useful for you:
L<Pod::Weaver::Plugin::Acme::CPANLists>. It will create an C<AUTHOR LISTS> and
C<MODULE LISTS> POD sections which are POD rendering of your author/module lists
so users reading your module's documentation can immediately read your lists.
=head1 USING ACME::CPANLISTS MODULES
As said earlier, a website/online service that collects and indexes all
Acme::CPANLists modules on CPAN is coming in the future.
In the meantime, you can install the L<acme-cpanlists> CLI script (from the
L<App::AcmeCpanlists> distribution). It can list installed Acme::CPANLists
modules and view the entries of a list.
t/author-pod-coverage.t view on Meta::CPAN
#!perl
BEGIN {
unless ($ENV{AUTHOR_TESTING}) {
print qq{1..0 # SKIP these tests are for testing by the author\n};
exit
}
}
# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
use Test::Pod::Coverage 1.08;
use Pod::Coverage::TrustPod;
all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
t/author-pod-syntax.t view on Meta::CPAN
#!perl
BEGIN {
unless ($ENV{AUTHOR_TESTING}) {
print qq{1..0 # SKIP these tests are for testing by the author\n};
exit
}
}
# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
use strict; use warnings;
use Test::More;
use Test::Pod 1.41;
all_pod_files_ok();
( run in 0.876 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )