#!/usr/bin/pinpoint -s
[font=Sans 50px]
[transition=text-slide-up]
[duration=45]
[debian_perl.jpg]
#[white]
[text-color=white]
[shading-opacity=1.0]
[fit]
-- [text-align=center]
From Debian, with ♥
gregor herrmann
Barcelona Perl Workshop, 2014-11-08
--
Outline
♥ About Me
♥ Debian and the Debian Perl Group
♥ How to make our lives even easier
♥ Maintaining Perl distributions as
Debian packages
--
Me =
♥ gregor herrmann,
gregoa@{debian,cpan}.org
gregoa on IRC, identi.ca, etc.
♥ Innsbruck, Austria
♥ member of the Debian Perl Group
(since 2006)
♥ Debian Developer
(since 2008)
--
Debian
♥ Free Operating System
♥ a.k.a. "Linux Distribution"
♥ since 1993
♥ 22.000 source packages,
45.000 binary packages
Who is using Debian here?
--
Debian Perl Group
♥ since 2004
♥ Aim:
We want to constantly improve
the coverage of available Perl modules
in Debian.
♥ ~3.000 packages
[of ~3.500 lib.*-perl in total]
♥ 254 members [in theory]
♥ 54 committers since 2014-01-01
♥ We don't maintain perl itself
-- [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
My claim: 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]
Some messages to
the CPAN community
-- [text-align=center]
Moltes gràcies!
¡Muchas gracias!
Thanks a lot!
-- [text-align=center]
And what can CPAN
authors 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]
Some details …
--
Changes
♥ Include a Changes file
♥ Changes != $vcs log
♥ not "fix RT#123, merge PR #456"
--
Bugs
♥ mention CPAN ticket id / github issue id
in Changes
♥ mention preferred bug tracker in META.*
--
Git
♥ Nice!
♥ Please tag, (sign tags,) and:
push tags!
--
Tests
♥ variables (RELEASE_TESTING,
AUTOMATED_TESTING), author tests,
xt/, …
(cf. Lancaster consensus)
♥ in Debian: no internet access
allowed / guaranteed
maybe Test::RequiresInternet helps?
♥ personal recommendation:
use Test::Spelling
♥ don't assume source directory, blib/,
uid, .git/, …
--
{Makefile,Build}.PL
♥ No prompts
♥ or ExtUtils::MakerMaker::prompt()
♥ Also think of the CPAN smoke testers
--
Tarballs
♥ No debian/ directory
♥ or .gitignore
♥ or tempfiles / backups files
--
System libs
♥ Including external (C) libraries
might be needed for other OSes
♥ but please make it easy for us
to use the system libs
(configure switch, env variable, ...)
--
inc/ is evil
♥ Code duplication, and …
♥ bug duplication!
♥ And embedded minified JavaScript
files are evil as well
(not the preferred form of modification)
--
Requirements
♥ Minimum required versions …
♥ … not what is installed locally /
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 else:)
✔ 0.11 → 0.1100, 1:0.11
--
Legal stuff
♥ We need copyright/licenses
♥ free software licenses
♥ consistent & complete
♥ Again, modern tools, like Dist::Zilla
--
And now: our workflow / tools / …
--
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
--
Communication
♥ 3 mailing lists
♥ IRC (#debian-perl @ OFTC)
♥ meetings in meatspace (DebConf, maybe a sprint?)
--
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
what to do: new upstream release, bugs,
pendings uploads, …
--
dh-make-perl
♥ create (or update) Debian package
from CPAN tarball
♥ cpan2deb =~ dh-make-perl … --build
♥ Foo::Bar → libfoo-bar-perl
♥ Result: a Debian source package,
i.e. an unpacked tarball + debian/ directory
containing meta information and build
instructions
--
pkg-perl-tools
♥ collection of helpers
♥ CLI called as `dpt …'
manipulating our Git repos
forwarding bug reports and patches
combining upstream Git repos with ours
--
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 repo:
http://anonscm.debian.org/cgit/pkg-perl/packages/libFOO-BAR-perl.git
♥ Build logs (XS modules):
https://buildd.debian.org/libFOO-BAR-perl
--
Addendum
♥ Copyright & license:
© 2014, gregor herrmann
CC BY-SA 4.0
♥ "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/
♥ Download:
http://pkg-perl.alioth.debian.org/docs/barcelona-perl-workshop-2014/
-- [text-align=center]
Summary:
Moltes gràcies!
¡Muchas gracias!
Thanks a lot!