Re: bug#73812: 30.0.91; ERC 5.6.0.30.1: Customizing erc-modules loads ERC when starting Emacs
"J.P." <[email protected]> Thu, 17 Oct 2024 12:38:05 -0700
| Newsgroups | gmane.emacs.erc.general |
|---|---|
| Message-ID | <[email protected]> |
"J.P." <[email protected]> writes: >>> Eli, can we add this patch to the release branch? It removes a single >>> line containing an autoload cookie that's new in Emacs 30. (I'm running >>> the check-expensive suite with the patch now.) Thanks. >> >> Are we sure this doesn't break any customization scenarios? > > The worst case is probably someone unaware of the implicit loading who > recently added code referring to symbols defined in erc.el after an > Emacs-managed `custom-set-variables' form in their `custom-file' (or a > `:custom' section in a `use-package' declaration). These customizations > would necessarily have to contain an entry for `erc-modules', but this > is perhaps the most common ERC customization. However, the user would > have to be running the pre-release or master. > >> Why was this line added in the first place? > > The line was initially added in a misguided attempt to allow new users > unfamiliar with Emacs to run M-x customize-option RET erc-modules RET > without first having to run M-: (require 'erc) RET. > >> And why is it urgent to remove it before Emacs 30 is released? > > ERC has a great many symbols, which people won't want to see in > completion tables, etc. Longtime ERC users trying Emacs 30 for the first > time may find ERC loading whenever they start Emacs, which may not be > desirable in all Emacs sessions. And since, as mentioned, `erc-modules' > is likely among the most commonly customized of ERC's options, this may > also affect non-ERC users who perhaps only tried it once many years ago > or even folks using a shared config containing such a customization. For > these reasons, I suspect we'll start noticing ERC-related pollution in > the automated evidence collection for bug reports filed with M-x > report-emacs-bug RET once Emacs 30 goes mainstream. While we await a ruling on this... Here's an example of how `erc-modules' customizations inadvertently creep into a person's `custom-file' (for any curious future victims of this bug). From emacs -Q (using Emacs 27 as an example): 0. Connect to a server 1. M-x customize-group RET erc RET 2. Twirl open the "Erc Modules" section 3. In an ERC buffer: M-x erc-scrolltobottom-mode RET 4. In the Custom buffer, edit an option, like "Erc Email Userid" 5. C-x C-s 6. Notice that your `custom-file' now contains an entry for `erc-modules' Among those who've ever done the above or similar, only the lucky few to have since cleaned up their `custom-file' will be spared ERC invasively loading when next they fire up Emacs 30. As may be obvious, ERC is guilty of the familiar anti-pattern of mutating user options silently behind the scenes. For reasons of compatibility, we've put off addressing this until a major release. FWIW, new modules following the recommended practice of declaring themselves `local' do not exhibit this malignant behavior.