> 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.