presentation-memo.md in rabbit-slide-kenhys-debconf2020-online-2020.08.25.1 vs presentation-memo.md in rabbit-slide-kenhys-debconf2020-online-2020.08.25.2

- old
+ new

@@ -1,390 +1,322 @@ # Presentation memo +Hi, thank you for coming to this session. + +I'll start the presentation "An experiment about personalized +front-end of bugs.debian.org. + ## NOTE -This slide is published at Rabbit Slide Show +This slide was already published at Rabbit Slide Show +So, you can also download this presentation. + +## Personal profile + +Let me just start by introducing myself. + +I'm one of the Debian maintainers. and a fan of a Trackpoint and Wasa +beef. I'm also working for ClearCode. + ## ClearCode Inc. -* My collegue gave me a feedback for this talk +Usually, I'm developing and supporting software as an engineer. +There is a culture to respect free software, my colleague gave me a +feedback for this talk. + ## Not talk about -In this session, I won't talk about bugs.debian.org internal in details. +In this session, this presentation is related to bugs.debian.org, but +I will not talk about improving bugs.debian.org itself and internal +details. # Agenda -* Why so curious about bugs.d.o? -* The troublesome case about bugs.d.o -* What is Fabre and why is it needed? -* Demonstrate a front-end -* Conclusion +Here is the session agenda. -# As a Maintainer +First, I'll explain why so curious about bugs.d.o +and show you the troublesome case. -* Maintain some packages - * <https://qa.debian.org/developer.php?login=kenhys> - * groonga (Upstream releases monthly updates) - * fcitx-imlist - * libhinawa - * ... +Next, I'll explain how to solve this situation and demonstrate an +actual front-end. # We use bugs.d.o -![](images/bugs-d-o.png){:relative-height="100"} +Here is the screenshot of bugs.d.o. +I guess you are familiar with it. + # bugs.debian.org -* Communicate each other by E-mail -* Change the bug status by sending E-mail - * Sending E-mail to control@bugs.d.o - * Use control command in E-mail reply +In bugs.d.o, we need to follow the rules. +1. Communicate each other by E-mail +2. Change the bug status by sending E-mail + # Why so curious about bugs.d.o? -* I've received deprecated notification bugs - * Bug# 956770 growl-for-linux: Depends on deprecated libappindicator - * Bug# 955899 growl-for-linux: Depends on deprecated dbus-glib +One day, I've received deprecated notification about growl-for-linux +package. +growl-for-linux is a notification software. + +One is related to libappindicator and the other is related to +dbus-glib. + # How did you fixed? -* Bug# 956770 growl-for-linux: Depends on deprecated libappindicator - * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=956770> - * Migrated to libayatana-indicator - * It is easy because there are enough compatibility - * Fixed pkg-config target and include path +About libappindicator, just migrated to libayatana-indicator. # How did you fixed? (again) -* Bug# 955899 growl-for-linux: Depends on deprecated dbus-glib - * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=955899> - * Migrated to GDBus - * Use d-feet to detect interface change (Rhythmbox plugin) - * Fixed a interface to follow GDBus API - * Send PR to upstream - * Fixed a potential Rhythmbox related bug, too +About, dbus-glib, I need to fix changed interfaces and migrated into +GDBus. # growl-for-linux was fixed -* But...What about other packages? 🤔 +Two bugs about growl-for-linux package was fixed, but I thought what +about other packages? # What about other packages? -* libappindicator: deprecated in Debian; AppIndicator based applications, please switch to Ayatana (App)Indicator(s) - * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895037> -* libdbus-glib-1-dev: is deprecated - * <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895291> +libappindicator and dbus-glib was tracked like this. # libappindicator: deprecated in Debian; -![](images/libappindicator-blocked-by.png){:relative-height="80"} +Against libappindicator, there are many bugs. -* Many blocked bugs - # libdbus-glib-1-dev: is deprecated -![](images/libdbus-glib-blocked-by.png){:relative-height="80"} +Against dbus-glib, there are too many blocked bugs. -* *Too many* blocked bugs (Need to scroll) - -# Can you track blocked bugs? - -![](images/libdbus-glib-blocked-by.png){:relative-height="80"} - -* Feel dizzy 😵 - # How to track many blocked? -* Use UserTags? - * <https://wiki.debian.org/bugs.debian.org/usertags> - * <https://udd.debian.org/cgi-bin/bts-usertags.cgi> +In these case, we can use UserTags to track bugs. # Does it work with libappindicator? -![](images/user-tag-ayatana-appindicator.png){:relative-height="80"} +For libappindicator, ayatana-appindicator is used as UserTag -* UserTag is: *ayatana-appindicator* - # Does it work with libdbus-glib1-dev? -* It is a case that UserTag is *not available* -* It should be tagged... +It should be tagged... but, UserTag is not available for dbus-glib. # The troublesome case about bugs.d.o -* UserTag is not always used -* Many blocked bugs may be difficult to see -* *How to solve this situation?* +Like this, there is a case that UserTag is not always used. How to +solve this situation? # Use udd.debian.org! -![](images/udd-blocking-and-usertag.png){:relative-width="80"} +The answer is using udd. +UDD can track usertags and blocking bugs. - * Can track usertags - * Can track blocking bugs - # In my experience, I need -* Easy to: +So far, I've fixed or sent feedback to some bugs, I became to feel the +following ones are needed. - * Track a specified bug (tagged/not tagged) - * Find a bug that no one working on - * Send control/submitter E-mail - * Find affected bugs +Tracking a specified bug +Finding a bug that no one working on +Sending control E-mail in required form +Finding affected bugs # What I need for? -* Easy to: +First topic is solved by using UDD. - * ~~Track a specified bug (tagged/not tagged)~~ *Use UDD!* - * Find a bug that no one working on 🤔 - * Send control/submitter E-mail 🤔 - * Find affected bugs 🤔 +But how about the rest issues? -# Starting personal project +# How to solve rest issues? -* Concept - * Make unstable life comfortable - * Find a bug that no one working on - * Easy to send control E-mail - * Easy to find blocking bugs - * Easy to find affected bugs +Surely, It is a good manner to fix a bug, but it is not easy. +It is also good to triage a bug, but it may be troublesome. -# Starting personal project +To know affected bugs are also important, but it is not so easy until +it hits you. -* Concept - * Make unstable life comfortable - * Find a bug that no one working on - *Count comment in bug#NNNNNN* - * Easy to send control E-mail - *Add mailto: link explicitly* - * Easy to find blocking bugs - *List blocking bugs* - * Easy to find affected bugs - *Alert affected bugs* +# Find affected bugs -# What should I do? +In the past, there are some grave/critical bugs It had affected boot +sequence / logged in user session. I want to avoid these bugs. -* Name the project 😀 -* Integrate with salsa.d.o account (optional) -* Sync bug information -* Import additional metadata -* Make it accessible! +# What about existing solution? -# What should I do? +I've searched existing useful services via Debian wiki. -* *Name the project 😀* - {::note}Naming is important!{:/note} -* Integrate with salsa.d.o account (optional) -* Sync bug information -* Import additional metadata -* Make it accessible! +Developer Horizon seems well, but not available. Fabre also seems +well, but discontinued already. -# Named as Fabre +I've also heard Debbugs Enhancement Suite. But it is a bit different +what I want. - ![](images/345px-Jean-henri_fabre.jpg){:relative-height="80"} +# What about existing solution? -cite: <https://en.wikipedia.org/wiki/Jean-Henri_Fabre> +As a result, Debian Popularity Content and Public UDD Mirror seems +useful. -# Why Fabre? +# Starting personal project -* Reuse previous (maybe) similar project - * <http://fabre.debian.net> - * Around 2005, fulltext search service had been hosted - * Undocumented Debian "debbugs internal" {::note}written in Japanese{:/note} - * <https://tokyodebian-team.pages.debian.net/pdf2005/debianmeetingresume2005-fuyu.pdf> +So I've started a personal project. -# What should I do? +The concept of this project is: "Make unstable life comfortable" It +seems that it is ridiculous, but important for me. -* Name the project 😀 - {::note}Naming is important!{:/note} -* *Integrate with salsa.d.o account (optional)* -* Sync bug information -* Import additional metadata -* Make it accessible! +# Starting personal project -# Integrate with salsa.d.o account (optional) +To achieve this concept, I need to do some tasks. -* Use GitLab(salsa.d.o) as an OAuth2 provider - * <https://docs.gitlab.com/ee/api/oauth2.html> -* No need to store sensitive password +counting comment for each bugs, +and adding separate mailto: link, +checking installed packages to alert affected bugs. -# What should I do? +# How to realize concept -* Name the project 😀 - {::note}Naming is important!{:/note} -* Integrate with salsa.d.o account (optional) -* *Sync bug information* -* Import additional metadata -* Make it accessible! +Furthermore, collecting E-mail archives, popcon data, installed +packages list and so on are also required. -# Sync bug information +# Collect bug information -* Get E-mail archive with rsync - * <https://salsa.debian.org/debbugs-team/debbugs> - * rsync -av rsync://bugs-mirror.debian.org/bts-spool-db/ - {::note}It requires 15GiB!{:/note} -* Use *.log and *.summary +To collect E-mail archives, we can use bugs-mirror with rsync. E-mail +archive contains *.log and *.summary. # Extract .log and .summary -* Use perl module which is used for bugs.d.o (Debbugs) - * Debbugs::Log, Debbugs::Status, Debbugs::MIME and so on - * *.log contains multiple raw E-mail content with control sequence - * *.summary contains metadata of each bug +There are many Perl modules to handle bugs.d.o related pieces of +stuff. # How to parse .log - my $log = Debbugs::Log->new(log_name => $path); - my @records = $log->read_all_records(); - for my $record (@records) { - ... - my $entity = Debbugs::MIME::parse_to_mime_entity($record); - print "From: " . $entity->head->get("From"); - print "To: " . $entity->head->get("To"); - print "Subject: " . get_field($entity, "Subject"); - print "Date: " . $entity->head->get("Date"); - } -{: lang="perl"} +For example, Log and MIME module is used to parse .log file. # How to parse .summary - Format-Version: 3 - Submitter: Nis Martensen <nis.martensen@web.de> - Subject: libexo-helpers: starting thunderbird fails for some mailto URIs - Found-In: exo/0.12.4-1 - Tags: patch - Package: libexo-helpers - Message-Id: <159439678897.3833.10774950364480956704.reportbug@siamos.nes.net> - Severity: normal - Date: 1594396982 +Status module is used to parse .summary file. +You can access these bugs's metadata. - my $summary = Debbugs::Status::read_bug(summary => $path); - print $summary->{"tags"} -{: lang="perl"} +# Collect Popcon data and so on -# What should I do? +As UDD provides public database access, -* Name the project 😀 - {::note}Naming is important!{:/note} -* Integrate with salsa.d.o account (optional) -* Sync bug information -* *Import additional metadata* -* Make it accessible! +So we can get popcon stats and investigate which bug affects unstable +or not. -# Import additional metadata +# Collect installed packages information -* UDD: UltimateDebianDatabase - * <https://wiki.debian.org/UltimateDebianDatabase> - * You can access with: - psql --host=udd-mirror.debian.net --user=udd-mirror udd --password - * Schema is available: <https://udd.debian.org/schema/udd.html> - * Import popcon and package data +As popularity-content command can collect installed binary packages +information. It is useful to check recently used packages. -# What should I do? +# Process collected data and make it accessible! -* Name the project 😀 - {::note}Naming is important!{:/note} -* Integrate with salsa.d.o account (optional) -* Sync bug information -* Import additional metadata from UDD -* *Make it accessible!* +After collecting these information, updating bug information is +required regularly. +I've used debian-bugs-dist mailing list as a trigger to +update and imported it into database. + # Prepared server specs for experiment -* Start with small VPS instance (about 3.26 USD/mo) - * 1vCPU - * 1GiB memory - * 20GiB disk space - * Max 100Mbps bandwidth +For my experiment, I've prepared small VPS instance. -# Fabre internals +# System diagrams -![](images/fabre-internals.png){:relative-height="100"} +Here is a simple diagram for explaining the system. -# What is the trigger of syncing +Web server is nginx, Application server is puma, and backend database is Groonga. -* Subscribe debian-bugs-dist@lists.debian.org -* Poll subscribed E-mail account -* Fetch latest E-mail archives on bugs-mirror.debian.org -* Convert & import E-mail archive data +It access external services, +E-mail server, UDD for metadata, Salsa for authentication. -# Concept of Fabre +# Named my project as Fabre -* Easy to find a bug that no one working on - * Count comment in bug#NNNNNN -* Easy to send control E-mail - * Add mailto: link explicitly -* Easy to view blocking bugs - * List blocking appropriately +As diagram indicates, +I've named this personal system as Fabre. -# Easy to find a bug that no one working on +# Why Fabre? -![](images/easy-to-find-no-one-working.png){:relative-height="80"} +Fabre is famous by the study of insects. +I've borrowed from discontinued similar project in decades ago -* Show each number of comments (yellow background color means no one working on yet) +# Concept of Fabre (again) -# Easy to send control E-mail +The concept is this project is Make "unstable life" comfortable. -![](images/easy-to-send-control-email.png){:relative-height="80"} +# Finding a bug that no one working on -* Show each mailto: button to control +Here is the partial screenshot of Fabre. +It shows each number of comments (orange background color means no one working on yet) -# Easy to view blocking bugs +# Sending control E-mail easily -![](images/easy-to-view-blocking.png){:relative-height="80"} +I've added each mailto: button to sending control mail -* List blocking appropriately +# Easy to view blocked bugs -# What comes to next? +I've aligned blocked bugs. -* It looks useful, isn't it? +# Finding affected important bugs -# Personalize Fabre! +I've added a dashboard to show fire icon. It indicates that there are affected bugs. -* Add bookmark -* Show affected bugs -* Followup newer comments +# How Fabre is good enough to work? -# Personalize Fabre! +I'll show you some demo about Fabre. -* Add bookmark - * *Link account and bug* -* Show affected bugs - * *Link account and installed packages list* -* Followup newer comments - * *Link account and search comment information* +# Current status of Fabre -# How to collect installed packages list? +That's all about Fabre demonstration. - POPULARITY-CONTEST-0 TIME:1596711793 ID:XXX ARCH:amd64 POPCONVER:1.70 VENDOR:Debian - 1596672000 1570622400 libgail-common /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libgail.so - 1596672000 1596585600 libavcodec58 /usr/lib/x86_64-linux-gnu/libavcodec.so.58.91.100 <RECENT-CTIME> - 1596672000 1586736000 libgoa-1.0-0b /usr/lib/x86_64-linux-gnu/libgoa-1.0.so.0.0.0 - ... - 1596672000 1586217600 libzvbi0 /usr/lib/x86_64-linux-gnu/libzvbi.so.0.13.2 - 1596672000 1590624000 udisks2 /usr/share/locale/ja/LC_MESSAGES/udisks2.mo - END-POPULARITY-CONTEST-0 TIME:1596711817 +In this system, tracked bugs are reached to eighty-nine thousand. +UDD tracks 90 thousand bugs, so it covers most of them. -* Just upload popcon file - * /usr/sbin/popularity-contest --su-nobody +Currently, bug information is updated every 1 hour, and affected bugs are also updated every 1 day. -# Personalized Fabre on dashboard +Disk usage is about 1.5 GiB. -![](images/fabre-dashboards.png){:relative-height="100"} +# Weak point of Fabre -# How Fabre is good enough to work? +There is a one weak point about Fabre. +out of memory is occurred sometimes. -* Now ready to DEMO if there is a time to do - # Conclusion -* In my experiment, mashup some data sources may improve UX - * bug report - * UDD metadata - * installed packages list -* There are plenty room of improvements to develop +* There is plenty room of improvement to develop, so I'll go forward this experiment furthermore. +* In my experiment, I've found that mashup some data sources may improve user experience. # Any questions? Could you speak slowly if you ask, please? + +# DEMO + +I'll demonstrate some features of Fabre. + +If you already sign-in with salsa account, +You can also sign in with Fabre. + +You need explicitly allow to authorize with Fabre. + +After sign in, you can access the dashboard. + +In the dashboard, you can see a status. + +As you can see, there are three affected bugs, +ten bookmarked bugs, and you installed thousand and six hundred packages. + +At the bottom of the dashboard, you can check the existence of newer comments since you commented finally. + +Let's see the affected bugs. +These information is based on your installed packages. + +Let's see the bookmarked bugs. +In every bug detail page, bookmark button is shown, so you can track bug freely. + +You can see recent update bugs, release critical bugs, and newcomer bugs. + +Here is the bug detail page, + +You can view original bug report via clicking link, +tweet about bugs, +and send control E-mail easily. +