[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Summary and next steps for (package-initialize)

From: Radon Rosborough
Subject: Re: Summary and next steps for (package-initialize)
Date: Tue, 22 Aug 2017 22:17:05 -0700

> I think I'm not a big fan of your proposal because the only problem I
> see with the status quo is that a call to package-initialize in the
> init file is required at all.

Thank you for this explanation. It is really helpful, as it helps me
see why we have been talking at cross purposes.

> I think I don't see package.el as one out of many, but rather as a
> core component of Emacs. Given this, I'm inclined to be more
> tolerant of exceptions made just for that package.

This helps too. It made me realize that package.el really is core to
Emacs, which I previously failed to see just because I don't really
like package.el as a package manager.

> I'd be fine, for example, with saving package.el's configuration in
> a separate file that gets loaded early.

In light of what I've said above, I would be fine with this too.
Specifically, if we:

* removed all traces of `package--ensure-init-file'
* moved the call to `package-initialize' from after loading the
  init-file to before loading the init-file
* loaded an optional second init-file before `package-initialize'
* made absolutely sure that it's trivial to disable package.el
  permanently and unconditionally by setting
  `package-enable-at-startup' in this second init-file

then I would be perfectly happy and would not bother anyone about this
again. I do want to raise two possible points of concern, which I
personally am fine with but maybe other people aren't:

* doing this would instantly break the configuration of everyone who
  customizes package.el or uses it in a nonstandard way -- can anyone
  think of a way to maintain some backward compatibility so Drew can
  keep his configuration working from Emacs 20 to Emacs 26? ;)
* you will get a bunch of bug reports from people trying and failing
  to customize package.el in their normal init-file, I guarantee it --
  but this could at least be minimized by inserting big flashy
  warnings into the docstrings of all the relevant variables

> That file doesn't need to be a full-fledged ELisp file. It could be
> an alist of relevant keys and values, like a dir-local file.

Bad idea. In particular, this will make it impossible to customize
`package-load-list' so that packages are loaded from package.el by
default, but can be overridden from a local checkout, which is a
pattern I've seen very frequently in the wild.

Besides, if we're going to require it to be static, why not just say
you can only customize package.el via file-local variables in the
primary init-file? (I know, I know, at least you could line-wrap
things. But still.)


Drew, Stefan, Eli -- would you be comfortable with this alternative
proposal, to add a second init-file as I've outlined above? It would
make package.el "just work" in all cases, without requiring any change
to the user's init-file, as long as users read docstrings before
customizing `package-load-list' etc., and as long as we're prepared to
sacrifice a little backwards compatibility (although maybe we can be
smart about it and make the change pretty painless).

Angelo -- ... sorry :P

          I still think that calling package-initialize in the
          init-file is "the right thing" from an architecture and
          modularity perspective, but having a second init-file may be
          a more pragmatic solution.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]