3 \usetheme[hideallsubsections]{Hannover}
4 %\useoutertheme[hideallsubsections]{debiansidebar}
5 \setbeamercovered{transparent}
9 \usepackage[no-math]{fontspec}
10 \setmainfont[ExternalLocation,
12 BoldFont=FreeSerifBold,
13 ItalicFont=FreeSerifItalic,
14 BoldItalicFont=FreeSerifBoldItalic]{FreeSerif}
15 \setsansfont[ExternalLocation,
17 BoldFont=FreeSerifBold,
18 ItalicFont=FreeSerifItalic,
19 BoldItalicFont=FreeSerifBoldItalic,
20 Scale=MatchLowercase]{FreeSerif}
21 \setmonofont{FreeMono}
26 \usepackage[backend=biber,natbib=true,hyperref=true,style=numeric-comp]{biblatex}
27 \bibliography{references}
28 % \usepackage[hyperfigures,bookmarks,colorlinks]{hyperref}
31 \usepackage[nomargin,inline,draft]{fixme}
32 %\usepackage[x11names,svgnames]{xcolor}
34 \usepackage[absolute,overlay]{textpos}
38 \usepackage{zref-xr,zref-user}
41 \newenvironment{narrow}[2]{%
43 \setlength{\topsep}{0pt}%
44 \setlength{\leftmargin}{#1}%
45 \setlength{\rightmargin}{#2}%
46 \setlength{\listparindent}{\parindent}%
47 \setlength{\itemindent}{\parindent}%
48 \setlength{\parsep}{\parskip}}%
51 \newenvironment{paperquote}{%
56 \renewcommand{\textfraction}{0.15}
57 \renewcommand{\topfraction}{0.85}
58 \renewcommand{\bottomfraction}{0.65}
59 \renewcommand{\floatpagefraction}{0.60}
60 %\renewcommand{\baselinestretch}{1.8}
61 \newenvironment{enumerate*}%
63 \setlength{\itemsep}{0pt}%
64 \setlength{\parskip}{0pt}}%
66 \newenvironment{itemize*}%
68 \setlength{\itemsep}{0pt}%
69 \setlength{\parskip}{0pt}}%
72 \logo{\includegraphics[width=2cm]{figures/openlogo.pdf}}
73 \author{Don Armstrong}
75 \subtitle{Database Ho!}
76 %\date{August 11th, 2008}
77 \titlegraphic{\includegraphics[height=0.3\textheight,keepaspectratio]{figures/openlogo-crop.pdf}}
78 \logo{\includegraphics[width=2cm,keepaspectratio]{figures/openlogo-crop.pdf}}
81 % State of the BTS: new features, changes and tips
83 % The bug tracking system is where all bugs that affect Debian are
84 % filed. New features, including the affects, summary, and local debbugs
85 % mirror will be presented and demonstrated. Some of the underlying
86 % architectural changes to the codebase in debbugs to make it more
87 % maintainable and deployable are also outlined. Finally, a set of tips
88 % and tricks that can be used to make the BTS easier to use are
94 % - local debbugs mirror for offline work
98 % - multi-distribution/arch status
99 % - control changes at submit@ time
100 % - Code Architecture Changes
102 % - Control abstraction
103 % - release to experimental
106 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
111 opts_chunk$set(dev="cairo_pdf",out.width="\\textwidth",out.height="0.7\\textheight",out.extra="keepaspectratio")
112 opts_chunk$set(cache=TRUE, autodep=TRUE)
113 options(device = function(file, width = 8, height = 7, ...) {
114 cairo_pdf(tempfile(), width = width, height = height, ...)
122 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
124 \frame[plain]{\titlepage
125 Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git}
128 % \begin{frame}{Debbugs}
129 % \tableofcontents[subsectionstyle=hide]
132 \section{Introduction to Debbugs}
134 \subsection{Introduction}
135 \begin{frame}{Goals of this talk}
137 \column{0.5\textwidth}
139 \item Introduction to Debbugs
141 \item Tips and Tricks
142 \item Planned features
143 \item Places you can help
145 \column{0.5\textwidth}
146 \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
149 \begin{frame}{Goals of the BTS}
151 \column{0.4\textwidth}
152 \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
153 \column{0.6\textwidth}
155 \item Reporting of \only<1>{Features}\only<2>{Bugs}
156 \item Evolution of \only<1>{Features}\only<2>{Bugs}
157 \item Fixing of \only<1>{Features}\only<2>{Bugs}
158 \item Reducing impact of \only<1>{Features}\only<2>{Bugs}
163 \section{Bugs in Debian}
164 \subsection{Bug Reporting Rate}
165 \begin{frame}{How many bugs do we have?}
167 <<bug.growth,fig=TRUE,echo=FALSE>>=
168 bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
169 colnames(bug.growth) <- c("time","bugs")
170 bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
172 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(bug.growth$time))
173 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2005,1,1,0,0,0)),],aes(x=date,y=bugs))+
174 xlab("Time")+ylab("Bugs filed in Debian")+
175 geom_point()+stat_smooth(method="lm")+
176 ggtitle("Bug growth versus time"))
183 <<bugs.filed,fig=TRUE,echo=FALSE,warning=FALSE>>=
184 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
185 xlab("Time")+ylab("Bugs filed in Debian")+
186 geom_point()+stat_smooth(method="lm")+
187 ggtitle("Christian Perrier's Plot"))
188 bugs.filed.per.day <-
189 lm(bugs~date,bug.growth)$coeff[2]*3600*24
192 Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per day.
196 \subsection{Bug Fixing Rate}
199 <<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5,warning=FALSE,error=FALSE>>=
200 bug.closed.series <- read.table(file="data/bug_closed_time_series.txt")
201 colnames(bug.closed.series) <- c("archived.bugs","year.week")
202 bug.closed.series$week <-
203 gsub("(\\d+)-(\\d+)","\\2",bug.closed.series$year.week)
204 bug.closed.series$year <-
205 gsub("(\\d+)-(\\d+)","\\1",bug.closed.series$year.week)
206 bug.closed.series$doy <-
207 as.numeric(bug.closed.series$week)*7
208 bug.closed.series$year.doy <-
209 paste(sep="-",bug.closed.series$year,bug.closed.series$doy)
210 bug.closed.series$date <-
211 as.POSIXct(strptime(bug.closed.series$year.doy,
214 # bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
216 print(ggplot(bug.closed.series[bug.closed.series$date > as.POSIXct(ISOdatetime(2008,1,1,0,0,0)),],
217 aes(x=date,y=archived.bugs))+geom_line()+stat_smooth(method="lm")+
218 ylab("Archived bugs")+xlab("Time"))
219 bugs.closed.per.day <-
220 sum(bug.closed.series$archived.bugs)/
221 as.numeric(bug.closed.series$date[nrow(bug.closed.series)]-bug.closed.series$date[1])
224 Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
230 <<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
232 read.table(file="data/rc_bugs.txt",
233 header=TRUE,fill=TRUE)
234 rc.bugs <- data.frame(rc.bugs)
235 rc.bugs <- rc.bugs[,c(-5,-7)]
237 as.POSIXct(strptime(rc.bugs$date,
238 format="%Y%m%d%H%M"))
240 melt(rc.bugs,id="date")
241 print(ggplot(rc.bugs.long[rc.bugs.long$date >
242 as.POSIXct(ISOdatetime(2013,08,1,0,0,0)),]
243 ,aes(x=date,y=value,color=variable))+
245 ggtitle("RC Bugs in the past year")+
246 theme(legend.position=c(0.9,0.5))+
247 guides(color=guide_legend(title="Measure")))
251 \setbeamercolor{postit}{fg=black,bg=yellow}
252 \begin{textblock}{4}(6,4)
254 \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
255 \centering \huge Too many RC bugs!
262 \section{Debbugs Structure and Infrastructure}
264 \subsection{BTS System Diagram}
265 \begin{frame}{BTS system Diagram}
267 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
271 \subsection{Debbugs Box Diagram}
272 \begin{frame}{Debbugs Box Diagram}
274 \input{debbugs_layout}
278 \section{Database Ho!}
280 \subsection{Overall Database Design}
282 \begin{frame}{Overall Database Design}
284 \input{debbugs_layout_db}
288 \subsection{Perl Database Infrastucture}
289 \begin{frame}{Perl Database Infrastructure}
292 \item DBIx::Class::Schema::Loader -- SQL schema to DBIx::Class
293 \item DBIx::Class::DeploymentHandler -- Upgrades of Schema
294 \item Debbugs::DB -- Debbugs SQL Module
299 \subsection{SQL Design}
300 \begin{frame}{SQL Schema}
301 \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
303 \item Current Debbugs SQL Schema
307 \subsubsection{dak SQL Design}
308 \begin{frame}{dak SQL Schema}
309 \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
311 \item Inspiration taken from dak SQL Schema where appropriate
315 \subsection{SQL Loading}
316 \begin{frame}[fragile]{SQL Loading}
320 \begin{lstlisting}[language=sh]
321 debbugs-loadsql bugs;
322 debbugs-loadsql bugs archive;
324 \item Load Versioning information
325 \begin{lstlisting}[language=sh]
326 debbugs-loadsql versions;
327 debbugs-loadsql debinfo;
332 \subsection{SQL Working}
333 \begin{frame}[fragile]{SQL Working}
335 \begin{lstlisting}[language=SQL]
336 SELECT count(*) FROM bug
337 WHERE last_modified > '2014-07-01'
339 AND owner IS NOT NULL;
341 \begin{visibleenv}<2>
350 \subsection{Work still needed for SQL}
351 \begin{frame}{Work Still needed for SQL}
353 \item Logfile loading (for full text searching)
354 \item Status Caching (for faster page loading)
360 \section{New(ish) Features}
362 \subsection{New Changes}
363 \begin{frame}{New Changes}
365 \column{0.5\textwidth}
367 \item mailto links (demo)
368 \item forcemerge does the right thing
369 \item control at submit time
371 \column{0.5\textwidth}
372 \includegraphics[width=\textwidth,keepaspectratio]{images/telegraph_bug}
376 \section{Future features}
380 \subsection{Status Caching}
381 \begin{frame}{Status Caching}
383 \item Cache status of bugs (presence/absence at all distributions)
384 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
385 \item Allows for reverse status lookup
387 \item Enables finding bugs which are present in testing or unstable
388 \item Eventually replace functionality of \url{bts.turmzimmer.net}
394 \begin{frame}{More planned features}
396 \column{0.5\textwidth}
398 \item Merging of merged bug reports
399 \item Threading in report
400 \item Usercategory duplication and replay
401 \item Remote Attachments
402 \item New Spool Storage Format
403 \item Usertags visibility
404 \item Smarter CGI options
406 \column{0.5\textwidth}
407 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
411 \begin{frame}{Statistics}
413 \column{0.5\textwidth}
415 \item Track status changes over time
416 \item Bugs found/fixed/absent in stable/testing/unstable over time
417 \item Bug submission times
418 \item Bug closure times
420 \item Per package, severity, maintainer tracking of the above
422 \column{0.5\textwidth}
424 \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
431 \section{Places you can help}
433 \begin{frame}{7 tasks seeking contributors}
435 \item Documentation of Usercategories
436 \item Implementation of rss feeds for packages and bugs
437 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
438 \item Documentation of multipe-package reassign and when it or
439 affects should be used
440 \item Mailto link with subject, references, etc. all filled in
441 \item Documentation for local-debbugs configuration file (behaves
446 \begin{frame}{Getting started on these tasks}
448 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
450 \item master (upstream debbugs): git clone \url{http://bugs.debian.org/debbugs-source/debbugs.git}
451 \item debian (debian branch): git clone -b debian \url{http://bugs.debian.org/debbugs-source/debbugs.git}
452 \item Checked out branches are also available at
453 \url{http://bugs.debian.org/debbugs-source/master} and
454 \url{http://bugs.debian.org/debbugs-source/debian}
456 \item My branches: \url{http://git.donarmstrong.com/debbugs.git}
457 \item Mailing list debian-debbugs@lists.debian.org
458 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
462 \begin{frame}{The Debbugs Team}
470 \item Emeritus Developers
472 \item Steiner Gunderson
481 \begin{frame}{Where I'm Headed Next}
482 \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}