<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Max Kanat-Alexander</title>
  <link>http://avatraxiom.livejournal.com/</link>
  <description>Max Kanat-Alexander - LiveJournal.com</description>
  <lastBuildDate>Thu, 11 Nov 2010 04:19:14 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>avatraxiom</lj:journal>
  <lj:journalid>56578</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>http://l-userpic.livejournal.com/63715662/56578</url>
    <title>Max Kanat-Alexander</title>
    <link>http://avatraxiom.livejournal.com/</link>
    <width>90</width>
    <height>90</height>
  </image>

<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/104105.html</guid>
  <pubDate>Thu, 11 Nov 2010 04:19:14 GMT</pubDate>
  <title>HTTP Response Splitting: A Common, But Frequently Unknown, Security Issue</title>
  <link>http://avatraxiom.livejournal.com/104105.html</link>
  <description>Recently, there were two security issues discovered in Bugzilla that would fall under the category of &lt;a href=&quot;http://cwe.mitre.org/data/definitions/113.html&quot; rel=&quot;nofollow&quot;&gt;HTTP Response Splitting&lt;/a&gt; attacks. Although this is a common issue in web applications, many developers are unaware of it, its consequences, or how to protect their applications from it.&lt;br /&gt;&lt;br /&gt;In short, here&apos;s what you need to know:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Never allow unsanitized user data into HTTP headers.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Most of the time, if you&apos;re using some HTTP framework, it should be handling this for you. So mostly you just need to make sure that you have a good HTTP library that security-checks its header output properly. But if you&apos;re printing headers directly to the user, as plain text (as I&apos;ve seen many PHP apps do), you do need to be concerned about this.&lt;br /&gt;&lt;br /&gt;In particular, it&apos;s most important that you never allow any character that might be considered a &quot;newline&quot; into your HTTP headers. To understand why, and what could be dangerous about this, you need to know a little bit about HTTP. Let&apos;s say that we&apos;re sending a response to the user that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;200 OK
X-My-Header: some_user_data
Content-Type: text/html; charset=UTF-8

&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;lt;Hello World!&amp;lt;/title&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;Okay, pretty simple. This is a page that has &quot;Hello World!&quot; as the title, and no content. Harmless. However, what&apos;s that &lt;kbd&gt;X-My-Header: some_user_data&lt;/kbd&gt; there? Let&apos;s imagine that some_user_data can be anything that the user input, and he inputs a string that looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;some data;
Content-Type: text/html; charset=UTF-8

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;all_your_base();&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;Now, your response looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;200 OK
X-My-Header: some data;
Content-Type: text/html; charset=UTF-8

&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;all_your_base();&amp;lt;/script&amp;gt;

Content-Type: text/html; charset=UTF-8

&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;lt;Hello World!&amp;lt;/title&amp;gt;&amp;lt;body&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;And I could have inserted anything! It&apos;s not just like a normal Cross-Site Scripting vulnerability, where I can only insert a small dangerous piece of HTML into an already-existing page. I could insert any HTML, any script, or &lt;em&gt;any content at all&lt;/em&gt;. That content could be an ActiveX control for Internet Explorer, it could be some other content that your system is already configured to open automatically--&lt;em&gt;anything&lt;/em&gt;. I&apos;m not limited just to HTML or JavaScript. There&apos;s also a good chance that any Set-Cookie headers will become a part of the &lt;em&gt;body&lt;/em&gt; instead of being part of the headers, too, so I can steal cookies even if they&apos;re marked &quot;httponly&quot;.&lt;br /&gt;&lt;br /&gt;For the most part, this vulnerability is prevented if you never allow people to insert a CR or LF character into headers. There&apos;s no good reason to allow inserting those characters directly into a single header, so you should be pretty safe to just completely deny those characters in HTTP headers generated by your application.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/104105.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/103793.html</guid>
  <pubDate>Sun, 31 Oct 2010 23:58:55 GMT</pubDate>
  <title>VCI 0.7.1</title>
  <link>http://avatraxiom.livejournal.com/103793.html</link>
  <description>Thanks to the &lt;a href=&quot;http://code.google.com/p/bugzilla-vcs/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla VCS Extension&lt;/a&gt;, interest in VCI has really been picking up lately, and so has development. I just released &lt;a href=&quot;http://search.cpan.org/dist/VCI-0.7.1/&quot; rel=&quot;nofollow&quot;&gt;VCI 0.7.1&lt;/a&gt;. The biggest feature of 0.7.1 is that every Commit object now has a &quot;uuid&quot; accessor--a way of uniquely identifying a Commit, universally (across all Repositories and Projects), even if the VCS does not normally provide such a mechanism. This makes it easy to tell if two different Commit objects are actually the &quot;same&quot; commit. (For example, if you have two branches with very similar histories, the uuid should help tell you which commits in those two branches are in fact identical.)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/103793.html</comments>
  <category>tech</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/103460.html</guid>
  <pubDate>Tue, 19 Oct 2010 21:45:00 GMT</pubDate>
  <title>Twitter Account For Bugzilla</title>
  <link>http://avatraxiom.livejournal.com/103460.html</link>
  <description>Hey folks! I just wanted to let everybody know that there&apos;s now &lt;a href=&quot;http://twitter.com/#!/bugzilla&quot; rel=&quot;nofollow&quot;&gt;an official Twitter account for the Bugzilla Project&lt;/a&gt;. This will be a really good way to stay up to date on the very latest news about Bugzilla--we plan to keep it updated frequently about all our new feature development, releases, and things going on in the Bugzilla community.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/103460.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/103260.html</guid>
  <pubDate>Tue, 24 Aug 2010 19:36:48 GMT</pubDate>
  <title>VCI 0.6.1</title>
  <link>http://avatraxiom.livejournal.com/103260.html</link>
  <description>Well, I just uploaded &lt;a href=&quot;http://search.cpan.org/dist/VCI-0.6.1/&quot; rel=&quot;nofollow&quot;&gt;VCI 0.6.1&lt;/a&gt; to CPAN! It&apos;s been a long time since I&apos;ve done a major VCI release, but I&apos;m working on some code that uses it heavily now, so there&apos;s a good chance that will be many more improvements to VCI coming along soon. :-)&lt;br /&gt;&lt;br /&gt;As of this release, I feel confident in saying that VCI is no longer &quot;alpha-quality software&quot;, and it should be pretty much ready for prime-time production use.&lt;br /&gt;&lt;br /&gt;There are some important API changes in this release, most notably that the &quot;moved&quot; accessor of a Commit now contains objects instead of strings. (See the &lt;a href=&quot;http://cpansearch.perl.org/src/MKANAT/VCI-0.6.1/Changes&quot; rel=&quot;nofollow&quot;&gt;Changes&lt;/a&gt; file for details.)&lt;br /&gt;&lt;br /&gt;VCI now differentiates between &quot;revision numbers&quot; and &quot;revision identifiers&quot; for Commits, where the first one is a human-readable number for a commit, and the latter is a unique string identifying the Commit. As part of this change, the &quot;revision&quot; accessor for a Commit in the Bzr driver now returns a revision ID instead of a revision number.&lt;br /&gt;&lt;br /&gt;There are a few other nice new features and improvements, too!&lt;br /&gt;&lt;br /&gt;For the next major release, I&apos;d like to implement a &quot;parents&quot; accessor for Commits, that gives you all of a Commit&apos;s &quot;parent commits&quot;. In centralized VCSes like CVS and Subversion, this is just the commit that came immediately before this one. But in decentralized VCSes like Git, Mercurial, and Bazaar, one commit could have multiple &quot;parents&quot;, some of which might not be accessible via the normal revision history otherwise.&lt;br /&gt;&lt;br /&gt;After that, there might be some performance improvements to be made, but I&apos;ll feel that the read-only side of VCI is pretty much done. Then comes support for working directories and the ability to commit to a repository!&lt;br /&gt;&lt;br /&gt;Right now what I&apos;m thinking is that you&apos;ll get a WorkingDirectory object via a call to &lt;code&gt;VCI-&amp;gt;wd(type =&amp;gt; &apos;Foo&apos;, path =&amp;gt; &apos;path/to/something&apos;)&lt;/code&gt;. This may involve some re-working of how the internals of VCI.pm work. Also, I&apos;m going to make it possible to call &quot;checkout&quot; on a Project, providing a path, and create a WorkingDirectory that way.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/103260.html</comments>
  <category>tech</category>
  <category>vci</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/102151.html</guid>
  <pubDate>Sat, 19 Jun 2010 18:14:11 GMT</pubDate>
  <title>RPC::Any - Simple, Effective XML-RPC and JSON-RPC for Perl</title>
  <link>http://avatraxiom.livejournal.com/102151.html</link>
  <description>&lt;p&gt;I just uploaded the first stable release of a new library to CPAN, called &lt;a href=&quot;http://search.cpan.org/dist/RPC-Any/&quot; rel=&quot;nofollow&quot;&gt;RPC::Any&lt;/a&gt;. It&apos;s a simple server framework that presents an object-oriented, unified interface for both XML-RPC and JSON-RPC. It has the following features:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You can use both JSON-RPC and XML-RPC with the same backend code. (That is, you only have to write your functions once--you never have to do anything special for each individual protocol in your code.)&lt;/li&gt;
  &lt;li&gt;It fully supports Unicode, proven with extensive Unicode tests in the test suite.&lt;/li&gt;
  &lt;li&gt;If it gets tainted input, it will send your functions tainted parameters.&lt;/li&gt;
  &lt;li&gt;It can take input from STDIN, from a string, or from an &lt;a href=&quot;http://search.cpan.org/dist/libwww-perl/lib/HTTP/Request.pm&quot; rel=&quot;nofollow&quot;&gt;HTTP::Request&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Everything is written as a series of methods whose names and parameters will stay stable, so it&apos;s very easy to subclass for your own application, and make it behave completely differently.&lt;/li&gt;
  &lt;li&gt;It gives your functions the ability to call a &lt;kbd&gt;type()&lt;/kbd&gt; method to explicitly type return values correctly for the protocol in use. (So you can do &lt;kbd&gt;$class-&amp;gt;type(&apos;int&apos;, $some_value)&lt;/kbd&gt; within your WebService methods and have that value properly returned as an int instead of a string.)&lt;/li&gt;
  &lt;li&gt;It doesn&apos;t try to start its own server process or send its own output, so you can control exactly how it is used and how the output is sent.&lt;/li&gt;
  &lt;li&gt;It supports operation in a CGI environment (in addition to almost any other environment you can come up with).&lt;/li&gt;
  &lt;li&gt;The test suite of RPC::Any has nearly 100% (about 98%) code coverage over the entire library.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More or less, it&apos;s everything that I ever wanted in an RPC library, and had hacked into Bugzilla using some &lt;em&gt;very&lt;/em&gt; complex code (more on that below). It&apos;s also extremely simple to use, for most cases:&lt;/p&gt;

&lt;pre&gt;
use RPC::Any::Server::JSONRPC::HTTP;
my $server = RPC::Any::Server::JSONRPC::HTTP-&amp;gt;new(
  dispatch =&amp;gt; { &apos;Foo&apos; =&amp;gt; &apos;My::Methods&apos; });
print $server-&amp;gt;handle_input();

package My::Methods;
use strict;

sub hello {
  my ($class) = @_;
  return $class-&amp;gt;type(&apos;string&apos;, &apos;Hello World!&apos;);
}
&lt;/pre&gt;

&lt;p&gt;The server above will read from STDIN, parse HTTP headers and JSON-RPC input, and return proper HTTP headers and JSON-RPC output (for any version of JSON-RPC, no less! 1.0, 1.1, or 2.0). Sending JSON-RPC input with &lt;kbd&gt;Foo.hello&lt;/kbd&gt; as the method name would call My::Methods-&amp;gt;hello() and return the string &quot;Hello World!&quot;, explicitly typed as a string. You&apos;ll notice that &lt;kbd&gt;My::Methods&lt;/kbd&gt; calls &lt;kbd&gt;$class-&amp;gt;type&lt;/kbd&gt; even though it never defines a &quot;type&quot; method--that&apos;s a magic method that RPC::Any gives the class immediately before it calls the method (and removes after the method is done being called).&lt;/p&gt;

&lt;p&gt;To get XML-RPC support instead of JSON-RPC support, just replace every instance of the string &quot;XMLRPC&quot; with &quot;JSONRPC&quot; in the above code (so, in two places) and you have an XML-RPC server instead! No changes whatsoever required to My::Methods or any other code.&lt;/p&gt;

&lt;h3&gt;A Little Background&lt;/h3&gt;

&lt;p&gt;So, you might be wondering--why did I write a whole new WebServices module when there are so many options available on CPAN? Well, in fact, I&apos;m actually using two of them as the backends for RPC::Any--&lt;a href=&quot;http://search.cpan.org/dist/RPC-XML/&quot; rel=&quot;nofollow&quot;&gt;RPC::XML&lt;/a&gt; and &lt;a href=&quot;http://search.cpan.org/dist/JSON-RPC-Common/&quot; rel=&quot;nofollow&quot;&gt;JSON::RPC::Common&lt;/a&gt;. So I&apos;m not re-inventing the wheel for RPC--I&apos;m just giving it all a clean, consistent interface.&lt;/p&gt;

&lt;p&gt;Here&apos;s the whole story behind what motivated me to start writing RPC::Any:&lt;/p&gt;

&lt;p&gt;Many years ago, for Bugzilla 3.0, we added a WebServices interface to Bugzilla. When we started off, it was pretty simple. We were using &lt;a href=&quot;http://search.cpan.org/dist/SOAP-Lite&quot; rel=&quot;nofollow&quot;&gt;SOAP::Lite&lt;/a&gt; for &lt;a href=&quot;http://www.xmlrpc.com/&quot; rel=&quot;nofollow&quot;&gt;XML-RPC&lt;/a&gt;, and everything seemed to be working okay.&lt;/p&gt;

&lt;p&gt;Then, we realized that Unicode support was broken in SOAP::Lite (at the time), and so we had to write a workaround for that. Then we wanted to change how we dealt with null values, and we had to write a complex workaround for that. Then we changed how we dealt with input values--more complex, hackish workaround code. Oh, and then we realized that we wanted to preserve taint on incoming values, for security in Perl&apos;s taint mode (because otherwise we might accidentally send unchecked input to the database).&lt;/p&gt;

&lt;p&gt;All of this was really tough, because SOAP::Lite was basically a &lt;em&gt;SOAP&lt;/em&gt; module, with XML-RPC support tacked on. So all our workarounds involved modifying very convoluted SOAP code, when all we really wanted to do was modify how our XML-RPC support worked. &lt;a href=&quot;http://bzr.mozilla.org/bugzilla/trunk/annotate/7061/Bugzilla/WebService/Server/XMLRPC.pm&quot; rel=&quot;nofollow&quot;&gt;Our XML-RPC Server module&lt;/a&gt; became quite a monster. (You might ask--okay, so why not switch to a pure XML-RPC module from CPAN? Ah, I tried--but more on that later.)&lt;/p&gt;

&lt;p&gt;And &lt;em&gt;then&lt;/em&gt;, we added &lt;a href=&quot;http://groups.google.com/group/json-rpc/web&quot; rel=&quot;nofollow&quot;&gt;JSON-RPC&lt;/a&gt; support, and we wanted to do it with the same backend code--that is, I didn&apos;t want to maintain one whole &lt;kbd&gt;Bug.get&lt;/kbd&gt; function for JSON-RPC and another, separate &lt;kbd&gt;Bug.get&lt;/kbd&gt; function for JSON-RPC. I just wanted to have &lt;em&gt;one&lt;/em&gt; &lt;kbd&gt;Bug.get&lt;/kbd&gt; function, with two separate frontends.&lt;/p&gt;

&lt;p&gt;Well, this was far, far harder than I anticipated. The biggest problem was that SOAP::Lite called methods like &lt;kbd&gt;Bugzilla::WebService::Bug-&amp;gt;get(@params)&lt;/kbd&gt;, but JSON::RPC called methods like &lt;kbd&gt;$server-&amp;gt;Bugzilla::WebService::Bug::get(@params);&lt;/kbd&gt;. (So under XML-RPC, the first argument to our methods was the name of our class, like &lt;kbd&gt;&quot;Bugzilla::WebService::Bug&quot;&lt;/kbd&gt;, but under JSON-RPC the first argument was an instance of JSON::RPC::Server.) So in order to be able to explicitly type return values using &lt;kbd&gt;$self-&amp;gt;type&lt;/kbd&gt; within our WebService code, I had to have one &quot;type&quot; implementation in &lt;kbd&gt;Bugzilla::WebService::Server&lt;/kbd&gt; (which was the base class for both our XML-RPC and JSON-RPC &lt;em&gt;servers&lt;/em&gt;) and another &quot;type&quot; implementation in &lt;kbd&gt;Bugzilla::WebService&lt;/kbd&gt; (which is the base class for our WebService itself--that is, the base of things like Bugzilla::WebService::Bug and so on).&lt;/p&gt;

&lt;p&gt;Then, there were &lt;a href=&quot;https://rt.cpan.org/Public/Dist/Display.html?Name=JSON-RPC&quot; rel=&quot;nofollow&quot;&gt;numerous bugs&lt;/a&gt; in JSON::RPC--so many that I practically ended up writing my own JSON-RPC implementation on top of JSON::RPC, just to get it working properly for Bugzilla. Oh, and also, remember, I had to do all the same things I did for XML-RPC above, like get taint mode working right and testing/fixing Unicode. Oh, and then we added HTTP GET support to our JSON-RPC interface (which JSON::RPC didn&apos;t really support natively) and &lt;em&gt;then&lt;/em&gt; we added &lt;a href=&quot;http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/&quot; rel=&quot;nofollow&quot;&gt;JSONP&lt;/a&gt; support to it. It was crazy--just look at the old &lt;a href=&quot;http://bzr.mozilla.org/bugzilla/trunk/annotate/7145/Bugzilla/WebService/Server/JSONRPC.pm&quot; rel=&quot;nofollow&quot;&gt;Bugzilla::WebSevice::Server::JSONRPC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So along then comes the day when I have a bit of free time, and I&apos;m looking for a project. I think, &quot;Oh, I know, I&apos;ve always wanted to move away from SOAP::Lite for our XML-RPC service. Let&apos;s see what else I can find on CPAN!&quot; So I looked around at all of the available options, and I found RPC::XML, which, though not &lt;em&gt;exactly&lt;/em&gt; what I needed, it was well-maintained, XML-RPC specific, and the maintainer had been really helpful with my requests.&lt;/p&gt;

&lt;p&gt;So, I started to write a patch to move Bugzilla from SOAP::Lite to RPC::XML...and started to write a whole &lt;em&gt;other&lt;/em&gt; series of workarounds--this time not for bugs (because the RPC::XML maintainer was very responsive about fixing those) but just because RPC::XML worked in a different way than we needed it to work, for Bugzilla.&lt;/p&gt;

&lt;p&gt;Finally, at this point, I decided it was time to take &lt;a href=&quot;http://www.codesimplicity.com/post/the-engineer-attitude/&quot; rel=&quot;nofollow&quot;&gt;the engineer attitude&lt;/a&gt; and solve the problem the &lt;em&gt;right way&lt;/em&gt;--that is, not just fix the problem with our XML-RPC server, but fix &lt;em&gt;all&lt;/em&gt; architectural problems of our WebServices by refactoring.&lt;/p&gt;

&lt;p&gt;I looked around CPAN to see if there were any good, unified RPC frameworks that supported both the XML-RPC and JSON-RPC protocols, and didn&apos;t find anything. So, I rolled up my virtual sleeves and put the time in to do it &lt;em&gt;really right&lt;/em&gt;--to write a module that would be the best, simplest, and most powerful RPC framework available for XML-RPC and JSON-RPC. One that fit the (very complex) needs of the Bugzilla Project, but could be used by anybody. A few weeks later, and I had &lt;a href=&quot;http://search.cpan.org/dist/RPC-Any/&quot; rel=&quot;nofollow&quot;&gt;RPC::Any&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It&apos;s really been a surprising amount of work, particularly in the test suite. But I think it was worth it--the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=475086&quot; rel=&quot;nofollow&quot;&gt;new Bugzilla WebServices&lt;/a&gt; code is way cleaner, simpler, and actually much more powerful than it was before the RPC::Any.&lt;/p&gt;

&lt;p&gt;-Max&lt;/p&gt;</description>
  <comments>http://avatraxiom.livejournal.com/102151.html</comments>
  <category>tech</category>
  <category>perl</category>
  <category>rpc-any</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/102080.html</guid>
  <pubDate>Tue, 13 Apr 2010 11:14:14 GMT</pubDate>
  <title>Improving Web Security: Six Ways the Apache.org JIRA Attack Could Have Been Prevented by Better Code</title>
  <link>http://avatraxiom.livejournal.com/102080.html</link>
  <description>&lt;p&gt;Today it was revealed that servers at &lt;a href=&quot;https://blogs.apache.org/infra/entry/apache_org_04_09_2010&quot; rel=&quot;nofollow&quot;&gt;Apache.org&lt;/a&gt; and &lt;a href=&quot;http://blogs.atlassian.com/news/2010/04/oh_man_what_a_day_an_update_on_our_security_breach.html&quot; rel=&quot;nofollow&quot;&gt;Atlassian&lt;/a&gt; were successfully attacked, leading to thousands of stolen passwords. The attack on apache.org&apos;s servers was via &lt;a href=&quot;http://www.atlassian.com/software/jira/&quot; rel=&quot;nofollow&quot;&gt;JIRA&lt;/a&gt;, and since the attack on Atlassian came from the same source, it probably was also through JIRA.&lt;/p&gt;

&lt;p&gt;I&apos;m sure that JIRA&apos;s programmers feel embarrassed enough about all of this--I don&apos;t want to berate them, or insult them. Everybody makes mistakes; almost all software has some pretty bad security vulnerabilities at at times. Overall, the JIRA guys seem to do good work, and seem to be generally nice people. And on top of all of that, I understand how they feel! Whenever there&apos;s a reported security issue in &lt;a href=&quot;http://www.bugzilla.org/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla&lt;/a&gt;, I freak out. Thankfully there hasn&apos;t been an attack on Bugzilla like this JIRA one in recent memory. But if there was an attack like this, I&apos;d be absolutely mortified, and the &lt;em&gt;last&lt;/em&gt; thing I&apos;d need would be somebody trying to insult or attack me for simply having made a mistake.&lt;/p&gt;

&lt;p&gt;Instead, I want to use this opportunity as a reminder to &lt;em&gt;all&lt;/em&gt; web application developers for why web application security is so important, and talk about some of the things that we do in Bugzilla that would have prevented or mitigated an attack like this one, and that web applications should probably all do as standard practice:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Lock down the on-disk permissions of files and directories.&lt;/strong&gt; When you install Bugzilla, the actual installation script makes sure that the permissions on Bugzilla&apos;s files and directories are as secure as possible. That way, even if there is a security compromise in Bugzilla, the attackers can&apos;t upload programs and run them, modify existing scripts, or generally do anything nasty to the machine. It&apos;s particularly important that web applications &lt;strong&gt;never&lt;/strong&gt; allow anything to be uploaded into a location where the web server could execute it.
  &lt;p&gt;This is actually something that I rarely see web applications stress, in any of their documentation. Some web applications &lt;em&gt;recommend&lt;/em&gt; that system administrators fix permissions themselves, but the chance is that the vast majority of people installing your software are going to skip the optional security recommendations, and just go for whatever&apos;s easiest. The only way to guarantee that security happens right on every installation is to have the actual &lt;em&gt;installer&lt;/em&gt; do the setting of the permissions.&lt;/p&gt;
  &lt;p&gt;The attackers configured the Apache JIRA to allow uploads into a location where the webserver would execute files, which is what let them compromise Apache&apos;s servers and steal the passwords of every JIRA user who logged in to the system. If, like Bugzilla, it was impossible to configure JIRA in that way, that part of the attack would have been impossible.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html&quot; rel=&quot;nofollow&quot;&gt;Httponly&lt;/a&gt;: Never allow Javascript to read the login cookie.&lt;/strong&gt; This is one of the simplest and most effective protections you can make in a web application. Seriously--for Bugzilla, it was just a few lines of code, and eliminated a whole set of possible attacks. All you have to do is to set an extra attribute on cookies when you send them, and you gain a lot of security. If Javascript must read &lt;em&gt;some&lt;/em&gt; of your cookie data, that&apos;s fine, just don&apos;t let it read the &lt;em&gt;login&lt;/em&gt; cookie.
  &lt;p&gt;If Httponly had been set on the Apache JIRA session cookie, then the cross-site scripting attack that the attackers used could not have stolen administrators&apos; login privileges.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Open-source your software.&lt;/strong&gt; Okay, look, I know that that&apos;s not practical or possible for everybody. But I will tell you, a &lt;em&gt;lot&lt;/em&gt; of the security bugs that are found in Bugzilla are found by people we&apos;ve never met who just happened to be reading the code. These users find all our security issues before they&apos;re ever exploited, and so we can release fixes before systems are harmed. In particular, I don&apos;t think there has ever been a successful &lt;a href=&quot;http://en.wikipedia.org/wiki/Cross-site_scripting&quot; rel=&quot;nofollow&quot;&gt;Cross-site scripting&lt;/a&gt; attack performed on a Bugzilla--at least not any publicly discussed in the six years I&apos;ve been working on Bugzilla.
  &lt;p&gt;The &quot;many eyes make all bugs shallow&quot; maxim may not always be true, but for security issues, in my experience, it has &lt;em&gt;absolutely&lt;/em&gt; held up.&lt;/p&gt;
  &lt;p&gt;If the cross-site scripting vulnerability in JIRA had been found by an outside user before it was exploited, the Apache JIRA administrators would have been safe from it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Have automated tests scan your code for potential security issues.&lt;/strong&gt; There are lots of ways to do this. In Bugzilla, we have an automated test that makes sure that we properly &quot;filter&quot; any data that we got from the user or the database before displaying it on a web page, so that people can&apos;t inject malicious HTML or JavaScript into our system. The automated tests don&apos;t &lt;em&gt;always&lt;/em&gt; catch our security issues, but the number of times that I&apos;ve fixed a security issue in my code thanks to the tests is uncountable--probably in the thousands, at this point. And those are fixes that happen before the code even gets checked in, so that&apos;s a security vulnerability that gets fixed before it even becomes a part of the product.
  &lt;p&gt;There are lots of other ways to do automated security testing of code, these days. &lt;a href=&quot;http://en.wikipedia.org/wiki/Static_code_analysis&quot; rel=&quot;nofollow&quot;&gt;Static code analysis&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Fuzz_testing&quot; rel=&quot;nofollow&quot;&gt;Fuzz testing&lt;/a&gt;, and &lt;a href=&quot;http://code.google.com/p/skipfish/&quot; rel=&quot;nofollow&quot;&gt;automated security scanners&lt;/a&gt; seem to be the most popular, from what I&apos;ve seen.&lt;/p&gt;
  &lt;p&gt;If the cross-site scripting vulnerability in JIRA had been found by automated tests before it was exploited, the Apache JIRA administrators would have been safe from it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Lock out users who fail to guess their password too many times.&lt;/strong&gt; There are lots of approaches to account security, but this is one of the simplest and most failsafe. If an attacker can only guess five passwords every 30 minutes, and then they get locked out, the statistical probability that they will ever guess anybody&apos;s password is pretty slim. Starting with &lt;a href=&quot;http://www.bugzilla.org/releases/3.6/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.6&lt;/a&gt;, we implement exactly that policy, and we even notify the Bugzilla administrators whenever somebody gets locked out, so that if there&apos;s a large brute-force password attack, the admins will know immediately.
  &lt;p&gt;Some people say that the answer to password security is to have people change their passwords every three months. This is probably sensible on some systems, but on a web application, it&apos;s mostly pretty ridiculous. If you only change your password every &lt;em&gt;three months&lt;/em&gt;, then that gives an attacker &lt;em&gt;three months&lt;/em&gt; to guess your password. I can promise you that almost any normal user password could be guessed in that time, particularly if the system doesn&apos;t prevent brute force attacks. Then once the user has your password, they can usually do everything damaging that they want to do within a few minutes. So, almost any forced-rotation period is pretty silly, in a pure web application. (In other systems it can make sense--it all depends on the context.)&lt;/p&gt;
  &lt;p&gt;Other people suggest that passwords need to be a certain level of complexity or a certain length, and up to a point, that&apos;s true. If your password is one of the 100 most-common passwords, then even with a sensible lockout policy, the attacker will eventually guess it, if they keep up over a few days. (Of course, in Bugzilla, the system administrators would see all of these lockout notices and probably stop the attack pretty quickly. Still, it&apos;s better to be safe than sorry.) So your application should probably enforce a level of password complexity that&apos;s sufficient to make it impossible to guess passwords &lt;em&gt;when combined with&lt;/em&gt; your lockout policy.&lt;/p&gt;
  &lt;p&gt;If the Apache JIRA had had brute-force password-guessing protection like Bugzilla&apos;s lockout method, the attackers would not have been able to discover administrators&apos; passwords using that method. (My understanding is that newer versions of JIRA do have this protection.)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html&quot; rel=&quot;nofollow&quot;&gt;Store passwords securely.&lt;/a&gt;&lt;/strong&gt; If you&apos;re going to store a password in the database or anywhere, store it using some standard, secure method. Don&apos;t just hash the password--you have to at &lt;em&gt;least&lt;/em&gt; &lt;a href=&quot;http://www.google.com/search?q=password+salt&quot; rel=&quot;nofollow&quot;&gt;salt&lt;/a&gt; them. Preferably, don&apos;t even invent your own password-storage scheme--just use some library that already exists. 
  &lt;p&gt;&lt;strong&gt;Never&lt;/strong&gt; store passwords as plain text. You might be saying to yourself, &quot;Oh, nobody will ever break into the system and steal them.&quot; That sounds pretty good until somebody &lt;em&gt;does&lt;/em&gt; break in and steal them, and then you&apos;ll really be wishing that you stored them properly.&lt;/p&gt;
  &lt;p&gt;If the Apache JIRA had been storing passwords properly, then Apache.org&apos;s users would be at far less risk of the attackers now knowing all the passwords in JIRA.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And finally, on top of all those points, if you&apos;re a system administrator, &lt;strong&gt;upgrade your software regularly&lt;/strong&gt;. Some of the security issues that let the Apache JIRA be compromised were supposedly fixed in newer versions of JIRA, before the attack ever happened. Almost every time I hear of an attack like this, it uses &lt;em&gt;old&lt;/em&gt;, &lt;em&gt;known&lt;/em&gt; problems to compromise the system.&lt;/p&gt;

&lt;p&gt;Nobody likes getting attacked. Everybody feels bad about it, when it happens--system administrators, programmers, and most especially users. So let&apos;s just design secure applications to start with, and never have &lt;em&gt;any&lt;/em&gt; of our system administrators or users have to bear the burden of compromised systems and stolen data.&lt;/p&gt;

&lt;p&gt;-Max&lt;/p&gt;</description>
  <comments>http://avatraxiom.livejournal.com/102080.html</comments>
  <category>tech</category>
  <category>security</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>15</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/101850.html</guid>
  <pubDate>Wed, 17 Mar 2010 12:46:26 GMT</pubDate>
  <title>Dear CSS,</title>
  <link>http://avatraxiom.livejournal.com/101850.html</link>
  <description>&lt;p&gt;I love you, man. I really do. You&apos;re like a brother to me. But you and me and these web developers here need to sit down and have a little intervention with you.&lt;/p&gt;

  &lt;p&gt;I know that you&apos;ve go a lot on your mind right now, but there&apos;s some things that we need to talk about with you, dude.&lt;/p&gt;

  &lt;p&gt;First I just want to say that I love your styles. That&apos;s not what we&apos;re here to talk about, but it&apos;s something I really wanted to give you some kudos for. &lt;code&gt;font&lt;/code&gt;, &lt;code&gt;font-style&lt;/code&gt;, &lt;code&gt;border&lt;/code&gt;, &lt;code&gt;text-decoration&lt;/code&gt;, &lt;kbd&gt;color&lt;/kbd&gt;, &lt;kbd&gt;background&lt;/kbd&gt;, you are awesome. Those things are so good, I just wanna hug them, most of the time. &lt;code&gt;text-decoration&lt;/code&gt; and I have had our differences, but I&apos;ve learned to work around them, and I&apos;m pretty good now.&lt;/p&gt;

  &lt;p&gt;And the cascade? The cascade is pretty sweet.&lt;/p&gt;

  &lt;p&gt;But CSS...your positioning sucks. I know it, these web developers here know it, and it&apos;s something that we really need to talk about. It&apos;s been happening for a long time, and all of us here really would like you to think pretty hard about bringing some changes into your life.&lt;/p&gt;

  &lt;p&gt;It&apos;s not a big overhaul or anything. It&apos;s just a few things that we&apos;d really love to see. There&apos;s just a few things. Everybody here really loves you man. We mean it. There&apos;s just a few small, little things that would really help make all of us happier, and maybe they&apos;re things that could help you feel better about yourself, too:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;All I want for Christmas is the ability to position a box relative to another box that &lt;em&gt;is not the container&lt;/em&gt;. Like, say, something like: &lt;code&gt;position: relative-to #other_box top-right; top: 0; left: 0;&lt;/code&gt;, and then the top-left of my box would be aligned to the top-right of #other_box. Then I would never have to wrangle with &lt;code&gt;float&lt;/code&gt; ever again, except when I wanted to have some text spill around a box.&lt;/li&gt;
    &lt;li&gt;Then while we&apos;re at it, I&apos;d really love to be able to specify the size of a box (either horizontal or vertical) as being identical to another box. Maybe something like: &lt;code&gt;width: #other_box&lt;/code&gt; and &lt;code&gt;height: #other_box&lt;/code&gt;. Tables do this. They did it in 1996. Now it&apos;s 2010, and I think that this is something we all would love, but without the tables. So it&apos;s something for you to think about; it would really help us out.&lt;/li&gt;
    &lt;li&gt;Since we&apos;re talking about height, it would also be awesome to have a way to say &quot;this should be the height of its container but no larger&quot;. You&apos;d think &lt;code&gt;height: 100%&lt;/code&gt; would do that, but no, that seems to make the box the height of &lt;em&gt;its content&lt;/em&gt;, at least the last time I tried it (yesterday). That&apos;s OK, though, we love you even though you&apos;re eccentric, CSS. I think we just need a little something different, here.&lt;/li&gt;
    &lt;li&gt;I can&apos;t say how much I&apos;d love to be able to vertically center something in a box. Some of the less-informed members of this little sit-down here might think that &lt;code&gt;vertical-align&lt;/code&gt; has something to do with vertically aligning things in boxes. But no, no, it doesn&apos;t. It was a bit of a trick that CSS pulled on us, and we understand that there were some reasons, so we&apos;re annoyed, but understanding.&lt;/li&gt;
    &lt;li&gt;While we&apos;re at it, wouldn&apos;t it be nice to have a single, simple way to center anything horizontally in its containing box? &lt;code&gt;margin: 0 auto&lt;/code&gt; usually works. I mean, if you &lt;em&gt;wrap the contents in a table&lt;/em&gt; so that they auto-size. (That&apos;s a whole other issue, though, possibly solved by &lt;code&gt;display: table&lt;/code&gt;?) Sometimes you have to use &lt;code&gt;text-align: center&lt;/code&gt;, though. That&apos;s fun, but not really what we meant. Then sometimes there&apos;s no way at all, which isn&apos;t so fun.&lt;/li&gt;
    &lt;li&gt;If you felt &lt;em&gt;really&lt;/em&gt; nice, letting me specify &lt;code&gt;z-index&lt;/code&gt; on non-positioned elements and having it actually work would be really awesome. That&apos;s just if you feel like it, though. I know that there&apos;s a lot of other stuff to think about, here, and and I want you to take your own time to do it, and think about it for yourself.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;Those are all the things that we&apos;d need. I know that life is pretty difficult for you right now, what with CSS3, HTML5, quirks mode, standards mode, specs, working groups, modules, errata, and everything. So this isn&apos;t something I expect overnight. But it&apos;s time for us to say that there&apos;s millions of people that you&apos;re affecting, with your behavior, and we&apos;ve given you so much love. Couldn&apos;t you just give us a little?&lt;/p&gt;

  &lt;p&gt;For Serious,&lt;/p&gt;

  &lt;p&gt;Max&lt;/p&gt;</description>
  <comments>http://avatraxiom.livejournal.com/101850.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <category>css</category>
  <lj:security>public</lj:security>
  <lj:reply-count>19</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/101625.html</guid>
  <pubDate>Sun, 14 Feb 2010 19:54:27 GMT</pubDate>
  <title>VCI 0.5.3</title>
  <link>http://avatraxiom.livejournal.com/101625.html</link>
  <description>Well, I just did a new release of &lt;a href=&quot;http://search.cpan.org/dist/VCI/&quot; rel=&quot;nofollow&quot;&gt;VCI&lt;/a&gt;! This is &lt;a href=&quot;http://search.cpan.org/dist/VCI-0.5.3/&quot; rel=&quot;nofollow&quot;&gt;version 0.5.3&lt;/a&gt;, and it fixes all the test failures and issues that I found with recent Perl module upgrades and the latest versions of all the VCSes. So, VCI should be fully usable with all the modern tools, now!&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/101625.html</comments>
  <category>tech</category>
  <category>vci</category>
  <lj:music>Audioslave - The Worm</lj:music>
  <media:title type="plain">Audioslave - The Worm</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/101149.html</guid>
  <pubDate>Thu, 05 Nov 2009 16:25:23 GMT</pubDate>
  <title>The Bugzilla Update Has Moved!</title>
  <link>http://avatraxiom.livejournal.com/101149.html</link>
  <description>Hey folks! The Bugzilla Update has moved to its own blog:&lt;br /&gt;&lt;br /&gt;  &lt;a href=&apos;http://bugzillaupdate.wordpress.com/&apos; rel=&apos;nofollow&apos;&gt;http://bugzillaupdate.wordpress.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you&apos;d like to subscribe in your news reader, the feed is here:&lt;br /&gt;&lt;br /&gt;  &lt;a href=&apos;http://bugzillaupdate.wordpress.com/feed/atom/&apos; rel=&apos;nofollow&apos;&gt;http://bugzillaupdate.wordpress.com/feed/atom/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There&apos;s a new post today that has a LOT of news from the Bugzilla Project, over there. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/101149.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/101018.html</guid>
  <pubDate>Wed, 16 Sep 2009 01:56:15 GMT</pubDate>
  <title>Let&apos;s Talk About My SSD (Solid State Drive)</title>
  <link>http://avatraxiom.livejournal.com/101018.html</link>
  <description>&lt;p&gt;So, about a week ago I ordered an &lt;a href=&quot;http://www.newegg.com/Product/Product.aspx?Item=N82E16820167016&quot; rel=&quot;nofollow&quot;&gt;80GB Intel X25-M G2 SSD&lt;/a&gt;, and as of a few days ago, it&apos;s running as my main system disk. It&apos;s a &lt;em&gt;lot&lt;/em&gt; smaller than my old main disk (which was 320GB), but I just kept all my sound and pictures on the old main disk and moved the operating system over to the new disk, and that handled the size difference.&lt;/p&gt;

&lt;p&gt;Now, having used it for a few days, I think that we are right at the beginning of the &quot;SSD revolution&quot;--that the curve where SSDs will start to replace hard drives for most common use is very close. Here&apos;s why:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;My SSD was 80GB and about $350 (and that&apos;s only because demand is so high that they increased the price from $270, right now). Although that&apos;s way more expensive than a hard drive of the same size, it&apos;s not &lt;em&gt;unreasonably&lt;/em&gt; expensive, or beyond the purchasing power of a normal consumer.&lt;/li&gt;
  &lt;li&gt;For normal dekstop use, the drive is about &lt;strong&gt;5-10x&lt;/strong&gt; faster than my old hard drive:
    &lt;ul&gt;
      &lt;li&gt;One part of the boot process on my machine that used to take 30 seconds now takes 5 seconds or less.&lt;/li&gt;
      &lt;li&gt;After I log in, it takes only about 2-3 seconds to present me with a fully-functional desktop with all startup programs running.&lt;/li&gt;
      &lt;li&gt;Most programs (including Thunderbird) start under 2 seconds.&lt;/li&gt;
      &lt;li&gt;Opening a new window or tab (including loading and fully rendering my iGoogle home page) in Firefox is &lt;em&gt;instantaneous&lt;/em&gt;--under 1 second.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The drive generates almost no heat--I&apos;ve had it on for hours and it&apos;s cooler than my hand.&lt;/li&gt;
  &lt;li&gt;The drive consumes &lt;a href=&quot;http://anandtech.com/storage/showdoc.aspx?i=3631&amp;amp;p=26&quot; rel=&quot;nofollow&quot;&gt;almost no power&lt;/a&gt; compared to a hard drive.&lt;/li&gt;
  &lt;li&gt;Physical dimensions don&apos;t matter--a solid state drive can be any physical size, and it&apos;s still the same speed (unlike hard drives, where small laptop drives are almost always slower than big desktop drives).&lt;/li&gt;
  &lt;li&gt;Solid state drives produce no vibration and make &lt;em&gt;no sound&lt;/em&gt;. For all intents and purposes (because I designed the rest of my machine to be very quiet) my machine is now totally silent during operation.&lt;/li&gt;
  &lt;li&gt;The drive&apos;s physical orientation doesn&apos;t matter, and it can withstand being dropped or thrown around even when operating (obviously to a limited degree--if you hit it with a hammer, it will stop functioning). Because there are no moving parts, you can pick the drive up and turn it sideways, upside down, jiggle it--whatever--while it&apos;s running, and it will make no difference in performance or safety.&lt;/li&gt;
  &lt;li&gt;All of the old problems that SSDs used to have (that they were slow, that they were unreasonably expensive, that they became slower over time, that they &quot;stuttered&quot; and locked up systems briefly) have now been resolved, and SSDs &quot;just work&quot;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, it&apos;s the most significant performance upgrade I&apos;ve ever made to a computer (other than giving enough RAM to a machine that was woefully low on RAM), and I&apos;d strongly recommend it to anybody who can afford it, knows how to install it and copy over their OS, and who uses a computer regularly.&lt;/p&gt;

&lt;p&gt;Now, if you&apos;re going to buy an SSD, it&apos;s important that you buy the right one, so read &lt;a href=&quot;http://anandtech.com/storage/showdoc.aspx?i=3631&quot; rel=&quot;nofollow&quot;&gt;the latest AnandTech SSD Overview&lt;/a&gt; to understand how SSDs work and which ones are the best to buy.</description>
  <comments>http://avatraxiom.livejournal.com/101018.html</comments>
  <category>tech</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/100666.html</guid>
  <pubDate>Thu, 10 Sep 2009 00:53:10 GMT</pubDate>
  <title>Warning: Major Bugzilla Security Release Coming Soon</title>
  <link>http://avatraxiom.livejournal.com/100666.html</link>
  <description>A major security issue has been discovered in versions of Bugzilla back to 3.0. We will be releasing a version of Bugzilla which fixes the issue within 48 hours (possibly within 24 hours), and all administrators should be ready to perform the upgrade (which does not require any database changes) shortly after the new version is released.&lt;br /&gt;&lt;br /&gt;	If you do not wish to do a full upgrade, patches for just the security issue will be available. The patches are relatively small and do not modify very much of Bugzilla.</description>
  <comments>http://avatraxiom.livejournal.com/100666.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/100351.html</guid>
  <pubDate>Tue, 28 Jul 2009 10:40:43 GMT</pubDate>
  <title>Release of Bugzilla 3.4! (Bugzilla Update: July 28, 2009)</title>
  <link>http://avatraxiom.livejournal.com/100351.html</link>
  <description>I have just posted the tarballs and done the website updates for &lt;a href=&quot;http://www.bugzilla.org/news/#release34&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.4&lt;/a&gt;! This means that we&apos;re out, released, ready to download, install, and go!&lt;br /&gt;&lt;br /&gt;Bugzilla 3.4 is the best release of Bugzilla we&apos;ve ever made. It has tons of great new features, the most exciting of which are listed in the &lt;a href=&quot;http://www.bugzilla.org/news/#release34&quot; rel=&quot;nofollow&quot;&gt;release announcement&lt;/a&gt;, so I won&apos;t repeat them here. But you should go &lt;a href=&quot;http://www.bugzilla.org/download/#v34&quot; rel=&quot;nofollow&quot;&gt;download it&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Story of Bugzilla 3.4&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As you look through the New Features list of Bugzilla 3.4, you may notice that it fixes tons of major issues that Bugzilla has had since its beginning. For example, we fixed the biggest performance problem in Bugzilla--sending emails when a bug is updated--and we finally hide email addresses from logged out users, to prevent spam. And that&apos;s just a &lt;em&gt;tiny taste&lt;/em&gt; of what&apos;s new. Really, check out the &lt;a href=&quot;http://www.bugzilla.org/releases/3.4/release-notes.html#v34_feat&quot; rel=&quot;nofollow&quot;&gt;New Features list&lt;/a&gt; to see everything.&lt;br /&gt;&lt;br /&gt;But you may be asking yourself, why the sudden fixing of all these issues, and why didn&apos;t we do it before?&lt;br /&gt;&lt;br /&gt;Well, that&apos;s an interesting story! From about 2003 to 2008, we spent nearly all of our time fixing up the &lt;em&gt;code&lt;/em&gt; of Bugzilla. It needed a lot of refactoring, and we really did it--five years of it! We added new features at the same time as we refactored (remember, Bugzilla 3.0 had the largest number of major new features of any release we&apos;ve ever done, and we were still refactoring), but the refactoring was our main focus. But finally, finally, with the release of Bugzilla 3.2, we fixed up one of the last &lt;em&gt;major&lt;/em&gt; code issues in Bugzilla--we changed &lt;kbd&gt;process_bug.cgi&lt;/kbd&gt; into a nice, simple series of steps that use Bug objects to do all their work.&lt;br /&gt;&lt;br /&gt;After all this was done, we could finally take the time to look around and say, &quot;What next?&quot;&lt;br /&gt;&lt;br /&gt;Well, what happened next was what led to such a great Bugzilla 3.4 release. First, I declared a &lt;a href=&quot;http://groups.google.com/group/mozilla.dev.apps.bugzilla/browse_thread/thread/5d4e635210cd58b9&quot; rel=&quot;nofollow&quot;&gt;new method of prioritizing work on the Bugzilla Project&lt;/a&gt; that put major issues of our &lt;em&gt;current&lt;/em&gt; users as higher priority than adding new features for our &lt;em&gt;prospective&lt;/em&gt; users. This led to us looking at the major survey items from our &lt;a href=&quot;https://wiki.mozilla.org/Bugzilla:Survey&quot; rel=&quot;nofollow&quot;&gt;2008 Bugzilla Survey&lt;/a&gt; and doing something about all the major requests that we could address immediately. Then we went through and looked at the bugs with the most votes on them, and did something about a lot of them.&lt;br /&gt;&lt;br /&gt;And that, pretty simply, led to us addressing the things that people most &lt;em&gt;wanted&lt;/em&gt;, and that we could actually &lt;em&gt;prove&lt;/em&gt; that they wanted (because we had great survey feedback, or a lot of votes from individuals on our bugs).&lt;br /&gt;&lt;br /&gt;Now that we&apos;ve addressed so many of the individual things that users wanted, look to Bugzilla 3.6 and later for some big user interface and usability improvements--we have &lt;a href=&quot;https://wiki.mozilla.org/Bugzilla:CMU_HCI_Research_2008&quot; rel=&quot;nofollow&quot;&gt;the results of extensive usability research&lt;/a&gt; that was done on Bugzilla, thanks to students from Carnegie-Mellon University, and we are already addressing the &lt;a href=&quot;https://bugzilla.mozilla.org/showdependencytree.cgi?id=bz-hci2008&amp;amp;hide_resolved=1&quot; rel=&quot;nofollow&quot;&gt;list of issues&lt;/a&gt; that that research generated.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Warning for WebService Clients: Changes Since Bugzilla 3.4rc1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Anybody who has been writing WebService clients against the 3.3.x or 3.4rc1 releases should know that we changed a few things in the API between 3.4rc1 and 3.4:&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;Bug.comments&lt;/kbd&gt; now takes an &quot;ids&quot; parameter instead of a &quot;bug_ids&quot; parameter (we just renamed the parameter to be consistent with out other WebService functions). Also, it will now throw an error if you try to add a private comment and you don&apos;t have the permissions to do so. (Previously it just added a public comment if you didn&apos;t have the permissions to make a private comment.)&lt;br /&gt;&lt;br /&gt;&lt;kbd&gt;Bug.history&lt;/kbd&gt; now returns its result in a completely different format, one which is more consistent with the format that &lt;kbd&gt;Bug.comments&lt;/kbd&gt; and &lt;kbd&gt;Bug.get&lt;/kbd&gt; use.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Progress on Bugzilla 3.6&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Since our last Bugzilla Update just a few weeks ago, we&apos;ve fixed several usability issues, sped up quicksearch, and added the ability to disable field values in global drop-down fields (without deleting the value).&lt;br /&gt;&lt;br /&gt;Coming up soon, expect to see a lot of new WebService methods--there&apos;s been a lot of activity in adding WebService code, lately.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The End of Bugzilla 2.x&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;With this release, we EOL&apos;ed Bugzilla 2.22, the last remaining supported 2.x release. That means that only 3.x releases are supported now. It&apos;s kind of wild to think that Bugzilla 2.x is &quot;dead&quot;, after nearly ten years, and so much of my personal time spent on it. I started working on Bugzilla back in the 2.18 days, and I was pretty much the release manager for three major 2.x releases--2.18, 2.20, and 2.22. It&apos;s amazing to think that those releases were so long ago that now the very &lt;em&gt;last&lt;/em&gt; one has reached the end of its support life. It&apos;s all Bugzilla 3.x (and hopefully 4.x soon) from here on out, my friends! :-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subscribe to the Bugzilla Update&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There is an &lt;a href=&quot;http://avatraxiom.livejournal.com/data/atom?tag=bugzilla-update&quot; rel=&quot;nofollow&quot;&gt;Atom feed&lt;/a&gt; that you can subscribe to and read in your RSS reader, for just the Bugzilla Update.</description>
  <comments>http://avatraxiom.livejournal.com/100351.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:mood>accomplished</lj:mood>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/100051.html</guid>
  <pubDate>Tue, 14 Jul 2009 03:58:13 GMT</pubDate>
  <title>Parse::StackTrace</title>
  <link>http://avatraxiom.livejournal.com/100051.html</link>
  <description>Today, as part of a larger project that I&apos;m working on at &lt;a href=&quot;http://www.everythingsolved.com/&quot; rel=&quot;nofollow&quot;&gt;Everything Solved&lt;/a&gt;, I published to CPAN a Perl module that I&apos;ve been working on, called &lt;a href=&quot;http://search.cpan.org/dist/Parse-StackTrace/&quot; rel=&quot;nofollow&quot;&gt;Parse::StackTrace&lt;/a&gt;. It parses the text representation of a stack trace from GDB (the GNU Debugger) or Python, and converts it into an object that will tell you all about that stack trace (or at least, as much as can be known from the text representation). This might be useful for anybody who receives text stack traces and wants to get information about them in some programmatic way.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/100051.html</comments>
  <category>parse-stacktrace</category>
  <category>tech</category>
  <category>perl</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/99636.html</guid>
  <pubDate>Wed, 08 Jul 2009 14:57:04 GMT</pubDate>
  <title>Bugzilla Update: Wednesday, July 8, 2009 (Release of Bugzilla 3.4rc1 and Bugzilla 3.2.4)</title>
  <link>http://avatraxiom.livejournal.com/99636.html</link>
  <description>Well, it&apos;s time for another Bugzilla update! And today I just did two releases, &lt;a href=&quot;http://www.bugzilla.org/releases/3.4/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.4rc1&lt;/a&gt; and &lt;a href=&quot;http://www.bugzilla.org/releases/3.2.4/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.2.4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugzilla 3.4rc1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bugzilla 3.4rc1 is particularly exciting, because it&apos;s our first Release Candidate for 3.4. We did a really good job on this Release Candidate, I think--there&apos;s only one 3.4 blocker remaining (and it&apos;s only still there because we&apos;re waiting on an external party to do something). In other words, there are no known issues with the Release Candidate that are so bad that we couldn&apos;t just call it 3.4 next week if all goes well, and we&apos;ve never actually been in that state for a Release Candidate, at least not as long as I&apos;ve been around the Bugzilla Project.&lt;br /&gt;&lt;br /&gt;One of the particularly exciting thing about a Release Candidate is that it has &lt;a href=&quot;http://www.bugzilla.org/releases/3.4/release-notes.html&quot; rel=&quot;nofollow&quot;&gt;release notes&lt;/a&gt;! That means that &lt;a href=&quot;http://www.bugzilla.org/releases/3.4/release-notes.html#v34_feat&quot; rel=&quot;nofollow&quot;&gt;all the new features&lt;/a&gt; are listed. There&apos;s a lot of really exciting stuff in 3.4, and you should take a look. There are some gems in the &quot;Other Enhancements and Changes&quot; section, too, so make sure you read that too. :-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WebService Changes Since 3.3.4&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Anybody who was writing WebService clients against 3.3.x development releases should know: we renamed the &lt;kbd&gt;Bug.get_history&lt;/kbd&gt; method to &lt;kbd&gt;Bug.history&lt;/kbd&gt;. You can still call it as &lt;kbd&gt;Bug.get_history&lt;/kbd&gt; if you want, but that&apos;s undocumented and not recommended.&lt;br /&gt;&lt;br /&gt;Also, we don&apos;t send &lt;kbd&gt;&amp;lt;nil&amp;gt;&lt;/kbd&gt; for NULL items anymore--too many clients didn&apos;t support it. Now we just remove items from the returned result if they are undefined. (This is documented in the &lt;a href=&quot;http://www.bugzilla.org/docs/3.4/en/html/api/Bugzilla/WebService.html&quot; rel=&quot;nofollow&quot;&gt;Bugzilla::WebService documentation&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Progress Toward Bugzilla 3.6&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There&apos;s been some activity on &lt;kbd&gt;HEAD&lt;/kbd&gt; since our last update. We got a new WebService method to get attachment information, &lt;kbd&gt;Bug.attachments&lt;/kbd&gt;. I&apos;ve been working on making Quicksearch (the search box in the header and footer) even faster. Greg Hendricks (of &lt;a href=&quot;http://www.mozilla.org/projects/testopia/&quot; rel=&quot;nofollow&quot;&gt;Testopia&lt;/a&gt; fame) has been working on the ability for administrators to &quot;disable&quot; certain field values (so that they don&apos;t show up as options anymore, but remain set on existing bugs). And Bradley Baetz has been adding new hooks and working on improving performance in some important areas.&lt;br /&gt;&lt;br /&gt;There&apos;s no ETA for Bugzilla 3.6, but if it works anything like how Bugzilla 3.4 works, we will have open development on it until two months after Bugzilla 3.4 is released, and then we will branch for 3.6 and the 3.6 branch will be &quot;frozen&quot; to only bug-fixes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugzilla Meeting&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We have a &lt;a href=&quot;https://wiki.mozilla.org/Bugzilla:Meetings&quot; rel=&quot;nofollow&quot;&gt;Bugzilla Meeting&lt;/a&gt; next week, on Tuesday, July 14. Just read the page if you want more information! Anybody is welcome to attend.</description>
  <comments>http://avatraxiom.livejournal.com/99636.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/99385.html</guid>
  <pubDate>Thu, 04 Jun 2009 23:30:00 GMT</pubDate>
  <title>Bugzilla Update: Thursday, June 4, 2009</title>
  <link>http://avatraxiom.livejournal.com/99385.html</link>
  <description>Well, it&apos;s time for another Bugzilla update!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugzilla 3.4&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In the Bugzilla 3.4 area, we just made some more changes to how the login form in the header and footer work. Now it&apos;s easy again for users to discover how to reset their password--when we moved the login forms into the header/footer, we at first didn&apos;t have any way for people to discover how to reset their password, but now there&apos;s a link and everything works really nicely. You can see how it all works on the &lt;a href=&quot;http://landfill.bugzilla.org/bugzilla-3.4-branch/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.4 Test Installation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We&apos;re getting somewhat closer to Bugzilla 3.4rc1. We found a few more &lt;a href=&quot;http://tinyurl.com/bz34rc1&quot; rel=&quot;nofollow&quot;&gt;blockers&lt;/a&gt;, so those have to be resolved, and there&apos;s also release notes that need to be written before we can have a Release Candidate.&lt;br /&gt;&lt;br /&gt;One new feature of Bugzilla 3.4 that we haven&apos;t talked much about is the &quot;See Also&quot; field. This is a field where you can put a URL to a bug in another Bugzilla installation or to a &lt;a href=&quot;http://launchpad.net&quot; rel=&quot;nofollow&quot;&gt;Launchpad&lt;/a&gt; bug. The &quot;See Also&quot; feature isn&apos;t quite complete--in the future, we also want to make it update the other installation so that the other installation knows that you&apos;re referring to it. We also want to fix up the display, and get summary/status/resolution information on the remote bug, etc. But for now it does check that you&apos;ve entered a valid bug URL, and at least you can somehow record that bugs in different Bugzilla installations are related to each other, and there&apos;s a WebService interface for updating the field.&lt;br /&gt;&lt;br /&gt;For installations that don&apos;t need the &quot;See Also&quot; field, you can turn it off by disabling the &quot;use_see_also&quot; Parameter.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugzilla 3.6 (HEAD)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We&apos;re working on various interesting things for Bugzilla 3.6, though our focus recently has been on 3.4rc1, so there are a lot of patches awaiting review for HEAD that haven&apos;t had the time to be reviewed. People are working on the ability to disable field values and some cool WebService enhancements, but of course our main focus is fixing up the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=bz-hci2008&quot; rel=&quot;nofollow&quot;&gt;HCI issues&lt;/a&gt; that the Carnegie-Mellon research team discovered in their 2008 study.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/99385.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/99197.html</guid>
  <pubDate>Fri, 22 May 2009 22:55:01 GMT</pubDate>
  <title>Bugbot&apos;s Code Gets a Home</title>
  <link>http://avatraxiom.livejournal.com/99197.html</link>
  <description>I just created a Google Code page for the Supybot Bugzilla plugin (what bugbot is using to report changes):&lt;br /&gt;&lt;br /&gt;&lt;a href=&apos;http://code.google.com/p/supybot-bugzilla/&apos; rel=&apos;nofollow&apos;&gt;http://code.google.com/p/supybot-bugzilla/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can use that to get the code and to report issues about it.&lt;br /&gt;&lt;br /&gt;I&apos;d love to put the plugin&apos;s documentation on there, but the &lt;kbd&gt;supybot-plugin-doc&lt;/kbd&gt; script throws a traceback when I try to generate documentation for the Bugzilla plugin, unfortunately.&lt;br /&gt;&lt;br /&gt;There aren&apos;t currently any release tarballs on the page, but if anybody wants one, just ask me and I&apos;ll create one.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/99197.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <category>supybot-bugzilla</category>
  <lj:music>Paul Simon - Born At The Right Time</lj:music>
  <media:title type="plain">Paul Simon - Born At The Right Time</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/98846.html</guid>
  <pubDate>Wed, 20 May 2009 22:06:24 GMT</pubDate>
  <title>Bugzilla Update: Wednesday, May 20, 2009</title>
  <link>http://avatraxiom.livejournal.com/98846.html</link>
  <description>Hey hey. So, I was thinking that I&apos;d do a regular (or semi-regular) post on the status of the Bugzilla Project, for anybody interested. This is the first one.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bugzilla 3.4&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We&apos;re getting pretty close to releasing Bugzilla 3.4rc1, now. There are only &lt;a href=&quot;https://bugzilla.mozilla.org/buglist.cgi?quicksearch=prod%3ABugzilla+flag%3Ablocking3.4%2B&quot; rel=&quot;nofollow&quot;&gt;a few blockers&lt;/a&gt; left. Mostly they&apos;re just awaiting review. I&apos;ll also need some help with the &lt;a href=&quot;http://www.bugzilla.org/docs/release.html&quot; rel=&quot;nofollow&quot;&gt;release process&lt;/a&gt; for Bugzilla 3.4rc1, if anybody wants to help out.&lt;br /&gt;&lt;br /&gt;The only significant changes since 3.3.4 will be a lot of bug fixes, a change to the &lt;kbd&gt;Bug.search&lt;/kbd&gt; WebServices API, and the ability to hide the &quot;See Also&quot; field. The bug fixes are pretty important, though, so if you&apos;re using 3.3.4 you definitely want to update to the most recent &lt;kbd&gt;BUGZILLA-3_4-BRANCH&lt;/kbd&gt; code regularly or update to 3.4rc1 when it comes out.&lt;br /&gt;&lt;br /&gt;There are a lot of significant changes in 3.4 compared to Bugzilla 3.2, though. Those will all be listed in the release notes for 3.4rc1. The difference between 3.2 and 3.4 is not as great as the difference between 3.0 and 3.2 though. We&apos;re working on having smaller releases more often (starting with 3.4), and it seems to be working pretty well so far.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HEAD (Bugzilla 3.6)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On trunk (which will be Bugzilla 3.6), we&apos;ve done a fair bit. There&apos;s a JSON-RPC interface, support for suexec environments in checksetup, and a lot of HCI improvements. We&apos;ve decided that for Bugzilla 3.6, our focus isn&apos;t going to be adding major new features, but fixing up the features we already have. I wrote &lt;a href=&quot;http://groups.google.com/group/mozilla.dev.apps.bugzilla/browse_thread/thread/cc670a329e681025&quot; rel=&quot;nofollow&quot;&gt;a message to the Bugzilla Developers List&lt;/a&gt; about it, a week ago or so, and I got a lot of positive responses (mostly on IRC or by private email). If you&apos;re interested in helping out, feel free to check out the &lt;a href=&quot;http://tr.im/36focus&quot; rel=&quot;nofollow&quot;&gt;list of bugs we&apos;d like to fix for Bugzilla 3.6&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/98846.html</comments>
  <category>tech</category>
  <category>bugzilla-update</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/98627.html</guid>
  <pubDate>Thu, 30 Apr 2009 08:53:33 GMT</pubDate>
  <title>Fixing HCI Bugs in Bugzilla</title>
  <link>http://avatraxiom.livejournal.com/98627.html</link>
  <description>Guy Pyrzak led a bunch of Carnegie-Mellon students in conducting &lt;a href=&quot;http://guy-pyrzak.blogspot.com/2009/04/lots-of-design-feedback-and-bugzilla.html&quot; rel=&quot;nofollow&quot;&gt;some HCI research on Bugzilla&lt;/a&gt;, and they came up with extensive and detailed &lt;a href=&quot;https://wiki.mozilla.org/Bugzilla:CMU_HCI_Research_2008&quot; rel=&quot;nofollow&quot;&gt;results&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have been working on filing bugs in response to their results. I haven&apos;t finished filing all the bugs yet, but if you want to follow along with the issues as they are filed and fixed, you can watch the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=bz-hci2008&quot; rel=&quot;nofollow&quot;&gt;tracking bug&lt;/a&gt; I filed to keep track of all the usability issues discovered during the research. Some of them are minor issues that now already have patches awaiting review. Some of them are larger issues that will require work over time to fix. But I am committed to seeing them all fixed as we move forward.&lt;br /&gt;&lt;br /&gt;We&apos;ve fixed Bugzilla&apos;s backend pretty well, now. It&apos;s time to focus some on the front end.&lt;br /&gt;&lt;br /&gt;Anybody who wants to help, please do. Any of the bugs that block the tracking bug and are assigned to &quot;Nobody&quot;, you are welcome to take and work on yourself.&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/98627.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/98346.html</guid>
  <pubDate>Thu, 02 Apr 2009 06:14:43 GMT</pubDate>
  <title>Switched to Thunderbird</title>
  <link>http://avatraxiom.livejournal.com/98346.html</link>
  <description>I switched to &lt;a href=&quot;http://www.mozillamessaging.com/en-US/thunderbird/&quot; rel=&quot;nofollow&quot;&gt;Thunderbird&lt;/a&gt; today and I am really loving it. So far, it&apos;s the best email client I&apos;ve ever used. :-) It has so many nice things about it--but then again, if you&apos;re reading this, you probably already know that. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/98346.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/98220.html</guid>
  <pubDate>Wed, 01 Apr 2009 11:14:33 GMT</pubDate>
  <title>New Default Bugzilla Workflow?</title>
  <link>http://avatraxiom.livejournal.com/98220.html</link>
  <description>I have proposed that Bugzilla have a &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=486292&quot; rel=&quot;nofollow&quot;&gt;new default status workflow&lt;/a&gt;. I wrote my reasoning in &lt;a href=&quot;http://groups.google.com/group/mozilla.dev.planning/msg/2e79a56064b7328b&quot; rel=&quot;nofollow&quot;&gt;a message on the mozilla.dev.planning&lt;/a&gt; newsgroup, originally as an argument for a workflow that Mozilla should move to, but I think that it covers the basic bug-fixing process sufficiently well as to apply to all organizations, and thus should be the default.&lt;br /&gt;&lt;br /&gt;I&apos;d welcome constructive feedback, even just statements of agreement. Note that I said &quot;constructive&quot; feedback, not insults or rudeness, which I will most likely just ignore. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/98220.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:music>Death Cab for Cutie - Talking Bird (Demo)</lj:music>
  <media:title type="plain">Death Cab for Cutie - Talking Bird (Demo)</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/97999.html</guid>
  <pubDate>Tue, 24 Feb 2009 03:55:07 GMT</pubDate>
  <title>When does form autocomplete happen?</title>
  <link>http://avatraxiom.livejournal.com/97999.html</link>
  <description>&lt;p&gt;Today for fixing &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=479197&quot; rel=&quot;nofollow&quot;&gt;a bug in Bugzilla&lt;/a&gt; I needed an event to fire only after the browser had automatically autocompleted the login form (what Firefox, Chrome, and Safari do when you have saved exactly one set of login credentials for a site). Most people would think that window.onload would work, and it does, in one browser--Chrome. Other people might try to use &lt;a href=&quot;http://developer.yahoo.com/yui/examples/event/event-timing.html&quot; rel=&quot;nofollow&quot;&gt;YUI&apos;s onDOMReady&lt;/a&gt; event, which fires when all the content is available in the DOM. That works in exactly one engine--Gecko.&lt;/p&gt;

&lt;p&gt;The problem is that autocomplete happens at different times in different browsers, and you can&apos;t even rely on knowing what engine the browser is using--in WebKit-based browsers, it happens at different times depending on what browser is being used. Here&apos;s when autocomplete happens in different browsers:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Gecko: Before onDOMReady, but after window.onload (so use onDOMReady).&lt;/li&gt;
  &lt;li&gt;Chrome: After onDOMReady, but before window.onload (so use window.onload).&lt;/li&gt;
  &lt;li&gt;Safari: After both onDOMReady and window.onload (so do a 200 millisecond window.setTimeout on window.onload).&lt;/li&gt;
  &lt;li&gt;Opera: Never autocompletes forms without user interaction.&lt;/li&gt;
  &lt;li&gt;IE: Never autocompletes forms without user interaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the only reliable solution is to fallback to the Safari solution, which is to do something 200 milliseconds after window.onload. I tried 100ms, and I was getting into race conditions where sometimes my event would fire before autocomplete, sometimes it would fire after. I upped it to 200ms as a safe amount.&lt;/p&gt;

&lt;p&gt;This is a little annoying if you want something to happen &lt;em&gt;instantly&lt;/em&gt; after the form is autocompleted, so what I actually did for Bugzilla was I fired the event after onDOMReady for Gecko, and used the Safari solution for all other browsers.&lt;/p&gt;

&lt;p&gt;Anyhow, it would be nice if this was all standardized some day.&lt;/p&gt;

&lt;p&gt;-Max&lt;/p&gt;</description>
  <comments>http://avatraxiom.livejournal.com/97999.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>12</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/97667.html</guid>
  <pubDate>Sat, 21 Feb 2009 12:23:02 GMT</pubDate>
  <title>Fushigi Yugi</title>
  <link>http://avatraxiom.livejournal.com/97667.html</link>
  <description>So, I just finished watching &lt;a href=&quot;http://www.animenewsnetwork.com/encyclopedia/anime.php?id=178&quot; rel=&quot;nofollow&quot;&gt;Fushigi Yugi&lt;/a&gt;. It&apos;s definitely an older anime, with a more traditional style--almost a more serious and delicately-crafted Dragonball Z with more of an appeal for girls (but still basically an action show despite all the emotional content). I thought the show did best when it was focusing on action, and whenever it started to get weepy I&apos;d kind of roll my eyes and wait for that part to pass. :-) And it&apos;s not that I&apos;m opposed to emotion in shows--on the contrary, how else I could I have loved &lt;a href=&quot;http://www.animenewsnetwork.com/encyclopedia/anime.php?id=4975&quot; rel=&quot;nofollow&quot;&gt;Honey and Clover&lt;/a&gt; so much? No, the weepy bits of Fushigi Yugi were just not that great. :-)&lt;br /&gt;&lt;br /&gt;Overall I&apos;d give it like a 5.5 out of 10. Almost everybody has seen it, I think, so I think in a way that makes it worth watching just so you can bond over it with other people. And it&apos;s not bad. I thought the ending was pretty decent, and the beginning was pretty strong. It got a little dull about 3/4 of the way through, but picked up pretty well in the last 1/8th or so.&lt;br /&gt;&lt;br /&gt;One &lt;em&gt;great&lt;/em&gt; thing about the series is that you get like 6 to 8 episodes per disc! They didn&apos;t fill the discs up with silly extra features or anything, they just put more &lt;em&gt;actual episodes&lt;/em&gt; on them, which is soooo much better than the discs for any other series I&apos;ve watched. I mean, I think I&apos;ve even heard of series where they only put 1 or 2 episodes per disc...Fushigi Yugi is positive proof that nobody actually &lt;em&gt;needs&lt;/em&gt; to do that.&lt;br /&gt;&lt;br /&gt;Still, even with all those episodes per disc, there were something like 8 discs. It&apos;s definitely not a short series! It didn&apos;t feel all that long, though, somehow. Perhaps it&apos;s that since there were so many episodes per disc, I would watch a lot of episodes at once! So it didn&apos;t take all that many sessions of watching to finish it. :-)&lt;br /&gt;&lt;br /&gt;Anyhow, glad to have seen it, but really glad to be going on to something else now--maybe even some normal movies or TV series for a little while, taking a little break from anime. Well, except for the Azumanga Daoih that justdave lent me--I do want to watch that! :-) So I guess it won&apos;t be a total break. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/97667.html</comments>
  <category>anime</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/97531.html</guid>
  <pubDate>Thu, 05 Feb 2009 14:10:22 GMT</pubDate>
  <title>The iPhone SDK</title>
  <link>http://avatraxiom.livejournal.com/97531.html</link>
  <description>So, if Apple was wondering about me, and perhaps picking the petals off flowers going &quot;He loves me, he loves me not,&quot; I think this time we ended up on &quot;he loves me not.&quot;&lt;br /&gt;&lt;br /&gt;The iPhone SDK only works on Mac OS X.&lt;br /&gt;&lt;br /&gt;I do not own a Mac. In fact, I&apos;m pretty sure I don&apos;t own any machine on which OS X will run.&lt;br /&gt;&lt;br /&gt;The explanation for this is, &quot;It&apos;s all built around XCode and Objective C which don&apos;t work on other platforms.&quot;&lt;br /&gt;&lt;br /&gt;Let&apos;s back up.&lt;br /&gt;&lt;br /&gt;Why isn&apos;t XCode based on Eclipse? Then it would run on every platform.&lt;br /&gt;&lt;br /&gt;Objective C works on Linux. Linux is an OS that &lt;em&gt;developers&lt;/em&gt; use. Wouldn&apos;t it be nice to have an SDK that &lt;em&gt;developers&lt;/em&gt; could use?&lt;br /&gt;&lt;br /&gt;If the simulator only ran on a Mac, well okay, that wouldn&apos;t make sense since Macs are now Intel machines, but maybe there&apos;s some graphics interfaces that don&apos;t exist on other platforms. Fine.&lt;br /&gt;&lt;br /&gt;But can&apos;t I at least get the ability to develop an iPhone app using the platform of my choice, instead of being ASSIMILATED INTO THE BORG COLLECTIVE just to write a program?&lt;br /&gt;&lt;br /&gt;I expect to get approximately 1 billion comments now, since I&apos;m complaining about something. It seems that happens whenever I complain about something. :-) Ah well. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/97531.html</comments>
  <category>tech</category>
  <lj:security>public</lj:security>
  <lj:reply-count>27</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/97246.html</guid>
  <pubDate>Tue, 03 Feb 2009 01:50:46 GMT</pubDate>
  <title>Bugzilla 3.2.1, etc.</title>
  <link>http://avatraxiom.livejournal.com/97246.html</link>
  <description>So, today we released &lt;a href=&quot;http://www.bugzilla.org/releases/3.2.1/&quot; rel=&quot;nofollow&quot;&gt;Bugzilla 3.2.1&lt;/a&gt;, which fixes the longest-standing security bugs in Bugzilla, in addition to a few other security issues. These long-standing security issues were actually public for many years, but it required a lot of re-architecture of Bugzilla before we could fix them.&lt;br /&gt;&lt;br /&gt;We also released 3.3.2, which has &lt;a href=&quot;http://www.bugzilla.org/status/2009-02-02.html&quot; rel=&quot;nofollow&quot;&gt;a lot of cool new features&lt;/a&gt;, not the least of which is hiding email addresses from logged-out users.&lt;br /&gt;&lt;br /&gt;And we put out Bugzilla 3.0.6 and Bugzilla 2.22.7 as security fixes for people still using those older branches.&lt;br /&gt;&lt;br /&gt;Anyhow, you can read the &lt;a href=&quot;http://www.bugzilla.org/news/#release321&quot; rel=&quot;nofollow&quot;&gt;news announcement&lt;/a&gt; for more details, and the &lt;a href=&quot;http://www.bugzilla.org/security/2.22.6/&quot; rel=&quot;nofollow&quot;&gt;Security Advisory&lt;/a&gt; if you want to read up on the security issues that were fixed.&lt;br /&gt;&lt;br /&gt;It feels really great to have these releases out. Although I haven&apos;t ever heard of a successful exploit of these security issues, they&apos;ve been around for so long that it was naggingly worrying to have them there, and it&apos;s a huge relief to have them fixed and see the fixes released!&lt;br /&gt;&lt;br /&gt;Anyhow, here&apos;s a bit of news about Bugzilla trunk, which will be Bugzilla 3.4:&lt;br /&gt;&lt;br /&gt;- Our current estimated release date is sometime in May, but that&apos;s a very rough estimate.&lt;br /&gt;&lt;br /&gt;- We&apos;re now in a soft freeze (since Jan 29), which means that enhancements that had patches before Jan 29 can still go in, but any enhancements that didn&apos;t have patches at that time can&apos;t go in. This allows existing patches some time to pass review and to clean up any feature work that wasn&apos;t quite done before the freeze.&lt;br /&gt;&lt;br /&gt;- There are a few nice enhancements that should still be coming, including a simplified bug entry page.&lt;br /&gt;&lt;br /&gt;- If there are any other long-term major problems that you see in Bugzilla that we haven&apos;t fixed in 3.4, please let me know. Point me at a bug, or anything you want. And I don&apos;t mean minor things, like the positioning of a button or some text on a page, but big things like how emails used to be displayed to logged-out users. :-)&lt;br /&gt;&lt;br /&gt;-Max</description>
  <comments>http://avatraxiom.livejournal.com/97246.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:music>Eagles - Center of the Universe</lj:music>
  <media:title type="plain">Eagles - Center of the Universe</media:title>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://avatraxiom.livejournal.com/96800.html</guid>
  <pubDate>Fri, 23 Jan 2009 12:49:10 GMT</pubDate>
  <title>The Dusk skin and bugzilla.mozilla.org</title>
  <link>http://avatraxiom.livejournal.com/96800.html</link>
  <description>&lt;p&gt;For those using &lt;a href=&quot;https://bugzilla.mozilla.org/&quot; rel=&quot;nofollow&quot;&gt;bugzilla.mozilla.org&lt;/a&gt;, I wanted to let you know that when we upgraded to 3.2, you got access to a new Bugzilla skin called &quot;Dusk.&quot; Though I&apos;ve been attempting to convince the admins of the site to switch bugzilla.mozilla.org over to usnig Dusk by default, it hasn&apos;t happened (yet?). So, I wanted to let you know that &lt;em&gt;you&lt;/em&gt; can change Bugzilla&apos;s skin to Dusk yourself, using the &lt;a href=&quot;https://bugzilla.mozilla.org/userprefs.cgi?tab=settings&quot; rel=&quot;nofollow&quot;&gt;General Preferences page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Dusk is much nicer than the Classic skin, in my opinion, and I think Bugzilla actually becomes more usable with it. If you want to see what it looks like before you switch over to it, you can either use the &quot;View &amp;gt; Page Style&quot; menu in Firefox, or you can look at our &lt;a href=&quot;https://landfill.bugzilla.org/bugzilla-tip/&quot; rel=&quot;nofollow&quot;&gt;test installation&lt;/a&gt;, which defaults to Dusk.&lt;/p&gt;

-Max</description>
  <comments>http://avatraxiom.livejournal.com/96800.html</comments>
  <category>tech</category>
  <category>bugzilla</category>
  <lj:security>public</lj:security>
  <lj:reply-count>19</lj:reply-count>
</item>
</channel>
</rss>
