% Copyright (C) 2010  Tim Retout <diocles@debian.org>
%                     Xavier Oswald <xoswald@debian.org>
%                     Gregor Herrmann <gregoa@debian.org>
%                     Dominique Dumont <ddumont@cpan.org>
%
% Copying and distribution of this file, with or without modification,
% are permitted in any medium without royalty provided the copyright
% notice and this notice are preserved.  This file is offered as-is,
% without any warranty.
%
% This file is based on the work of Tim Retout <diocles@debian.org>
% Original file: 
%   http://pkg-perl.alioth.debian.org/docs/pkg-perl-for-users/pkg-perl-for-users.tex

\documentclass{beamer}

\usepackage{hyperref}

\newcommand{\email}[1]
{$<$\href{mailto:#1}{\nolinkurl{#1}}$>$}

\title[Debian MiniConf Paris 2010]{\Large{Introducing Perl team}}
\subtitle{Debian's Perl team structure and organization}
\author{Xavier Oswald \and Gregor Herrmann \and Dominique Dumont}
\date{30th October 2010}

%\pgfdeclareimage[height=1cm]{debian-logo}{debian-swirl}
%\logo{\pgfuseimage{debian-logo}}
%\usetheme{CambridgeUS}

\usetheme{progressbar}
\progressbaroptions{titlepage=normal}


%\beamertemplatenavigationsymbolsempty

\begin{document}

\frame{\titlepage}

\frame
{
	\frametitle{Contents}
	\tableofcontents[]   
}


\section{Introduction}

\frame
{
	\frametitle{About us}

	We are all perl team members

	\begin{itemize}
		\item \textbf{Xavier Oswald} - xoswald@debian.org\\
		\begin{itemize}
			\item Member of the Debian Perl Group since 2006
			\item Front-Desk member, Applicant Manager, responsible of collab-maint
		\end{itemize}
	
	\item \textbf{Gregor Herrmann} - gregoa@debian.org\\
		\begin{itemize}
			\item Member of the Debian Perl Group since 2006
			\item Contributor to the RCBW campaign
		\end{itemize}

	\item \textbf{Dominique Dumont} - ddumont@cpan.org\\
		\begin{itemize}
			\item Member of Debian Perl Group since 2009
			\item Upstream author of Config\:\:Model. 
			\item Debian contributor for improved configuration upgrade
		\end{itemize}
	\end{itemize}
}


\frame
{
	\frametitle{What is the Debian Perl team?}

	\begin{itemize}
		\item Both official Debian Developers and sponsees
		\item 154 member in pkg-perl project on Alioth\footnote{2010-10-17}
		\item 78 committers and 17992 commits during the last year\footnote{between 2009-10-17 and 2010-10-17}
		\item Also indirectly contributes most of the Perl packages in
		Debian's derivatives (e.g. Ubuntu).
		\item Many upstreams authors are contributing
	\end{itemize}
}

\frame
{
	\frametitle{Current status}

	Statistics from UDD\footnote{Ultimate Debian Database \url{http://wiki.debian.org/UltimateDebianDatabase}}, 2010-10-21, 4:00pm GMT+1.

	\begin{itemize}
		\item Number of packages: 1647
		\item libfoo-perl uploads: 6920
		\item Current opened bugs: 1123 - 2 RC :-(
		\item Archived bugs: 10777
		\item Lintian warnings: 3433
		\item Packages in NEW: 21
		\item Orphaned packages and/or in adoption: 4
		\item Popcon sum: 2.351.459 
	\end{itemize}
}


\frame
{
	\frametitle{Using Perl on Debian}

	How do you install Perl modules?

	\begin{itemize}
		\item {\tt apt-get install libfoo-perl}
		\item Backports for older releases
		\item CPAN for unpackaged modules
	\end{itemize}

	CPAN (the tool) is configured to play nicely with Debian packages,
		 but does not install packages when dependencies are missing.
}

\section{Team organization}

\frame
{
	\frametitle{Tools}

	\url{http://pkg-perl.alioth.debian.org}
	
	\begin{itemize}
		\item Svn (mostly) and Git
		\item \url{http://bugs.debian.org}
		\item IRC (\#debian-perl on OFTC)
		\item Wiki: \url{http://wiki.debian.org/Teams/DebianPerlGroup}
		\item Two mailing lists (discussion, automated messages)
	\end{itemize}

	\textbf{What makes the difference?}
}

\frame
{
	\frametitle{Package Entropy Tracker - PET}

	\url{http://pet.alioth.debian.org/}

	\begin{itemize}
		\item Follow RC bugs
		\item New upstream releases
		\item Ready for upload
		\item New and Incoming
		\item \ldots
	\end{itemize}

	Useful when maintaining a huge amount of packages.
}

\frame
{
	\frametitle{Package Entropy Tracker - PET}
	
	\begin{figure}
		\includegraphics[scale=0.23]{pet}
	\end{figure}
}

\frame
{
	\frametitle{Managing changelog}

	Pseudo-headers that are set in changelog files and used by PET
	
	\begin{itemize}
		\item UNRELEASED
		\item IGNORE-VERSION
		\item WAITS-FOR
	\end{itemize}

	\url{http://pkg-perl.alioth.debian.org/changelog.html}
}

\frame
{
	\frametitle{Subversion usage guidelines}

	Guide for handling packages in subversion

	\begin{itemize}
		\item Repository anatomy
		\item Initial upload
		\item Building a package
		\item Tagging and Releasing
		\item Upstream upgrade
	\end{itemize}

	\url{http://pkg-perl.alioth.debian.org/subversion.html}
}

\frame
{
	\frametitle{Debian Perl Group Policy}

	Internal rules

	\begin{itemize}
		\item Mandatory mailing lists and such
		\item debian/changelog handling and versioning
		\item debian/control handling
		\item debian/watch handling
		\item Debian Maintainers practice
		\item Release Process
	\end{itemize}

	\url{http://pkg-perl.alioth.debian.org/policy.html}
}

\frame
{
	\frametitle{Tips and tricks}

	We have a small guide of tips used by perl team members to make life easier
	when packaging perl modules.

	\begin{itemize}
		\item Functions
		\item Aliases
		\item Scripts\footnote{cf. also a collection of scripts in our svn
		repo: \url{http://svn.debian.org/viewsvn/pkg-perl/scripts/}}
	\end{itemize}

	Contributions are welcome.

	\url{http://pkg-perl.alioth.debian.org/tips.html}
}


\section{Packaging perl modules}
\frame
{
	\frametitle{When a module isn't packaged}

	If the Perl module you need is not available, you have several options:

	\begin{enumerate}
		\item Install it with CPAN, and handle future upgrades yourself.
		\item File an RFP (Request for package) bug in Debian.\footnote{\url{http://pkg-perl.alioth.debian.org/howto/RFP.html}}
		\item Build yourself a private Debian package with dh-make-perl, and handle future upgrades yourself.
		\item Get involved and contribute it back to Debian!
	\end{enumerate}

	Getting involved is easier than you think.
}

\frame
{
	\frametitle{Creating a package - dh-make-perl}

	dh-make-perl can jump-start creating a new Perl package.

	\begin{itemize}
		\item {\tt apt-get install dh-make-perl} and read the man page.
		\item Run {\tt dh-make-perl --cpan Module::Name}.
		\item Add {\tt --pkg-perl} if you are packaging for the team.
		\item Then run {\tt debuild} and hack until it builds.
	\end{itemize}

	If you don't want to contribute it to Debian, you could stop here.
}

\frame
{
	\frametitle{Creating a package - svn-buildpackage}

	Once you have an initial package, you can (as a pkg-perl member) upload to SVN.
	    pkg-perl uses a fairly complex SVN layout.\footnote{\url{http://pkg-perl.alioth.debian.org/subversion.html}}

	\begin{itemize}
		\item Use {\tt svn-inject} to inject new packages,
		\item {\tt svn-buildpackage} for building, and
		\item {\tt svn-upgrade} for upstream upgrades.
	\end{itemize}

	Leave the suite at `UNRELEASED' in debian/changelog for now.

		Commits are logged to IRC.
}

\frame
{
	\frametitle{Creating a package - cowbuilder}

	One of the more tricky parts of packaging is getting the build
		dependencies correct.  cowbuilder is a tool for building packages in
		a clean chroot:

	\begin{itemize}
		\item {\tt sudo apt-get install cowbuilder}
		\item {\tt sudo cowbuilder --create}
		\item {\tt sudo cowbuilder --build libfoo-perl\_1.0-1.dsc}\footnote{The .dsc file is built in the previous step}
		\item Can also be integrated into svn-buildpackage.
	\end{itemize}

	Check the test suite gets run!
}

\frame
{
	\frametitle{Creating a package - lintian}

	We want Debian packages to be of high quality.  lintian is a tool
		that can check for common problems.

	\begin{itemize}
		\item {\tt sudo apt-get install lintian}
		\item {\tt lintian -iI --pedantic --color=auto libfoo-perl\_1.0-1\_amd64.changes}
		\item Can also be integrated with debuild/cowbuilder.
	\end{itemize}
}

\frame
{
	\frametitle{Creating a package - getting feedback}

	Once you think your package is ready for review, mark it as such:

	\begin{itemize}
		\item {\tt dch -r}
		\item (or `s/UNRELEASED/unstable/' in debian/changelog)
		\item {\tt svn commit -m `dch -r; ready for review'}
	\end{itemize}

	The package status will be changed automatically in PET.
}

\frame
{
	\frametitle{Creating a package - what next?}

	\begin{itemize}
		\item You are likely to get feedback via IRC or email.
		\item Sometimes lists of TODO items are left for you in debian/changelog by the
		reviewer, with the suite set back to UNRELEASED.
		\item Once the reviewer is happy, they will upload the package and
		tag the release in SVN.
	\end{itemize}
}

\section{Getting involved}

\frame
{
	\frametitle{Getting involved - joining the team}

	\begin{itemize}
		\item Create an alioth account
		\item Apply to join the pkg-perl group on alioth
		\item Introduce yourself on the debian-perl mailing list
		\item Optionally use IRC for realtime communication
	\end{itemize}

	\url{http://wiki.debian.org/Teams/DebianPerlGroup/Welcome}
}

\section{Conclusion}

\frame
{
	\frametitle{Credits}

	Slides

	\begin{itemize}
		\item Copyright 2010, Xavier Oswald, Gregor Herrmann, Dominique Dumont.
			Based on slides by Tim Retout.
		\item Licensed under the same terms as Perl (Artistic | GPL-1+)
	\end{itemize}

	Logo\footnote{\url{http://wiki.debian.org/Teams/DebianPerlGroup/LogoContest}}

	\begin{itemize}
		\item Copyright 2009, Damyan Ivanov
		\item License: Beerware
	\end{itemize}
}

\frame
{
	\frametitle{Questions?}

	\begin{center}
		Thanks for your attention\footnote{\url{http://pkg-perl.alioth.debian.org/docs/miniDebConf-paris2010/}}
	\end{center}
}

\end{document}
