Your SlideShare is downloading. ×
  • Like
What you need to remember when you upload to CPAN
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

What you need to remember when you upload to CPAN

  • 312 views
Published

presented at YAPC::Asia 2013

presented at YAPC::Asia 2013

Published in Technology , Art & Photos
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
312
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Perlのモジュールを公開するときに 気をつけておいた方がよい**個のこと Kenichi Ishigaki (@charsbar) YAPC::Asia 2013 Sep 20, 2013
  • 2. Have you ever uploaded anything to CPAN?
  • 3. Part I When you upload a distribution...
  • 4. An uploaded distribution is placed like this, (CPAN root)/authors/id/P/PA/PAUSEID/Distribution-1.00.tar.gz
  • 5. indexed if necessary,
  • 6. mirrored, (CPAN is the Comprehensive Perl Archive Network)
  • 7. announced, tested, and more ...
  • 8. even if you try to delete it.
  • 9. What's done is done and stays in BackPAN.
  • 10. PAUSE/CPAN also accepts (almost) everything.
  • 11. Be prepared before you upload. http://www.cpan.org/modules/04pause.html
  • 12. Part II CPAN Testing Services
  • 13. There are several testing services to improve CPAN. • PAUSE (kind of) • CPAN Testers • CPANTS • CPAN::Changes Kwalitee Service • CPAN Coverage report • and (maybe) more...
  • 14. PAUSE • https://pause.perl.org/ • sees if a distribution extracts nicely and is safe. • authorizes packages. • sends you emails when packages are indexed or errors are found.
  • 15. CPAN Testers • http://www.cpantesters.org/ • gathers reports from testers under various environments. • sends you emails about fail reports (if requested). • provides rss feeds for each author/distribution. • welcomes donation: https://members.enlightenedperl.org/ drupal/donate-cpan-testers
  • 16. CPANTS • http://cpants.cpanauthors.org/ • sees various aspects of a distribution. • sends no email (yet) • provides rss feeds for each author.
  • 17. CPAN::Changes Kwalitee Service • http://changes.cpanhq.org/ • sees the format of a Changes file. • provides rss feeds for each author/distribution.
  • 18. CPAN Coverage Report • http://cpancover.com/ • sees the coverage of a distribution (by Devel::Cover)
  • 19. An example of making use of them (by RJBS) • http://rjbs.manxome.org/rubric/entry/2007 • http://rjbs.manxome.org/rubric/entry/2010 • https://github.com/rjbs/misc/blob/master/code-review
  • 20. Part III Kwalitee in depth
  • 21. There are 44 metrics. • 30 core, 9 extra, and 5 experimental (as of ver 0.91) • 6 added, 12 removed (at/after the QA hackathon)
  • 22. Many of them are based on the past toolchain issues.
  • 23. http://weblog.bulknews.net/post/33907905561
  • 24. http://cpants.cpanauthors.org/kwalitee/no_broken_module_install
  • 25. http://cpants.cpanauthors.org/stats/module_install
  • 26. http://weblog.bulknews.net/post/44251476706
  • 27. http://cpants.cpanauthors.org/kwalitee/no_mymeta_files
  • 28. We can't remember everything. Let CPANTS remember for the rest of us!
  • 29. Metrics on availability • extractable • extracts_nicely • no_pax_headers • portable_filenames • no_dot_underscore_files • no_symlinks
  • 30. • Use short, alphanumeric-only names. • Avoid links. • COPYFILE_DISABLE=1 (Mac OS X) • Use GNU tar. • See if Archive::Tar (ptar) can extract your distribution.
  • 31. Metrics on integrity • has_manifest • manifest_mathces_dist • valid_signature • no_mymeta_files • no_generated_files
  • 32. • Update MANIFEST.SKIP if exists. • Update MANIFEST, or let it be generated. • Update .gitignore if exists.
  • 33. Metrics on file layout • has_readme • has_changelog • has_tests • has_tests_in_t_dir (optional) • proper_libs (optional)
  • 34. • Use some generators. • Minilla, Milla, Dist::Zilla • pmsetup, Module::Setup
  • 35. Metrics on build tool • has_buildtool • buildtool_not_executable • no_broken_module_install • no_broken_auto_install • no_stdin_for_prompting (optional)
  • 36. • Avoid Module::Install. • Avoid prompting for smooth installation. • Release from non-Windows environment if possible.
  • 37. Metrics on META • has_meta_yml • metayml_is_parsable • metayml_conforms_to_known_spec • metayml_conforms_spec_current (optional) • metayml_declares_perl_version (optional) • metayml_has_provides (experimental)
  • 38. • Don't edit it by hand. • META.yml and META.json may (often) be generated differently. • See specs when necessary. http://module-build.sourceforge.net/META-spec-v1.4.html http://search.cpan.org/perldoc?CPAN::Meta::Spec
  • 39. Stats on META generators http://cpants.cpanauthors.org/stats/meta_generator
  • 40. Stats on META generator users
  • 41. Metrics on license • has_human_readable_license • has_license_in_source • metayml_has_license (optional) • has_separate_license_file (experimental)
  • 42. • Write explicitly (and machine- readably if possible) about license. • Adding a LICENSE file is a good idea. (Fedora/Debian package managers would like you.) • You still need to tweak WriteMakefile to support perl < 5.8.9.
  • 43. Metrics on versions • has_version • has_proper_version • consistent_version • package_version_matches_dist_version
  • 44. • Don't remove versions from packages (which would cause version downgrade). • Bump up inconsistent versions to the highest.
  • 45. Metrics on prerequisites • prereq_matches_use • build_prereq_matches_use (optional) • is_prereq (optional)
  • 46. • Don't take these metrics too seriously (especially when you do something clever). • dynamic_config may (or may not) be your friend.
  • 47. Metrics on strictness • use_strict • use_warnings (optional)
  • 48. • Just use them, or their well-known equivalents (like Moose and its friends). • If you want to do something clever, document it as well.
  • 49. Metrics on pod • no_pod_errors
  • 50. • Update Pod::Simple to find issues. • Test::Pod and Test::Pod::Coverage are still your friends.
  • 51. Metrics on repackaging • easily_repackageable_by_debian (experimental) • easily_repackageable_by_fedora (experimental) • fits_fedora_license (experimental)
  • 52. • Nothing to remember. These are not for you.
  • 53. Too much to remember?
  • 54. The bottom line: use better tools • made by those who have a good knowledge of the issues. https://github.com/Perl-Toolchain-Gang?tab=members http://qa-hackathon.org/reviews.html
  • 55. Questions?
  • 56. Thank you
  • 57. bonus track
  • 58. Part IV Using CPANTS
  • 59. Test::Kwalitee(::Extra) • uses CPANTS analyzer against local files (though the analyzer is made for a prepared distribution).
  • 60. Subscribing CPANTS Feeds http://cpants.cpanauthors.org/author/ID/feed
  • 61. Want raw data? Add .json to urls. (What's in JSON response may (often) change.)
  • 62. Want status icons? http://cpants.cpanauthors.org/author/ID.png http://cpants.cpanauthors.org/dist/Name.png
  • 63. Part V When you find something is broken or unimplemented
  • 64. CPANTS repositories • https://github.com/cpants/Module-CPANTS-Analyse • https://github.com/cpants/Module-CPANTS-SiteKwalitee • https://github.com/cpants/www-cpants
  • 65. Other related repositories that may have a big impact. • https://github.com/domm/Module-ExtractUse • https://github.com/rjbs/Software-License • https://github.com/Perl-Toolchain-Gang/CPAN-Meta • https://github.com/charsbar/Parse-PMFile
  • 66. Thank you