}
-\usepackage{rotating}
+\usepackage[no-math]{fontspec}
+\setmainfont[ExternalLocation,
+ Mapping=tex-text,
+ BoldFont=FreeSerifBold,
+ ItalicFont=FreeSerifItalic,
+ BoldItalicFont=FreeSerifBoldItalic]{FreeSerif}
+\setsansfont[ExternalLocation,
+ Mapping=tex-text,
+ BoldFont=FreeSerifBold,
+ ItalicFont=FreeSerifItalic,
+ BoldItalicFont=FreeSerifBoldItalic,
+ Scale=MatchLowercase]{FreeSerif}
+\setmonofont{FreeMono}
+
+\usepackage{booktabs}
\usepackage{multirow}
-\usepackage[english]{babel}
-\usepackage[utf8x]{inputenc}
-\usepackage{ucs}
-\usepackage{textcomp}
-\usepackage[T1]{fontenc}
-\usepackage[draft]{fixme}
-\usepackage{amsfonts}
-\usepackage{wasysym}
-\usepackage{tikz}
+\usepackage{setspace}
+\usepackage[backend=biber,natbib=true,hyperref=true,style=numeric-comp]{biblatex}
+\bibliography{references}
+% \usepackage[hyperfigures,bookmarks,colorlinks]{hyperref}
+
+
+\usepackage[nomargin,inline,draft]{fixme}
+%\usepackage[x11names,svgnames]{xcolor}
+\usepackage{texshade}
\usepackage[absolute,overlay]{textpos}
-\usepackage{hyperref}
-\usepackage[normalem]{ulem}
-\usepackage{Sweave}
+\usepackage{tikz}
+\usepackage{nameref}
+\usepackage{ulem}
+\usepackage{zref-xr,zref-user}
+
+\newenvironment{narrow}[2]{%
+ \begin{list}{}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{#1}%
+ \setlength{\rightmargin}{#2}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\itemindent}{\parindent}%
+ \setlength{\parsep}{\parskip}}%
+ \item[]}{\end{list}}
+\def\newblock{\hskip}
+\newenvironment{paperquote}{%
+ \begin{quote}%
+ \it
+ }%
+ {\end{quote}}
+\renewcommand{\textfraction}{0.15}
+\renewcommand{\topfraction}{0.85}
+\renewcommand{\bottomfraction}{0.65}
+\renewcommand{\floatpagefraction}{0.60}
+%\renewcommand{\baselinestretch}{1.8}
+\newenvironment{enumerate*}%
+ {\begin{enumerate}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parskip}{0pt}}%
+ {\end{enumerate}}
+\newenvironment{itemize*}%
+ {\begin{itemize}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parskip}{0pt}}%
+ {\end{itemize}}
\logo{\includegraphics[width=2cm]{figures/openlogo.pdf}}
\author{Don Armstrong}
\title{Debbugs}
-\subtitle{New developments in the ongoing struggle against bugs}
+\subtitle{Database Ho!}
%\date{August 11th, 2008}
\titlegraphic{\includegraphics[height=0.3\textheight,keepaspectratio]{figures/openlogo-crop.pdf}}
\subject{BTS}
library(lattice)
library(xtable)
library(ggplot2)
+library(reshape2)
+opts_chunk$set(dev="cairo_pdf",out.width="\\textwidth",out.height="0.7\\textheight",out.extra="keepaspectratio")
+opts_chunk$set(cache=TRUE, autodep=TRUE)
+options(device = function(file, width = 8, height = 7, ...) {
+ cairo_pdf(tempfile(), width = width, height = height, ...)
+})
+
@
\item Places you can help
\end{itemize}
\column{0.5\textwidth}
- \includegraphics[width=\textwidth,keepaspectratio]{figures/rc_buggy_big}
+ \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
\end{columns}
\end{frame}
\begin{frame}{Goals of the BTS}
\begin{columns}
\column{0.4\textwidth}
- \includegraphics[width=\textwidth,keepaspectratio]{figures/not_a_bug_but_a_feature}
+ \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
\column{0.6\textwidth}
\begin{itemize}
\item Reporting of \only<1>{Features}\only<2>{Bugs}
\end{columns}
\end{frame}
-\subsection{Reporting, Tracking, and Fixing Bugs}
+\section{Bugs in Debian}
+\subsection{Bug Reporting Rate}
\begin{frame}{How many bugs do we have?}
\begin{center}
- \only<1>{\includegraphics[width=\textwidth,height=0.4\textheight,keepaspectratio]{figures/politicial_pictures_bill_gates_list_bugs}}
- \only<2>{
-<<bug.growth,fig=TRUE,echo=FALSE,fig.width=6,fig.height=6>>=
+<<bug.growth,fig=TRUE,echo=FALSE>>=
bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
colnames(bug.growth) <- c("time","bugs")
bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
geom_point()+stat_smooth(method="lm")+
ggtitle("Bug growth versus time"))
@
-}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
-<<bugs.filed,fig=TRUE,echo=FALSE,fig.width=6,fig.height=6>>=
+<<bugs.filed,fig=TRUE,echo=FALSE,warning=FALSE>>=
print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
xlab("Time")+ylab("Bugs filed in Debian")+
geom_point()+stat_smooth(method="lm")+
lm(bugs~date,bug.growth)$coeff[2]*3600*24
@
\end{center}
-We average roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs filed per day.
+Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per day.
\end{frame}
+\subsection{Bug Fixing Rate}
\begin{frame}
\begin{center}
-<<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5>>=
-bug.closed.series <- read.table("data/bug_closed_time_series.txt")
-bug.closed.ts <- ts(bug.closed.series,start=1,frequency=7)
-plot(bug.closed.ts,xlab="Weeks since 2008",ylab="Bugs archived per week",main="Bug closure rate over time")
-lines(loess.smooth(1:NROW(bug.closed.ts),bug.closed.ts),col="red",lwd=2)
-bugs.closed.per.day <- mean(bug.closed.ts)
+<<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5,warning=FALSE,error=FALSE>>=
+bug.closed.series <- read.table(file="data/bug_closed_time_series.txt")
+colnames(bug.closed.series) <- c("archived.bugs","year.week")
+bug.closed.series$week <-
+ gsub("(\\d+)-(\\d+)","\\2",bug.closed.series$year.week)
+bug.closed.series$year <-
+ gsub("(\\d+)-(\\d+)","\\1",bug.closed.series$year.week)
+bug.closed.series$doy <-
+ as.numeric(bug.closed.series$week)*7
+bug.closed.series$year.doy <-
+ paste(sep="-",bug.closed.series$year,bug.closed.series$doy)
+bug.closed.series$date <-
+ as.POSIXct(strptime(bug.closed.series$year.doy,
+ format="%Y-%j"))
+
+# bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
+
+print(ggplot(bug.closed.series[bug.closed.series$date > as.POSIXct(ISOdatetime(2008,1,1,0,0,0)),],
+ aes(x=date,y=archived.bugs))+geom_line()+stat_smooth(method="lm")+
+ ylab("Archived bugs")+xlab("Time"))
+bugs.closed.per.day <-
+ sum(bug.closed.series$archived.bugs)/
+ as.numeric(bug.closed.series$date[nrow(bug.closed.series)]-bug.closed.series$date[1])
@
\end{center}
-We close roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs per day.
+Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
\end{frame}
+\subsection{RC Bugs}
\begin{frame}
\begin{center}
<<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
rc.bugs <-
read.table(file="data/rc_bugs.txt",
- header=1)
+ header=TRUE,fill=TRUE)
rc.bugs <- data.frame(rc.bugs)
rc.bugs <- rc.bugs[,c(-5,-7)]
rc.bugs$date <-
as.POSIXct(strptime(rc.bugs$date,
format="%Y%m%d%H%M"))
rc.bugs.long <-
- reshape(rc.bugs,
- direction="long",
- idvar="date",
- timevar="type",
- times=colnames(rc.bugs)[-1],
- varying=colnames(rc.bugs)[-1],
- v.names="bugs")
-complicated.figure <-
- xyplot(bugs~date,groups=type,type='l',main="RC Bugs in the past year",
- rc.bugs.long[rc.bugs.long$date >
- strptime("2009-08-01",
- format="%Y-%m-%d"),],
- auto.key=list(space="bottom"))
-print(complicated.figure)
+ melt(rc.bugs,id="date")
+print(ggplot(rc.bugs.long[rc.bugs.long$date >
+ as.POSIXct(ISOdatetime(2013,08,1,0,0,0)),]
+ ,aes(x=date,y=value,color=variable))+
+ geom_line()+
+ ggtitle("RC Bugs in the past year")+
+ theme(legend.position=c(0.9,0.5))+
+ guides(color=guide_legend(title="Measure")))
+
@
\end{center}
\setbeamercolor{postit}{fg=black,bg=yellow}
\end{frame}
-\subsection{Debbugs Structure and Infrastructure}
+\section{Debbugs Structure and Infrastructure}
+\subsection{BTS System Diagram}
\begin{frame}{BTS system Diagram}
\begin{center}
\includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
\end{center}
\end{frame}
+\subsection{Debbugs Box Diagram}
\begin{frame}{Debbugs Box Diagram}
\begin{center}
\input{debbugs_layout}
\end{center}
\end{frame}
+\section{Database Ho!}
+
+\subsection{Overall Database Design}
+
+\begin{frame}{Overall Database Design}
+ \begin{center}
+ \input{debbugs_layout}
+ \end{center}
+\end{frame}
+
+\subsection{Perl Database Infrastucture}
+\begin{frame}{Perl Database Infrastructure}
+ \begin{itemize}
+ \item DBIx::Class
+ \item DBIx::Class::Schema::Loader -- SQL schema to DBIx::Class
+ \item DBIx::Class::DeploymentHandler -- Upgrades of Schema
+ \item Debbugs::DB -- Debbugs SQL Module
+ \end{itemize}
+\end{frame}
+
+
+\subsection{SQL Design}
+\begin{frame}{SQL Schema}
+ \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
+\end{frame}
+
+\subsubsection{DAK SQL Design}
+\begin{frame}{DAK SQL Schema}
+ \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
+\end{frame}
\section{New(ish) Features}
+
+\subsection{New Changes}
\begin{frame}{New Changes}
\begin{itemize}
\item CVE linkified (eg, \href{http://bugs.debian.org/570743}{\#570743})
\end{itemize}
\end{frame}
-\begin{frame}{Status Caching}
- \begin{itemize}
- \item Cache status of bugs (presence/absence at all distributions)
- \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
- \item Allows for reverse status lookup
- \begin{itemize}
- \item Enables finding bugs which are present in testing or unstable
- \item Eventually replace functionality of \url{bts.turmzimmer.net}
- \end{itemize}
- \end{itemize}
-\end{frame}
\subsection{Affects}
\begin{frame}{Affects}
\end{frame}
\begin{frame}{Affects: Implemented}
- \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/affects}
+% \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/affects}
\end{frame}
\subsection{Summary}
\end{frame}
\begin{frame}{Summary: Implemented}
- \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/summary}
+% \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/summary}
\end{frame}
\item Needs better documentation
\end{itemize}
\column{0.5\textwidth}
- \includegraphics[width=\textwidth,keepaspectratio]{figures/happy_bug}
+% \includegraphics[width=\textwidth,keepaspectratio]{figures/happy_bug}
\end{columns}
\end{frame}
% \end{itemize}
% \end{frame}
-% \begin{frame}{Silly Symbols}
-% \begin{tabular}{c c c c}
-% Merged & = & Fixed Versions & \smiley \\
-% Blocked & ♙ & Blocks & ♔ \\
-% Forwarded & ↝ & Archived & ♲ \\
-% Affects & ☣ & wontfix & \frownie \\
-% patch & + & moreinfo & M \\
-% unreproducible & R & security & S \\
-% pending & P & fixed & F \\
-% help & H & fixed-upstream & U \\
-% upstream & u & & \\
-% \end{tabular}
-% \end{frame}
-
\begin{frame}{Silly Symbols}
\begin{center}
- \begin{tabular}{c c c c}
- Merged & = & Fixed Versions & \smiley \\
- Blocked & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocked} & Blocks & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocks} \\
- Forwarded & ↝ & Archived & \includegraphics[height=0.5cm,keepaspectratio]{figures/archived} \\
- Affects & \includegraphics[height=0.5cm,keepaspectratio]{figures/affects_icon} & wontfix & \frownie \\
+ \begin{tabular}{c c c c}
+ Merged & = & Fixed Versions & ☺ \\
+ Blocked & ♙ & Blocks & ♔ \\
+ Forwarded & ↝ & Archived & ♲ \\
+ Affects & ☣ & wontfix & ☹ \\
patch & + & moreinfo & M \\
unreproducible & R & security & S \\
pending & P & fixed & F \\
\end{center}
\end{frame}
+% \begin{frame}{Silly Symbols}
+% \begin{center}
+% \begin{tabular}{c c c c}
+% Merged & = & Fixed Versions & \smiley \\
+% Blocked & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocked} & Blocks & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocks} \\
+% Forwarded & ↝ & Archived & \includegraphics[height=0.5cm,keepaspectratio]{figures/archived} \\
+% Affects & \includegraphics[height=0.5cm,keepaspectratio]{figures/affects_icon} & wontfix & \frownie \\
+% patch & + & moreinfo & M \\
+% unreproducible & R & security & S \\
+% pending & P & fixed & F \\
+% help & H & fixed-upstream & U \\
+% upstream & u & & \\
+% \end{tabular}
+% \end{center}
+% \end{frame}
+
\section{Planned features}
+\subsection{Status Caching}
+\begin{frame}{Status Caching}
+ \begin{itemize}
+ \item Cache status of bugs (presence/absence at all distributions)
+ \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
+ \item Allows for reverse status lookup
+ \begin{itemize}
+ \item Enables finding bugs which are present in testing or unstable
+ \item Eventually replace functionality of \url{bts.turmzimmer.net}
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
\begin{frame}{Planned features}
\begin{itemize}
\item<alert@2> Control Commands in Submit
\item Smarter CGI options
\end{itemize}
\column{0.5\textwidth}
- \includegraphics[width=\textwidth,keepaspectratio]{figures/oh_hai_bug}
+% \includegraphics[width=\textwidth,keepaspectratio]{figures/oh_hai_bug}
\end{columns}
\end{frame}
\item Per package, severity, maintainer tracking of the above
\end{itemize}
\begin{center}
- \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{figures/surprised_bugs_life}
+% \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{figures/surprised_bugs_life}
\end{center}
% \end{columns}
\end{frame}
\item You!
\end{itemize}
\end{frame}
+
+\begin{frame}
+ \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}
+\end{frame}
+
\end{document}