Freenode IRC operators perform mass seizure of channels for mentioning Liberachat
Timeline:
On 2021-05-22, the events described in my previous article, “Freenode IRC operators now engaging in routine abuses of power” transpired.
On 2021-05-23, Andrew Lee attempted to retroactively authorize the channel seizure described therein by commiting an update to the Freenode policy page. 10 minutes later, this updated policy was marked as a “draft”.
On 2021-05-25, AFAIK after some substantial protest, another Freenode staffer reverted this “draft” policy, leaving the policy page in its original form.
Late on 2021-05-25, Andrew Lee posted a news update. The commit doing so also incorporated a policy update, which is not marked as a draft. This policy update seems to be an attempt to legitimise the subsequent actions described below:
If a primary channel closes access to its users or is in violation of freenode policies, then it will be closed and forwarded to a topical channel. If you’d like to take over one of these primary channels, then you’ll need to be associated in some way with the project in question.
On 2021-05-26 03:00 (04:00 BST), innumerate Freenode channels were automatically seized by Freenode. While I had parted many channels on Freenode which had moved to Liberachat, I personally logged this event at least in one channel,
#anime
, which is also an active channel not in any way “abandoned”:2021-05-26 04:00:43 --> freenodecom (~com@freenode/staff) has joined #anime 2021-05-26 04:00:43 -- Mode #anime [+o freenodecom] by freenodecom 2021-05-26 04:00:43 -- freenodecom has changed topic for #anime from "Wear a mask | Stay tuned for Libera.Chat details | Guidelines: http://j.mp/aniguides | https://i.imgur.com/YbaXYAs.jpg | Anime of the Week: salamander ova (chosen by mixfix41) | Manga of the Week: My Father Became a Cute Vtuber Girl (chosen by TsundereNoises)" to "This channel has moved to ##anime. The topic is in violation of freenode policy: https://freenode.net/policies" 2021-05-26 04:00:43 @freenodecom This channel has been reopened with respect to the communities and new users. The topic is in violation of freenode policy: https://freenode.net/policies 2021-05-26 04:00:43 -- Mode #anime [+o freenodecom] by OperServ 2021-05-26 04:00:43 -- Mode #anime [+c-bbbb nam*!*user@*$##anime-jail *!*@unaffiliated/tellah$##anime-jail *!*@2806:264:4404:9537:*$##anime-jail *!*@94.9.89.190$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@*159.89.227.225$##anime-jail *!*@shout.jpaglier.com$##anime-jail *!memedad@*66.254.101.91$##anime-jail *!*@194.5.249.141] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@*178.128.66.3$##anime-jail $a:milkshake$##anime-jail *!6147a70f@*97.71.167.15$##anime-jail *!*@unaffiliated/crutchy] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!uid391402@gateway/web/irccloud.com/*$##anime-jail *!memedad@*66.254.101.121$##anime-jail *!*@*78.173.84.255$##anime-jail *!*@78.173.84.255$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!uid313806@gateway/web/irccloud.com/x-ecvvftwtbvnwyawn$##anime-jail $a:Radioheat *!*@gateway/web/freenode/ip.46.93.*$##anime-jail *!*@d49-192-12-106.bla1.nsw.optusnet.com.au$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@CPE-101-162-132-148.lnse6.woo.bigpond.net.au$##anime-jail *!*@2606:f180:*$##anime-jail *!*@unaffiliated/luke-jr/bot/ljrbot$##anime-jail *!*@unaffiliated/filystyn$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@sb-217-129-112-168.netvisao.pt$##anime-jail *!*@2a01:4c8:*$##anime-jail *!*@*188.244.248.8$##anime-jail *!*@*80.83.239.28$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@80.83.234.31$##anime-jail *!*@unaffiliated/itchyjunk/x-1640057$##anime-jail *!*@*177.189.228.222$##anime-jail *!*@*185.210.218.108$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@pool-98-113-72-174.nycmny.fios.verizon.net$##anime-jail *!uid348648@gateway/web/irccloud.com/*$##anime-jail *!*@31.173.*$##anime-jail *!limnoria@*] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@80.83.234.118$##anime-jail *!*@41.251.128.50$##anime-jail *!*@*105.154.210.18$##anime-jail $a:sscout$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@*160.176.71.239$##anime-jail fsociety*!*@*$##anime-jail *!*@*80.83.238.77$##anime-jail *!*Just*Rusl@*$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*Nyashko*@*$##anime-jail *!*@105.158.89.143$##anime-jail *!*JustRusl*@*$##anime-jail *!*@160.179.108.92$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@115-64-112-219.tpgi.com.au *!*@*37.120.129.178$##anime-jail *!~F5F5DFFF@*$##anime-jail ruslan*!*@*$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *ruslan*!*@*$##anime-jail *!*@*66.241.100.69$##anime-jail *!*@*188.113.86.228$##anime-jail *!*@*188.244.248.32$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!*@unaffiliated/junka kunja!*@*$##anime-jail *!*@gateway/vpn/privateinternetaccess/junka *!*@*46.8.209.173$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-bbbb *!pomf@77.73.69.66$##anime-jail *!*@*188.244.248.77$##anime-jail *!*@188.244.248.15$##anime-jail *!*@*188.244.248.91$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-b *!*hostile@*$##anime-jail] by ChanServ 2021-05-26 04:00:43 -- Mode #anime [-v beaky] by freenodecom 2021-05-26 04:00:43 -- Mode #anime [-ov Suzuka Suzuka] by freenodecom 2021-05-26 04:00:43 -- Mode #anime [-v ImoutoBot] by freenodecom 2021-05-26 04:00:43 -- Mode #anime [-v Enju] by freenodecom 2021-05-26 04:00:43 ImoutoBot [title] The Policies - freenode 2021-05-26 04:00:45 @freenodecom The new channel is ##anime 2021-05-26 04:00:51 -- Mode #anime [+spimf ##anime] by freenodecom 2021-05-26 04:00:51 -- Mode #anime [+f ##anime] by freenodecom 2021-05-26 04:00:51 <-- freenodecom (~com@freenode/staff) has left #anime
On 2021-05-26 03:31 (04:31 BST), control of the channel was returned to one of its legitimate operators:
2021-05-26 04:31:28 -- Mode #anime [+o luke-jr] by ChanServ
On 2021-05-26 04:15 (05:15 BST), the following global notice was sent by Andrew Lee (
rasengan
):2021-05-26 05:15 -- rasengan (~rasengan@freenode/staff/rasengan): [Global Notice] In the recent policy enforcement, some channels were erroneously included. We greatly apologize for the inconvenience. Please contact us in #freenode-services or contact-us@freenode.net. Thanks for your patience and choosing freenode!
I did not personally witness the following takeovers, and the following are therefore logs provided to me by other parties, which nonetheless serve to demonstrate the widespread and indiscriminate nature of this seizure:
#osmocom
:22:58 --> freenodecom (~com@freenode/staff) has joined #osmocom 22:58 -- freenodecom has changed topic for #osmocom from "moved to #osmocom on libera.chat" to "This channel has moved to ##osmocom. The topic is in violation of freenode policy: https://freenode.net/policies" 22:58 <@freenodecom> This channel has been reopened with respect to the communities and new users. The topic is in violation of freenode policy: https://freenode.net/policies 22:58 -- Mode #osmocom [+o freenodecom] by OperServ 22:58 -- Mode #osmocom [+impsf-bbb ##osmocom *!*@cmcust4uc-116.40.nulinkdigital.com *!*8a44b6b5@*.com/ip.138.68.182.181 *!*Alina-mal@unaffiliated/alina-malina] by ChanServ 22:58 -- Mode #osmocom [-bb *!*wa@191.189.160.* *!*vavaegh@177.142.195.*] by ChanServ 22:58 <@freenodecom> The new channel is ##osmocom 22:59 <-- freenodecom (~com@freenode/staff) has left #osmocom
#glowing-bear
:14:16 -- dcormier has changed topic for #glowing-bear from "IRC for the 21st century. https://www.glowing-bear.org for the stable version, now with TLS; https://latest.glowing-bear.org for the dev version. All questions welcome. Ask away!" to "MOVED to libera.chat => /server add libera irc.libera.chat/6697 -ssl" 22:58 --> freenodecom (~com@freenode/staff) has joined #glowing-bear 22:58 -- freenodecom has changed topic for #glowing-bear from "MOVED to libera.chat => /server add libera irc.libera.chat/6697 -ssl" to "This channel has moved to ##glowing-bear. The topic is in violation of freenode policy: https://freenode.net/policies" 22:58 <@freenodecom> This channel has been reopened with respect to the communities and new users. The topic is in violation of freenode policy: https://freenode.net/policies 22:58 <@freenodecom> The new channel is ##glowing-bear 22:58 -- Mode #glowing-bear [+spimf ##glowing-bear] by freenodecom 22:58 -- Mode #glowing-bear [+f ##glowing-bear] by freenodecom 22:58 <-- freenodecom (~com@freenode/staff) has left #glowing-bear 01:24 -- Mode #glowing-bear [+imnprstf ##glowing-bear] 01:24 -- Channel created on Thu, 12 Dec 2013 12:07:27
Other channels which have been seized in the same fashion include some of my own channels, for example #acmetool
, though I was no longer on the channel to witness the seizure:
07:09 <hl> info #acmetool 07:09 -- ChanServ: Information on #acmetool: 07:09 -- ChanServ: Founder : freenode-placeholder-account 07:09 -- ChanServ: Registered : May 26 03:07:52 2021 (3h 2m 2s ago) 07:09 -- ChanServ: *** End of Info ***
Analysis
My analysis is as follows:
In response to the “threat” of channels moving to other networks, most of all Liberachat, in light of recent events, the new custodians of the Freenode infrastructure, seemingly, developed automated tooling to try and identify any channel trying to move to Liberachat — specifically, by looking for mentions of Liberachat in channel topics — and automatically seize them from their owners, in the process also covering up any evidence of any intention to move on the part of the channel owners.
Even setting aside the acceptability of a policy such as this, it should be fairly obvious that this is extremely prone to false positives. For example, the channel
#anime
above did not advertise a Liberachat channel in its topic; it simply said “Stay tuned for Libera.Chat details”. Presumably therefore, if a channel were to have put “No, we won't move to Liberachat, stop asking.” in its topic, it would also be automatically seized by this system.In other words, if you even mention Liberachat your channel might be immediately and automatically seized from you, courtesy of Freenode's new custodians.
Indeed, this seems to have been borne out by events and caused much collateral damage, hence the hurried apology broadcast to the entire network by
rasengan
and the attempt to reverse the collateral damage which occured.Channels which actually did advertise a new channel on another network remain seized. This includes channels such as
#osmocom
and#acmetool
and numerous other communities, including major channels such as#ubuntu
,#wikipedia
, numerous Gentoo channels,#btrfs
,#zig
,#zsh
,#vim
,#curl
,#ranger
,#guile
,#asterisk
and#openbsd
, amongst many more.According to other sources (which I can't directly confirm) the number of channels seized is in excess of 700.
In conjunction with the new policy page on Freenode's website commited coincidently with the news post mentioned above, it appears to now be the official policy of Freenode that if a channel moves away from Freenode, it is not allowed to tell its users of this fact, and may seize their channel if they attempt to do so.
Setting aside the massive collateral damage, and the toxicity of such a policy, are these actions congruent with the policy Freenode now publishes on its website? It does not appear to me so:
If a primary channel closes access to its users or is in violation of freenode policies, then it will be closed and forwarded to a topical channel.
Note that this does not say anything about topical channels (channels beginning with
##
), which have also been seized, as in the case of ##hntop.Moreover, the new policy page does not establish “moving to another network” or leaving a reminder of such a move in a channel topic as in violation of freenode policy. The previous draft policy update, which was reverted after objection, seemingly attempted to do this:
Unlawful activities and related support activities are considered off-topic, as are inappropriate advertising such as unused channels for the purpose of polluting the channel list results,
—but as mentioned, this was reverted and is not incorporated in the now published policy page. (Even then, the idea that channels moving to other networks are seeking to “pollute the channel list results” is farcical.) So it does not seem to me that the crude attempts by Freenode's new custodians to retroactively permit the kind of action it is now taking are even successful.
Moreover, it should be noted that this automated action has affected even channels which are marked
+s
(secret) and which therefore do not appear in channel listings. Therefore even if the objective were to prevent the “pollution” of channel listings, there is no legitimate reason to take action against+s
channels.
Conclusions
It seems to me that the findings above at this point only hasten the urgency of evacuating Freenode. Even if a channel finds the Hotel California-style attitude that Freenode's new custodians are taking to the prospect of any channel leaving Freenode to be acceptable (and I cannot imagine why they would), since Freenode now sees fit to enforce this via automated systems based purely on heuristics, no channel is necessarily safe. Even channels which have been registered for years, which are in continuous use and which are wholly compliant Freenode policies can have their registrations seized and the channel forcibly shut if they offend an automated system's heuristic.
Privacy implications. Furthermore, it should be noted that this automated
channel takeover system, in taking over some channel #x
, configures a channel
forward to ##x
. However, it has been noted that since channels do not have
+s
(secret; hide from channel listings) by default, by creating ##x
for
every channel #x
which is seized by this automated system, this reveals
publicly in the channel listings the existence of channels which otherwise
would have been secret and concealed from public channel listings. So the above
is not only a disaster in its own terms, it also may have had the effect of
revealing the existence of numerous unlisted channels and undermining their
privacy. Not only that, because people attempting to join the original channel
#x
get automatically forwarded to the channel ##x
, anyone can determine who
attempts to join the original channel simply by joining ##x
, allowing the
members of a secret channel to be leaked.1
1. If this is concerning to you, you can mitigate this by setting user mode +Q, which makes you immune to channel forwarding. Note that you will need to make sure it is set every time you connect. ⏎