CPANTS Quality Goals
From Perl QA
This is currently a brainstorming page intended to categorize existing CPANTS metrics and expose areas where new metrics may be desirable. Existing metrics are named in bold. Other metrics are just ideas.
[edit] Goals
Software should have high quality:
- should be easy to install
- license should be clear
- purpose should be clear
- status should be clear
- interface should be documented
- documentation should be readable
- should behave as expected
- should behave as documented
- should not interfere with unrelated software
- should perform a useful purpose
- should be maintainable
- should be performant
- code should conform to a standard
- should have a stable public interface
Open source software should maximize usability:
- license should be liberal
- code should be readable
- should be published
- maintainer should be open to suggestions for improvement
[edit] Sub-goals
[edit] should be easy to install
- extractable
- extracts_nicely
- has_manifest
- has_buildtool
- no_symlinks
- buildtool_not_executable
- has_working_buildtool
- manifest_matches_dist
- consistent filename case
- legal filenames (Test::Portability::Files)
- all non-core prereqs are declared in Meta.YML / Build.PL / Makefile.PL
[edit] license should be clear
- has_license (data available now!)
- has a LICENSE or COPYING or etc file
- license is of known type
[edit] purpose should be clear
[edit] status should be clear
[edit] interface should be documented
- has_test_pod_coverage
- has documentation
- has a Synopsis section
[edit] documentation should be readable
- no_pod_errors
- has_test_pod
- uses proper spelling (american/british differences notwithstanding)
- uses proper grammar
[edit] should behave as expected
- has_tests
- compiles ok
- has good code coverage in tests
[edit] should behave as documented
[edit] should not interfere with unrelated software
- uses @EXPORT_OK or nothing
- does not set variables in other packages
[edit] should perform a useful purpose
- is_prereq
- cpanratings.perl.org (risk of increasing the number of spurious ratings)
[edit] should be maintainable
- is pure Perl
- is portable
- declares a minimum Perl version
[edit] should be performant
[edit] code should conform to a standard
- no_cpants_errors
- use_strict
- uses Perl::Critic
- is either ASCII or UTF-8
- has consistent newlines
- uses Test::More
[edit] should have a stable public interface
- version is >= 1.0
- after 1.0, subroutine signatures have not changed without a major version change
[edit] license should be liberal
- license is same as Perl
[edit] code should be readable
- uses Perl::Critic
[edit] should be published
- is released on CPAN
[edit] maintainer should be open to suggestions for improvement
- RT is active
- source code repository is public
- forum url
- code has been updated in the last year
- has an Author section in the documentation
- Changelog or docs credits contributors
