Subject: Re: bug#57503: 28.1.91; package-selected-packages should not be saved to custom-file

From: Robert Pluim <[email-masked]>
Date: Mon, 05 Sep 2022 09:37:10 +0200

>>>>> On Sun, 04 Sep 2022 12:52:47 +0200, Lars Ingebrigtsen <[email-masked]> said:

    Lars> Stefan Kangas <[email-masked]> writes:
    >> - Keep the old defcustom, and add a new multisession variable.
    >> 
    >> - If the old variable exists, use it.  Otherwise the new one.
    >> 
    >> - Add a new command that "upgrades" the variable into a multisession
    >> variable.  Make it say that it will break things on Emacs < 29.  Don't
    >> run it automatically.
    >> 
    >> - In Emacs version N (e.g., 5 major versions from now?), upgrade any
    >> user automatically, without prompting, and make the defcustom
    >> obsolete.

    Lars> Hm...  I think this has the disadvantage that it both requires user
    Lars> intervention, but in addition it'll force you into one usage pattern or
    Lars> another at some point.

    Lars> I think perhaps Stefan M's suggestion of adding a new user option to
    Lars> control the behaviour here is the only practical way forward.

Iʼm not convinced thatʼs necessary. I just did the following:

1. emacs-29+my patch, install some packages => no package-selected-packages
setting
2. emacs-28, run `package-list-packagesʼ => package-selected-packages
is populated with packages set in step 1, and saved in .emacs
3. emacs-28, install some packages
4. emacs-29+my-patch, `package-list-packagesʼ, error because it now
has a setting for package-selected-packages, which means we need to
call the multisession variable something different. I fixed that, and
the packages installed in step 3 show up [1]

So for the small number of people going backwards from emacs-29, the
problem fixes itself, and we can document that, and for people going
forwards to emacs-29 and staying there is no manual intervention
needed.

Robert

Footnotes:
[1]  We can now argue about what to call that variable. I went for
     `package-selected-packages-msʼ for now

--