3 \usetheme[hideallsubsections]{Hannover}
4 %\useoutertheme[hideallsubsections]{debiansidebar}
5 \setbeamercovered{transparent}
11 \usepackage[english]{babel}
12 \usepackage[utf8x]{inputenc}
15 \usepackage[T1]{fontenc}
16 \usepackage[draft]{fixme}
20 \usepackage[absolute,overlay]{textpos}
22 \usepackage[normalem]{ulem}
25 \logo{\includegraphics[width=2cm]{figures/openlogo.pdf}}
26 \author{Don Armstrong}
28 \subtitle{New developments in the ongoing struggle against bugs}
29 %\date{August 11th, 2008}
30 \titlegraphic{\includegraphics[height=0.3\textheight,keepaspectratio]{figures/openlogo-crop.pdf}}
33 % State of the BTS: new features, changes and tips
35 % The bug tracking system is where all bugs that affect Debian are
36 % filed. New features, including the affects, summary, and local debbugs
37 % mirror will be presented and demonstrated. Some of the underlying
38 % architectural changes to the codebase in debbugs to make it more
39 % maintainable and deployable are also outlined. Finally, a set of tips
40 % and tricks that can be used to make the BTS easier to use are
46 % - local debbugs mirror for offline work
50 % - multi-distribution/arch status
51 % - control changes at submit@ time
52 % - Code Architecture Changes
54 % - Control abstraction
55 % - release to experimental
58 <<load.libraries,echo=FALSE,results="hide",error=FALSE,message=FALSE>>=
67 %\setbeamercolor{frametitle}[bg=-red!90!green!10,fg=black]
69 \frame[plain]{\titlepage
70 Source available at \url{http://git.donarmstrong.com/debbugs-presentations.git/}
73 % \begin{frame}{Debbugs}
74 % \tableofcontents[subsectionstyle=hide]
77 \section{Introduction to Debbugs}
79 \subsection{Introduction}
80 \begin{frame}{Goals of this talk}
82 \column{0.5\textwidth}
84 \item Introduction to Debbugs
87 \item Planned features
88 \item Places you can help
90 \column{0.5\textwidth}
91 \includegraphics[width=\textwidth,keepaspectratio]{figures/rc_buggy_big}
94 \begin{frame}{Goals of the BTS}
96 \column{0.4\textwidth}
97 \includegraphics[width=\textwidth,keepaspectratio]{figures/not_a_bug_but_a_feature}
98 \column{0.6\textwidth}
100 \item Reporting of \only<1>{Features}\only<2>{Bugs}
101 \item Evolution of \only<1>{Features}\only<2>{Bugs}
102 \item Fixing of \only<1>{Features}\only<2>{Bugs}
103 \item Reducing impact of \only<1>{Features}\only<2>{Bugs}
108 \subsection{Reporting, Tracking, and Fixing Bugs}
109 \begin{frame}{How many bugs do we have?}
111 \only<1>{\includegraphics[width=\textwidth,height=0.4\textheight,keepaspectratio]{figures/politicial_pictures_bill_gates_list_bugs}}
113 <<bug.growth,fig=TRUE,echo=FALSE,fig.width=6,fig.height=6>>=
114 bug.growth <- read.table("data/sorted_bug_growth_for_r_every_500.txt",stringsAsFactors=FALSE);
115 colnames(bug.growth) <- c("time","bugs")
116 bug.growth <- bug.growth[pmax(bug.growth$bugs) <= as.numeric(bug.growth$bugs),]
118 as.POSIXct(ISOdatetime(1970,1,1,0,0,0)+as.numeric(bug.growth$time))
119 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2005,1,1,0,0,0)),],aes(x=date,y=bugs))+
120 xlab("Time")+ylab("Bugs filed in Debian")+
121 geom_point()+stat_smooth(method="lm")+
122 ggtitle("Bug growth versus time"))
130 <<bugs.filed,fig=TRUE,echo=FALSE,fig.width=6,fig.height=6>>=
131 print(ggplot(bug.growth[bug.growth$date > as.POSIXct(ISOdatetime(2013,1,1,0,0,0)),],aes(x=date,y=bugs))+
132 xlab("Time")+ylab("Bugs filed in Debian")+
133 geom_point()+stat_smooth(method="lm")+
134 ggtitle("Christian Perrier's Plot"))
135 bugs.filed.per.day <-
136 lm(bugs~date,bug.growth)$coeff[2]*3600*24
139 We average roughly \Sexpr{format(bugs.filed.per.day,digits=1)} bugs filed per day.
145 <<bugs.closed,fig=TRUE,echo=FALSE,width=7,height=5>>=
146 bug.closed.series <- read.table("data/bug_closed_time_series.txt")
147 bug.closed.ts <- ts(bug.closed.series,start=1,frequency=7)
148 plot(bug.closed.ts,xlab="Weeks since 2008",ylab="Bugs archived per week",main="Bug closure rate over time")
149 lines(loess.smooth(1:NROW(bug.closed.ts),bug.closed.ts),col="red",lwd=2)
150 bugs.closed.per.day <- mean(bug.closed.ts)
153 We close roughly \Sexpr{format(bugs.closed.per.day,digits=1)} bugs per day.
158 <<rc.bugs,fig=TRUE,echo=FALSE,width=7,height=7>>=
160 read.table(file="data/rc_bugs.txt",
162 rc.bugs <- data.frame(rc.bugs)
163 rc.bugs <- rc.bugs[,c(-5,-7)]
165 as.POSIXct(strptime(rc.bugs$date,
166 format="%Y%m%d%H%M"))
172 times=colnames(rc.bugs)[-1],
173 varying=colnames(rc.bugs)[-1],
175 complicated.figure <-
176 xyplot(bugs~date,groups=type,type='l',main="RC Bugs in the past year",
177 rc.bugs.long[rc.bugs.long$date >
178 strptime("2009-08-01",
179 format="%Y-%m-%d"),],
180 auto.key=list(space="bottom"))
181 print(complicated.figure)
184 \setbeamercolor{postit}{fg=black,bg=yellow}
185 \begin{textblock}{4}(6,4)
187 \begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
188 \centering \huge Too many RC bugs!
195 \subsection{Debbugs Structure and Infrastructure}
197 \begin{frame}{BTS system Diagram}
199 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/bug_global_layout}
203 \begin{frame}{Debbugs Box Diagram}
205 \input{debbugs_layout}
210 \section{New(ish) Features}
211 \begin{frame}{New Changes}
213 \item CVE linkified (eg, \href{http://bugs.debian.org/570743}{\#570743})
215 \item reverse status lookup
216 \item forcemerge does the right thing
220 \begin{frame}{Status Caching}
222 \item Cache status of bugs (presence/absence at all distributions)
223 \item Speed up display of \url{http://bugs.debian.org/src:linux-2.6}
224 \item Allows for reverse status lookup
226 \item Enables finding bugs which are present in testing or unstable
227 \item Eventually replace functionality of \url{bts.turmzimmer.net}
233 \begin{frame}{Affects}
235 \item Bugs in Package A causes problem in package B
236 \item Reduce duplicates filed in package B by showing bug in package
238 \item \url{http://www.debian.org/Bugs/server-control\#affects}
239 \item \texttt{bts affects 12345 foopkg;}
243 \begin{frame}{Affects: Implemented}
244 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/affects}
249 \begin{frame}{Summary}
251 \item Short indication of what the bug was about
252 \item Long discussion, summarized into a single paragraph
253 \item Extract the first non-control, non-psuedoheader, non-quoted
254 paragraph from a nominated message
255 \item \url{http://www.debian.org/Bugs/server-control\#summary}
256 \item \texttt{bts summary 12345 30}
260 \begin{frame}{Summary: Implemented}
261 \includegraphics[width=\textwidth,height=\textheight,keepaspectratio]{figures/summary}
265 \subsection{Local Mirror}
267 \begin{frame}{local-debbugs}
269 \item Ability to run a full local copy of debbugs
270 \item Select bugs interested in based on a configurable query
271 \item By default selects unarchived bugs
273 \item In maintained packages
274 \item Correspondend with
278 \item Currently takes about 2G for me (most of which is indixes)
279 \item Part of experimental debbugs package (in the archive)
283 \begin{frame}{local-debbugs demo}
285 \item Update mirror: \texttt{local-debbugs \--\--mirror}
286 \item Start daemon: \texttt{local-debbugs \--\--daemon}
287 \item See bug \#441151: \texttt{local-debbugs \--\--show 441151}
288 \item See bugs in lilypond: \texttt{local-debbugs \--\--search lilypond}
289 \item See critical bugs: \texttt{local-debbugs \--\--search severity:critical}
293 \begin{frame}{local-debbugs issues}
295 \column{0.5\textwidth}
297 \item Suboptimal missing bug handling
298 \item Size of mirror large
299 \item Could be faster to sync
300 \item Needs better documentation
302 \column{0.5\textwidth}
303 \includegraphics[width=\textwidth,keepaspectratio]{figures/happy_bug}
309 %\subsection{More SOAP}
313 % \section{Tips and Tricks}
314 % % - Tips and Tricks
316 % % - Full text search
317 % \begin{frame}{Full Text Search}
319 % \item Using HyperEstraier
320 % \item \url{http://bugs.debian.org/cgi-bin/search.cgi}
321 % \item Searching for ``lp0 on fire''
322 % \item Searching for memory leaks in iceweasel
326 % % - Using the new options limits
327 % \begin{frame}{CGI Options}
329 % \item Bugs in debbugs which aren't tagged pending or wontfix owned by me
330 % \item Bugs in debbugs tagged help
331 % \item Bugs in debbugs whose title mentions cgi
335 % \begin{frame}{Silly Symbols}
336 % \begin{tabular}{c c c c}
337 % Merged & = & Fixed Versions & \smiley \\
338 % Blocked & ♙ & Blocks & ♔ \\
339 % Forwarded & ↝ & Archived & ♲ \\
340 % Affects & ☣ & wontfix & \frownie \\
341 % patch & + & moreinfo & M \\
342 % unreproducible & R & security & S \\
343 % pending & P & fixed & F \\
344 % help & H & fixed-upstream & U \\
345 % upstream & u & & \\
349 \begin{frame}{Silly Symbols}
351 \begin{tabular}{c c c c}
352 Merged & = & Fixed Versions & \smiley \\
353 Blocked & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocked} & Blocks & \includegraphics[height=0.5cm,keepaspectratio]{figures/blocks} \\
354 Forwarded & ↝ & Archived & \includegraphics[height=0.5cm,keepaspectratio]{figures/archived} \\
355 Affects & \includegraphics[height=0.5cm,keepaspectratio]{figures/affects_icon} & wontfix & \frownie \\
356 patch & + & moreinfo & M \\
357 unreproducible & R & security & S \\
358 pending & P & fixed & F \\
359 help & H & fixed-upstream & U \\
365 \section{Planned features}
367 \begin{frame}{Planned features}
369 \item<alert@2> Control Commands in Submit
370 \item<3-> Mail to nnn@bugs.debian.org goes to submitter
372 \item<6-> b.d.o/libc6 $\rightarrow$ b.d.o/src:eglibc
374 \item<6-> in future, make binary-only views more difficult to get (?)
378 \definecolor{peach}{rgb}{1,0.9,0.7}
379 \setbeamercolor{controlcmd}{fg=black,bg=peach}
380 \begin{textblock}{6}(7,7)
382 \begin{beamercolorbox}[sep=1em,wd=5.5cm]{controlcmd}
384 To: submit@bugs.debian.org\\
385 From: foo@example.com\\
388 Control: user foo@debian.org\\
389 Control: usertag 0 bleargh\\
390 Control: clone 0 -1\\
391 Control: reassign -1 blah\\
396 \begin{beamercolorbox}[sep=1em,wd=5.5cm]{controlcmd}
398 To: control@bugs.debian.org\\
399 From: foo@example.com\\
401 user foo@debian.org\\
402 uservalue 12345 priority 30\\
403 uservalue 12345 vcs-commit \textbackslash \\
404 \ http://q.fr/b/r1432 \\
405 uservalue 12345 difficulty 10\\
412 \begin{frame}{More planned features}
414 \column{0.5\textwidth}
416 \item Merging of merged bug reports
417 \item Threading in report
418 \item Usercategory duplication and replay
419 \item Remote Attachments
420 \item New Spool Storage Format
421 \item Backend index using postgresql
422 \item Usertags visibility
423 \item Smarter CGI options
425 \column{0.5\textwidth}
426 \includegraphics[width=\textwidth,keepaspectratio]{figures/oh_hai_bug}
430 \begin{frame}{Statistics}
432 % \column{0.5\textwidth}
433 % \column{0.5\textwidth}
435 \item Track status changes over time
436 \item Bugs found/fixed/absent in stable/testing/unstable over time
437 \item Bug submission times
438 \item Bug closure times
440 \item Per package, severity, maintainer tracking of the above
443 \includegraphics[width=\textwidth,height=0.35\textheight,keepaspectratio]{figures/surprised_bugs_life}
449 \begin{frame}{Action Required Sorting}
451 \begin{tabular}{c | c | c}
452 & Care about & Don't care \\
454 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Triage}\end{sideways}} & No response & Active responses \\
455 & Ancient found versions & found in multiple versions \\
456 & Incomplete report & Complete report \\
458 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Maint.}\end{sideways}} & has a patch & pending/fixed \\
459 & moreinfo+response & just moreinfo \\
460 & high priority & wontfix \\
462 \multirow{3}{*}{\begin{sideways}\parbox{12mm}{Submit.}\end{sideways}} &
463 moreinfo & moreinfo+response \\
464 & mail from maintainer & no response \\
465 & bug is fixed & bug isn't fixed \\
469 \item Sorting by a combination of priority and action required
470 \item Minimize time wasted finding a bug
471 \item Maximize productivity
476 \subsection{Upstream and Downstream Integration}
480 \item Sharing state between upstream, downstream and sidestream
481 \item Sharing comments between the same
482 \item Distributed bug tracking
483 \item Distributed version/commit tracking
488 \section{Places you can help}
490 \begin{frame}{\sout{5} \sout{6} 7 tasks seeking contributors}
492 \item Documentation of Usercategories
493 \item Implementation of rss feeds for packages and bugs
494 \item CGI options on pkgreport.cgi for usertags et al. \#536378)
495 \item Documentation of multipe-package reassign and when it or
496 affects should be used
497 \item Mailto link with subject, references, etc. all filled in
498 \item Documentation for local-debbugs configuration file (behaves
503 \begin{frame}{Getting started on these tasks}
505 \item Upstream branches: \url{http://bugs.debian.org/debbugs-source/}
507 \item mainline (upstream debbugs): bzr clone \url{http://bugs.debian.org/debbugs-source/mainline}
508 \item debian (debian branch): bzr clone \url{http://bugs.debian.org/debbugs-source/debian}
511 \item My branches: \url{http://bzr.donarmstrong.com/debbugs/branches}
512 \item Mailing list debian-debbugs@lists.debian.org
513 \item IRC \#debbugs or \#debian-bugs on irc.debian.org; I'm dondelelcaro
517 \begin{frame}{Setting up a BTS mirror for development}
519 \item \url{http://svn.donarmstrong.com/don/trunk/projects/debbugs/local_mirror.sh}
521 \item Set SPOOL and VERSIONS appropriately
522 \item mkdir -p /path/to/spool/{db-h,archive} /path/to/versions;
523 \item touch /path/to/spool/by-reverse.idx
525 \item \url{http://svn.donarmstrong.com/don/trunk/projects/debbugs/setup_config.sh}
527 \item<2> Will exist suddenly (not there now)
535 % - Using the new options limits
537 % - Getting users to triage their bugs
540 % * Overview of how the BTS works
546 % o action-required sorting (maintainer and submitter views)
547 % + priority sorting (uservalue)
548 % o merging of merged bug reports and threaded view
549 % o control in messages to submit@ and nnn@
550 % o usertag/uservalue/usercategory duplication/replay
551 % o rss feeds for packages and bugs
552 % o remote attachments
553 % o new spool storage format
554 % o better statistics
555 % * Old features that may be unfamiliar
556 % o fun with bts select
557 % o full text searching with HE
559 % * A bald plea for more assistance
565 % Upcoming improvements:
567 % * control@ commands in submit
569 % * reverse status lookup
571 % * b.d.o/libc6 -> b.d.o/src:eglibc
576 % * web-based mail submission
577 % ** needed due to blocking of port 25
580 % ** cannot be synchronous
581 % ** but may run queue on demand
583 % * per-arch buildd tags (or pseudopackages)
585 % * search by uploader
588 % Other technical suggestions:
590 % * notification to blockees when blocking bugs are killed off
591 % * documentation consistency? (e.g. reassign; could use clarification)
592 % ** response: needs love; currently in WML
594 % Social Improvements:
596 % * Better statistics
598 % *** What packagers need help
599 % *** Which bug triagers should be recognized. Currently these people
600 % receive no recognition; would like to encourage them to continue
603 % Discussion - whether mass-filed bugs should be included?
605 % * Common triager mistake: emailing the bug number instead of the submitter.
606 % Don: Plan to address this via the reply list.
608 % Please configure mailing list subscriptions not to bounce/spam the owner.
610 % Q: Limit on size of attachments to BTS? ~200MB
612 % Idea: RFC exists that supports remote/offline attachments.
614 % How to perform debbugs development?
615 % * see debbugs-local package
616 % * can rsync the entire bugs database to local box
617 % * apache configuration simple, mail setup somewhat more involved
618 % * help: debbugs@l.d.o, #debbugs
620 % ** see armstrong branches for work in progress
622 % How do you use the BTS?
625 % * 200-300 open bugs: difficult to keep track of bugs already seen
626 % * idea: improve documentation regarding user-tags/categorization features
627 % * idea: display of possible set of user-tags via JavaScript - "make user-tags pretty"
628 % * idea: user authention to allow management of tags
630 % * switch index from flat-files to Postgres; borrow from UDD
632 % Q: Complaints regarding email addresses on webpage. Should we obfuscate these?
633 % ** Is there any hard data on which types of obfuscation work?
634 % ** Can we blackhole robots? Use a honeypot? Issue is that bugs are
635 % archives to the ML. Discussion around configuration on Ian Jackson's
638 % Q: List of needs for new debbugs contributors?
639 % * See how to help on the wiki.
641 % Q: Can you get a list of user-tags for an email address w/out the bug reports?
642 % * Should be pretty easy. May be a patch for comand-line 'bts' tool in devscripts.
646 % Slides: http://svn/donarmstrong.com/don/trunk/projects/debian/debconf10/bugs_the_bof/
647 % Contact Don with questions.
650 % For spam questions, reach out to Blars Blarson
652 \begin{frame}{The Debbugs Team}
660 \item Emeritus Developers
662 \item Steiner Gunderson