#!/usr/bin/pinpoint -s [font=Sans 50px] [transition=text-slide-up] [duration=60] [debian_perl.jpg] #[white] [text-color=white] [shading-opacity=1.0] [fit] -- [text-align=center] From Debian, with ♥ YAPC::Europe 2016 Alex Muntada -- Outline ♥ About me ♥ Debian and the Debian Perl Group ♥ How to make our lives even easier ♥ Maintaining Perl distributions as Debian packages -- About me ♥ Alex Muntada alexm@cpan.org @alexmuntada ♥ CPAN Testers (from 2002 to 2005) ♥ Barcelona Perl Mongers (since 2003) ♥ Debian Perl Group (since 2008) ♥ YAPC Europe Foundation (since 2016) -- Debian ♥ Free Operating System ♥ a.k.a. "Linux Distribution" ♥ since 1993 ♥ as of Aug 21: 25_806 source packages 51_848 binary amd64 packages Who is using Debian here? -- Debian Perl Group ♥ since 2004 ♥ Our goal: Constantly improve the coverage of available Perl modules in Debian. ♥ 3_215 of 3_476 lib.*-perl packages ♥ 127 members ♥ 73 committers last 2 years ♥ We don't maintain perl itself Any members are present? -- [font=Monospace 100px] I believe that the core, beautiful, exciting thing that we do inside Debian, and that any other excellent Linux distribution does, is exactly accepting what upstream does. Not accepting in the sense of passive apathy, but in the sense of wholehearted embrace of upstream's ideas, expertise, passion, and hard work, and finding a way to incorporate that into our distribution. Acceptance in the sense of reaching out with both hands and taking hold of the gift we are given with a firm grasp and a grateful heart. Linux distributions are *all about* upstreams. Those upstreams are the reason why we're here. ―― Russ Allbery -- Debian Perl Group and the CPAN In our experience we are quite similar: ♥ Kinda relaxed, cooperative, helpful, friendly ♥ Focus on quality and Doing It Right™ ♥ Solutions before ego boosting (teamwork) Who maintains distributions on the CPAN? -- [text-align=center] Our humble message to the CPAN community… -- [text-align=center] Thanks a lot! -- [text-align=center] What can you do to make our lives even easier? -- ♥ Keep up the good work! ♥ Make good, state-of-the-art CPAN distributions ♥ Use current tools, follow best practices -- [text-align=center] Do you want more details? -- Changes ♥ Include a Changes file ♥ Changes != $vcs log ♥ Please, don't say: "Fix RT #123" "Merge PR #456" -- Bugs ♥ Mention these in Changes: CPAN ticket ID GitHub issue ID ♥ Fill "resources" subkeys in META.* "bugtracker" "repository" -- Git ♥ Nice! We use it too ♥ Please tag, sign if you can, and don't forget to "git push --tags" -- Tests ♥ Lancaster consensus %ENV: AUTOMATED_TESTING RELEASE_TESTING AUTHOR_TESTING EXTENDED_TESTING ♥ Internet is not guaranteed in build NO_NETWORK_TESTING (Test::RequiresInternet anyone?) ♥ Don't assume anything about build: source directory, blib, uid, .git, … ♥ Recommendation: Test::Spelling -- {Makefile,Build}.PL ♥ No prompts NONINTERACTIVE_TESTING ♥ or use ExtUtils::MakeMaker::prompt() ♥ Also think of the CPAN smoke testers -- Tarballs ♥ No debian/ directory ♥ or .gitignore ♥ or temporary files ♥ or backup files -- System libs ♥ Including external C libraries might be needed for other OSes, ♥ but please make it easy for us to use the Debian system libs (configure switch, env variable…) -- inc/ directory is evil ♥ Code duplication, and worse… ♥ bug duplication! -- Compiled JavaScriptminified, browserified… JavaScript files are evil as well ♥ Not accepted as source code -- Requirements ♥ Minimum required versions… ♥ not what is installed locally ♥ not what is in bleadperl ♥ "47.11 → 0" ?! ♥ 0 → '0' → 0 → '0' → … ?! -- Versions ♥ Use a consistent versioning scheme ♥ CPAN: 0.10 < 0.1001 < 0.11 ♥ Debian: 0.10 < 0.1001 > 0.11 ✔ 0.1001 → 0.10.01 (or) ✔ 0.11 → 0.1100 (or else) ✔ 0.11 → 1:0.11 -- Legal stuff ♥ We need copyright and licenses, ♥ free software licenses, ♥ consistent & complete ♥ Use modern tools, e.g. Dist::Zilla -- [text-align=center] Maintaining Perl distributions as Debian packages -- Communication ♥ 3 mailing lists ♥ IRC (#debian-perl @ OFTC) ♥ Meetings in meatspace: DebConf Debian Perl Sprint (since 2015) -- Code ♥ Packages are maintained in Git (svn before summer 2011) ♥ https://anonscm.debian.org/cgit/pkg-perl/ ♥ KGB sends notifications to IRC -- Tools ♥ Lots of them ♥ Some generic Debian tools ♥ Some (pkg-)perl specific -- PET ♥ Package Entropy Tracker ♥ http://pet.debian.net/pkg-perl/pet.cgi ♥ VCS-centered view on packages showing our work: new upstream releases, bugs, pendings uploads… -- dh-make-perl ♥ create (or update) Debian package from CPAN tarball ♥ cpan2deb =~ dh-make-perl … --build (a package for local install only) ♥ Foo::Bar is libfoo-bar-perl by default (but we change it for some apps) ♥ Result → a Debian source package: an unpacked tarball + debian/ directory containing meta information and build instructions, on top of a Git repository -- pkg-perl-tools ♥ Collection of helpers ♥ CLI called as "dpt …" manipulating our Git repositories forwarding bug reports and patches combining upstream Git repos with ours (hopefully soon, making pull requests) -- Track your packages! ♥ Package Tracking System: https://packages.qa.debian.org/libFOO-BAR-perl https://tracker.debian.org/pkg/libFOO-BAR-perl (subscription to event types available) ♥ Bug Tracking system: https://bugs.debian.org/libFOO-BAR-perl ♥ Git repository: http://anonscm.debian.org/cgit/pkg-perl/packages/libFOO-BAR-perl.git ♥ Build logs (XS or source-only arch:all): https://buildd.debian.org/libFOO-BAR-perl ♥ Debian Perl team development server http://perl.debian.net/ -- Authors not interested ♥ What happens when upstream authors don't have interest in anything from downstream distros? ♥ How to avoid users sending them complaints? ♥ Should a disclaimer be added to the package description? ♥ Patches and bugs should not be forwarded? ♥ Please, let us know! -- Links https://wiki.debian.org/Teams/DebianPerlGroup https://wiki.debian.org/Teams/DebianPerlGroup/Welcome https://pkg-perl.alioth.debian.org/ https://wiki.debian.org/UpstreamGuide -- Copyright and licenses ♥ This presentation © 2016, Alex Muntada CC BY-SA 4.0 https://pkg-perl.alioth.debian.org/docs/yapc-europe-2016/ ♥ Based on: "From Debian with ♥" © 2014, gregor herrmann CC BY-SA 4.0 http://pkg-perl.alioth.debian.org/docs/barcelona-perl-workshop-2014/ ♥ "use Debian" logo: © 2009, ghostbar CC BY-NC-SA 2.0 ♥ Parts from "How to maintain 2500 Perl Modules as Debian Packages" © 2013, Axel Beckert CC SA 3.0 DE http://pkg-perl.alioth.debian.org/docs/swiss-perl-workshop-2013/ -- [text-align=center] Thanks a lot for your amazing work! -- TODO ♥ Setup a way for upstream authors to track all their packages Add support for it in tracker.debian.org? Maybe adding a field stating so in META? ♥ Create a "dzil release" plugin to test readiness for Debian ♥ Explain how to request a package (wnpp RFP) https://pkg-perl.alioth.debian.org/howto/RFP.html ♥ Add some pictures statistics? PET screenshot? cats? ♥ Elaborate why inc/ can become evil (Module::Install) Show good uses cases for inc/