]> git.donarmstrong.com Git - debbugs-presentations.git/blob - debconf14/debbugs.Rnw
add logo
[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
379
380 \subsection{Status Caching}
381 \begin{frame}{Status Caching}
382   \begin{itemize}
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
386     \begin{itemize}
387     \item Enables finding bugs which are present in testing or unstable
388     \item Eventually replace functionality of \url{bts.turmzimmer.net}
389     \end{itemize}
390   \end{itemize}
391 \end{frame}
392
393
394 \begin{frame}{More planned features}
395   \begin{columns}
396     \column{0.5\textwidth}
397     \begin{itemize}
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
405     \end{itemize}
406     \column{0.5\textwidth}
407     \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
408   \end{columns}
409 \end{frame}
410
411 \begin{frame}{Statistics}
412   \begin{columns}
413     \column{0.5\textwidth}
414     \begin{itemize}
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
419     \item Bug mail rates
420     \item Per package, severity, maintainer tracking of the above
421     \end{itemize}
422     \column{0.5\textwidth}
423     \begin{center}
424       \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
425     \end{center}
426   \end{columns}
427 \end{frame}
428
429
430
431 \section{Places you can help}
432
433 \begin{frame}{7 tasks seeking contributors}
434   \begin{itemize}
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
442     like bts select)
443   \end{itemize}
444 \end{frame}
445
446 \begin{frame}{Getting started on these tasks}
447   \begin{itemize}
448   \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
449     \begin{itemize}
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}
455     \end{itemize}
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
459   \end{itemize}
460 \end{frame}
461
462 \begin{frame}{The Debbugs Team}
463   \begin{itemize}
464   \item Current team
465     \begin{itemize}
466     \item Don Armstrong
467     \item Blars Blarson
468     \item Colin Watson
469     \end{itemize}
470   \item Emeritus Developers
471     \begin{itemize}
472     \item Steiner Gunderson
473     \item Adam Heath
474     \item Josip Rodin
475     \item Anthony Towns
476     \end{itemize}
477   \item You!
478   \end{itemize}
479 \end{frame}
480
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}
483 \end{frame}
484
485 \end{document}
486
487