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}}
80 % State of the BTS: new features, changes and tips
82 % The bug tracking system is where all bugs that affect Debian are
83 % filed. New features, including the affects, summary, and local debbugs
84 % mirror will be presented and demonstrated. Some of the underlying
85 % architectural changes to the codebase in debbugs to make it more
86 % maintainable and deployable are also outlined. Finally, a set of tips
87 % and tricks that can be used to make the BTS easier to use are
93 % - local debbugs mirror for offline work
97 % - multi-distribution/arch status
98 % - control changes at submit@ time
99 % - Code Architecture Changes
101 % - Control abstraction
102 % - release to experimental
105 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
110 opts_chunk$set(dev="cairo_pdf",out.width="\\textwidth",out.height="0.7\\textheight",out.extra="keepaspectratio")
111 opts_chunk$set(cache=TRUE, autodep=TRUE)
112 options(device = function(file, width = 8, height = 7, ...) {
113 cairo_pdf(tempfile(), width = width, height = height, ...)
121 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
123 \frame[plain]{\titlepage
124 Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git/}
127 % \begin{frame}{Debbugs}
128 % \tableofcontents[subsectionstyle=hide]
131 \section{Introduction to Debbugs}
133 \subsection{Introduction}
134 \begin{frame}{Goals of this talk}
136 \column{0.5\textwidth}
138 \item Introduction to Debbugs
140 \item Tips and Tricks
141 \item Planned features
142 \item Places you can help
144 \column{0.5\textwidth}
145 \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
148 \begin{frame}{Goals of the BTS}
150 \column{0.4\textwidth}
151 \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
152 \column{0.6\textwidth}
154 \item Reporting of \only<1>{Features}\only<2>{Bugs}
155 \item Evolution of \only<1>{Features}\only<2>{Bugs}
156 \item Fixing of \only<1>{Features}\only<2>{Bugs}
157 \item Reducing impact of \only<1>{Features}\only<2>{Bugs}
162 \section{Bugs in Debian}
163 \subsection{Bug Reporting Rate}
164 \begin{frame}{How many bugs do we have?}
166 <<bug.growth,fig=TRUE,echo=FALSE>>=
167 bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
168 colnames(bug.growth) <- c("time","bugs")
169 bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
171 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(bug.growth$time))
172 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2005,1,1,0,0,0)),],aes(x=date,y=bugs))+
173 xlab("Time")+ylab("Bugs filed in Debian")+
174 geom_point()+stat_smooth(method="lm")+
175 ggtitle("Bug growth versus time"))
182 <<bugs.filed,fig=TRUE,echo=FALSE,warning=FALSE>>=
183 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
184 xlab("Time")+ylab("Bugs filed in Debian")+
185 geom_point()+stat_smooth(method="lm")+
186 ggtitle("Christian Perrier's Plot"))
187 bugs.filed.per.day <-
188 lm(bugs~date,bug.growth)$coeff[2]*3600*24
191 Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per day.
195 \subsection{Bug Fixing Rate}
198 <<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5,warning=FALSE,error=FALSE>>=
199 bug.closed.series <- read.table(file="data/bug_closed_time_series.txt")
200 colnames(bug.closed.series) <- c("archived.bugs","year.week")
201 bug.closed.series$week <-
202 gsub("(\\d+)-(\\d+)","\\2",bug.closed.series$year.week)
203 bug.closed.series$year <-
204 gsub("(\\d+)-(\\d+)","\\1",bug.closed.series$year.week)
205 bug.closed.series$doy <-
206 as.numeric(bug.closed.series$week)*7
207 bug.closed.series$year.doy <-
208 paste(sep="-",bug.closed.series$year,bug.closed.series$doy)
209 bug.closed.series$date <-
210 as.POSIXct(strptime(bug.closed.series$year.doy,
213 # bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
215 print(ggplot(bug.closed.series[bug.closed.series$date > as.POSIXct(ISOdatetime(2008,1,1,0,0,0)),],
216 aes(x=date,y=archived.bugs))+geom_line()+stat_smooth(method="lm")+
217 ylab("Archived bugs")+xlab("Time"))
218 bugs.closed.per.day <-
219 sum(bug.closed.series$archived.bugs)/
220 as.numeric(bug.closed.series$date[nrow(bug.closed.series)]-bug.closed.series$date[1])
223 Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
229 <<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
231 read.table(file="data/rc_bugs.txt",
232 header=TRUE,fill=TRUE)
233 rc.bugs <- data.frame(rc.bugs)
234 rc.bugs <- rc.bugs[,c(-5,-7)]
236 as.POSIXct(strptime(rc.bugs$date,
237 format="%Y%m%d%H%M"))
239 melt(rc.bugs,id="date")
240 print(ggplot(rc.bugs.long[rc.bugs.long$date >
241 as.POSIXct(ISOdatetime(2013,08,1,0,0,0)),]
242 ,aes(x=date,y=value,color=variable))+
244 ggtitle("RC Bugs in the past year")+
245 theme(legend.position=c(0.9,0.5))+
246 guides(color=guide_legend(title="Measure")))
250 \setbeamercolor{postit}{fg=black,bg=yellow}
251 \begin{textblock}{4}(6,4)
253 \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
254 \centering \huge Too many RC bugs!
261 \section{Debbugs Structure and Infrastructure}
263 \subsection{BTS System Diagram}
264 \begin{frame}{BTS system Diagram}
266 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
270 \subsection{Debbugs Box Diagram}
271 \begin{frame}{Debbugs Box Diagram}
273 \input{debbugs_layout}
277 \section{Database Ho!}
279 \subsection{Overall Database Design}
281 \begin{frame}{Overall Database Design}
283 \input{debbugs_layout_db}
287 \subsection{Perl Database Infrastucture}
288 \begin{frame}{Perl Database Infrastructure}
291 \item DBIx::Class::Schema::Loader -- SQL schema to DBIx::Class
292 \item DBIx::Class::DeploymentHandler -- Upgrades of Schema
293 \item Debbugs::DB -- Debbugs SQL Module
298 \subsection{SQL Design}
299 \begin{frame}{SQL Schema}
300 \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
302 \item Current Debbugs SQL Schema
306 \subsubsection{dak SQL Design}
307 \begin{frame}{dak SQL Schema}
308 \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
310 \item Inspiration taken from dak SQL Schema where appropriate
314 \subsection{SQL Loading}
315 \begin{frame}[fragile]{SQL Loading}
319 \begin{lstlisting}[language=sh]
320 debbugs-loadsql bugs;
321 debbugs-loadsql bugs archive;
323 \item Load Versioning information
324 \begin{lstlisting}[language=sh]
325 debbugs-loadsql versions;
326 debbugs-loadsql debinfo;
331 \subsection{SQL Working}
332 \begin{frame}[fragile]{SQL Working}
334 \begin{lstlisting}[language=SQL]
335 SELECT count(*) FROM bug
336 WHERE last_modified > '2014-07-01'
338 AND owner IS NOT NULL;
340 \begin{visibleenv}<2>
349 \subsection{Work still needed for SQL}
352 \item Logfile loading (for full text searching)
353 \item Status Caching (for faster page loading)
359 \section{New(ish) Features}
361 \subsection{New Changes}
362 \begin{frame}{New Changes}
364 \column{0.5\textwidth}
366 \item mailto links (demo)
367 \item forcemerge does the right thing
368 \item control at submit time
370 \column{0.5\textwidth}
371 \includegraphics[width=\textwidth,keepaspectratio]{images/telegraph_bug}
375 \section{Future features}
379 \subsection{Status Caching}
380 \begin{frame}{Status Caching}
382 \item Cache status of bugs (presence/absence at all distributions)
383 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
384 \item Allows for reverse status lookup
386 \item Enables finding bugs which are present in testing or unstable
387 \item Eventually replace functionality of \url{bts.turmzimmer.net}
393 \begin{frame}{More planned features}
395 \column{0.5\textwidth}
397 \item Merging of merged bug reports
398 \item Threading in report
399 \item Usercategory duplication and replay
400 \item Remote Attachments
401 \item New Spool Storage Format
402 \item Usertags visibility
403 \item Smarter CGI options
405 \column{0.5\textwidth}
406 \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
410 \begin{frame}{Statistics}
412 \column{0.5\textwidth}
414 \item Track status changes over time
415 \item Bugs found/fixed/absent in stable/testing/unstable over time
416 \item Bug submission times
417 \item Bug closure times
419 \item Per package, severity, maintainer tracking of the above
421 \column{0.5\textwidth}
423 \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
430 \section{Places you can help}
432 \begin{frame}{7 tasks seeking contributors}
434 \item Documentation of Usercategories
435 \item Implementation of rss feeds for packages and bugs
436 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
437 \item Documentation of multipe-package reassign and when it or
438 affects should be used
439 \item Mailto link with subject, references, etc. all filled in
440 \item Documentation for local-debbugs configuration file (behaves
445 \begin{frame}{Getting started on these tasks}
447 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
449 \item master (upstream debbugs): git clone \url{http://bugs.debian.org/debbugs-source/debbugs.git}
450 \item debian (debian branch): git clone -b debian \url{http://bugs.debian.org/debbugs-source/debbugs.git}
451 \item Checked out branches are also available at
452 \url{http://bugs.debian.org/debbugs-source/master} and
453 \url{http://bugs.debian.org/debbugs-source/debian}
455 \item My branches: \url{http://git.donarmstrong.com/debbugs.git}
456 \item Mailing list debian-debbugs@lists.debian.org
457 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
461 \begin{frame}{The Debbugs Team}
469 \item Emeritus Developers
471 \item Steiner Gunderson
480 \begin{frame}{Where I'm Headed Next}
481 \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}