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}
40 \newenvironment{narrow}[2]{%
42 \setlength{\topsep}{0pt}%
43 \setlength{\leftmargin}{#1}%
44 \setlength{\rightmargin}{#2}%
45 \setlength{\listparindent}{\parindent}%
46 \setlength{\itemindent}{\parindent}%
47 \setlength{\parsep}{\parskip}}%
50 \newenvironment{paperquote}{%
55 \renewcommand{\textfraction}{0.15}
56 \renewcommand{\topfraction}{0.85}
57 \renewcommand{\bottomfraction}{0.65}
58 \renewcommand{\floatpagefraction}{0.60}
59 %\renewcommand{\baselinestretch}{1.8}
60 \newenvironment{enumerate*}%
62 \setlength{\itemsep}{0pt}%
63 \setlength{\parskip}{0pt}}%
65 \newenvironment{itemize*}%
67 \setlength{\itemsep}{0pt}%
68 \setlength{\parskip}{0pt}}%
71 \logo{\includegraphics[width=2cm]{figures/openlogo.pdf}}
72 \author{Don Armstrong}
74 \subtitle{Database Ho!}
75 %\date{August 11th, 2008}
76 \titlegraphic{\includegraphics[height=0.3\textheight,keepaspectratio]{figures/openlogo-crop.pdf}}
79 % State of the BTS: new features, changes and tips
81 % The bug tracking system is where all bugs that affect Debian are
82 % filed. New features, including the affects, summary, and local debbugs
83 % mirror will be presented and demonstrated. Some of the underlying
84 % architectural changes to the codebase in debbugs to make it more
85 % maintainable and deployable are also outlined. Finally, a set of tips
86 % and tricks that can be used to make the BTS easier to use are
92 % - local debbugs mirror for offline work
96 % - multi-distribution/arch status
97 % - control changes at submit@ time
98 % - Code Architecture Changes
100 % - Control abstraction
101 % - release to experimental
104 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
109 opts_chunk$set(dev="cairo_pdf",out.width="\\textwidth",out.height="0.7\\textheight",out.extra="keepaspectratio")
110 opts_chunk$set(cache=TRUE, autodep=TRUE)
111 options(device = function(file, width = 8, height = 7, ...) {
112 cairo_pdf(tempfile(), width = width, height = height, ...)
120 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
122 \frame[plain]{\titlepage
123 Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git/}
126 % \begin{frame}{Debbugs}
127 % \tableofcontents[subsectionstyle=hide]
130 \section{Introduction to Debbugs}
132 \subsection{Introduction}
133 \begin{frame}{Goals of this talk}
135 \column{0.5\textwidth}
137 \item Introduction to Debbugs
139 \item Tips and Tricks
140 \item Planned features
141 \item Places you can help
143 \column{0.5\textwidth}
144 \includegraphics[width=\textwidth,keepaspectratio]{images/rc_buggy}
147 \begin{frame}{Goals of the BTS}
149 \column{0.4\textwidth}
150 \includegraphics[width=\textwidth,keepaspectratio]{images/not_a_bug}
151 \column{0.6\textwidth}
153 \item Reporting of \only<1>{Features}\only<2>{Bugs}
154 \item Evolution of \only<1>{Features}\only<2>{Bugs}
155 \item Fixing of \only<1>{Features}\only<2>{Bugs}
156 \item Reducing impact of \only<1>{Features}\only<2>{Bugs}
161 \section{Bugs in Debian}
162 \subsection{Bug Reporting Rate}
163 \begin{frame}{How many bugs do we have?}
165 <<bug.growth,fig=TRUE,echo=FALSE>>=
166 bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
167 colnames(bug.growth) <- c("time","bugs")
168 bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
170 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(bug.growth$time))
171 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2005,1,1,0,0,0)),],aes(x=date,y=bugs))+
172 xlab("Time")+ylab("Bugs filed in Debian")+
173 geom_point()+stat_smooth(method="lm")+
174 ggtitle("Bug growth versus time"))
181 <<bugs.filed,fig=TRUE,echo=FALSE,warning=FALSE>>=
182 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
183 xlab("Time")+ylab("Bugs filed in Debian")+
184 geom_point()+stat_smooth(method="lm")+
185 ggtitle("Christian Perrier's Plot"))
186 bugs.filed.per.day <-
187 lm(bugs~date,bug.growth)$coeff[2]*3600*24
190 Roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs are filed per day.
194 \subsection{Bug Fixing Rate}
197 <<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5,warning=FALSE,error=FALSE>>=
198 bug.closed.series <- read.table(file="data/bug_closed_time_series.txt")
199 colnames(bug.closed.series) <- c("archived.bugs","year.week")
200 bug.closed.series$week <-
201 gsub("(\\d+)-(\\d+)","\\2",bug.closed.series$year.week)
202 bug.closed.series$year <-
203 gsub("(\\d+)-(\\d+)","\\1",bug.closed.series$year.week)
204 bug.closed.series$doy <-
205 as.numeric(bug.closed.series$week)*7
206 bug.closed.series$year.doy <-
207 paste(sep="-",bug.closed.series$year,bug.closed.series$doy)
208 bug.closed.series$date <-
209 as.POSIXct(strptime(bug.closed.series$year.doy,
212 # bug.closed.ts <- ts(bug.closed.series[,1],start=1,frequency=7)
214 print(ggplot(bug.closed.series[bug.closed.series$date > as.POSIXct(ISOdatetime(2008,1,1,0,0,0)),],
215 aes(x=date,y=archived.bugs))+geom_line()+stat_smooth(method="lm")+
216 ylab("Archived bugs")+xlab("Time"))
217 bugs.closed.per.day <-
218 sum(bug.closed.series$archived.bugs)/
219 as.numeric(bug.closed.series$date[nrow(bug.closed.series)]-bug.closed.series$date[1])
222 Roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs are closed per day.
228 <<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
230 read.table(file="data/rc_bugs.txt",
231 header=TRUE,fill=TRUE)
232 rc.bugs <- data.frame(rc.bugs)
233 rc.bugs <- rc.bugs[,c(-5,-7)]
235 as.POSIXct(strptime(rc.bugs$date,
236 format="%Y%m%d%H%M"))
238 melt(rc.bugs,id="date")
239 print(ggplot(rc.bugs.long[rc.bugs.long$date >
240 as.POSIXct(ISOdatetime(2013,08,1,0,0,0)),]
241 ,aes(x=date,y=value,color=variable))+
243 ggtitle("RC Bugs in the past year")+
244 theme(legend.position=c(0.9,0.5))+
245 guides(color=guide_legend(title="Measure")))
249 \setbeamercolor{postit}{fg=black,bg=yellow}
250 \begin{textblock}{4}(6,4)
252 \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
253 \centering \huge Too many RC bugs!
260 \section{Debbugs Structure and Infrastructure}
262 \subsection{BTS System Diagram}
263 \begin{frame}{BTS system Diagram}
265 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
269 \subsection{Debbugs Box Diagram}
270 \begin{frame}{Debbugs Box Diagram}
272 \input{debbugs_layout}
276 \section{Database Ho!}
278 \subsection{Overall Database Design}
280 \begin{frame}{Overall Database Design}
282 \input{debbugs_layout}
286 \subsection{Perl Database Infrastucture}
287 \begin{frame}{Perl Database Infrastructure}
290 \item DBIx::Class::Schema::Loader -- SQL schema to DBIx::Class
291 \item DBIx::Class::DeploymentHandler -- Upgrades of Schema
292 \item Debbugs::DB -- Debbugs SQL Module
297 \subsection{SQL Design}
298 \begin{frame}{SQL Schema}
299 \includegraphics[width=\textwidth,keepaspectratio]{figures/schema.png}
302 \subsubsection{DAK SQL Design}
303 \begin{frame}{DAK SQL Schema}
304 \includegraphics[width=\textwidth,keepaspectratio]{figures/dak_schema.png}
307 \section{New(ish) Features}
309 \subsection{New Changes}
310 \begin{frame}{New Changes}
312 \item CVE linkified (eg, \href{http://bugs.debian.org/570743}{\#570743})
314 \item reverse status lookup
315 \item forcemerge does the right thing
321 \begin{frame}{Affects}
323 \item Bugs in Package A causes problem in package B
324 \item Reduce duplicates filed in package B by showing bug in package
326 \item \url{http://www.debian.org/Bugs/server-control\#affects}
327 \item \texttt{bts affects 12345 foopkg;}
331 \begin{frame}{Affects: Implemented}
332 % \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/affects}
337 \begin{frame}{Summary}
339 \item Short indication of what the bug was about
340 \item Long discussion, summarized into a single paragraph
341 \item Extract the first non-control, non-psuedoheader, non-quoted
342 paragraph from a nominated message
343 \item \url{http://www.debian.org/Bugs/server-control\#summary}
344 \item \texttt{bts summary 12345 30}
348 \begin{frame}{Summary: Implemented}
349 % \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/summary}
353 \subsection{Local Mirror}
355 \begin{frame}{local-debbugs}
357 \item Ability to run a full local copy of debbugs
358 \item Select bugs interested in based on a configurable query
359 \item By default selects unarchived bugs
361 \item In maintained packages
362 \item Correspondend with
366 \item Currently takes about 2G for me (most of which is indixes)
367 \item Part of experimental debbugs package (in the archive)
371 \begin{frame}{local-debbugs demo}
373 \item Update mirror: \texttt{local-debbugs \--\--mirror}
374 \item Start daemon: \texttt{local-debbugs \--\--daemon}
375 \item See bug \#441151: \texttt{local-debbugs \--\--show 441151}
376 \item See bugs in lilypond: \texttt{local-debbugs \--\--search lilypond}
377 \item See critical bugs: \texttt{local-debbugs \--\--search severity:critical}
381 \begin{frame}{local-debbugs issues}
383 \column{0.5\textwidth}
385 \item Suboptimal missing bug handling
386 \item Size of mirror large
387 \item Could be faster to sync
388 \item Needs better documentation
390 \column{0.5\textwidth}
391 % \includegraphics[width=\textwidth,keepaspectratio]{figures/happy_bug}
397 %\subsection{More SOAP}
401 % \section{Tips and Tricks}
402 % % - Tips and Tricks
404 % % - Full text search
405 % \begin{frame}{Full Text Search}
407 % \item Using HyperEstraier
408 % \item \url{http://bugs.debian.org/cgi-bin/search.cgi}
409 % \item Searching for ``lp0 on fire''
410 % \item Searching for memory leaks in iceweasel
414 % % - Using the new options limits
415 % \begin{frame}{CGI Options}
417 % \item Bugs in debbugs which aren't tagged pending or wontfix owned by me
418 % \item Bugs in debbugs tagged help
419 % \item Bugs in debbugs whose title mentions cgi
423 \begin{frame}{Silly Symbols}
425 \begin{tabular}{c c c c}
426 Merged & = & Fixed Versions & ☺ \\
427 Blocked & ♙ & Blocks & ♔ \\
428 Forwarded & ↝ & Archived & ♲ \\
429 Affects & ☣ & wontfix & ☹ \\
430 patch & + & moreinfo & M \\
431 unreproducible & R & security & S \\
432 pending & P & fixed & F \\
433 help & H & fixed-upstream & U \\
439 % \begin{frame}{Silly Symbols}
441 % \begin{tabular}{c c c c}
442 % Merged & = & Fixed Versions & \smiley \\
443 % Blocked & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocked} & Blocks & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocks} \\
444 % Forwarded & ↝ & Archived & \includegraphics[height=0.5cm,keepaspectratio]{figures/archived} \\
445 % Affects & \includegraphics[height=0.5cm,keepaspectratio]{figures/affects_icon} & wontfix & \frownie \\
446 % patch & + & moreinfo & M \\
447 % unreproducible & R & security & S \\
448 % pending & P & fixed & F \\
449 % help & H & fixed-upstream & U \\
450 % upstream & u & & \\
455 \section{Planned features}
457 \subsection{Status Caching}
458 \begin{frame}{Status Caching}
460 \item Cache status of bugs (presence/absence at all distributions)
461 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
462 \item Allows for reverse status lookup
464 \item Enables finding bugs which are present in testing or unstable
465 \item Eventually replace functionality of \url{bts.turmzimmer.net}
470 \begin{frame}{Planned features}
472 \item<alert@2> Control Commands in Submit
473 \item<3-> Mail to nnn@bugs.debian.org goes to submitter
475 \item<6-> b.d.o/libc6 $\rightarrow$ b.d.o/src:eglibc
477 \item<6-> in future, make binary-only views more difficult to get (?)
481 \definecolor{peach}{rgb}{1,0.9,0.7}
482 \setbeamercolor{controlcmd}{fg=black,bg=peach}
483 \begin{textblock}{6}(7,7)
485 \begin{beamercolorbox}[sep=1em,wd=5.5cm]{controlcmd}
487 To: submit@bugs.debian.org\\
488 From: foo@example.com\\
491 Control: user foo@debian.org\\
492 Control: usertag 0 bleargh\\
493 Control: clone 0 -1\\
494 Control: reassign -1 blah\\
499 \begin{beamercolorbox}[sep=1em,wd=5.5cm]{controlcmd}
501 To: control@bugs.debian.org\\
502 From: foo@example.com\\
504 user foo@debian.org\\
505 uservalue 12345 priority 30\\
506 uservalue 12345 vcs-commit \textbackslash \\
507 \ http://q.fr/b/r1432 \\
508 uservalue 12345 difficulty 10\\
515 \begin{frame}{More planned features}
517 \column{0.5\textwidth}
519 \item Merging of merged bug reports
520 \item Threading in report
521 \item Usercategory duplication and replay
522 \item Remote Attachments
523 \item New Spool Storage Format
524 \item Backend index using postgresql
525 \item Usertags visibility
526 \item Smarter CGI options
528 \column{0.5\textwidth}
529 % \includegraphics[width=\textwidth,keepaspectratio]{figures/oh_hai_bug}
533 \begin{frame}{Statistics}
535 % \column{0.5\textwidth}
536 % \column{0.5\textwidth}
538 \item Track status changes over time
539 \item Bugs found/fixed/absent in stable/testing/unstable over time
540 \item Bug submission times
541 \item Bug closure times
543 \item Per package, severity, maintainer tracking of the above
546 % \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{figures/surprised_bugs_life}
552 \begin{frame}{Action Required Sorting}
554 \begin{tabular}{c | c | c}
555 & Care about & Don't care \\
557 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Triage}\end{sideways}} & No response & Active responses \\
558 & Ancient found versions & found in multiple versions \\
559 & Incomplete report & Complete report \\
561 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Maint.}\end{sideways}} & has a patch & pending/fixed \\
562 & moreinfo+response & just moreinfo \\
563 & high priority & wontfix \\
565 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Submit.}\end{sideways}} &
566 moreinfo & moreinfo+response \\
567 & mail from maintainer & no response \\
568 & bug is fixed & bug isn't fixed \\
572 \item Sorting by a combination of priority and action required
573 \item Minimize time wasted finding a bug
574 \item Maximize productivity
579 \subsection{Upstream and Downstream Integration}
583 \item Sharing state between upstream, downstream and sidestream
584 \item Sharing comments between the same
585 \item Distributed bug tracking
586 \item Distributed version/commit tracking
591 \section{Places you can help}
593 \begin{frame}{\sout{5} \sout{6} 7 tasks seeking contributors}
595 \item Documentation of Usercategories
596 \item Implementation of rss feeds for packages and bugs
597 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
598 \item Documentation of multipe-package reassign and when it or
599 affects should be used
600 \item Mailto link with subject, references, etc. all filled in
601 \item Documentation for local-debbugs configuration file (behaves
606 \begin{frame}{Getting started on these tasks}
608 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
610 \item mainline (upstream debbugs): bzr clone \url{http://bugs.debian.org/debbugs-source/mainline}
611 \item debian (debian branch): bzr clone \url{http://bugs.debian.org/debbugs-source/debian}
614 \item My branches: \url{http://bzr.donarmstrong.com/debbugs/branches}
615 \item Mailing list debian-debbugs@lists.debian.org
616 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
620 \begin{frame}{Setting up a BTS mirror for development}
622 \item \url{http://svn.donarmstrong.com/don/trunk/projects/debbugs/local_mirror.sh}
624 \item Set SPOOL and VERSIONS appropriately
625 \item mkdir -p /path/to/spool/{db-h,archive} /path/to/versions;
626 \item touch /path/to/spool/by-reverse.idx
628 \item \url{http://svn.donarmstrong.com/don/trunk/projects/debbugs/setup_config.sh}
630 \item<2> Will exist suddenly (not there now)
638 % - Using the new options limits
640 % - Getting users to triage their bugs
643 % * Overview of how the BTS works
649 % o action-required sorting (maintainer and submitter views)
650 % + priority sorting (uservalue)
651 % o merging of merged bug reports and threaded view
652 % o control in messages to submit@ and nnn@
653 % o usertag/uservalue/usercategory duplication/replay
654 % o rss feeds for packages and bugs
655 % o remote attachments
656 % o new spool storage format
657 % o better statistics
658 % * Old features that may be unfamiliar
659 % o fun with bts select
660 % o full text searching with HE
662 % * A bald plea for more assistance
668 % Upcoming improvements:
670 % * control@ commands in submit
672 % * reverse status lookup
674 % * b.d.o/libc6 -> b.d.o/src:eglibc
679 % * web-based mail submission
680 % ** needed due to blocking of port 25
683 % ** cannot be synchronous
684 % ** but may run queue on demand
686 % * per-arch buildd tags (or pseudopackages)
688 % * search by uploader
691 % Other technical suggestions:
693 % * notification to blockees when blocking bugs are killed off
694 % * documentation consistency? (e.g. reassign; could use clarification)
695 % ** response: needs love; currently in WML
697 % Social Improvements:
699 % * Better statistics
701 % *** What packagers need help
702 % *** Which bug triagers should be recognized. Currently these people
703 % receive no recognition; would like to encourage them to continue
706 % Discussion - whether mass-filed bugs should be included?
708 % * Common triager mistake: emailing the bug number instead of the submitter.
709 % Don: Plan to address this via the reply list.
711 % Please configure mailing list subscriptions not to bounce/spam the owner.
713 % Q: Limit on size of attachments to BTS? ~200MB
715 % Idea: RFC exists that supports remote/offline attachments.
717 % How to perform debbugs development?
718 % * see debbugs-local package
719 % * can rsync the entire bugs database to local box
720 % * apache configuration simple, mail setup somewhat more involved
721 % * help: debbugs@l.d.o, #debbugs
723 % ** see armstrong branches for work in progress
725 % How do you use the BTS?
728 % * 200-300 open bugs: difficult to keep track of bugs already seen
729 % * idea: improve documentation regarding user-tags/categorization features
730 % * idea: display of possible set of user-tags via JavaScript - "make user-tags pretty"
731 % * idea: user authention to allow management of tags
733 % * switch index from flat-files to Postgres; borrow from UDD
735 % Q: Complaints regarding email addresses on webpage. Should we obfuscate these?
736 % ** Is there any hard data on which types of obfuscation work?
737 % ** Can we blackhole robots? Use a honeypot? Issue is that bugs are
738 % archives to the ML. Discussion around configuration on Ian Jackson's
741 % Q: List of needs for new debbugs contributors?
742 % * See how to help on the wiki.
744 % Q: Can you get a list of user-tags for an email address w/out the bug reports?
745 % * Should be pretty easy. May be a patch for comand-line 'bts' tool in devscripts.
749 % Slides: http://svn/donarmstrong.com/don/trunk/projects/debian/debconf10/bugs_the_bof/
750 % Contact Don with questions.
753 % For spam questions, reach out to Blars Blarson
755 \begin{frame}{The Debbugs Team}
763 \item Emeritus Developers
765 \item Steiner Gunderson
775 \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{images/don_at_burning_man.jpg}