<?xml version="1.0"?>
<!-- name="generator" content="blosxom/2.0" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
  <channel>
    <title>Colin Watson   </title>
    <link>http://riva.ucam.org/~cjwatson/blog</link>
    <description>Colin Watson's blog</description>
    <language>en</language>

  <item>
    <title>Keysigning bits</title>
    <pubDate>Fri, 31 Jul 2009 13:31:00 BST</pubDate>
    <link>http://riva.ucam.org/~cjwatson/blog/2009/07/31#2009-07-31-keysigning-bits</link>
    <description>
&lt;p&gt;If you're generating one of these shiny new RSA keys, do please remember
to &lt;a href=&quot;http://ekaia.org/blog/2009/05/10/creating-new-gpgkey/&quot;&gt;generate
an encryption subkey too&lt;/a&gt; if you expect people to sign it - at least your
more obscure UIDs. I'm not going to mail unencrypted signatures around
unless I have some out-of-band knowledge that the e-mail address actually
belongs to the person I met.&lt;/p&gt;

&lt;p&gt;I generated a new 4096-bit RSA key myself at DebConf (baa!), and have
just published a
&lt;a href=&quot;http://www.chiark.greenend.org.uk/~cjwatson/key-transition&quot;&gt;key
transition document&lt;/a&gt;. Please consider signing my new key if you signed my
old one.&lt;/p&gt;</description>
  </item>
  <item>
    <title>Python SIGPIPE handling</title>
    <pubDate>Thu, 02 Jul 2009 10:14:00 BST</pubDate>
    <link>http://riva.ucam.org/~cjwatson/blog/2009/07/02#2009-07-02-python-sigpipe</link>
    <description>
&lt;p&gt;&lt;a href=&quot;http://www.enricozini.org/2009/debian/python-pipes/&quot;&gt;Enrico&lt;/a&gt;
writes about creating pipelines with Python's &lt;code&gt;subprocess&lt;/code&gt;
module, and notes that you need to take care to close stdout in non-final
subprocesses so that subprocesses get &lt;code&gt;SIGPIPE&lt;/code&gt; correctly. This
is correct as far as it goes (and true in any language, although there's a
&lt;a href=&quot;http://bugs.python.org/issue1615376&quot;&gt;Python bug report requesting
that &lt;code&gt;subprocess&lt;/code&gt; be able to do this itself&lt;/a&gt;), but there's an
additional gotcha with Python that you missed.&lt;/p&gt;

&lt;p&gt;Python ignores &lt;code&gt;SIGPIPE&lt;/code&gt; on startup, because it prefers to
check every write and raise an &lt;code&gt;IOError&lt;/code&gt; exception rather than
taking the signal. This is all well and good for Python itself, but most
Unix subprocesses don't expect to work this way. Thus, when you are creating
subprocesses from Python, it is &lt;strong&gt;very important&lt;/strong&gt; to set
&lt;code&gt;SIGPIPE&lt;/code&gt; back to the default action. Before I realised this was
necessary, I wrote code that caused serious data loss due to a child process
carrying on out of control after its parent process died!&lt;/p&gt;

&lt;pre&gt;
import signal
import subprocess

def subprocess_setup():
    # Python installs a SIGPIPE handler by default. This is usually not what
    # non-Python subprocesses expect.
    signal.signal(signal.SIGPIPE, signal.SIG_DFL)

subprocess.Popen(command, preexec_fn=subprocess_setup)
&lt;/pre&gt;

&lt;p&gt;I filed a &lt;a href=&quot;http://bugs.python.org/issue1652&quot;&gt;patch&lt;/a&gt; a while
back to add a &lt;code&gt;restore_sigpipe&lt;/code&gt; option to
&lt;code&gt;subprocess.Popen&lt;/code&gt;, which would take care of this. As I say in
that bug report, in a future release I think this ought to be made the
default, as it's very easy to get things dangerously wrong right now.&lt;/p&gt;</description>
  </item>
  <item>
    <title>code_swarm video of Ubuntu uploads</title>
    <pubDate>Thu, 02 Jul 2009 10:14:00 BST</pubDate>
    <link>http://riva.ucam.org/~cjwatson/blog/2009/07/02#2009-05-28-code_swarm</link>
    <description>
&lt;p&gt;Joey Hess posted a
&lt;a href=&quot;http://lists.debian.org/debian-boot/2009/05/msg00265.html&quot;&gt;draft&lt;/a&gt;
of a &lt;a href=&quot;http://code.google.com/p/codeswarm/&quot;&gt;code_swarm&lt;/a&gt; video for
d-i a couple of weeks ago, which reminded me that I've been meaning to do
something similar for Ubuntu for a while now as it's just about our
archive's fifth birthday. I have a more or less complete archive of all our
-changes mailing lists locally (I think I'm missing some of the very early
ones, before the end of July 2004; let me know if you were one of the very
early Canonical employees and have a record of these), and with the aid of
&lt;a href=&quot;https://help.launchpad.net/API/launchpadlib&quot;&gt;launchpadlib&lt;/a&gt; it's
fairly easy to map all the e-mail addresses into Launchpad user names,
massage out some of the more obvious duplicates, and then treat the stream
of uploads as if it were a stream of commits.&lt;/p&gt;

&lt;p&gt;If you haven't seen code_swarm before, each dot represents an upload, and
the dots &quot;swarm&quot; around their corresponding committers' names; more active
committers have larger swarms of dots and brighter names. I assigned a
colour to each of our archive components (uploads aren't really at the C
code vs. Python code vs. translations vs. whatever kind of granularity that
you see in other code_swarm videos), which mostly means that people who
predominantly upload to main are in roughly an Ubuntu tan colour, people who
predominantly upload to universe are coloured bluish, and people with a good
mixture tend to come out coloured green. If I get a bit more time I may try
to figure out enough about video editing software to add some captions.&lt;/p&gt;

&lt;p&gt;Here's the
&lt;a href=&quot;http://people.ubuntu.com/~cjwatson/ubuntu-uploads.ogv&quot;&gt;video&lt;/a&gt;
(194 MB).&lt;/p&gt;</description>
  </item>
  <item>
    <title>Totem BBC plugin</title>
    <pubDate>Thu, 02 Jul 2009 10:14:00 BST</pubDate>
    <link>http://riva.ucam.org/~cjwatson/blog/2009/07/02#2008-10-27-totem-bbc-plugin</link>
    <description>
&lt;p&gt;A while back, the &lt;a href=&quot;http://www.bbc.co.uk/&quot;&gt;BBC&lt;/a&gt; approached
&lt;a href=&quot;http://www.canonical.com/&quot;&gt;Canonical&lt;/a&gt; about providing seamless
access to unencumbered BBC content for all
&lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; users (in the UK and elsewhere). We
agreed to approach this by way of a plugin for our primary media player,
&lt;a href=&quot;http://www.gnome.org/projects/totem/&quot;&gt;Totem&lt;/a&gt;, and asked
&lt;a href=&quot;http://www.collabora.co.uk/&quot;&gt;Collabora Multimedia&lt;/a&gt; to do the plugin
development work.&lt;/p&gt;

&lt;p&gt;The results are in what will shortly be released as Ubuntu 8.10, and are
looking really rather good. At the moment the content available from the BBC at
present is mostly audio, but support for video is in place and the feed is
expected to be fleshed out here over time. We have a genre classification
scheme in place, and will see how that scales as the amount of available
content grows. The code has been
&lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=555823&quot;&gt;submitted
upstream&lt;/a&gt;, although there are still a few issues to work out there.&lt;/p&gt;

&lt;p&gt;This is not the same thing as iPlayer; all the content available here is
DRM-free. Some of it is geographically restricted to the UK, and these
restrictions are handled on the server side to make sure that the client is
free of encumbrances.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.gnome.org/uraeus/&quot;&gt;Christian Schaller&lt;/a&gt; from
Collabora &lt;a href=&quot;http://blogs.gnome.org/uraeus/2008/10/08/868/&quot;&gt;posted&lt;/a&gt;
about this a little while ago. Since then, the UI has been improved somewhat
and some I/O issues have been fixed to the point where we felt comfortable
enabling the BBC plugin (as well as the YouTube plugin) by default in Ubuntu
8.10. Here's a
&lt;a href=&quot;http://people.ubuntu.com/~cjwatson/totem-bbc-2.png&quot;&gt;screenshot&lt;/a&gt; of
the current interface.&lt;/p&gt;

&lt;p&gt;This is exciting stuff with a lot of potential. To try it out, run
Applications -&amp;gt; Sound &amp;amp; Video -&amp;gt; Movie Player and select the &quot;BBC&quot;
entry from the drop-down box labelled &quot;Playlist&quot;. If you find bugs, please
&lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/totem/+filebug&quot;&gt;report&lt;/a&gt;
them!&lt;/p&gt;</description>
  </item>
  <item>
    <title>Bug triage, redux</title>
    <pubDate>Thu, 05 Mar 2009 11:03:00 BST</pubDate>
    <link>http://riva.ucam.org/~cjwatson/blog/2009/03/05#2009-03-05-bug-triage-redux</link>
    <description>
&lt;p&gt;I've been a bit surprised by the strong positive response to my &lt;a href=&quot;http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/ubuntu/2009-02-27-bug-triage-rants.html&quot;&gt;previous post&lt;/a&gt;. People generally seemed to think it was quite non-ranty; maybe I should clean the rust off my flamethrower. :-) My hope was that I'd be able to persuade people to change some practices, so I guess that's a good thing.&lt;/p&gt;

&lt;p&gt;Of course, there are many very smart people doing bug triage very well, and I don't want to impugn their fine work. Like its medical namesake, bug triage is a skilled discipline. While it's often repetitive, and there are lots of people showing up with similar symptoms, a triage nurse can really make a difference by spotting urgent cases, cleaning up some of the initial blood, and referring the patient quickly to a doctor for attention. Or, if a pattern of cases suddenly appears, a triage nurse might be able to warn of an incipient epidemic. [Note: I have no medical experience, so please excuse me if I'm talking crap here. :-)] The bug triagers who do this well are an absolute godsend; especially when they respond to repetitive tasks with tremendously useful pieces of automation like &lt;a href=&quot;https://launchpad.net/bughelper&quot;&gt;bughelper&lt;/a&gt;. The cases I have trouble with are more like somebody showing up untrained, going through everyone in the waiting room, and telling each of them that they just need to go home, get some rest, and stop complaining so much. Sometimes of course they'll be right, but without taking the time to understand the problem they're probably going to do more harm than good.&lt;/p&gt;

&lt;p&gt;Ian Jackson reminded me that it's worth mentioning the purpose of bug reports on free software: namely, &lt;strong&gt;to improve the software&lt;/strong&gt;. The GNU Project has some &lt;a href=&quot;http://www.gnu.org/prep/maintain/maintain.html#Mail&quot;&gt;advice to maintainers&lt;/a&gt; on this. I think sometimes we stray into regarding bug reports more like support tickets. In that case it would be appropriate to focus on resolving each case as quickly as possible, if necessary by means of a workaround rather than by a software change, and only bother the developers when necessary. This is the wrong way to look at bug reports, though. The reason that we needed to set up a bug triage community in Ubuntu was that we had a relatively low developer-to-package ratio and a very high user-to-developer ratio, and we were getting a lot of bug reports that weren't fleshed out enough for a developer to investigate them without spending a lot of time in back-and-forth with the reporter, so a number of people volunteered to take care of the initial back-and-forth so that good clear bug reports could be handed over to developers. This is all well and good, and indeed I encouraged it because I was personally finding myself unable to keep up with incoming bugs and actually fix anything at the same time. Somewhere along the way, though, some people got the impression that what we wanted was a first-line support firewall to try to defend developers from users, which of course naturally leads to ideas such as closing wishlist bugs containing ideas because obviously those important developers wouldn't want to be bothered by them, and closing old bugs because clearly they must just be getting in developers' way. Let me be clear about this now: I absolutely appreciate help getting bug reports into a state where I can deal with them efficiently, but &lt;strong&gt;I do not want to be defended from my users&lt;/strong&gt;! I don't have a basis from which to state that all developers feel the same way, but my guess is that most do.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://antti-juhani.kaijanaho.fi/newblog/archives/471&quot;&gt;Antti-Juhani Kaijanaho&lt;/a&gt; said he'd experienced most of these problems in Debian. I hadn't actually intended my post to go to Planet Debian - I'd forgotten that the &quot;ubuntu&quot; category on my blog goes there too, which generally I see as a feature, but if I'd remembered that I would have been a little clearer that I was talking about Ubuntu bug triage. If I had been talking about Debian bug triage I'd probably have emphasised different things. Nevertheless, it's interesting that at least one Debian (and non-Ubuntu) developer had experienced similar problems.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://jldugger.livejournal.com/25994.html&quot;&gt;Justin Dugger&lt;/a&gt; mentions a practice of marking duplicate bugs invalid that he has problems with. I agree that this is suboptimal and try not to do it myself. That said, this is not something I object to to the same extent. Given that the purpose of bugs is to improve the software, the real goal is to be able to spend more time fixing bugs, not to get bugs into the ideal state when the underlying problem has already been solved. If it's a choice between somebody having to spend time tracking down the exact duplicate bug number versus fixing another bug, I know which I'd take. Obviously, when doing this, it's worth apologising that you weren't able to find the original bug number, and explaining what the user can do if they believe that you're mistaken (particularly if it's a bug that's believed to be fixed); the stock text people often use for this doesn't seem informative enough to me.&lt;/p&gt;

&lt;p&gt;Sebastien Bacher commented that preferred bug triage practices differ among teams: for instance, the Ubuntu desktop team deals with packages that are very much to the forefront of users' attention and so get a lot of duplicate bugs. Indeed - and bug triagers who are working closely with the desktop team on this are almost certainly doing things the way the developers on the desktop team prefer, so I have no problem with that. The best advice I can give bug triagers is that their ultimate aim is to help developers, and so they should figure out which developers they need to work with and &lt;strong&gt;go and talk to them&lt;/strong&gt;! That way, rather than duplicating work or being counterproductive, they can tailor their work to be most effective. Everybody wins.&lt;/p&gt;</description>
  </item>
  </channel>
</rss>