Herewith a picture of the browser market shares observed visiting ongoing from May through October of 2003, with some remarks on methodology. [Updated: I got Opera wrong, and figured out another pattern in the data.]

Browser shares observed at ongoing, late 2003

You’ll probably want to click on that for a closer look, maybe open it in a new window. The obvious spikes in the Safari line correlate nicely with my MAC OS X specific rants, which usually get a few thousand visits via places like MacSurfer. Also, note that the IE and Mozilla lines are to some extent mirror-images of each other. Whenever I write something that’s got enough good karma on the open-source or XML fronts to get me Slashdotted, there’s a huge spike in readership and those people are heavily Mozilla-biased. While the number of IE users doesn’t actually spike down, the proportion certainly does, as the graph shows. If you look more closely at the pattern, it’s pretty clear that the same effect obtains with the Safari spikes.

As for the rest, of the data, I’ll let you draw your own conclusions; the thing that surprises me is that there’s not much macro movement over time; one hypothesis is that all the geeks and Mac-heads who are going to abandon IE already have.

Methodology · I used a shell for loop to run the following Perl script over the Apache log files to make a tab-delimited file. The only obvious thing wrong is that I think I’m ignoring KHTML, I’ll try to fix that next time out.

Update: I haven’t sorted out KHTML yet, but several Opera fans noticed that the previous version of the script undercounted that browser because it frequently advertises itself as IE. Changing that more or less doubled Opera’s share.

use strict; 
my @bnames = ('IE', 'Mozilla', 'Safari', 'Opera', 'Lynx');
my %browsers;
my $count = 0;
while (<STDIN>)
{
    next if (m@\"GET /ongoing/ongoing.rss@);
    my $b;
    if (/^.*"([^\"]*)"$/)
    {
	$b = $1;
    }

    if    ($b =~ /lynx/i) { $b = 'Lynx'; }
    elsif ($b =~ /Safari/i) { $b = 'Safari'; }
    elsif ($b =~ /opera/i) { $b = 'Opera'; }
    elsif ($b =~ /MSIE/) { $b = 'IE'; }
    elsif ($b =~ /Mozilla.*Gecko/) { $b = 'Mozilla'; }
    else  { next; }

    $browsers{$b}++;
    $count++;
}

my $b;
$ARGV[0] =~ s/\..*$//;
print "$ARGV[0]\t";
foreach $b (@bnames)
{
    printf "%0.1f\t", 100.0 * $browsers{$b} / $count;
}
print "\n";

Then I imported the tab-delimited file into Excel and spent twenty minutes fooling with the graphs. I would have liked tighter control over gridlines and tick-marks to enable a slightly more Tuftean approach; in particular to get a better data-ink ratio. Having said that, Excel figured out how to deal the rows and columns and labels out and gave me a pretty intuitive palette of formatting tools to turn this out in very little elapsed time, so I can’t complain.


author · Dad
colophon · rights

November 11, 2003
· Technology (90 fragments)
· · Web (396 more)

By .

The opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.

I’m on Mastodon!