rabbit-slide-kenhys-debconf2020-online 2020.08.25.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7c4a6656a968b56fb12bbac07cdf2ac7cd7bde498bebfd7fd2ed490ae1f2e18e
4
+ data.tar.gz: cf839104319c975ed6420c4150ce5a97690ab5ae9cdfd2a180a2870d14d82438
5
+ SHA512:
6
+ metadata.gz: 63418802b608c1429ebbdb1995a9580b9cd44b10df3920720164ff35bb6c9046d346db7133b38f2073449bd89db8006748468012b02f329f98dde6ea1b8115a2
7
+ data.tar.gz: 5760305af4357bd4a1b62769264a1f68147f29331f32913f9a2cd8ed56fc3691ff98ab97ea54c00f3770a19bbb0fbecb2692721f14def421175de48d32f2af08
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ debconf2020-online.md
@@ -0,0 +1,14 @@
1
+ # DebConf20
2
+
3
+ ## How to show
4
+
5
+ % rabbit
6
+
7
+ ## How to install
8
+
9
+ % gem install rabbit-slide-kenhys-debconf2020-online
10
+
11
+ ## How to create PDF
12
+
13
+ % rake pdf
14
+
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/cfp.md ADDED
@@ -0,0 +1,22 @@
1
+ Experiment about Debian's bug tracking front-end
2
+
3
+ ### Experiment about Debian's bug tracking front-end
4
+
5
+ Debian has a bug tracking system and bugs.debian.org is a key infrastructure for Debian project.
6
+ It tracks many reports and the bug number is assigned to each reports.
7
+ You can view such a report via https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=NNNNNN.
8
+
9
+ This bug tracking mechanism is working well for a long time.
10
+ It is very cool but it may be not friendly for newcomers.
11
+
12
+ #### Target audience
13
+
14
+ * Debian contributor or maintainer who want to fix bugs not only the bugs which
15
+ is related to maintained packages by you
16
+
17
+ It may not interesting for Debian developer because DD is already familiar with bugs.debian.org.
18
+
19
+ #### What will talk about
20
+
21
+ In this session, I’ll talk about one experiment about Debian's bug tracking mechanism.
22
+ It is constructed on traditional E-mail archives and simple front-end for it.
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: debconf2020-online
3
+ base_name: debconf2020-online
4
+ tags: []
5
+ presentation_date:
6
+ presentation_start_time:
7
+ presentation_end_time:
8
+ slideshare_id:
9
+ version: 2020.08.25.1
10
+ licenses:
11
+ - CC-BY-SA-4.0
12
+ slideshare_id: kenhys
13
+ speaker_deck_id:
14
+ vimeo_id:
15
+ youtube_id:
16
+ author:
17
+ markup_language: :rd
18
+ name: Kentaro Hayashi
19
+ email: kenhys@gmail.com
20
+ rubygems_user: kenhys
21
+ slideshare_user: kenhys
22
+ speaker_deck_user:
@@ -0,0 +1,383 @@
1
+ # An experiment about personalized front-end of bugs.debian.org
2
+
3
+ subtitle
4
+ : E-mail archives + UDD + Simple web front-end = 🤔
5
+
6
+ author
7
+ : Kentaro Hayashi
8
+
9
+ institution
10
+ : ClearCode Inc.
11
+
12
+ content-source
13
+ : DebConf20 online August 25, 2020
14
+
15
+ allotted-time
16
+ : 15m
17
+
18
+ theme
19
+ : .
20
+
21
+ # NOTE: Presentation slide is published
22
+
23
+ * This presentation slide is available via Rabbit Slide Show
24
+ * <https://slide.rabbit-shocker.org/authors/kenhys/debconf20-online/>
25
+ "An experiment about personalized front-end of bugs.debian.org"
26
+
27
+ # Personal profile
28
+
29
+ ![](images/profile.png){:relative-height="40"}
30
+
31
+ * Debian Maintainer (@kenhys)
32
+ * Trackpoint(soft dome) and Wasa beef(Yamayoshi Wasabi Potato Chips) fan
33
+ * Working for ClearCode Inc.
34
+
35
+ # ClearCode Inc.
36
+
37
+ ![](images/logo-combination-standard.svg){:relative-height="30"}
38
+
39
+ * <https://www.clear-code.com/>
40
+ * Free software is important in ClearCode Inc.
41
+ * We develop/support software with our free software development experiences
42
+ * We feedback our business experiences to free software
43
+
44
+ # Not talk about
45
+
46
+ * Improving bugs.debian.org (debbugs) itself
47
+ * Explaining bugs.debian.org (debbugs) internal in details
48
+
49
+ # Agenda
50
+
51
+ * Why so curious about bugs.d.o?
52
+ * The troublesome cases about bugs.d.o
53
+ * What is Fabre and why is it needed?
54
+ * Demonstrate a front-end
55
+ * Conclusion
56
+
57
+ # We use bugs.d.o
58
+
59
+ ![](images/bugs-d-o.png){:relative-height="100"}
60
+
61
+ # Usage of bugs.debian.org - prerequisite
62
+
63
+ * Communicate each other by E-mail
64
+ * Change the bug status by sending E-mail
65
+ * Send E-mail to control@bugs.d.o
66
+ * Use control command in E-mail reply
67
+
68
+ # Why so curious about bugs.d.o?
69
+
70
+ * I've received deprecated notification bugs
71
+ * Bug# 956770 growl-for-linux: Depends on deprecated libappindicator
72
+ * Bug# 955899 growl-for-linux: Depends on deprecated dbus-glib
73
+
74
+ # How did you fixed?
75
+
76
+ * Bug# 956770 growl-for-linux: Depends on deprecated libappindicator
77
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=956770>
78
+ * Migrated to libayatana-indicator
79
+ * It is easy because there are enough compatibility
80
+ * I've fixed pkg-config target and include path
81
+
82
+ # How did you fixed? (again)
83
+
84
+ * Bug# 955899 growl-for-linux: Depends on deprecated dbus-glib
85
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=955899>
86
+ * Migrated to GDBus
87
+ * Use d-feet to detect interface change (Rhythmbox plugin)
88
+ * Fixed a interface to follow GDBus API
89
+ * Send PR to upstream <https://github.com/mattn/growl-for-linux/>
90
+ * Fixed a potential Rhythmbox related bug, too
91
+
92
+ # growl-for-linux was fixed
93
+
94
+ * But...What about other packages? 🤔
95
+
96
+ # What about other packages?
97
+
98
+ * libappindicator: deprecated in Debian; AppIndicator based applications, please switch to Ayatana (App)Indicator(s)
99
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037>
100
+ * libdbus-glib-1-dev: is deprecated
101
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895291>
102
+
103
+ # libappindicator: deprecated in Debian
104
+
105
+ ![](images/libappindicator-blocked-by.png){:relative-height="80"}
106
+
107
+ * Many blocked bugs
108
+
109
+ # libdbus-glib-1-dev: is deprecated in Debian
110
+
111
+ ![](images/libdbus-glib-blocked-by.png){:relative-height="80"}
112
+
113
+ * *Too many* blocked bugs (Need to scroll!) 😵
114
+
115
+ # How to track many blocked?
116
+
117
+ * In this case, UserTags is recommended
118
+ * <https://wiki.debian.org/bugs.debian.org/usertags>
119
+ * <https://udd.debian.org/cgi-bin/bts-usertags.cgi>
120
+
121
+ # Does it work with libappindicator?
122
+
123
+ ![](images/user-tag-ayatana-appindicator.png){:relative-height="80"}
124
+
125
+ * UserTag is: *ayatana-appindicator*
126
+
127
+ # Does it work with libdbus-glib1-dev?
128
+
129
+ * It is a case that UserTag is *not available*
130
+ * It should be tagged...
131
+
132
+ # The troublesome cases about bugs.d.o
133
+
134
+ * UserTag is not always used
135
+ * It may be difficult to see many blocked bugs
136
+ * *How to solve this situation?*
137
+
138
+ # Use udd.debian.org!
139
+
140
+ ![](images/udd-blocking-and-usertag.png){:relative-width="80"}
141
+
142
+ * UDD can track usertags
143
+ * UDD can track blocking bugs
144
+
145
+ # In my experience through contribution, I need
146
+
147
+ * I need easy to:
148
+
149
+ * Track a specified bug (tagged/not tagged)
150
+ * Find a bug that no one working on
151
+ * Send control E-mail
152
+ * Find affected bugs
153
+
154
+ # In my experience through contribution (again)
155
+
156
+ * I need easy to:
157
+ * ~~Track a specified bug (tagged/not tagged)~~ *Use UDD!*
158
+ * Find a bug that no one working on 🤔
159
+ * Send control E-mail 🤔
160
+ * Find affected bugs 🤔
161
+
162
+ # How to solve rest issues?
163
+
164
+ * Find a bug that no one working on 🤔
165
+ * It's a good attitude to fix a bug
166
+ * Send control E-mail easily 🤔
167
+ * It's a good attitude to triage a bug
168
+ * Find affected bugs 🤔
169
+ * Remember misery bugs #932855, #965164
170
+
171
+ # Supplementary explanation: Find affected bugs 🤔
172
+
173
+ * Sometimes grave/critical bug was found
174
+ * 2019, critical, e2fsprogs 1.45.3-1 breaks initramfs-tools-core <=0.133
175
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932855>
176
+ * 2020, grave, policykit-1: fails to install
177
+ * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=965164>
178
+
179
+ # What about existing solution?
180
+
181
+ <https://wiki.debian.org/Services>
182
+
183
+ * Developer Horizon - A dashboard for developers
184
+ * <http://horizon.debian.net/> *Not available*
185
+
186
+ # What about existing solution?
187
+
188
+ * Fabre - fulltext search service
189
+ * <http://fabre.debian.net> Around 2005, *Discontinued*
190
+ * Undocumented Debian "debbugs internal" {::note}written in Japanese{:/note}
191
+ * <https://tokyodebian-team.pages.debian.net/pdf2005/debianmeetingresume2005-fuyu.pdf>
192
+
193
+ # What about existing solution?
194
+
195
+ * Debbugs Enhancement Suite
196
+ * <https://salsa.debian.org/lamby/debbugs-enhancement-suite>
197
+ * A Chrome extension to enhance using Debbugs
198
+ * Tidy up each bug rendering, it's cool (Thanks @lolamby FYI:)
199
+ * *...But It is not what I want*
200
+
201
+ # What about existing solution?
202
+
203
+ * Debian Popularity Contest
204
+ * <http://popcon.debian.org/>
205
+ * It provides a method to collect installed packages information
206
+
207
+ * Public UDD Mirror
208
+ * <https://udd-mirror.debian.net/>
209
+ * It provides a statistical information about packages
210
+
211
+ # Starting personal project
212
+
213
+ * Concept
214
+ * *Make "unstable life" comfortable*
215
+ * Fix a bug (by finding a bug that no one working on)
216
+ * Triage a bug (by sending control E-mail easily)
217
+ * Avoid affected bugs (by finding affected important bugs)
218
+
219
+ # Starting personal project (again)
220
+
221
+ * Concept
222
+ * Make "unstable life" comfortable
223
+ * Fix a bug (by finding a bug that no one working on) *Count comment in bug#NNNNNN*
224
+ * Triage a bug (by sending control E-mail easily) *Add mailto: link explicitly*
225
+ * Avoid affected bugs (by finding affected important bugs) *Alert recent grave bugs*
226
+
227
+ # How to realize concept?
228
+
229
+ * Collect bug information regularly (E-mail archives)
230
+ * Collect Popcon data (Fix a bug with your familiar packages)
231
+ * Collect your installed packages information (popularity-contest)
232
+ * Process collected data and make it accessible!
233
+
234
+ # Collect bug information
235
+
236
+ * Get E-mail archive with rsync
237
+ * <https://salsa.debian.org/debbugs-team/debbugs>
238
+ * rsync -av rsync://bugs-mirror.debian.org/bts-spool-db/
239
+ {::note}It requires 15GiB!{:/note}
240
+ * Use *.log and *.summary
241
+
242
+ # Extract .log and .summary
243
+
244
+ * Use perl module which is used for bugs.d.o (Debbugs)
245
+ * Debbugs::Log, Debbugs::Status, Debbugs::MIME and so on
246
+ * *.log contains multiple raw E-mail content with control sequence
247
+ * *.summary contains metadata of each bug
248
+
249
+ # How to parse .log
250
+
251
+ my $log = Debbugs::Log->new(log_name => $path);
252
+ my @records = $log->read_all_records();
253
+ for my $record (@records) {
254
+ ...
255
+ my $entity = Debbugs::MIME::parse_to_mime_entity($record);
256
+ print "From: " . $entity->head->get("From");
257
+ print "To: " . $entity->head->get("To");
258
+ print "Subject: " . get_field($entity, "Subject");
259
+ print "Date: " . $entity->head->get("Date");
260
+ }
261
+ {: lang="perl"}
262
+
263
+ # How to parse .summary
264
+
265
+ Format-Version: 3
266
+ Submitter: Nis Martensen <nis.martensen@web.de>
267
+ Subject: libexo-helpers: starting thunderbird fails for some mailto URIs
268
+ Found-In: exo/0.12.4-1
269
+ Tags: patch
270
+ Package: libexo-helpers
271
+ Message-Id: <159439678897.3833.10774950364480956704.reportbug@siamos.nes.net>
272
+ Severity: normal
273
+ Date: 1594396982
274
+
275
+ my $summary = Debbugs::Status::read_bug(summary => $path);
276
+ print $summary->{"tags"}
277
+ {: lang="perl"}
278
+
279
+ # Collect Popcon data and so on
280
+
281
+ * UDD: UltimateDebianDatabase
282
+ * <https://wiki.debian.org/UltimateDebianDatabase>
283
+ * You can access with:
284
+ psql --host=udd-mirror.debian.net --user=udd-mirror udd --password
285
+ * Schema is available: <https://udd.debian.org/schema/udd.html>
286
+ * Import popcon and package data
287
+
288
+ # Collect installed packages information
289
+
290
+ POPULARITY-CONTEST-0 TIME:1596711793 ID:XXX ARCH:amd64 POPCONVER:1.70 VENDOR:Debian
291
+ 1596672000 1570622400 libgail-common /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libgail.so
292
+ 1596672000 1596585600 libavcodec58 /usr/lib/x86_64-linux-gnu/libavcodec.so.58.91.100 <RECENT-CTIME>
293
+ 1596672000 1586736000 libgoa-1.0-0b /usr/lib/x86_64-linux-gnu/libgoa-1.0.so.0.0.0
294
+ ...
295
+ 1596672000 1586217600 libzvbi0 /usr/lib/x86_64-linux-gnu/libzvbi.so.0.13.2
296
+ 1596672000 1590624000 udisks2 /usr/share/locale/ja/LC_MESSAGES/udisks2.mo
297
+ END-POPULARITY-CONTEST-0 TIME:1596711817
298
+
299
+ * Just upload popcon file
300
+ * /usr/sbin/popularity-contest --su-nobody
301
+
302
+ # Process collected data and make it accessible!
303
+
304
+ * Polling subscribed debian-bugs-dist@lists.debian.org
305
+ * Importing latest E-mail archives from bugs-mirror.debian.org
306
+ * Merging metadata + Web front-end
307
+
308
+ # Prepared server specs for experiment
309
+
310
+ * Start with small VPS instance (about 3.26 USD/mo)
311
+ * 1vCPU
312
+ * 1GiB memory
313
+ * 20GiB disk space
314
+ * Max 100Mbps bandwidth
315
+
316
+ # System diagrams
317
+
318
+ ![](images/fabre-internals.png){:relative-height="100"}
319
+
320
+ # Named my project as Fabre
321
+
322
+ ![](images/345px-Jean-henri_fabre.jpg){:relative-height="80"}
323
+
324
+ cite: <https://en.wikipedia.org/wiki/Jean-Henri_Fabre>
325
+
326
+ # Why Fabre?
327
+
328
+ * Fabre is "The father of modern entomology" - the study of insects(bugs)
329
+ * Just reuse previous (maybe) similar project (fabre.debian.net)
330
+
331
+ # Concept of Fabre (again)
332
+
333
+ * *Make "unstable life" comfortable*
334
+ * Fix a bug (by finding a bug that no one working on)
335
+ * Triage a bug (by sending control E-mail easily)
336
+ * Avoid affected bugs (by checking installed packages)
337
+
338
+ # Finding a bug that no one working on
339
+
340
+ ![](images/easy-to-find-no-one-working.png){:relative-height="80"}
341
+
342
+ * Show each number of comments (orange background color means no one working on yet)
343
+
344
+ # Sending control E-mail easily
345
+
346
+
347
+ ![](images/easy-to-send-control-email.png)
348
+
349
+ * Show each mailto: button to control bugs
350
+
351
+ # Easy to view blocked bugs
352
+
353
+ ![](images/easy-to-view-blocking.png){:relative-height="80"}
354
+
355
+ * List blocked bugs appropriately
356
+
357
+ # Finding affected important bugs
358
+
359
+ ![](images/fabre-dashboards.png){:relative-height="100"}
360
+
361
+ # How Fabre is good enough to work?
362
+
363
+ * Now ready to DEMO
364
+
365
+ # More things about Fabre
366
+
367
+ * Tracked bugs: about 89,000 (UDD: 90,780)
368
+ * {::note}Archived bugs: 720,000 (UDD: 85,0331){:/note}
369
+ * Import bugs: every 1 hour
370
+ * Update affected bugs: every 1 day
371
+ * Disk usage (Database): about 1.5 GiB
372
+
373
+ # Conclusion
374
+
375
+ * There are plenty room of improvements to develop
376
+ * In my experiment, mashup some data sources may improve UX
377
+ * bug report (E-mail archives)
378
+ * UDD metadata (Popcon and package metadata)
379
+ * installed packages list (popularity-contest)
380
+
381
+ # Any questions?
382
+
383
+ Could you speak slowly if you have a question, please?