]> git.donarmstrong.com Git - debbugs-presentations.git/blob - debconf14/debbugs.Rnw
update more planned features
[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 \begin{frame}{More planned features}
391   \begin{columns}
392     \column{0.5\textwidth}
393     \begin{itemize}
394     \item HTTP based reporting system with e-mail roundtrip
395     \item Release Debbugs again
396     \item Bug mailing lists in Debbugs
397       \begin{itemize}
398       \item Avoid duplicate mail
399       \item Opt in/out of mail
400       \end{itemize}
401     \item Merging of merged bug reports
402     \item Threading in report
403     \item Usercategory duplication and replay
404     \item Remote Attachments
405     \item New Spool Storage Format
406     \item Usertags visibility
407     \item Smarter CGI options
408     \end{itemize}
409     \column{0.5\textwidth}
410     \includegraphics[width=\textwidth,keepaspectratio]{images/fixed_bug}
411   \end{columns}
412 \end{frame}
413
414 \begin{frame}{Statistics}
415   \begin{columns}
416     \column{0.5\textwidth}
417     \begin{itemize}
418     \item Track status changes over time
419     \item Bugs found/fixed/absent in stable/testing/unstable over time
420     \item Bug submission times
421     \item Bug closure times
422     \item Bug mail rates
423     \item Per package, severity, maintainer tracking of the above
424     \end{itemize}
425     \column{0.5\textwidth}
426     \begin{center}
427       \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{images/bug}
428     \end{center}
429   \end{columns}
430 \end{frame}
431
432
433
434 \section{Places you can help}
435
436 \begin{frame}{7 tasks seeking contributors}
437   \begin{itemize}
438   \item Documentation of Usercategories
439   \item Implementation of rss feeds for packages and bugs
440   \item CGI options on pkgreport.cgi for usertags et al. \#536378)
441   \item Documentation of multipe-package reassign and when it or
442     affects should be used
443   \item Mailto link with subject, references, etc. all filled in
444   \item Documentation for local-debbugs configuration file (behaves
445     like bts select)
446   \end{itemize}
447 \end{frame}
448
449 \begin{frame}{Getting started on these tasks}
450   \begin{itemize}
451   \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
452     \begin{itemize}
453     \item master (upstream debbugs): git clone \url{http://bugs.debian.org/debbugs-source/debbugs.git}
454     \item debian (debian branch): git clone -b debian \url{http://bugs.debian.org/debbugs-source/debbugs.git}
455     \item Checked out branches are also available at
456       \url{http://bugs.debian.org/debbugs-source/master} and
457       \url{http://bugs.debian.org/debbugs-source/debian}
458     \end{itemize}
459   \item My branches: \url{http://git.donarmstrong.com/debbugs.git}
460   \item Mailing list debian-debbugs@lists.debian.org
461   \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
462   \end{itemize}
463 \end{frame}
464
465 \begin{frame}{The Debbugs Team}
466   \begin{itemize}
467   \item Current team
468     \begin{itemize}
469     \item Don Armstrong
470     \item Blars Blarson
471     \item Colin Watson
472     \end{itemize}
473   \item Emeritus Developers
474     \begin{itemize}
475     \item Steiner Gunderson
476     \item Adam Heath
477     \item Josip Rodin
478     \item Anthony Towns
479     \end{itemize}
480   \item You!
481   \end{itemize}
482 \end{frame}
483
484 \begin{frame}{Questions?}
485   \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}
486 \end{frame}
487
488 \end{document}
489
490