Subject: bug#49004: Update IRC-related references to point to Libera.Chat

From: Amin Bandali <[email-masked]>
Date: Sun, 13 Jun 2021 11:01:35 -0400

Tags: patch

Hello,

I've prepared the following first revision against emacs-27.
All comments/feedback welcome.

Eli, Lars, are you comfortable with the scope of the changes?

>From 87eb63ef6c1aba452b64946e88371570bacc9394 Mon Sep 17 00:00:00 2001
From: Amin Bandali <[email-masked]>
Date: Sun, 13 Jun 2021 10:37:57 -0400
Subject: [PATCH] Update IRC-related references to point to Libera.Chat

Per GNU and FSF's announcement [0] of moving official IRC channels to
the Libera.Chat IRC network, as well as several Emacs-related channels
following suit [1], update IRC-related references to reflect the
migration.

[0]: https://lists.gnu.org/archive/html/info-gnu/2021-06/msg00005.html
[1]: https://lists.gnu.org/archive/html/info-gnu-emacs/2021-06/msg00000.html
---
 doc/misc/erc.texi        | 47 +++++++++++++++++++++-------------------
 doc/misc/gnus-faq.texi   |  2 +-
 doc/misc/rcirc.texi      | 33 ++++++++++++++--------------
 lisp/erc/erc-backend.el  |  2 +-
 lisp/erc/erc-networks.el | 14 +++++++++---
 lisp/erc/erc-services.el | 27 ++++++++++++++++-------
 lisp/erc/erc.el          | 11 +++++-----
 lisp/ldefs-boot.el       |  2 +-
 lisp/net/rcirc.el        |  6 ++---
 lisp/org/ol-irc.el       |  6 ++---
 10 files changed, 87 insertions(+), 63 deletions(-)

diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index d39613c11a..b26a0ca9d5 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -131,21 +131,21 @@ Getting Started
 @node Sample Session
 @section Sample Session
 
-This is an example ERC session which shows how to connect to the #emacs
-channel on Freenode.  Another IRC channel on Freenode that may be of
-interest is #erc, which is a channel where ERC users and developers hang
-out.
+This is an example ERC session which shows how to connect to the
+#emacs channel on Libera.Chat.  Another IRC channel on Libera.Chat
+that may be of interest is #erc, which is a channel where ERC users
+and developers hang out.
 
 @itemize @bullet
 
-@item Connect to Freenode
+@item Connect to Libera.Chat
 
-Run @kbd{M-x erc}.  Use ``irc.freenode.net'' as the IRC server, ``6667''
+Run @kbd{M-x erc}.  Use ``irc.libera.chat as the IRC server, ``6667''
 as the port, and choose a nickname.
 
 @item Get used to the interface
 
-Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
+Switch to the ``irc.libera.chat:6667'' buffer, if you're not already
 there.  You will see first some messages about checking for ident, and
 then a bunch of other messages that describe the current IRC server.
 
@@ -158,13 +158,14 @@ Sample Session
 see the channel topic and a list of the people who are currently on the
 channel.
 
-@item Register your nickname with Freenode
+@item Register your nickname with Libera.Chat
 
 If you would like to be able to talk with people privately on the
-Freenode network, you will have to ``register'' your nickname.  To do
-so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
-NickServ register <password>'', replacing ``<password>'' with your
-desired password.  It should tell you that the operation was successful.
+Libera.Chat network, you will have to ``register'' your nickname.
+To do so, switch to the ``irc.libera.chat:6667'' buffer and type
+``/msg NickServ register <password>'', replacing ``<password>'' with
+your desired password.  It should tell you that the operation was
+successful.
 
 @item Talk to people in the channel
 
@@ -518,7 +519,7 @@ Connecting
 parameters.
 
 @example
-(erc :server "irc.freenode.net" :full-name "Harry S Truman")
+(erc :server "irc.libera.chat" :full-name "J. Random Hacker")
 @end example
 @end defun
 
@@ -691,10 +692,10 @@ Sample Configuration
     (erc-send-message
      (concat "@{Uptime@} [" uname-output "]"))))
 
-;; This causes ERC to connect to the Freenode network upon hitting
+;; This causes ERC to connect to the Libera.Chat network upon hitting
 ;; C-c e f.  Replace MYNICK with your IRC nick.
 (global-set-key "\C-cef" (lambda () (interactive)
-                           (erc :server "irc.freenode.net" :port "6667"
+                           (erc :server "irc.libera.chat" :port "6667"
                                 :nick "MYNICK")))
 
 ;; This causes ERC to connect to the IRC server on your own machine (if
@@ -714,13 +715,15 @@ Sample Configuration
 
 ;;; Options
 
-;; Join the #emacs and #erc channels whenever connecting to Freenode.
-(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
+;; Join the #emacs and #erc channels whenever connecting to
+;; Libera.Chat.
+(setq erc-autojoin-channels-alist
+      '(("Libera.Chat" "#emacs" "#erc")))
 
 ;; Rename server buffers to reflect the current network name instead
-;; of SERVER:PORT (e.g., "freenode" instead of "irc.freenode.net:6667").
-;; This is useful when using a bouncer like ZNC where you have multiple
-;; connections to the same server.
+;; of SERVER:PORT (e.g., "Libera.Chat" instead of
+;; "irc.libera.chat:6667").  This is useful when using a bouncer like
+;; ZNC where you have multiple connections to the same server.
 (setq erc-rename-buffers t)
 
 ;; Interpret mIRC-style color commands in IRC chats
@@ -760,7 +763,7 @@ Options
 to hide, e.g.:
 
 @example
-(setq erc-network-hide-list (("freenode" "JOIN" "PART" "QUIT")
+(setq erc-network-hide-list (("Libera.Chat" "JOIN" "PART" "QUIT")
 ("OFTC" "JOIN" "PART""))
 @end example
 @end defopt
@@ -809,7 +812,7 @@ Getting Help and Reporting Bugs
 @uref{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
 
 @item
-You can visit the IRC Freenode channel @samp{#emacs}. Many of the
+You can visit the IRC Libera.Chat channel @samp{#emacs}.  Many of the
 contributors are frequently around and willing to answer your
 questions.
 
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 96503138e5..455819745d 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -2144,7 +2144,7 @@ FAQ 8-6
 
 @subsubheading Answer
 
-Point your IRC client to irc.freenode.net, channel #gnus.
+Point your IRC client to irc.libera.chat, channel #gnus.
 
 @node FAQ 9 - Tuning Gnus
 @subsection Tuning Gnus
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 85eab4c443..67107ae57c 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -124,10 +124,11 @@ Internet Relay Chat
 Here's a typical example:
 
 @cindex redirection to random servers
-When you connect to the Freenode network
-(@code{http://freenode.net/}), you point your IRC client at the
-server @code{irc.freenode.net}.  That server will redirect your client
-to a random server on the network, such as @code{zelazny.freenode.net}.
+When you connect to the Libera.Chat network
+(@code{https://libera.chat}), you point your IRC client at the
+server @code{irc.libera.chat}.  That server will redirect your client
+to a random server on the network, such as
+@code{zirconium.libera.chat}.
 
 @cindex channel name
 @cindex # starts a channel name
@@ -171,15 +172,15 @@ Getting started with rcirc
 
 @table @asis
 @cindex server, connecting
-@cindex Freenode network
+@cindex Libera.Chat network
 @item IRC Server
 What server do you want to connect to? All the servers in a particular
-network are equivalent.  Some networks use a round-robin system where a
-single server redirects new connections to a random server in the
-network.  @code{irc.freenode.net} is such a server for the Freenode
-network.  Freenode provides the network ``for the Free and Open Source
-Software communities, for not-for-profit organizations and for related
-communities and organizations.''
+network are equivalent.  Some networks use a round-robin system where
+a single server redirects new connections to a random server in the
+network.  @code{irc.libera.chat} is such a server for the Libera.Chat
+network.  Libera.Chat's purpose is ``to provide services such as a
+community platform for free open-source software and peer directed
+projects on a volunteer basis.''
 
 @cindex port, connecting
 @cindex 6667, default IRC port
@@ -205,13 +206,13 @@ Getting started with rcirc
 A space separated list of channels you want to join when connecting.
 You don't need to join any channels, if you just want to have one-to-one
 conversations with friends on the same network.  If you're new to the
-Freenode network, join @code{#emacs}, the channel about all things
+Libera.Chat network, join @code{#emacs}, the channel about all things
 Emacs, or join @code{#rcirc}, the channel about @code{rcirc}.
 @end table
 
 @cindex server buffer
 When you have answered these questions, @code{rcirc} will create a server
-buffer, which will be named something like @file{*irc.freenode.net*},
+buffer, which will be named something like @file{*irc.libera.chat*},
 and a channel buffer for each of the channels you wanted to join.
 
 @kindex RET
@@ -482,7 +483,7 @@ Configuration
 @end example
 
 By default you will be connected to the @code{rcirc} support channel:
-@code{#rcirc} on @code{irc.freenode.net}.
+@code{#rcirc} on @code{irc.libera.chat}.
 
 @table @code
 @item :nick
@@ -554,8 +555,8 @@ Configuration
 
 @example
 (setq rcirc-authinfo
-      '(("freenode" nickserv "bob" "p455w0rd")
-        ("freenode" chanserv "bob" "#bobland" "passwd99")
+      '(("Libera.Chat" nickserv "bob" "p455w0rd")
+        ("Libera.Chat" chanserv "bob" "#bobland" "passwd99")
         ("bitlbee" bitlbee "robert" "sekrit")))
 @end example
 
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index dcda9044a5..2c2f62e76e 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1793,7 +1793,7 @@ erc-server-322-message
      's324 ?c channel ?m modes)))
 
 (define-erc-response-handler (328)
-  "Channel URL (on freenode network)." nil
+  "Channel URL." nil
   (let ((channel (cadr (erc-response.command-args parsed)))
         (url (erc-response.contents parsed)))
     (erc-display-message parsed 'notice (erc-get-buffer channel proc)
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 4a566096cb..ac32b294d3 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -290,6 +290,13 @@ erc-server-alist
   ("LagNet: Random server" LagNet "irc.lagnet.org.za" 6667)
   ("LagNet: AF, ZA, Cape Town" LagNet "reaper.lagnet.org.za" 6667)
   ("LagNet: AF, ZA, Johannesburg" LagNet "mystery.lagnet.org.za" 6667)
+  ("Libera.Chat: Random server" Libera.Chat "irc.libera.chat" 6667)
+  ("Libera.Chat: Random Europe server" Libera.Chat "irc.eu.libera.chat" 6667)
+  ("Libera.Chat: Random US & Canada server" Libera.Chat "irc.us.libera.chat" 6667)
+  ("Libera.Chat: Random Australia & New Zealand server" Libera.Chat "irc.au.libera.chat" 6667)
+  ("Libera.Chat: Random East Asia server" Libera.Chat "irc.ea.libera.chat" 6667)
+  ("Libera.Chat: IPv4 only server" Libera.Chat "irc.ipv4.libera.chat" 6667)
+  ("Libera.Chat: IPv6 only server" Libera.Chat "irc.ipv6.libera.chat" 6667)
   ("Librenet: Random server" Librenet "irc.librenet.net" 6667)
   ("LinkNet: Random server" LinkNet "irc.link-net.org" ((6667 6669)))
   ("LinuxChix: Random server" LinuxChix "irc.linuxchix.org" 6667)
@@ -595,6 +602,7 @@ erc-networks-alist
     (Krono "krono.net")
     (Krushnet "krushnet.org")
     (LagNet "lagnet.org.za")
+    (Libera.Chat "libera.chat")
     (Librenet "librenet.net")
     (LinkNet "link-net.org")
     (LinuxChix "cats\\.meow\\.at\\|linuxchix\\.org")
@@ -836,8 +844,8 @@ erc-server-select
 ;; think it is worth the effort.
 
 (defvar erc-settings
-  '((pals freenode ("kensanata" "shapr" "anti\\(fuchs\\|gone\\)"))
-    (format-nick-function (freenode "#emacs") erc-format-@nick))
+  '((pals Libera.Chat ("kensanata" "shapr" "anti\\(fuchs\\|gone\\)"))
+    (format-nick-function (Libera.Chat "#emacs") erc-format-@nick))
   "Experimental: Alist of configuration options.
 The format is (VARNAME SCOPE VALUE) where
 VARNAME is a symbol identifying the configuration option,
@@ -866,7 +874,7 @@ erc-get
 		     items nil)))))
     val))
 
-(erc-get 'pals 'freenode)
+(erc-get 'pals 'Libera.Chat)
 
 (provide 'erc-networks)
 
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 4f9b0b199f..f04da183c6 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -30,10 +30,10 @@
 ;; are made to test if NickServ is the real NickServ for a given network or
 ;; server.
 
-;; As a default, ERC has the data for the official nickname services on
-;; the networks Austnet, BrasNET, Dalnet, freenode, GalaxyNet, GRnet,
-;; and Slashnet.  You can add more by using M-x customize-variable RET
-;; erc-nickserv-alist.
+;; As a default, ERC has the data for the official nickname services
+;; on the networks Austnet, BrasNET, Dalnet, freenode, GalaxyNet,
+;; GRnet, Libera.Chat, and Slashnet.  You can add more by using
+;; M-x customize-variable RET erc-nickserv-alist.
 
 ;; Usage:
 ;;
@@ -43,9 +43,10 @@
 ;; (erc-services-mode 1)
 ;;
 ;; Add your nickname and NickServ password to `erc-nickserv-passwords'.
-;; Using the freenode network as an example:
+;; Using the Libera.Chat network as an example:
 ;;
-;; (setq erc-nickserv-passwords '((freenode (("nickname" "password")))))
+;; (setq erc-nickserv-passwords
+;;       '((Libera.Chat (("nickname" "password")))))
 ;;
 ;; The default automatic identification mode is autodetection of NickServ
 ;; identify requests.  Set the variable `erc-nickserv-identify-mode' if
@@ -173,8 +174,8 @@ erc-nickserv-passwords
 
 Example of use:
   (setq erc-nickserv-passwords
-        \\='((freenode ((\"nick-one\" . \"password\")
-                     (\"nick-two\" . \"password\")))
+        \\='((Libera.Chat ((\"nick-one\" . \"password\")
+                        (\"nick-two\" . \"password\")))
           (DALnet ((\"nick\" . \"password\")))))"
   :group 'erc-services
   :type '(repeat
@@ -190,6 +191,7 @@ erc-nickserv-passwords
 			(const GalaxyNet)
 			(const GRnet)
 			(const iip)
+                        (const Libera.Chat)
 			(const OFTC)
 			(const QuakeNet)
 			(const Rizon)
@@ -257,6 +259,15 @@ erc-nickserv-alist
      "type\\s-/squery\\s-Trent\\s-identify\\s-<password>"
      "[email-masked]"
      "IDENTIFY" nil "SQUERY" nil)
+    (Libera.Chat
+     "[email-masked]"
+     ;; Libera.Chat also accepts a password at login, see the `erc'
+     ;; :password argument.
+     "This\\s-nickname\\s-is\\s-registered.\\s-Please\\s-choose"
+     "NickServ"
+     "IDENTIFY" nil nil
+     ;; See also the 901 response code message.
+     "You\\s-are\\s-now\\s-identified\\s-for\\s-")
     (OFTC
      "[email-masked]"
      ;; OFTC's NickServ doesn't ask you to identify anymore.
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 1e055a6c52..2bd58ba937 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -255,7 +255,7 @@ erc-hide-list
 
 (defcustom erc-network-hide-list nil
   "A list of IRC networks to hide message types from.
-A typical value would be \((\"freenode\" \"MODE\")
+A typical value would be \((\"Libera.Chat\" \"MODE\")
   \(\"OFTC\" \"JOIN\" \"QUIT\"))."
   :version "25.1"
   :group 'erc-ignore
@@ -1499,7 +1499,7 @@ erc-mode
 
 ;; activation
 
-(defconst erc-default-server "irc.freenode.net"
+(defconst erc-default-server "irc.libera.chat"
   "IRC server to use if it cannot be detected otherwise.")
 
 (defconst erc-default-port 6667
@@ -2229,7 +2229,7 @@ erc
 
 That is, if called with
 
-   (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
+   (erc :server \"irc.libera.chat\" :full-name \"J. Random Hacker\")
 
 then the server and full-name will be set to those values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
@@ -3355,8 +3355,9 @@ erc-cmd-MODE
 
 If only one word is given, display the mode of that target.
 
-A list of valid mode strings for Freenode may be found at
-URL `http://freenode.net/using_the_network.shtml'."
+A list of valid mode strings for Libera.Chat may be found at
+`https://libera.chat/guides/channelmodes' and
+`https://libera.chat/guides/usermodes'."
   (cond
    ((string-match "^\\s-\\(.*\\)$" line)
     (let ((s (match-string 1 line)))
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 655285e0f6..f42dae11a6 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -10679,7 +10679,7 @@ epa-global-mail-mode
 
 That is, if called with
 
-   (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
+   (erc :server \"irc.libera.chat\" :full-name \"J. Random Hacker\")
 
 then the server and full-name will be set to those values, whereas
 `erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 02965881ea..bfa0fbd5dc 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -56,7 +56,7 @@ rcirc
   :group 'applications)
 
 (defcustom rcirc-server-alist
-  '(("irc.freenode.net" :channels ("#rcirc")
+  '(("irc.libera.chat" :channels ("#rcirc")
      ;; Don't use the TLS port by default, in case gnutls is not available.
      ;; :port 7000 :encryption tls
      ))
@@ -249,8 +249,8 @@ rcirc-authinfo
   `quakenet': ACCOUNT PASSWORD
 
 Examples:
- ((\"freenode\" nickserv \"bob\" \"p455w0rd\")
-  (\"freenode\" chanserv \"bob\" \"#bobland\" \"passwd99\")
+ ((\"Libera.Chat\" nickserv \"bob\" \"p455w0rd\")
+  (\"Libera.Chat\" chanserv \"bob\" \"#bobland\" \"passwd99\")
   (\"bitlbee\" bitlbee \"robert\" \"sekrit\")
   (\"dal.net\" nickserv \"bob\" \"sekrit\" \"[email-masked]\")
   (\"quakenet.org\" quakenet \"bobby\" \"sekrit\"))"
diff --git a/lisp/org/ol-irc.el b/lisp/org/ol-irc.el
index e3d7651c1a..df62dd0625 100644
--- a/lisp/org/ol-irc.el
+++ b/lisp/org/ol-irc.el
@@ -39,9 +39,9 @@
 ;;
 ;; Links within an org buffer might look like this:
 ;;
-;; [[irc:/irc.freenode.net/#emacs/bob][chat with bob in #emacs on freenode]]
-;; [[irc:/irc.freenode.net/#emacs][#emacs on freenode]]
-;; [[irc:/irc.freenode.net/]]
+;; [[irc:/irc.libera.chat/#emacs/bob][chat with bob in #emacs on Libera.Chat]]
+;; [[irc:/irc.libera.chat/#emacs][#emacs on Libera.Chat]]
+;; [[irc:/irc.libera.chat/]]
 ;;
 ;; If, when the resulting link is visited, there is no connection to a
 ;; requested server then one will be created.
-- 
2.17.1