Subject: bug#68660: 29.2; ELPA: Wrong type argument w. multiple maintainers in package-menu-mode

From: "J.P." <[email-masked]>
Date: Wed, 31 Jan 2024 18:52:43 -0800

Stefan Monnier <[email-masked]> writes:

>> Yes, what you describe definitely seems preferable. So, I guess
>> `:maintainer' (singular) will always be populated no matter what, for
>> the benefit of legacy clients who only speak the one. And newer clients
>> will be taught to always first check `:maintainers' (plural).
>
> I'd rather have only one of the two (either `:maintainer` or
> `:maintainers`) but not both at the same time.  The downside for those
> few multi-maintainer packages is fairly small (its only impact is that
> `describe-package` will not show the maintainers, which is what we've
> had for many years).

If we're only to choose one and also preserve compatibility, wouldn't it
have to be `:maintainers' (plural)? Trying this out on Emacs 28 with
package menu item

  _erc_ 5.6snapshot0.20240124.205832 available devel An Emacs ...

(specifically, by swapping out the `:maintainer' item in the extras slot
of ERC's `package-archive-contents' entry with an otherwise identical
`:maintainers' item), I'm able to successfully advance to the next
screen:

  Package erc is available.

       Status: Available from devel -- Install
      Archive: devel
      Version: 5.6snapshot0.20240124.205832
       Commit: b5d36efa5777e4cc6db1067d58224d676cedbdd3
      Summary: An Emacs Internet Relay Chat client
     Requires: emacs-27.1, compat-29.1.4.4
      Website: https://www.gnu.org/software/emacs/erc.html
     Keywords: irc chat client internet 
       Author: Alexander L. Belikoff <[email-masked]>
  Other versions: 5.5 (gnu), 5.5.0.29.1 (builtin).

I can only assume doing the same with the contents of erc-pkg.el in the
downloaded tarball would additionally allow me to view the refreshed
help-mode buffer after installation. I've tried simulating this by
updating ERC's entry in `package-alist'. (IIUC, instead of passing along
the `package-desc' object from `package-archive-contents',
`package-install-button-action' elects to have `describe-package-1' look
up the associated value anew in `package-alist', perhaps because it's
seen as more recent or more authoritative, having just been read in by
`package-load-descriptor' from erc-pkg.el.) In any case, this gives me:

  Package erc is installed.

       Status: Installed in ‘erc-5.6snapshot0.20240124.205832/’,
               shadowing a built-in package. Delete

If I haven't overlooked anything, then perhaps changing `:maintainer' to
`:maintainers' (plural) presents an agreeable solution.

>> Please let me know if anything is required from ERC to make this a
>> reality. And, of course, I very much appreciate your taking the time.
>
> Nothing specific on ERC's side, no.
> But patches for `elpa-admin.el` and for Emacs would be welcome
> (tho extra time would be welcome as well :-)

As far as patches go, I unfortunately remain rather uninitiated to the
mysteries of this package system and doubt I can up my game sufficiently
enough to amount to anything more than a sad annoyance. However, I can
try harassing other package.el folk to see if any among them might bend.
Thanks.