]> git.donarmstrong.com Git - debbugs-presentations.git/blob - debconf14/debbugs.Rnw
6570cfe615668d2df9c05d36440a9d21179b9e67
[debbugs-presentations.git] / debconf14 / debbugs.Rnw
1 \mode<presentation>
2 {
3   \usetheme[hideallsubsections]{Hannover}
4   %\useoutertheme[hideallsubsections]{debiansidebar}
5   \setbeamercovered{transparent}  
6 }
7
8
9 \usepackage[no-math]{fontspec}
10 \setmainfont[ExternalLocation, 
11              Mapping=tex-text,
12              BoldFont=FreeSerifBold,
13              ItalicFont=FreeSerifItalic,
14              BoldItalicFont=FreeSerifBoldItalic]{FreeSerif}
15 \setsansfont[ExternalLocation, 
16              Mapping=tex-text,
17              BoldFont=FreeSerifBold,
18              ItalicFont=FreeSerifItalic,
19              BoldItalicFont=FreeSerifBoldItalic,
20              Scale=MatchLowercase]{FreeSerif}
21 \setmonofont{FreeMono}
22
23 \usepackage{booktabs}
24 \usepackage{multirow}
25 \usepackage{setspace}
26 \usepackage[backend=biber,natbib=true,hyperref=true,style=numeric-comp]{biblatex}
27 \bibliography{references}
28 % \usepackage[hyperfigures,bookmarks,colorlinks]{hyperref}
29
30
31 \usepackage[nomargin,inline,draft]{fixme}
32 %\usepackage[x11names,svgnames]{xcolor}
33 \usepackage{texshade}
34 \usepackage[absolute,overlay]{textpos}
35 \usepackage{tikz}
36 \usepackage{nameref}
37 \usepackage{ulem}
38 \usepackage{zref-xr,zref-user}
39 \usepackage{listings}
40
41 \newenvironment{narrow}[2]{%
42   \begin{list}{}{%
43       \setlength{\topsep}{0pt}%
44       \setlength{\leftmargin}{#1}%
45       \setlength{\rightmargin}{#2}%
46       \setlength{\listparindent}{\parindent}%
47       \setlength{\itemindent}{\parindent}%
48       \setlength{\parsep}{\parskip}}%
49   \item[]}{\end{list}}
50 \def\newblock{\hskip}
51 \newenvironment{paperquote}{%
52   \begin{quote}%
53      \it
54   }%
55   {\end{quote}}
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*}%
62   {\begin{enumerate}%
63     \setlength{\itemsep}{0pt}%
64     \setlength{\parskip}{0pt}}%
65   {\end{enumerate}}
66 \newenvironment{itemize*}%
67   {\begin{itemize}%
68     \setlength{\itemsep}{0pt}%
69     \setlength{\parskip}{0pt}}%
70   {\end{itemize}}
71
72 \logo{\includegraphics[width=2cm]{figures/openlogo.pdf}}
73 \author{Don Armstrong}
74 \title{Debbugs}
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}}
79 \subject{BTS}
80
81 % State of the BTS: new features, changes and tips
82
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
89 % presented.
90
91 %  - New Features
92 %    - affects
93 %    - summary
94 %    - local debbugs mirror for offline work
95 %    - New SOAP
96 %      - full text search
97 %      - filtering bugs
98 %    - multi-distribution/arch status
99 %    - control changes at submit@ time
100 %  - Code Architecture Changes
101 %    - Modularization
102 %    - Control abstraction
103 %    - release to experimental
104
105
106 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
107 library(lattice)
108 library(xtable)
109 library(ggplot2)
110 library(reshape2)
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, ...)
115 })
116
117
118
119
120 \begin{document}
121
122 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
123
124 \frame[plain]{\titlepage
125   Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git}
126 }
127
128 % \begin{frame}{Debbugs}
129 %   \tableofcontents[subsectionstyle=hide]
130 % \end{frame}
131
132 \section{Introduction to Debbugs}
133
134 \subsection{Introduction}
135 \begin{frame}{Goals of this talk}
136   \begin{columns}
137     \column{0.5\textwidth}
138     \begin{itemize}
139     \item Introduction to Debbugs
140     \item New features
141     \item Tips and Tricks
142     \item Planned features
143     \item Places you can help
144     \end{itemize}
145     \column{0.5\textwidth}
146     \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
147   \end{columns}
148 \end{frame}
149 \begin{frame}{Goals of the BTS}
150   \begin{columns}
151   \column{0.4\textwidth}
152     \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
153   \column{0.6\textwidth}
154   \begin{itemize}
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}
159   \end{itemize}
160 \end{columns}
161 \end{frame}
162
163 \section{Bugs in Debian}
164 \subsection{Bug Reporting Rate}
165 \begin{frame}{How many bugs do we have?}
166   \begin{center}
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),]
171 bug.growth$date <- 
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"))
177
178 \end{center}
179 \end{frame}
180
181 \begin{frame}
182   \begin{center}
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
190
191 \end{center}
192 Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per day.
193 \end{frame}
194
195
196 \subsection{Bug Fixing Rate}
197 \begin{frame}
198   \begin{center}
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,
212                       format="%Y-%j"))
213
214 # bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
215
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])
222
223   \end{center}
224 Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
225 \end{frame}
226
227 \subsection{RC Bugs}
228 \begin{frame}
229   \begin{center}
230 <<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
231 rc.bugs <-
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)]
236 rc.bugs$date <-
237   as.POSIXct(strptime(rc.bugs$date,
238                       format="%Y%m%d%H%M"))
239 rc.bugs.long <-
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))+
244       geom_line()+
245       ggtitle("RC Bugs in the past year")+
246       theme(legend.position=c(0.9,0.5))+
247       guides(color=guide_legend(title="Measure")))
248
249
250 \end{center}
251   \setbeamercolor{postit}{fg=black,bg=yellow}
252   \begin{textblock}{4}(6,4)
253     \begin{onlyenv}<2>
254       \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
255         \centering \huge Too many RC bugs!
256       \end{beamercolorbox}
257     \end{onlyenv}
258   \end{textblock}
259
260 \end{frame}
261
262 \section{Debbugs Structure and Infrastructure}
263
264 \subsection{BTS System Diagram}
265 \begin{frame}{BTS system Diagram}
266   \begin{center}
267     \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
268   \end{center}
269 \end{frame}
270
271 \subsection{Debbugs Box Diagram}
272 \begin{frame}{Debbugs Box Diagram}
273   \begin{center}
274     \input{debbugs_layout}
275   \end{center}
276 \end{frame}
277
278 \section{Database Ho!}
279
280 \subsection{Overall Database Design}
281
282 \begin{frame}{Overall Database Design}
283   \begin{center}
284     \input{debbugs_layout_db}
285   \end{center}
286 \end{frame}
287
288 \subsection{Perl Database Infrastucture}
289 \begin{frame}{Perl Database Infrastructure}
290   \begin{itemize}
291   \item DBIx::Class
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
295   \end{itemize}
296 \end{frame}
297
298
299 \subsection{SQL Design}
300 \begin{frame}{SQL Schema}
301   \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
302   \begin{itemize}
303   \item Current Debbugs SQL Schema
304   \end{itemize}
305 \end{frame}
306
307 \subsubsection{dak SQL Design}
308 \begin{frame}{dak SQL Schema}
309   \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
310   \begin{itemize}
311   \item Inspiration taken from dak SQL Schema where appropriate
312   \end{itemize}
313 \end{frame}
314
315 \subsection{SQL Loading}
316 \begin{frame}[fragile]{SQL Loading}
317   % SQL loading
318   \begin{itemize}
319   \item Load bugs
320 \begin{lstlisting}[language=sh]
321 debbugs-loadsql bugs;
322 debbugs-loadsql bugs archive;
323 \end{lstlisting}
324   \item Load Versioning information
325 \begin{lstlisting}[language=sh]
326 debbugs-loadsql versions;
327 debbugs-loadsql debinfo;
328 \end{lstlisting}
329   \end{itemize}
330 \end{frame}
331
332 \subsection{SQL Working}
333 \begin{frame}[fragile]{SQL Working}
334   % example SQL query
335 \begin{lstlisting}[language=SQL]
336 SELECT count(*) FROM bug
337 WHERE last_modified > '2014-07-01'
338 AND done IS NOT NULL
339 AND owner IS NOT NULL;
340 \end{lstlisting}
341 \begin{visibleenv}<2>
342 \begin{lstlisting}
343  count 
344 -------
345    521
346 \end{lstlisting}
347 \end{visibleenv}
348 \end{frame}
349
350 \subsection{Work still needed for SQL}
351 \begin{frame}{Work Still needed for SQL}
352 \begin{itemize}
353 \item Logfile loading (for full text searching)
354 \item Status Caching (for faster page loading)
355 \item Testing
356 \item Deployment
357 \end{itemize}
358 \end{frame}
359
360 \section{New(ish) Features}
361
362 \subsection{New Changes}
363 \begin{frame}{New Changes}
364   \begin{columns}
365     \column{0.5\textwidth}
366     \begin{itemize}
367   \item mailto links (demo)
368   \item forcemerge does the right thing
369   \item control at submit time
370   \end{itemize}
371     \column{0.5\textwidth}
372     \includegraphics[width=\textwidth,keepaspectratio]{images/telegraph_bug}
373 \end{columns}
374 \end{frame}
375
376 \section{Future features}
377
378 \subsection{Status Caching}
379 \begin{frame}{Status Caching}
380   \begin{itemize}
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
384     \begin{itemize}
385     \item Enables finding bugs which are present in testing or unstable
386     \end{itemize}
387   \end{itemize}
388 \end{frame}
389
390 \subsection{Statistics}
391 \begin{frame}{Statistics}
392   \begin{columns}
393     \column{0.5\textwidth}
394     \begin{itemize}
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
399     \item Bug mail rates
400     \item Per package, severity, maintainer tracking of the above
401     \end{itemize}
402     \column{0.5\textwidth}
403     \begin{center}
404       \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
405     \end{center}
406   \end{columns}
407 \end{frame}
408
409
410 \subsection{Additional Planned Features}
411 \begin{frame}{More planned features}
412   \begin{columns}
413     \column{0.5\textwidth}
414     \begin{itemize}
415     \item HTTP based reporting system with e-mail roundtrip
416     \item Release Debbugs again
417     \item Bug mailing lists in Debbugs
418       \begin{itemize}
419       \item Avoid duplicate mail
420       \item Opt in/out of mail
421       \end{itemize}
422     \item Merging of merged bug reports
423     \item Threading in report
424     \end{itemize}
425     \column{0.5\textwidth}
426     \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
427   \end{columns}
428 \end{frame}
429
430 \begin{frame}{Even More planned features}
431   \begin{columns}
432     \column{0.5\textwidth}
433     \begin{itemize}
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
439     \end{itemize}
440     \column{0.5\textwidth}
441     \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
442   \end{columns}
443 \end{frame}
444
445
446
447
448
449 \section{Places you can help}
450
451 \begin{frame}{7 tasks seeking contributors}
452   \begin{itemize}
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
460     like bts select)
461   \end{itemize}
462 \end{frame}
463
464 \begin{frame}{Getting started on these tasks}
465   \begin{itemize}
466   \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
467     \begin{itemize}
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}
473     \end{itemize}
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
477   \end{itemize}
478 \end{frame}
479
480 \begin{frame}{The Debbugs Team}
481   \begin{itemize}
482   \item Current team
483     \begin{itemize}
484     \item Don Armstrong
485     \item Blars Blarson
486     \item Colin Watson
487     \end{itemize}
488   \item Emeritus Developers
489     \begin{itemize}
490     \item Steiner Gunderson
491     \item Adam Heath
492     \item Josip Rodin
493     \item Anthony Towns
494     \end{itemize}
495   \item You!
496   \end{itemize}
497 \end{frame}
498
499 \begin{frame}{Questions?}
500   \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}
501 \end{frame}
502
503 \end{document}
504
505