The usage share of IRC clients has always been something I’m interested in. This
is partially to see how many people are using Instantbird or Mozilla
Thunderbird for IRC (as I’ve written much of the IRC code for those clients).
Usage share of browsers is quite a researched topic, but I’ve never come
across this data for IRC. Most IRC clients implement a part of the CTCP
protocol which allows a client to query another client for their version.
Thinking of this as a user agent is probably a good analogue. I don’t think
this would imply that there is much of an issue with user agent spoofing, as
there would be for web browser statistics since (as far as I know), no one uses
the version response to do capability negotiation. It also is not used by servers.
So how’d we do this? I wrote an extension for Instantbird which handled both
the backend and the display of the results. I think that this really showcases
the extensibility of Instantbird and the effort we’ve put into ensuring their
are generic APIs available for developers. In particular this uses the IRC
handler API and the add panel API (added by one of our GSoC students a
couple of years ago.)
Anyway, at the actual protocol level, I simply send a CTCP VERSION query to
each user I know of on the IRC network (based on who is in the same channels as
me) and then record the responses. I tried to be nice to the network here and
rate-limited myself to 1 query per second. No one complained after ~100 queries
and I didn’t seem to have any fakelag issues. I then dumped the results and
made a pretty(-ish) plot of this. (If you’re a network administrator reading
this and think this is insane, I’d be very curious to hear a better way to do this!)
In order to get some results I hooked my client up to moznet on July 23rd,
2015 and let it run on many channels (pretty much anything with more than 20
users) for a few hours . I was in Europe and started early in the morning
and let it run through the evening, so it should encompass some “normal” usage
by Mozillians. I would expect a bit of skew in these results toward
Mozilla-esque IRC clients (Instantbird, Thunderbird and ChatZilla).
Of course these numbers are just a single sampling and I have no idea how much
variance there is day-to-day or over time, but I found the (un-scientific)
results to be interesting!
The first thing I noticed is the large amount of information some version
responses gave (in no particular order):
- KVIrc 4.3.1 svn-6313 'Aria' 20120701 - build 2013-02-14 17:47:33 UTC - Windows 7 Ultimate (x64) Service Pack 1 (Build 7601)
- xchat 2.8.8 Linux 3.17.4-1-ARCH [x86_64/2.90GHz/SMP]
- HexChat 2.10.1 [x64] / Windows 7 SP1 [4.09GHz]
I don’t understand the rationale behind sharing a user’s operating system and
CPU speed. Most clients responded with a simple <software> <version number>,
although quite a few also include a URL.
Additionally, some bouncers respond in weird ways which might skew the results:
- ZNC responds only if there are no clients connected OR, depending on the
version, it appends itself to the client response.
- bip responds with it’s own version if no one is connected OR the version of
all connected clients.
Lastly, some clients just don’t respond (or respond with an empty string). The
results below aren’t really a count of “users”, but a count of “clients” where
some users might be counted multiple times.
Initially I visualized the data by plotting it two serparate ways: first by
showing the count of each version response and then grouping by “client family”.
The first plot had too many columns to reasonably show in this post: thus I’ve
only included a plot of the client families . There are two plots, the first
shows a subset of the data by cutting the tail (arbitrarily including families
with at least 10 users).
A “client family” is counting all versions of the same client together. This
was calculated by taking the text up to the first whitespace or digit and
converting to lowercase:
family = version.split(/[\s\d]/).toLowerCase()
I have to admit that I was fairly shocked by the number of IRCCloud users as I
found it pretty unusable when messing with it . I suspect it being an 'easy'
bouncer draws many people to it. The bouncer-like software (IRCCloud, ZNC, bip)
represents almost half of the users surveyed (692 / 1549 ≈ 45%)!
I'm surprised so many people are using purple as their IRC client, as the
support there is really barebones. (It makes sense if you're already using
Pidgin and don't want another client.) I think we've made a significant amount
of improvements in Instantbird's IRC support to make it simpler for a user to
get started (give it a try if you haven't!).
The last thing I'll note is that, when taken together, Instantbird, Thunderbird,
and Icedove, come in as part of the top 10 (63 users, right before ChatZilla)!
There's a lot of great clients out there and I'm happy to say I've helped to
create one of the more popular ones (on moznet, at least!).
Let me know if I missed a great insight!