<rss version="2.0">
  <channel>
    <title>Nicolas Pouillard&#39;s Blog</title>
    <link>http://blog.nicolaspouillard.fr</link>
    <description>Nicolas Pouillard&#39;s Blog</description>
    <item>
      <title>Bug Tracker Design Issues</title>
      <link>http://blog.nicolaspouillard.fr/entries/2009-11-01-bug-tracker-design-issues.html</link>
      <description>&lt;p&gt;This post details some design considerations about a simple bug tracker system. Indeed the &lt;a href=&quot;http://sup.rubyforge.org/&quot;&gt;Sup&lt;/a&gt; project needs a better way to track issues and is looking for a bug tracking software.&lt;/p&gt;&lt;p&gt;This article is cross posted to &lt;a href=&quot;http://rubyforge.org/mailman/listinfo/sup-talk&quot;&gt;Sup mailing list&lt;/a&gt; and the discussion will take place there.&lt;/p&gt;&lt;p&gt;Finding a bug tracking system we really like seems a difficult task...&lt;/p&gt;&lt;p&gt;A simple question I asked me was:&lt;/p&gt;&lt;p&gt;&amp;quot;Do we really need to invent this (big) tool?&amp;quot;&lt;/p&gt;&lt;p&gt;And more and more the answer I see is that we do not need yet another big tool. Especially for a bug tracker we need recipes, protocols more than a nice interface. And generally I think we better need thinking on how to split the problem in small issues than writing the tool that tackles all of them in one go.&lt;/p&gt;&lt;p&gt;Again the UNIX philosophy can help us to simplify all this mess!&lt;/p&gt;&lt;p&gt;So we need a web interface for non technical users, great. What about a pre-formatted email explained on a single web-page for reporting bugs. This simple web-page will also have a form to fill which will send the email for them. This micro web app is really simple and does a very clear job.&lt;/p&gt;&lt;p&gt;So we now have issues as emails. Thus the mailing-list is our bug tracker as before. However issues are now in a proper format.&lt;/p&gt;&lt;p&gt;A bot will receive emails on the mailing-list and process those which are in the right format.&lt;/p&gt;&lt;p&gt;I think that the bot will not have a lot of information to store:&lt;/p&gt;&lt;p&gt;(correct me if you find something else)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Issue type, severity, priority, category, person assigned, progress status, incriminated version and platform, planned milestone/released.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Issue details, discussion, answers, attachments.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All those of the first category can be easily handled in a very flexible way either with labels, or a simple mapping: Labels (like the Google bug tracker on code.google.com): Type-Defect Priority-Critical Component-UI Mapping: type: defect priority: critical component: UI&lt;/p&gt;&lt;p&gt;This is very flexible because this set of labels/attributes is chosen by the project maintainer to match the complexity of the project.&lt;/p&gt;&lt;p&gt;I would store and manage the first category using a simple YAML file.&lt;/p&gt;&lt;p&gt;The bot acknowledges its updates by simply answering to the discussion.&lt;/p&gt;&lt;p&gt;Those of the second category can be managed using a single email discussion.&lt;/p&gt;&lt;p&gt;Since the discussion is central to the issue, tracking the original message-ID could be used as the unique identifier.&lt;/p&gt;&lt;p&gt;About the issues identifier I see two options, either we try to allocate simple integers like most of the trackers or we just keep the unique (long) identifier.&lt;/p&gt;&lt;p&gt;Then, optionally a simple set of HTML pages can be generated using the YAML file.&lt;/p&gt;&lt;p&gt;About storage of the YAML file I would simply store it in the repository. If we make the bot accessible, we just have to periodically pull from it.&lt;/p&gt;&lt;p&gt;I don&#39;t know yet how many issues I&#39;ve forgotten, and if this design is really as simple and lightweight as I claim it to be. I look forward to your answers on that.&lt;/p&gt;</description>
      <pubDate>2009-11-01 00:00:00 UTC</pubDate>
    </item>
  </channel>
</rss>
