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{\begin{tikzpicture}% Pale figure
73 {\node[opacity=0.3] {\includegraphics[width=2cm,keepaspectratio]{figures/openlogo-crop.pdf}};}%
75 \author{Don Armstrong}
77 \subtitle{Database Ho!}
78 %\date{August 11th, 2008}
79 \titlegraphic{\includegraphics[height=0.3\textheight,keepaspectratio]{figures/openlogo-crop.pdf}}
82 % State of the BTS: new features, changes and tips
84 % The bug tracking system is where all bugs that affect Debian are
85 % filed. New features, including the affects, summary, and local debbugs
86 % mirror will be presented and demonstrated. Some of the underlying
87 % architectural changes to the codebase in debbugs to make it more
88 % maintainable and deployable are also outlined. Finally, a set of tips
89 % and tricks that can be used to make the BTS easier to use are
95 % - local debbugs mirror for offline work
99 % - multi-distribution/arch status
100 % - control changes at submit@ time
101 % - Code Architecture Changes
103 % - Control abstraction
104 % - release to experimental
107 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
112 opts_chunk$set(dev="cairo_pdf",out.width="\\textwidth",out.height="0.8\\textheight",out.extra="keepaspectratio")
113 opts_chunk$set(cache=TRUE, autodep=TRUE)
114 options(device = function(file, width = 8, height = 7, ...) {
115 cairo_pdf(tempfile(), width = width, height = height, ...)
123 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
125 \frame[plain]{\titlepage
126 Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git}
129 % \begin{frame}{Debbugs}
130 % \tableofcontents[subsectionstyle=hide]
133 \section{Introduction to Debbugs}
135 \subsection{Introduction}
136 \begin{frame}{Goals of this talk}
138 \column{0.5\textwidth}
141 \item Introduction to Debbugs
143 \item Planned features
144 \item Places you can help
146 \column{0.5\textwidth}
147 \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
150 \begin{frame}{Goals of the BTS}
152 \column{0.4\textwidth}
153 \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
154 \column{0.6\textwidth}
156 \item Reporting of \only<1>{Features}\only<2>{Bugs}
157 \item Evolution of \only<1>{Features}\only<2>{Bugs}
158 \item Fixing of \only<1>{Features}\only<2>{Bugs}
159 \item Reducing impact of \only<1>{Features}\only<2>{Bugs}
164 \section{Bugs in Debian}
165 \subsection{Bug Reporting Rate}
166 \begin{frame}{How many bugs do we have?}
168 <<bug.growth,fig=TRUE,echo=FALSE>>=
169 bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
170 colnames(bug.growth) <- c("time","bugs")
171 bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
173 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(bug.growth$time))
174 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2005,1,1,0,0,0)),],aes(x=date,y=bugs))+
175 xlab("Time")+ylab("Bugs filed in Debian")+
176 geom_point()+stat_smooth(method="lm")+
177 ggtitle("Bug growth versus time"))
184 \column{0.5\textwidth}
186 <<bugs.filed,fig=TRUE,echo=FALSE,warning=FALSE>>=
187 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
188 xlab("Time")+ylab("Bugs filed in Debian")+
189 geom_point()+stat_smooth(method="lm")+
190 ggtitle("Christian Perrier's Plot"))
191 bugs.filed.per.day <-
192 lm(bugs~date,bug.growth)$coeff[2]*3600*24
193 temp.lm <- lm(date~bugs,bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),])
195 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(predict(temp.lm,data.frame(bugs=760000,date=NA))))
197 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(predict(temp.lm,data.frame(bugs=800000,date=NA))))
200 \column{0.5\textwidth}
201 Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per
202 day. The 760000th bug will be filed at \Sexpr{bug.760000}, and the
203 800000th bug will be filed at \Sexpr{bug.800000}.
208 \subsection{Bug Fixing Rate}
211 <<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5,warning=FALSE,error=FALSE>>=
212 bug.closed.series <- read.table(file="data/bug_closed_time_series.txt")
213 colnames(bug.closed.series) <- c("archived.bugs","year.week")
214 bug.closed.series$week <-
215 gsub("(\\d+)-(\\d+)","\\2",bug.closed.series$year.week)
216 bug.closed.series$year <-
217 gsub("(\\d+)-(\\d+)","\\1",bug.closed.series$year.week)
218 bug.closed.series$doy <-
219 as.numeric(bug.closed.series$week)*7
220 bug.closed.series$year.doy <-
221 paste(sep="-",bug.closed.series$year,bug.closed.series$doy)
222 bug.closed.series$date <-
223 as.POSIXct(strptime(bug.closed.series$year.doy,
226 # bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
228 print(ggplot(bug.closed.series[bug.closed.series$date > as.POSIXct(ISOdatetime(2008,1,1,0,0,0)),],
229 aes(x=date,y=archived.bugs/7))+geom_line()+stat_smooth(method="lm")+
230 ylab("Bugs archived Per Day")+xlab("Time"))
231 bugs.closed.per.day <-
232 sum(bug.closed.series$archived.bugs)/
233 as.numeric(bug.closed.series$date[nrow(bug.closed.series)]-bug.closed.series$date[1])
236 Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
242 <<rc.bugs,fig=TRUE,echo=FALSE>>=
244 read.table(file="data/rc_bugs.txt",
245 header=TRUE,fill=TRUE)
246 rc.bugs <- data.frame(rc.bugs)
247 rc.bugs <- rc.bugs[,c(-5,-7)]
249 as.POSIXct(strptime(rc.bugs$date,
250 format="%Y%m%d%H%M"))
252 melt(rc.bugs,id="date")
253 print(ggplot(rc.bugs.long[rc.bugs.long$date >
254 as.POSIXct(ISOdatetime(2013,08,1,0,0,0)),]
255 ,aes(x=date,y=value,color=variable))+
257 ggtitle("RC Bugs in the past year")+
258 ylab("RC Bugs")+xlab("Time")+
259 theme(legend.position=c(0.9,0.5))+
260 guides(color=guide_legend(title="Measure")))
264 \setbeamercolor{postit}{fg=black,bg=yellow}
265 \begin{textblock}{4}(6,4)
267 \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
268 \centering \huge Too many RC bugs!
275 \section{Debbugs Structure and Infrastructure}
277 \subsection{BTS System Diagram}
278 \begin{frame}{BTS system Diagram}
280 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
284 \subsection{Debbugs Box Diagram}
285 \begin{frame}{Debbugs Box Diagram}
287 \input{debbugs_layout}
291 \section{Database Ho!}
293 \subsection{Overall Database Design}
295 \begin{frame}{Overall Database Design}
297 \input{debbugs_layout_db}
301 \subsection{Perl Database Infrastucture}
302 \begin{frame}{Perl Database Infrastructure}
305 \item DBIx::Class::Schema::Loader -- SQL schema to DBIx::Class
306 \item DBIx::Class::DeploymentHandler -- Upgrades of Schema
307 \item Debbugs::DB -- Debbugs SQL Module
312 \subsection{SQL Design}
313 \begin{frame}{SQL Schema}
314 \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
316 \item Current Debbugs SQL Schema
320 \subsubsection{dak SQL Design}
321 \begin{frame}{dak SQL Schema}
322 \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
324 \item Inspiration taken from dak SQL Schema where appropriate
328 \subsection{SQL Loading}
329 \begin{frame}[fragile]{SQL Loading}
333 \begin{lstlisting}[language=sh]
334 debbugs-loadsql bugs;
335 debbugs-loadsql bugs archive;
337 \item Load Versioning information
338 \begin{lstlisting}[language=sh]
339 debbugs-loadsql versions;
340 debbugs-loadsql debinfo;
345 \subsection{SQL Working}
346 \begin{frame}[fragile]{SQL Working}
348 \begin{lstlisting}[language=SQL]
349 SELECT count(*) FROM bug
350 WHERE last_modified > '2014-07-01'
352 AND owner IS NOT NULL;
354 \begin{visibleenv}<2>
363 \subsection{Work still needed for SQL}
364 \begin{frame}{Work Still needed for SQL}
366 \item Logfile loading (for full text searching)
367 \item Status Caching (for faster page loading)
373 \section{New(ish) Features}
375 \subsection{New Changes}
376 \begin{frame}{New Changes}
378 \column{0.5\textwidth}
380 \item mailto links (demo)
381 \item forcemerge does the right thing
382 \item control at submit time
384 \column{0.5\textwidth}
385 \includegraphics[width=\textwidth,keepaspectratio]{images/telegraph_bug}
389 \section{Future features}
391 \subsection{Status Caching}
392 \begin{frame}{Status Caching}
394 \item Cache status of bugs (presence/absence at all distributions)
395 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
396 \item Allows for reverse status lookup
398 \item Enables finding bugs which are present in testing or unstable
403 \subsection{Statistics}
404 \begin{frame}{Statistics}
406 \column{0.5\textwidth}
408 \item Track status changes over time
409 \item Bugs found/fixed/absent in stable/testing/unstable over time
410 \item Bug submission times
411 \item Bug closure times
413 \item Per package, severity, maintainer tracking of the above
415 \column{0.5\textwidth}
417 \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
423 \subsection{Additional Planned Features}
424 \begin{frame}{More planned features}
426 \column{0.5\textwidth}
428 \item HTTP based reporting system with e-mail roundtrip
429 \item Release Debbugs again
430 \item Bug mailing lists in Debbugs
432 \item Avoid duplicate mail
433 \item Opt in/out of mail
435 \item Merging of merged bug reports
436 \item Threading in report
438 \column{0.5\textwidth}
439 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
443 \begin{frame}{Even More planned features}
445 \column{0.5\textwidth}
447 \item Usercategory duplication and replay
448 \item Remote Attachments
449 \item New Spool Storage Format
450 \item Usertags visibility
451 \item Smarter CGI options
453 \column{0.5\textwidth}
454 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
462 \section{Places you can help}
464 \begin{frame}{7 tasks seeking contributors}
466 \item Documentation of Usercategories
467 \item Implementation of rss feeds for packages and bugs
468 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
469 \item Documentation of multipe-package reassign and when it or
470 affects should be used
471 \item Mailto link with subject, references, etc. all filled in
472 \item Documentation for local-debbugs configuration file (behaves
477 \begin{frame}{Getting started on these tasks}
479 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
481 \item master (upstream debbugs): git clone \url{http://bugs.debian.org/debbugs-source/debbugs.git}
482 \item debian (debian branch): git clone -b debian \url{http://bugs.debian.org/debbugs-source/debbugs.git}
483 \item Checked out branches are also available at
484 \url{http://bugs.debian.org/debbugs-source/master} and
485 \url{http://bugs.debian.org/debbugs-source/debian}
487 \item My branches: \url{http://git.donarmstrong.com/debbugs.git}
488 \item Mailing list debian-debbugs@lists.debian.org
489 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
493 \begin{frame}{The Debbugs Team}
501 \item Emeritus Developers
503 \item Steiner Gunderson
512 \begin{frame}{Questions?}
513 \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}