Subject: Re: bug#49860: 28.0.50; add IRCv3 building blocks to ERC

From: "J.P." <[email-masked]>
Date: Thu, 02 May 2024 19:31:59 -0700

Hi Alexis,

Apologies for the late reply.

Alexis <[email-masked]> writes:

> i'm using the soju bouncer, which supports the IRCv3 'chathistory' extension.
> From what i can tell, this isn't supported in the ERC that ships with
> 29.3?

That's correct.

> If that's so, has any work been done on adding support in this regard?

In terms of basic, foundational IRCv3, a number of design decisions
still have to be made before we can arrive at something installable. I
will try to summarize the work that's been done so far and propose a
rough roadmap/checklist soon. If you're curious or able to contribute,
please say so, and I'll make sure to Cc you.

For now, there are some WIP patches [1] for the various foundational
extensions as well as POCs for fancier ones like chathistory. On 29, you
can try them as an ELPA package by doing

  (require 'package)
  (push '("emacs-erc" . "https://emacs-erc.gitlab.io/bugs/archive/")
        package-archives)

followed by C-u M-x package-install RET erc-49860 RET. When that's done,
connect from emacs -Q with something like

  (require 'erc-v3)
  (erc-toggle-debug-irc-protocol)
  (setopt erc-modules `(eldoc fill-wrap nicks scrolltobottom v3
                        ,@erc-modules)
          erc-v3-extensions `(draft/multiline
                              draft/chathistory draft/event-playback
                              labeled-response ,@erc-v3-extensions)
          erc-scrolltobottom-all t)
  (erc-tls
   :server "bouncer.alexis-vps.el"
   :port 6670
   :nick "alexis"
   :user "alexis@laptop/testnet"
   :password "hunter2"
   :full-name "alexis")

Please be aware that many things simply won't work and that seemingly
random errors will occasionally occur. You'll also be met with many
annoying inconveniences, like having to hit C-v at the top of a target
buffer to fetch non-catch-up history (infinite scroll). Similarly,
buffers for all query targets you've conversed with recently will show
up for no good reason on connect because we don't (yet) persist any
state to disk. Another pain point is query buffers not being renamed
when users change nicks while you're disconnected. Additionally, expect
to see duplicate messages near the bounding "bookend" indicators,
which are themselves unsightly and yet visible by default.

If you do end up trying these builds for any sustained period, please
occasionally check for buffers named "*erc-foo-error*" and, if possible,
send their contents to me along with those of the "*erc-protocol*"
buffer. Remember, if a build breaks for whatever reason, you can always
"roll back" to a less broken one.

Anyway, if not already obvious, ERC needs contributors to make this
initiative happen. So if you know or hear of anyone willing to work on
the most frivolous corner of Emacs, please give them a nudge.

Thanks,
J.P.

[1] https://emacs-erc.gitlab.io/bugs/49860/patches.tar.gz