{"id":1541,"date":"2010-07-05T14:22:13","date_gmt":"2010-07-05T19:22:13","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=1541"},"modified":"2023-12-20T16:25:16","modified_gmt":"2023-12-20T21:25:16","slug":"review-board-statistics-extensions-karma-stopwatch-and-fixit","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2010\/07\/05\/review-board-statistics-extensions-karma-stopwatch-and-fixit\/","title":{"rendered":"Review Board Statistics Extensions: Karma, Stopwatch, and FixIt"},"content":{"rendered":"<p>I just spent the long weekend in Ottawa and Qu\ufeff\ufeff\u00e9\ufeff\ufeff\ufeffbec City with my parents and my girlfriend Em.<\/p>\n<p>During the long drive back to Toronto from Qu\ufeff\ufeff\u00e9\ufeff\ufeff\ufeffbec City, I had plenty of time to think about <a href=\"http:\/\/mikeconley.ca\/blog\/category\/technology\/computer-science\/gsoc-computer-science\/\">my GSoC project<\/a>, and where I want to go with it once <a href=\"http:\/\/code.google.com\/soc\/\">GSoC<\/a> is done.<\/p>\n<p>Here&#8217;s what I came up with.<\/p>\n<h3>Detach Reviewing Time from Statistics<\/h3>\n<p>I think it&#8217;s a safe assumption that my reviewing-time extension isn&#8217;t going to be the only one to generate useful statistical data.<\/p>\n<p>So why not give extension developers an easy mechanism to display statistical data for their extension?<\/p>\n<p>First, I&#8217;m going to extract the reviewing-time recording portion of the extension. Then, RB-Stats (or whatever I end up calling it), will introduce it&#8217;s <em>own <\/em>set of hooks for other extensions to register with. \u00a0This way, if users want some stats, there will be one place to go to get them. \u00a0And if an extension developer wants to make some statistics available, a lot of the hard work will already be done for them.<\/p>\n<p>And if an extension has the capability of combining its data with another extensions data to create a new statistic, we&#8217;ll let RB-Stats manage all of that business.<\/p>\n<h3>Stopwatch<\/h3>\n<p>The reviewing-time feature of RB-Stats will become an extension on its own, and register its data with RB-Stats. \u00a0Once RB-Stats and Stopwatch are done, we should be feature equivalent with <a href=\"http:\/\/mikeconley.ca\/blog\/2010\/06\/24\/review-board-statistics-extension-demo-time\/\">my demo<\/a>.<\/p>\n<h3>Review Karma<\/h3>\n<p>I kind of breezed past this in <a href=\"http:\/\/mikeconley.ca\/blog\/2010\/06\/24\/review-board-statistics-extension-demo-time\/\">my demo<\/a>, but I&#8217;m interested in displaying &#8220;review karma&#8221;. \u00a0Review karma is the reviews\/review-requests ratio.<\/p>\n<p>But I&#8217;m not sure karma is the right word. \u00a0It suggests that a low ratio (many review requests, few reviews) is a bad thing. \u00a0I&#8217;m not so sure that&#8217;s true.<\/p>\n<p>Still, I wonder what the impact will be to display review karma? \u00a0Not just in the RB-Stats statistics view, but next to user names? \u00a0Will there be an impact on review activity when we display this &#8220;reputation&#8221; value?<\/p>\n<h3>FixIt<\/h3>\n<p>This is a big one.<\/p>\n<p>Most code review tools allow reviewers to register &#8220;defects&#8221;, &#8220;todos&#8221; or &#8220;problems&#8221; with the code up for review. \u00a0This makes it easier for reviewees to keep track of things to fix, and things that have already been taken care of. \u00a0It&#8217;s also useful in that it helps generate interesting statistics like defect density and defect detection rate (assuming Stopwatch is installed and enabled).<\/p>\n<p>I&#8217;m going to tackle this extension as soon as RB-Stats, Stopwatch and Karma are done. \u00a0At this point, I&#8217;m quite confident that the current extension framework can more or less handle this.<\/p>\n<p>Got any more ideas for me? \u00a0Or maybe an extension wish-list? \u00a0Let \u00a0me know.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just spent the long weekend in Ottawa and Qu\ufeff\ufeff\u00e9\ufeff\ufeff\ufeffbec City with my parents and my girlfriend Em. During the long drive back to Toronto from Qu\ufeff\ufeff\u00e9\ufeff\ufeff\ufeffbec City, I had plenty of time to think about my GSoC project, and where I want to go with it once GSoC is done. Here&#8217;s what I came [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[657,773,44],"tags":[501,779,780,784,131,783,92,775,631,634,786,778,630,1219,782,504,774,635,781,785],"class_list":["post-1541","post","type-post","status-publish","format-standard","hentry","category-extensions-review-board-code-reviews-computer-science-technology","category-gsoc-computer-science","category-internet","tag-code-review","tag-defect-density","tag-defect-detection-rate","tag-defects","tag-extensions","tag-fixit","tag-gsoc","tag-inspection-rate","tag-karma","tag-metrics","tag-problems","tag-rb-stats","tag-reputation","tag-review-board","tag-review-karma","tag-reviewboard","tag-reviewing-time","tag-statistics","tag-stopwatch","tag-todos"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-oR","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/1541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=1541"}],"version-history":[{"count":15,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/1541\/revisions"}],"predecessor-version":[{"id":1557,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/1541\/revisions\/1557"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=1541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=1541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=1541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}