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}
378 \subsection{Status Caching}
379 \begin{frame}{Status Caching}
381 \item Cache status of bugs (presence/absence at all distributions)
382 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
383 \item Allows for reverse status lookup
385 \item Enables finding bugs which are present in testing or unstable
390 \subsection{Statistics}
391 \begin{frame}{Statistics}
393 \column{0.5\textwidth}
395 \item Track status changes over time
396 \item Bugs found/fixed/absent in stable/testing/unstable over time
397 \item Bug submission times
398 \item Bug closure times
400 \item Per package, severity, maintainer tracking of the above
402 \column{0.5\textwidth}
404 \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
410 \subsection{Additional Planned Features}
411 \begin{frame}{More planned features}
413 \column{0.5\textwidth}
415 \item HTTP based reporting system with e-mail roundtrip
416 \item Release Debbugs again
417 \item Bug mailing lists in Debbugs
419 \item Avoid duplicate mail
420 \item Opt in/out of mail
422 \item Merging of merged bug reports
423 \item Threading in report
425 \column{0.5\textwidth}
426 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
430 \begin{frame}{Even More planned features}
432 \column{0.5\textwidth}
434 \item Usercategory duplication and replay
435 \item Remote Attachments
436 \item New Spool Storage Format
437 \item Usertags visibility
438 \item Smarter CGI options
440 \column{0.5\textwidth}
441 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
449 \section{Places you can help}
451 \begin{frame}{7 tasks seeking contributors}
453 \item Documentation of Usercategories
454 \item Implementation of rss feeds for packages and bugs
455 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
456 \item Documentation of multipe-package reassign and when it or
457 affects should be used
458 \item Mailto link with subject, references, etc. all filled in
459 \item Documentation for local-debbugs configuration file (behaves
464 \begin{frame}{Getting started on these tasks}
466 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
468 \item master (upstream debbugs): git clone \url{http://bugs.debian.org/debbugs-source/debbugs.git}
469 \item debian (debian branch): git clone -b debian \url{http://bugs.debian.org/debbugs-source/debbugs.git}
470 \item Checked out branches are also available at
471 \url{http://bugs.debian.org/debbugs-source/master} and
472 \url{http://bugs.debian.org/debbugs-source/debian}
474 \item My branches: \url{http://git.donarmstrong.com/debbugs.git}
475 \item Mailing list debian-debbugs@lists.debian.org
476 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
480 \begin{frame}{The Debbugs Team}
488 \item Emeritus Developers
490 \item Steiner Gunderson
499 \begin{frame}{Questions?}
500 \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}