unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* use-package.el -> Emacs core
@ 2015-11-10  0:02 John Wiegley
  2015-11-10  0:14 ` Dmitry Gutov
                   ` (6 more replies)
  0 siblings, 7 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10  0:02 UTC (permalink / raw)
  To: emacs-devel

I'd like to integrate use-package.el into Emacs core, as an alternative for
package management to those who do not rely on package.el. I know Stefan had
some reservation, but I think enough people have enjoyed its utility to be
worth including.

Are there any objections to moving this into core before the 25.1 freeze?

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
@ 2015-11-10  0:14 ` Dmitry Gutov
  2015-11-10  0:31   ` John Wiegley
  2015-11-10  0:44 ` Artur Malabarba
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 95+ messages in thread
From: Dmitry Gutov @ 2015-11-10  0:14 UTC (permalink / raw)
  To: emacs-devel

On 11/10/2015 02:02 AM, John Wiegley wrote:

> Are there any objections to moving this into core before the 25.1 freeze?

Will it add a different way to install packages? Is that wise?

Were it only up to me, I'd just incorporate the features that work well 
with package.el.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:14 ` Dmitry Gutov
@ 2015-11-10  0:31   ` John Wiegley
  2015-11-10  0:40     ` Dmitry Gutov
                       ` (2 more replies)
  0 siblings, 3 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10  0:31 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: emacs-devel

>>>>> Dmitry Gutov <dgutov@yandex.ru> writes:

> Will it add a different way to install packages? Is that wise?

> Were it only up to me, I'd just incorporate the features that work well with
> package.el.

No, it does not install packages. There is a keyword, :ensure, which causes it
to use package.el to install a configured package if it is not already
present.

`use-package' is a macro to abstract a common pattern among .emacs files, such
as:

    (add-hook 'foo-init-hook 'some-function)
    (add-to-list 'auto-mode-alist '("\\.foo$" . foo-mode))
    (eval-after-load "foo-mode"
      '(progn
         (define-key foo-mode-map (kbd "C-c k") 'foo-hello)))

It abstracts the common cases I encountered in my use of 100+ Emacs packages,
and macroexpands to code that tries to minimize Emacs load time as much as
possible. It also adds features that would be cumbersome to do manually, such
as optionally installing an idle-timer so a package is always loaded if Emacs
has been idle for X seconds.

    (use-package foo-mode
      :mode "\\.foo$"
      :bind (:map foo-mode-map
             ("C-c k" . foo-hello))
      :init (add-hook 'foo-init-hook 'some-function))

There is a README with examples at:

    https://github.com/jwiegley/use-package

I also discuss it with Sacha Chua in a video:

    http://sachachua.com/blog/2015/04/john-wiegley-on-organizing-your-emacs-configuration-with-use-package/

John
    



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:31   ` John Wiegley
@ 2015-11-10  0:40     ` Dmitry Gutov
  2015-11-10  7:55     ` Oleh Krehel
  2015-11-10  8:49     ` use-package.el -> Emacs core João Távora
  2 siblings, 0 replies; 95+ messages in thread
From: Dmitry Gutov @ 2015-11-10  0:40 UTC (permalink / raw)
  To: emacs-devel

On 11/10/2015 02:31 AM, John Wiegley wrote:

> No, it does not install packages. There is a keyword, :ensure, which causes it
> to use package.el to install a configured package if it is not already
> present.

Um, yes. That part I'm aware of. :)

> `use-package' is a macro to abstract a common pattern among .emacs files, such
> as: ...

So you meant "who do not rely on package.el UI"?  That's entirely fine 
by me, I also use some of those common patterns.

Thanks.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
  2015-11-10  0:14 ` Dmitry Gutov
@ 2015-11-10  0:44 ` Artur Malabarba
  2015-11-10  1:05   ` John Wiegley
  2015-11-10  1:37 ` use-package.el -> Emacs core Ted Zlatanov
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 95+ messages in thread
From: Artur Malabarba @ 2015-11-10  0:44 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 670 bytes --]

On 10 Nov 2015 12:02 am, "John Wiegley" <jwiegley@gmail.com> wrote:
>
> I'd like to integrate use-package.el into Emacs core, as an alternative
for
> package management to those who do not rely on package.el. I know Stefan
had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.

Alternative? I was under the impression that use-package was a way of
organising your package configurations in the init file (and ensuring that
they are installed), with installation/upgrading itself still being done
via package.el.
Did I get it wrong?

I too have seen many people praise use-package, and I think it would make a
fine addition.

[-- Attachment #2: Type: text/html, Size: 820 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:44 ` Artur Malabarba
@ 2015-11-10  1:05   ` John Wiegley
  2015-11-10  1:24     ` Artur Malabarba
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10  1:05 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: emacs-devel

>>>>> Artur Malabarba <bruce.connor.am@gmail.com> writes:

> Alternative? I was under the impression that use-package was a way of
> organising your package configurations in the init file (and ensuring that
> they are installed), with installation/upgrading itself still being done via
> package.el. Did I get it wrong?

I think I said it wrong by using the words "package management":

- package.el is for installing, upgrading, and removing packages, and for
  establishing autoloads and customization access to those packages.
  use-package does none of these things, although it is able to make use
  of package.el.

- use-package is for configuration only. The stuff you'd already write in
  init.el, only more declaratively. Nor does it seek to replace M-x customize,
  since the two work together rather nicely (this is what I do).

It was my error for making them seem as though they were on the same footing.
They are almost completely orthogonal. The two can live together in perfect
harmony; or, a user who makes no use of package.el can use use-package to
clean up configuration code that doesn't fit the customization interface.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  1:05   ` John Wiegley
@ 2015-11-10  1:24     ` Artur Malabarba
  2015-11-10  1:37       ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Artur Malabarba @ 2015-11-10  1:24 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 613 bytes --]

On 10 Nov 2015 1:05 am, "John Wiegley" <jwiegley@gmail.com> wrote:
> - use-package is for configuration only. The stuff you'd already write in
>   init.el, only more declaratively.

Ok, that's what I thought. Like I said, I'm in favour.

I suggest renaming it to something that starts with `package-'
(package-config perhaps). But it's just a suggestion.

I notice it has two dependencies that are not in core though, which would
have to be shed.

If it gets added, I'll probably have a look at its internals and ask your
permission to make some changes where there might be redundancy with
package.el internals.

[-- Attachment #2: Type: text/html, Size: 798 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  1:24     ` Artur Malabarba
@ 2015-11-10  1:37       ` John Wiegley
  2015-11-10  3:20         ` Artur Malabarba
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10  1:37 UTC (permalink / raw)
  To: Artur Malabarba; +Cc: emacs-devel

>>>>> Artur Malabarba <bruce.connor.am@gmail.com> writes:

> I notice it has two dependencies that are not in core though, which would
> have to be shed.

bind-key.el would come with it, since it's a companion library. It provides a
convenience wrapper around both `define-key' and `kbd'. I suppose we ought to
discuss that separation if there are questions.

diminish.el is only loaded if available, although the fact that it's not in
core would indeed mean moving that support out of use-package and into an
external add-on. Fortunately, the use-package architecture makes this easy to
do.

I'd rather not rename to package-config, since it's not related to package.el,
and a strong association by name could get confusing.

> If it gets added, I'll probably have a look at its internals and ask your
> permission to make some changes where there might be redundancy with
> package.el internals.

Sure, though I'd be surprised if that were any code they shared.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
  2015-11-10  0:14 ` Dmitry Gutov
  2015-11-10  0:44 ` Artur Malabarba
@ 2015-11-10  1:37 ` Ted Zlatanov
  2015-11-10  8:24 ` joakim
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 95+ messages in thread
From: Ted Zlatanov @ 2015-11-10  1:37 UTC (permalink / raw)
  To: emacs-devel

On Mon, 09 Nov 2015 16:02:33 -0800 John Wiegley <jwiegley@gmail.com> wrote: 

JW> I'd like to integrate use-package.el into Emacs core, as an alternative for
JW> package management to those who do not rely on package.el. I know Stefan had
JW> some reservation, but I think enough people have enjoyed its utility to be
JW> worth including.

JW> Are there any objections to moving this into core before the 25.1 freeze?

I think it's good. The prefix makes it clear it's not an interface to
the `package-*' functions.

Ted




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  1:37       ` John Wiegley
@ 2015-11-10  3:20         ` Artur Malabarba
  2015-11-10  5:37           ` Kaushal Modi
  0 siblings, 1 reply; 95+ messages in thread
From: Artur Malabarba @ 2015-11-10  3:20 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

>> I notice it has two dependencies that are not in core though, which would
>> have to be shed.
>
> bind-key.el would come with it, since it's a companion library. It provides a
> convenience wrapper around both `define-key' and `kbd'. I suppose we ought to
> discuss that separation if there are questions.

We can also just incorporate the necessary `bind-key' functionality into
subr.el. In particular, that `bind-key*' function is something I've seen
people ask about before.

> diminish.el is only loaded if available

All good then. I was deceived by that `(diminish "0.44")' in the
Package-Requires. :-)

> I'd rather not rename to package-config, since it's not related to package.el,
> and a strong association by name could get confusing.

Good point. 👍



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  3:20         ` Artur Malabarba
@ 2015-11-10  5:37           ` Kaushal Modi
  2015-11-10  6:07             ` John Wiegley
  2015-11-10 23:27             ` Stephen Leake
  0 siblings, 2 replies; 95+ messages in thread
From: Kaushal Modi @ 2015-11-10  5:37 UTC (permalink / raw)
  To: Bruce Connor, johnw; +Cc: Emacs developers

[-- Attachment #1: Type: text/plain, Size: 981 bytes --]

I use the use-package and bind-key packages in my config.

The use-package would be nice to have in the core but I think bind-key
should not be put into the core as it is.

The primary reason is that it creates duplication and thus confusion for
new users.

For define-key, we have

(define-key MAP KEY-VECTOR COMMAND)

whereas we have

(bind-key KEY-STRING COMMAND MAP)

Notice the shuffling of arguments and difference between the way the keys
are to be represented in the argument.

I see the benefits of bind-key*, bind-keys and bind-keys*, but I believe
that that should be merged with define-key.

The describe-personal-keybindings is useful. But how will it work as
expected if packages in the core started using bind-key macros. We then
need a robust means to distinguish between the default bindings and the
bindings in user config.

I don't have a proposal for the complete solution, but these are few things
that didn't feel right to me about putting bind-keys in core.

[-- Attachment #2: Type: text/html, Size: 1175 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  5:37           ` Kaushal Modi
@ 2015-11-10  6:07             ` John Wiegley
  2015-11-10 23:27             ` Stephen Leake
  1 sibling, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10  6:07 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: Bruce Connor, Emacs developers

>>>>> Kaushal Modi <kaushal.modi@gmail.com> writes:

> For define-key, we have 
> (define-key MAP KEY-VECTOR COMMAND)
> whereas we have 
> (bind-key KEY-STRING COMMAND MAP)

Actually, it's:

    (bind-key KEY-STRING COMMAND [MAP])

Which is very close to:

    (global-set-key KEY-STRING COMMAND)

`define-key' is more familiar to developers, but I don't think it's what most
users use in their init.el when they want to bind keys.

I could see adding an optional map argument to `global-set-key', although one
of the nice things about `bind-key' is that it sets up the necessary data to
allow `describe-personal-keybindings' to work.

And then there is `bind-key*', for truly global bindings that override minor
modes; and `bind-keys', for binding many keys at once, potentially into
multiple keymaps. So there might be a good reason to introduce a new layer
with this module, specifically intended for user customization in init.el
files.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:31   ` John Wiegley
  2015-11-10  0:40     ` Dmitry Gutov
@ 2015-11-10  7:55     ` Oleh Krehel
  2015-11-10 11:52       ` Juanma Barranquero
  2015-11-10  8:49     ` use-package.el -> Emacs core João Távora
  2 siblings, 1 reply; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10  7:55 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

> `use-package' is a macro to abstract a common pattern among .emacs files, such
> as:
>
>     (add-hook 'foo-init-hook 'some-function)
>     (add-to-list 'auto-mode-alist '("\\.foo$" . foo-mode))
>     (eval-after-load "foo-mode"
>       '(progn
>          (define-key foo-mode-map (kbd "C-c k") 'foo-hello)))
>
> It abstracts the common cases I encountered in my use of 100+ Emacs packages,
> and macroexpands to code that tries to minimize Emacs load time as much as
> possible. It also adds features that would be cumbersome to do manually, such
> as optionally installing an idle-timer so a package is always loaded if Emacs
> has been idle for X seconds.
>
>     (use-package foo-mode
>       :mode "\\.foo$"
>       :bind (:map foo-mode-map
>              ("C-c k" . foo-hello))
>       :init (add-hook 'foo-init-hook 'some-function))

I have some reservations for this. While I use use-package, I started
with it long after learning basic Elisp.  Essentially, use-package is a
black box that abstracts and creates new syntax.  Which is fine for
veteran users, since they have an idea of what it does.  But I think it
might be detrimental to new Elisp users. Using the first method, they
learn what `add-hook' is, what `add-to-list' is, what keymaps are etc.
These things are useful in all kinds of places, not just in the context
of setting up packages.

Concerning bind-key: if the functionality is useful, it should be merged
into `define-key', instead of adding yet another syntax for the same
thing.

One more concern that I see is the stability of use-package API. I
wouldn't want to add logic to my config to disable the built-in
use-package and install the new version to use a new feature.  This was
the case for CEDET for a long time, and it was a headache.

Having said all that, I'm against adding use-package to the core. It
would add potential headache without adding utility, since I don't see
any code in the core benefiting from re-using use-package.  I am for
augmenting `define-key' with `bind-key' features, though.





^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
                   ` (2 preceding siblings ...)
  2015-11-10  1:37 ` use-package.el -> Emacs core Ted Zlatanov
@ 2015-11-10  8:24 ` joakim
  2015-11-11  0:29   ` Stephen Leake
  2015-11-10  8:44 ` Andreas Röhler
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 95+ messages in thread
From: joakim @ 2015-11-10  8:24 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

> I'd like to integrate use-package.el into Emacs core, as an alternative for
> package management to those who do not rely on package.el. I know Stefan had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.
>
> Are there any objections to moving this into core before the 25.1 freeze?
>
> John
>

I use req-package, https://github.com/edvorg/req-package, which is
use-package with some additional features, like logging and load order
reordering. I think use-package would be a great addition to emacs core,
for people like me that like a clear and readable emacs
configuration. (I alse use the org-babel litterate mode for the emacs
init file for the same reasons.)
-- 
Joakim Verona



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
                   ` (3 preceding siblings ...)
  2015-11-10  8:24 ` joakim
@ 2015-11-10  8:44 ` Andreas Röhler
  2015-11-10  9:29 ` Nicolas Petton
  2015-11-10 18:21 ` Stephen Leake
  6 siblings, 0 replies; 95+ messages in thread
From: Andreas Röhler @ 2015-11-10  8:44 UTC (permalink / raw)
  To: emacs-devel; +Cc: John Wiegley

  On 10.11.2015 01:02, John Wiegley wrote:
> I'd like to integrate use-package.el into Emacs core, as an alternative for
> package management to those who do not rely on package.el. I know Stefan had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.
>
> Are there any objections to moving this into core before the 25.1 freeze?
>
> John
>


Hi John,

as you know being your fan.
Nothing wrong with use-package AFAIU, but: please be careful, resist 
temptation :)

For several reasons being a maintainer implies some tragic, kind of 
offering if well-done,

all the best,

Andreas




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:31   ` John Wiegley
  2015-11-10  0:40     ` Dmitry Gutov
  2015-11-10  7:55     ` Oleh Krehel
@ 2015-11-10  8:49     ` João Távora
  2015-11-10  8:57       ` Pedro Silva
  2 siblings, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10  8:49 UTC (permalink / raw)
  To: jwiegley, Dmitry Gutov; +Cc: emacs-devel

Hi,

I'm reticent of this addition. In lisp (or anywhere else for that
matter), I don't like to learn new syntax unless the advantages are
clear. A perfect example would be cl's LOOP, which is it's own
mini-language which I've learned to love.

Of course adding use-package.el to Emacs wouldn't force me to use
it. However, as the maintainer of a few packages, I have to read users'
bug reports, and that mostly means I would have to learn
use-package.el's syntax, since users would more legitimately consider it
a proper way to install the packages I maintain.

Now, I see use-package.el as a `with-eval-after-load' replacement with
more bells and whistles. It appears to be weak in that sense: each of
those bells and whistles usually already has a nice concise way to
control in stock Emacs, so it's unfortunate that use-package.el
introduces new ones. And it doesn't even appear to save lines of
configuration code while at it, just someone shorter sexps. For example,
I don't see the benefit of replacing:

   (when window-system
     (with-eval-after-load 'foo
       ... more configuration
     ))

with

   (use-package foo
      :if window-system
      ... more configuration
      )

The generic example you gave for `foo-mode' is also not to convincing to
me. I would write it as

    (with-eval-after-load 'foo-mode
      (add-hook 'foo-init-hook 'some-function)
      (define-key foo-mode-map (kbd "C-c k") 'foo-hello))
    (add-to-list 'auto-mode-alist '("\\.foo$" . foo-mode))

Which is just as long, just as readable and less voodoo than
use-package. If I grep for "auto-mode-alist" in my configuration, I'm
sure to find who's setting it.

But perhaps I can be convinced otherwise or am missing something
fundamentally. Can you provide more examples of package configurations
where you definitely think it beats `with-eval-after-load' or other
alternatives? I'm guessing those would be examples that include
automatically installing a package (lazily?) from ELPA, but you tell me.

Thanks,
João



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  8:49     ` use-package.el -> Emacs core João Távora
@ 2015-11-10  8:57       ` Pedro Silva
  2015-11-10  9:45         ` João Távora
  0 siblings, 1 reply; 95+ messages in thread
From: Pedro Silva @ 2015-11-10  8:57 UTC (permalink / raw)
  To: emacs-devel

joaotavora@gmail.com (João Távora) writes:

> But perhaps I can be convinced otherwise or am missing something
> fundamentally. Can you provide more examples of package configurations
> where you definitely think it beats `with-eval-after-load' or other
> alternatives? I'm guessing those would be examples that include
> automatically installing a package (lazily?) from ELPA, but you tell me.

:ensure (automatic ELPA installation), :defer (lazy loading) and
:commands (autoloading) are the things I most use in `use-package'
that are not as easy to achieve with `with-eval-after-load'.

-- 
Pedro




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
                   ` (4 preceding siblings ...)
  2015-11-10  8:44 ` Andreas Röhler
@ 2015-11-10  9:29 ` Nicolas Petton
  2015-11-11  0:32   ` Stephen Leake
  2015-11-10 18:21 ` Stephen Leake
  6 siblings, 1 reply; 95+ messages in thread
From: Nicolas Petton @ 2015-11-10  9:29 UTC (permalink / raw)
  To: John Wiegley, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 451 bytes --]

John Wiegley <jwiegley@gmail.com> writes:

> I'd like to integrate use-package.el into Emacs core, as an alternative for
> package management to those who do not rely on package.el. I know Stefan had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.
>
> Are there any objections to moving this into core before the 25.1
> freeze?

That's fine with me. use-package.el is already used by many people.

Nico

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 512 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  8:57       ` Pedro Silva
@ 2015-11-10  9:45         ` João Távora
  2015-11-10 12:01           ` Phillip Lord
  0 siblings, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10  9:45 UTC (permalink / raw)
  To: Pedro Silva; +Cc: emacs-devel

Pedro Silva <psilva@pedrosilva.pt> writes:

> :ensure (automatic ELPA installation), :defer (lazy loading) and
> :commands (autoloading) are the things I most use in `use-package'
> that are not as easy to achieve with `with-eval-after-load'.

Not as easy? Sure, more characters, but basically the same complexity. I
don't think it's worth a whole new language to be able to replace:

  (package-install 'foo)

with

  :ensure t

and

  (autoload 'foo-bar 'foo)
  (autoload 'foo-baz 'foo)

with

  :commands (foo-bar foo-baz)

or even 

  (run-with-idle-timer 5 nil 'require 'foo)

with

  :defer 5

Especially given that the use-package versions force the reader (or the
grepper) to look around for context, while the regular versions don't.

But perhaps I'm misinterpreting what these directives actually do, or
perhaps you can illustrate with some snippets of your own.

João






^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  7:55     ` Oleh Krehel
@ 2015-11-10 11:52       ` Juanma Barranquero
  2015-11-10 12:10         ` Oleh Krehel
  0 siblings, 1 reply; 95+ messages in thread
From: Juanma Barranquero @ 2015-11-10 11:52 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Emacs developers, Dmitry Gutov

[-- Attachment #1: Type: text/plain, Size: 671 bytes --]

On Tue, Nov 10, 2015 at 8:55 AM, Oleh Krehel <ohwoeowho@gmail.com> wrote:

> I have some reservations for this. While I use use-package, I started
> with it long after learning basic Elisp.  Essentially, use-package is a
> black box that abstracts and creates new syntax.  Which is fine for
> veteran users, since they have an idea of what it does.  But I think it
> might be detrimental to new Elisp users. Using the first method, they
> learn what `add-hook' is, what `add-to-list' is, what keymaps are etc.
> These things are useful in all kinds of places, not just in the context
> of setting up packages.

Wouldn't that be an argument against Customize, too?

    J

[-- Attachment #2: Type: text/html, Size: 860 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  9:45         ` João Távora
@ 2015-11-10 12:01           ` Phillip Lord
  2015-11-10 13:37             ` João Távora
  0 siblings, 1 reply; 95+ messages in thread
From: Phillip Lord @ 2015-11-10 12:01 UTC (permalink / raw)
  To: João Távora; +Cc: Pedro Silva, emacs-devel

João Távora <joaotavora@gmail.com> writes:

> Pedro Silva <psilva@pedrosilva.pt> writes:
>
>> :ensure (automatic ELPA installation), :defer (lazy loading) and
>> :commands (autoloading) are the things I most use in `use-package'
>> that are not as easy to achieve with `with-eval-after-load'.
>
> Not as easy? Sure, more characters, but basically the same complexity. I
> don't think it's worth a whole new language to be able to replace:
>
>   (package-install 'foo)

> Especially given that the use-package versions force the reader (or the
> grepper) to look around for context, while the regular versions don't.

use-package introduces a single (documented) form. So, it's easy to
re-eval everything, and keeps all your code in one place. Trivial as
this sounds, this is actually pretty useful.

In your examples, you need to "progn" everything to achieve the same.


> But perhaps I'm misinterpreting what these directives actually do, or
> perhaps you can illustrate with some snippets of your own.


What use-package does is syntactic sugar for sure, but it also does add
some nice functionality. So, for example, this

(use-package foo
  :load-path "~/foo"
  :commands foo-a foo-b foo-c
  :defer 5
  )

actually does this...


(progn
  (eval-and-compile
    (push "~/foo" load-path))
  (run-with-idle-timer 5 nil #'require 'foo nil t)
  (unless
      (fboundp 'foo-a)
    (autoload #'foo-a "foo" nil t))
  (unless
      (fboundp 'foo-b)
    (autoload #'foo-b "foo" nil t))
  (unless
      (fboundp 'foo-c)
    (autoload #'foo-c "foo" nil t)))

while the apparently much simpler:

(use-package foo
  :load-path "~/foo"
  )

actually does this:

(progn
  (eval-and-compile
    (push "~/foo" load-path))
  (let
      ((now
        (current-time)))
    (message "%s..." "Loading package foo")
    (prog1
        (if
            (not
             (require 'foo nil 'noerror))
            (ignore
             (message
              (format "Could not load %s" 'foo))))
      (let
          ((elapsed
            (float-time
             (time-subtract
              (current-time)
              now))))
        (if
            (> elapsed 0.1)
            (message "%s...done (%.3fs)" "Loading package foo" elapsed)
          (message "%s...done" "Loading package foo"))))))

A useful system for working out why your .emacs is so slow to load.

*shrugs*. I really like it, and it's made my .emacs cleaner.

Phil



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 11:52       ` Juanma Barranquero
@ 2015-11-10 12:10         ` Oleh Krehel
  2015-11-10 12:23           ` Juanma Barranquero
                             ` (2 more replies)
  0 siblings, 3 replies; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10 12:10 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Dmitry Gutov, Emacs developers

Juanma Barranquero <lekktu@gmail.com> writes:

> On Tue, Nov 10, 2015 at 8:55 AM, Oleh Krehel <ohwoeowho@gmail.com> wrote:
>
>> I have some reservations for this. While I use use-package, I started
>> with it long after learning basic Elisp. Essentially, use-package is a
>> black box that abstracts and creates new syntax. Which is fine for
>> veteran users, since they have an idea of what it does. But I think it
>> might be detrimental to new Elisp users. Using the first method, they
>> learn what `add-hook' is, what `add-to-list' is, what keymaps are etc.
>> These things are useful in all kinds of places, not just in the context
>> of setting up packages.
>
> Wouldn't that be an argument against Customize, too?

Customize is for people that aren't yet ready to learn Elisp.  Once they
do, it indeed becomes redundant. I used Customize when I started out
around 5 years ago. I don't use it now, except for providing it to the
users of my packages.

Use-package is already an Elisp thing. We should encourage the core
Elisp to be simple to learn, because it is actually very simple.  Not
anymore so with macros like `cl-loop', `pcase' and `use-package'.  They
are powerful, but /they are their own language/ completely separate from
Elisp. They have their place, but in my opinion Elisp newbies should not
be encouraged to use them. And including `use-package' into the core
somehow promotes and recommends the use of it over the built-in
facilities, which are newbie-friendly, while `use-package' is not.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:10         ` Oleh Krehel
@ 2015-11-10 12:23           ` Juanma Barranquero
  2015-11-10 12:40             ` Oleh Krehel
  2015-11-10 12:42             ` Kaushal Modi
  2015-11-10 12:46           ` David Kastrup
  2015-11-10 14:58           ` Drew Adams
  2 siblings, 2 replies; 95+ messages in thread
From: Juanma Barranquero @ 2015-11-10 12:23 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Dmitry Gutov, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 999 bytes --]

On Tue, Nov 10, 2015 at 1:10 PM, Oleh Krehel <ohwoeowho@gmail.com> wrote:

> Customize is for people that aren't yet ready to learn Elisp.  Once they
> do, it indeed becomes redundant.

Then, that's an argument *for* use-package. It's for users that aren't yet
ready to learn Elisp, but who want to load a package easily from their
init.el.

use-package is syntactic sugar, yes, and as such, it's easier to use that
the "real deal". It is its own language, but that's a feature: if you're a
user not interested in learning Elisp, to borrow from Phillip's example,
certainly

(use-package foo
  :load-path "~/foo"
  :commands foo-a foo-b foo-c
  :defer 5
  )

seems much easier than

(progn
  (eval-and-compile
    (push "~/foo" load-path))
  (run-with-idle-timer 5 nil #'require 'foo nil t)
  (unless
      (fboundp 'foo-a)
    (autoload #'foo-a "foo" nil t))
  (unless
      (fboundp 'foo-b)
    (autoload #'foo-b "foo" nil t))
  (unless
      (fboundp 'foo-c)
    (autoload #'foo-c "foo" nil t)))

[-- Attachment #2: Type: text/html, Size: 3050 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:23           ` Juanma Barranquero
@ 2015-11-10 12:40             ` Oleh Krehel
  2015-11-10 12:47               ` Juanma Barranquero
  2015-11-10 14:03               ` David Kastrup
  2015-11-10 12:42             ` Kaushal Modi
  1 sibling, 2 replies; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10 12:40 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Emacs developers, Dmitry Gutov

Juanma Barranquero <lekktu@gmail.com> writes:

> On Tue, Nov 10, 2015 at 1:10 PM, Oleh Krehel <ohwoeowho@gmail.com> wrote:
>
>> Customize is for people that aren't yet ready to learn Elisp. Once they
>> do, it indeed becomes redundant.
>
> Then, that's an argument *for* use-package. It's for users that aren't yet ready to learn Elisp, but who want to load a package easily from their init.el.
>
> use-package is syntactic sugar, yes, and as such, it's easier to use that the "real deal". It is its own language, but that's a feature: if you're a user not interested in learning Elisp, to borrow from Phillip's example, certainly

I have a completely opposite opinion regarding syntactic sugar: it's
detrimental unless you know what it does. In fact, I generally dislike
it even if I know what it does (see my thread on `pcase').

A user who's copy-pasting syntactic sugar won't see the structure behind
it.  A user who's copy-pasting a bunch of `setq', `define-key' and
`add-hook' statements will eventually see the pattern and actually learn
the language.

> (use-package foo
> :load-path "~/foo"
> :commands foo-a foo-b foo-c
> :defer 5
> )
>
> seems much easier than
>
> (progn
> (eval-and-compile
> (push "~/foo" load-path))
> (run-with-idle-timer 5 nil #'require 'foo nil t)
> (unless
> (fboundp 'foo-a)
> (autoload #'foo-a "foo" nil t))
> (unless
> (fboundp 'foo-b)
> (autoload #'foo-b "foo" nil t))
> (unless
> (fboundp 'foo-c)
> (autoload #'foo-c "foo" nil t)))

The above `use-package' example essentially translates to 0 lines of
code if one uses package.el, since all commands are autoloaded
anyway. Regarding idle loading, I've found exactly one use for it - Org:
it simply doesn't pay off for the other packages.

Compare to this code, if the user decides against package.el for some reason:

(add-to-list 'load-path "~/foo")
(require 'foo)

The above 2 lines show how Emacs actually works, and are in fact very
simple. And they teach the new user `add-to-list' and `require' which
are relevant absolutely everywhere, not just in init config setups.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:23           ` Juanma Barranquero
  2015-11-10 12:40             ` Oleh Krehel
@ 2015-11-10 12:42             ` Kaushal Modi
  1 sibling, 0 replies; 95+ messages in thread
From: Kaushal Modi @ 2015-11-10 12:42 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Dmitry Gutov, Oleh Krehel, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 454 bytes --]

I'd also like to add that as use-package is a top-level form, we cannot use
edebug and other defun-specific functions on the functions defined in that
form: http://emacs.stackexchange.com/q/7643/115

I then came up with a custom solution that works for me to make edebugging
possible for such functions. If you notice, it's more like a hack. So
something need to be done to make such defun-related functions work in
use-package too, if we go that route.

[-- Attachment #2: Type: text/html, Size: 554 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:10         ` Oleh Krehel
  2015-11-10 12:23           ` Juanma Barranquero
@ 2015-11-10 12:46           ` David Kastrup
  2015-11-10 13:06             ` Oleh Krehel
  2015-11-10 13:32             ` Wolfgang Jenkner
  2015-11-10 14:58           ` Drew Adams
  2 siblings, 2 replies; 95+ messages in thread
From: David Kastrup @ 2015-11-10 12:46 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Juanma Barranquero, Emacs developers, Dmitry Gutov

Oleh Krehel <ohwoeowho@gmail.com> writes:

> Juanma Barranquero <lekktu@gmail.com> writes:
>
>> On Tue, Nov 10, 2015 at 8:55 AM, Oleh Krehel <ohwoeowho@gmail.com> wrote:
>>
>>> I have some reservations for this. While I use use-package, I started
>>> with it long after learning basic Elisp. Essentially, use-package is a
>>> black box that abstracts and creates new syntax. Which is fine for
>>> veteran users, since they have an idea of what it does. But I think it
>>> might be detrimental to new Elisp users. Using the first method, they
>>> learn what `add-hook' is, what `add-to-list' is, what keymaps are etc.
>>> These things are useful in all kinds of places, not just in the context
>>> of setting up packages.
>>
>> Wouldn't that be an argument against Customize, too?
>
> Customize is for people that aren't yet ready to learn Elisp.  Once
> they do, it indeed becomes redundant.

Nonsense.  It provides type safety and makes sure that the variables are
set in the intended way.  It also makes sure that any followup actions
necessary after setting the variables are being performed.

It's like saying lamp sockets are for people that aren't yet ready to
learn soldering.  Once they do, they indeed become redundant.

> I used Customize when I started out around 5 years ago. I don't use it
> now, except for providing it to the users of my packages.

I don't see that this makes any sense since it means you have to learn
all about the various dependencies and intricacies of every single
package you are going to use.

> Use-package is already an Elisp thing.

It's for people that aren't yet read to manage load-file.  Or something.
And Elisp is for people that aren't yet ready to learn C.

> We should encourage the core Elisp to be simple to learn, because it
> is actually very simple.  Not anymore so with macros like `cl-loop',
> `pcase' and `use-package'.  They are powerful, but /they are their own
> language/ completely separate from Elisp. They have their place, but
> in my opinion Elisp newbies should not be encouraged to use them.

Sorry, but I cannot agree at all.  That's like saying C++ users should
not learn about the standard libraries since they should rather write
their own.

> And including `use-package' into the core somehow promotes and
> recommends the use of it over the built-in facilities, which are
> newbie-friendly, while `use-package' is not.

I think you got it backwards.

-- 
David Kastrup



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:40             ` Oleh Krehel
@ 2015-11-10 12:47               ` Juanma Barranquero
  2015-11-10 15:15                 ` John Wiegley
  2015-11-10 14:03               ` David Kastrup
  1 sibling, 1 reply; 95+ messages in thread
From: Juanma Barranquero @ 2015-11-10 12:47 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Emacs developers, Dmitry Gutov

[-- Attachment #1: Type: text/plain, Size: 457 bytes --]

On Tue, Nov 10, 2015 at 1:40 PM, Oleh Krehel <ohwoeowho@gmail.com> wrote:

> I have a completely opposite opinion regarding syntactic sugar: it's
> detrimental unless you know what it does.

I think you're assuming that someone who uses such syntactic sugar will
eventually want to learn what's underneath the sugar coating. Some do, some
don't. I've had colleagues who were happy using Emacs but wouldn't want to
learn even the simplest thing about elisp.

[-- Attachment #2: Type: text/html, Size: 631 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:46           ` David Kastrup
@ 2015-11-10 13:06             ` Oleh Krehel
  2015-11-10 18:15               ` Evgeny Panasyuk
  2015-11-10 13:32             ` Wolfgang Jenkner
  1 sibling, 1 reply; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10 13:06 UTC (permalink / raw)
  To: David Kastrup; +Cc: Juanma Barranquero, Dmitry Gutov, Emacs developers

David Kastrup <dak@gnu.org> writes:

>> Customize is for people that aren't yet ready to learn Elisp.  Once
>> they do, it indeed becomes redundant.
>
> Nonsense.  It provides type safety and makes sure that the variables are
> set in the intended way.  It also makes sure that any followup actions
> necessary after setting the variables are being performed.

I meant configuring your Emacs with the Customize interface is redundant
once you know Elisp. The type safety and :set handlers are separate from
that.

I only use this thing instead of `setq' for custom vars:

(defmacro csetq (variable value)
  `(funcall (or (get ',variable 'custom-set) 'set-default) ',variable ,value))

> It's like saying lamp sockets are for people that aren't yet ready to
> learn soldering.  Once they do, they indeed become redundant.

Lamp sockets are still relevant. Calling an electrician ("M-x"
`customize-group') isn't relevant.

>> I used Customize when I started out around 5 years ago. I don't use it
>> now, except for providing it to the users of my packages.
>
> I don't see that this makes any sense since it means you have to learn
> all about the various dependencies and intricacies of every single
> package you are going to use.

Having to learn the various dependencies and intricacies of every single
package I use make perfect sense to me.

>> Use-package is already an Elisp thing.
>
> It's for people that aren't yet read to manage load-file.  Or something.
> And Elisp is for people that aren't yet ready to learn C.

Bad analogy. Elisp is for people what want to get things done faster
than with C.

>> We should encourage the core Elisp to be simple to learn, because it
>> is actually very simple.  Not anymore so with macros like `cl-loop',
>> `pcase' and `use-package'.  They are powerful, but /they are their own
>> language/ completely separate from Elisp. They have their place, but
>> in my opinion Elisp newbies should not be encouraged to use them.
>
> Sorry, but I cannot agree at all.  That's like saying C++ users should
> not learn about the standard libraries since they should rather write
> their own.

No, it's like saying that it's OK for users to write Boost template
constructs and do QT stuff without learning the basic C++ and STL.

>> And including `use-package' into the core somehow promotes and
>> recommends the use of it over the built-in facilities, which are
>> newbie-friendly, while `use-package' is not.
>
> I think you got it backwards.

Let's agree to disagree then. John asked for opinions and I gave mine.
What it boils down to is: new users should learn how to use "while"
before they use "loop". And they should be aware that even some veteran
programmers are against the use of "loop" in favor of "while"; they
should not see "while" as training wheels and "loop" as the big boy's
bike.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:46           ` David Kastrup
  2015-11-10 13:06             ` Oleh Krehel
@ 2015-11-10 13:32             ` Wolfgang Jenkner
  2015-11-10 15:08               ` Customize is only for newbies? [was: use-package.el -> Emacs core] Drew Adams
  1 sibling, 1 reply; 95+ messages in thread
From: Wolfgang Jenkner @ 2015-11-10 13:32 UTC (permalink / raw)
  To: David Kastrup
  Cc: Juanma Barranquero, Dmitry Gutov, Oleh Krehel, Emacs developers

On Tue, Nov 10 2015, David Kastrup wrote:

> It also makes sure that any followup actions
> necessary after setting the variables are being performed.

Sure, :set is kind of a custom(er) lock-in.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:01           ` Phillip Lord
@ 2015-11-10 13:37             ` João Távora
  2015-11-10 14:07               ` Oleh Krehel
                                 ` (2 more replies)
  0 siblings, 3 replies; 95+ messages in thread
From: João Távora @ 2015-11-10 13:37 UTC (permalink / raw)
  To: Phillip Lord; +Cc: Pedro Silva, emacs-devel

phillip.lord@russet.org.uk (Phillip Lord) writes:

> use-package introduces a single (documented) form. So, it's easy to
> re-eval everything, and keeps all your code in one place. Trivial as
> this sounds, this is actually pretty useful.
>
> In your examples, you need to "progn" everything to achieve the same.

Or use `eval-region'. Or eval the whole .emacs while you're at it.
>
>> But perhaps I'm misinterpreting what these directives actually do, or
>> perhaps you can illustrate with some snippets of your own.
>
> (progn
>   (eval-and-compile
>     (push "~/foo" load-path))

How pushing foo to the load-path at compile-time needed/useful for this
example?

>   (run-with-idle-timer 5 nil #'require 'foo nil t)
>   (unless
>       (fboundp 'foo-a)
>     (autoload #'foo-a "foo" nil t))

According to the `autoload' docstring:

    If FUNCTION is already defined other than as an autoload,
    this does nothing and returns nil.

So, unless I'm missing something, your example is misrepresenting the
alternative: when I asked about a fair comparison, I didn't mean a mere
macroexpansion of the `use-package' form.

>           (message "%s...done" "Loading package foo"))))))

By the way, for the pretty logging functionality, why not add something
more atomic like a `timing' macro? It could be used as your `progn'
replacement

   (with-timing "Loading bla"
     ... configure bla ...)

As well as anything else not related to packages

   (with-timing "Frankinboging fretzels" ...)

I prefer reusable components to big obscure, hard-to-debug black magic
spells.

As another drawback, if a user messes up a line in use-package (still
totally possible right?) it's much easier to catch that error in a
backtrace, or a byte-compilation log, when *not* using the syntactic
sugar.

The problem could be slightly reduced if use-package came with an edebug
spec. I don't think it does.

If the user is already writing elisp, let him learn it while he's at it.

> A useful system for working out why your .emacs is so slow to load.
>
> *shrugs*. I really like it, and it's made my .emacs cleaner.

If *you* like it and in your opinion it's cleaner then *you* really
should use it :-)

My argument is that, by adding it to Emacs, especially to the core,
you're effectively supporting another official package configuration
method, thus burdening every package maintainer with a different opinion
with the need to learn a new DSL when reading user's bug
reports. Perhaps every other package maintainer has converted already,
but at least I haven't, not yet.

João



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:40             ` Oleh Krehel
  2015-11-10 12:47               ` Juanma Barranquero
@ 2015-11-10 14:03               ` David Kastrup
  2015-11-10 14:15                 ` Oleh Krehel
  2015-11-10 14:22                 ` João Távora
  1 sibling, 2 replies; 95+ messages in thread
From: David Kastrup @ 2015-11-10 14:03 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Juanma Barranquero, Dmitry Gutov, Emacs developers

Oleh Krehel <ohwoeowho@gmail.com> writes:

> Juanma Barranquero <lekktu@gmail.com> writes:
>
>> On Tue, Nov 10, 2015 at 1:10 PM, Oleh Krehel <ohwoeowho@gmail.com> wrote:
>>
>>> Customize is for people that aren't yet ready to learn Elisp. Once they
>>> do, it indeed becomes redundant.
>>
>> Then, that's an argument *for* use-package. It's for users that
>> aren't yet ready to learn Elisp, but who want to load a package
>> easily from their init.el.
>>
>> use-package is syntactic sugar, yes, and as such, it's easier to use
>> that the "real deal". It is its own language, but that's a feature:
>> if you're a user not interested in learning Elisp, to borrow from
>> Phillip's example, certainly
>
> I have a completely opposite opinion regarding syntactic sugar: it's
> detrimental unless you know what it does. In fact, I generally dislike
> it even if I know what it does (see my thread on `pcase').
>
> A user who's copy-pasting syntactic sugar won't see the structure behind
> it.  A user who's copy-pasting a bunch of `setq', `define-key' and
> `add-hook' statements will eventually see the pattern and actually learn
> the language.

`setq' is syntactic sugar for `set' and `quote'.  `define-key' and
`add-hook' are syntactic sugar for various forms of `set'.

The whole point of not using primitives is not having to provide every
part of some pattern by hand.

-- 
David Kastrup



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 13:37             ` João Távora
@ 2015-11-10 14:07               ` Oleh Krehel
  2015-11-10 14:39               ` Nicolas Richard
  2015-11-10 17:36               ` Phillip Lord
  2 siblings, 0 replies; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10 14:07 UTC (permalink / raw)
  To: João Távora; +Cc: Pedro Silva, emacs-devel, Phillip Lord

joaotavora@gmail.com (João Távora) writes:

> By the way, for the pretty logging functionality, why not add something
> more atomic like a `timing' macro? It could be used as your `progn'
> replacement
>
>    (with-timing "Loading bla"
>      ... configure bla ...)
>
> As well as anything else not related to packages
>
>    (with-timing "Frankinboging fretzels" ...)
>
> I prefer reusable components to big obscure, hard-to-debug black magic
> spells.

I very much agree on this point. A large chunk of `use-package'
functionality is this new `with-timing' that could indeed be a reusable
component. That macro could also wrap a `condition-case' around, barfing
"errored while Frankinboging fretzels" on error.

> My argument is that, by adding it to Emacs, especially to the core,
> you're effectively supporting another official package configuration
> method, thus burdening every package maintainer with a different opinion
> with the need to learn a new DSL when reading user's bug
> reports. 

I agree on this point as well. One official way of doing things is
better than two (three even, if we include Customize). If `use-package'
is in GELPA, as the author of package "foo" I don't feed obliged to help
a user configure "foo" with `use-package': the user should know what
she's getting into.  But if `use-package' were in the core, I'd feel
that obligation, so that's more support tasks for all package authors.

> Perhaps every other package maintainer has converted already, but at
> least I haven't, not yet.

I switched to `use-package' only for the shorter autoload syntax and the
wrapped `condition-case'. If that's all it did, I see no problem with
it. However, it also includes >15 other keywords that have great
potential for misuse by inexperienced users, in my opinion.

The current status of `use-package' is perfect for me: if the user
installs it, she should take responsibility for it and not expect
support for `use-package' from third parties. However, if it becomes
official and encouraged, we might have a problem.

Additionally, `use-package' sort of cuts into the functionality of
package.el, which ideally should be a 0-config built-in utility, with
all useful commands autoloaded.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:03               ` David Kastrup
@ 2015-11-10 14:15                 ` Oleh Krehel
  2015-11-10 14:22                 ` João Távora
  1 sibling, 0 replies; 95+ messages in thread
From: Oleh Krehel @ 2015-11-10 14:15 UTC (permalink / raw)
  To: David Kastrup; +Cc: Juanma Barranquero, Emacs developers, Dmitry Gutov

David Kastrup <dak@gnu.org> writes:

> `setq' is syntactic sugar for `set' and `quote'.  `define-key' and
> `add-hook' are syntactic sugar for various forms of `set'.

`setq' is a simple and reusable abstraction (this one in particular has
survived the test of time, having been used and abused for decades), so
are `define-key' and `add-hook'.

> The whole point of not using primitives is not having to provide every
> part of some pattern by hand.

My point is that it's harmful to aggregate every single thing into one
construct, e.g:

    (use-package foo
        :setq (bar 1 baz 2 boo 3))

instead of

    (require 'foo)
    (setq bar 1)
    (setq baz 2)
    (setq boo 3)

It's like multiple inheritance vs. composition in C++: composition is
usually more clear.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:03               ` David Kastrup
  2015-11-10 14:15                 ` Oleh Krehel
@ 2015-11-10 14:22                 ` João Távora
  2015-11-10 15:17                   ` John Wiegley
  1 sibling, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10 14:22 UTC (permalink / raw)
  To: David Kastrup
  Cc: Juanma Barranquero, Emacs developers, Oleh Krehel, Dmitry Gutov

David Kastrup <dak@gnu.org> writes:

> `setq' is syntactic sugar for `set' and `quote'.  `define-key' and
> `add-hook' are syntactic sugar for various forms of `set'.
>
> The whole point of not using primitives is not having to provide every
> part of some pattern by hand.

I don't think anyone is arguing against the usefulness of macros in
general, only skeptic macros that introduce a totally new mini-language
for a lot independent functionality, most of it already user-visible and
documented in the user manual. Such is the case of `use-package'

For fairness, such is also the case of the `define-minor-mode' macro,
which is invaluable, but that is for package developers, not users, and
that makes a difference in my opinion.

João



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 13:37             ` João Távora
  2015-11-10 14:07               ` Oleh Krehel
@ 2015-11-10 14:39               ` Nicolas Richard
  2015-11-10 14:48                 ` João Távora
  2015-11-10 17:36               ` Phillip Lord
  2 siblings, 1 reply; 95+ messages in thread
From: Nicolas Richard @ 2015-11-10 14:39 UTC (permalink / raw)
  To: João Távora; +Cc: Pedro Silva, emacs-devel, Phillip Lord

joaotavora@gmail.com (João Távora) writes:

>>   (unless
>>       (fboundp 'foo-a)
>>     (autoload #'foo-a "foo" nil t))
>
> According to the `autoload' docstring:
>
>     If FUNCTION is already defined other than as an autoload,
>     this does nothing and returns nil.


IIRC in the above snippet (from the expansion of a use-package
instance), `fboundp' is mostly used as `autoloadp' to avoid overwriting
existing autloads (I guess autloadp wasn't used because it takes an
OBJECT as argument instead of a symbol).

-- 
Nico.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:39               ` Nicolas Richard
@ 2015-11-10 14:48                 ` João Távora
  2015-11-10 15:40                   ` John Wiegley
  2015-11-12 12:43                   ` Nicolas Richard
  0 siblings, 2 replies; 95+ messages in thread
From: João Távora @ 2015-11-10 14:48 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: Pedro Silva, emacs-devel, Phillip Lord

Nicolas Richard <youngfrog@members.fsf.org> writes:

> joaotavora@gmail.com (João Távora) writes:
>
>>>   (unless
>>>       (fboundp 'foo-a)
>>>     (autoload #'foo-a "foo" nil t))
>>
>> According to the `autoload' docstring:
>>
>>     If FUNCTION is already defined other than as an autoload,
>>     this does nothing and returns nil.
>
>
> IIRC in the above snippet (from the expansion of a use-package
> instance), `fboundp' is mostly used as `autoloadp' to avoid overwriting
> existing autloads (I guess autloadp wasn't used because it takes an
> OBJECT as argument instead of a symbol).

Is this useful or desirable? Doesn't this mean that making a correction
to a `use-package' instantiation and re-evaluating it will silently
produce a noop?

In the same vein, does `use-package' undo autoloads (or keybindings or
any other thing) when the directive's value changes?

João






^ permalink raw reply	[flat|nested] 95+ messages in thread

* Customize is only for newbies?   [was: use-package.el -> Emacs core]
  2015-11-10 12:10         ` Oleh Krehel
  2015-11-10 12:23           ` Juanma Barranquero
  2015-11-10 12:46           ` David Kastrup
@ 2015-11-10 14:58           ` Drew Adams
  2015-11-10 15:42             ` John Wiegley
  2 siblings, 1 reply; 95+ messages in thread
From: Drew Adams @ 2015-11-10 14:58 UTC (permalink / raw)
  To: Oleh Krehel, Juanma Barranquero; +Cc: Emacs developers, Dmitry Gutov

> Customize is for people that aren't yet ready to learn Elisp.

Wrong - if you meant "only" for such people.

Customize is for anyone who is wise enough to take advantage
of type-checking (:type), :set, :initialize, and other
Customize features.

And Customize (`defcustom') is not only the Customize UI.
It includes all of the `custom-*' and `customize-*' functions.

> Once they do, it indeed becomes redundant.

No, it ("indeed") does not.  Unless you do not consider using
any of the Lisp functions in cus-*.el as part of Customize.

Or unless you are prepared to write your own Lisp to do what
they do.  (At a certain level, all Lisp code except a very
few primitives can be called "redundant".)

It is a too common misconception (perhaps especially among
near-newbies) that Customize is only for newbies.  It's
too bad to see folks here propagate the same misconception.
That is the wrong message, not only for newbies but for
those who are no longer newbies.

Too many people think they are being Lispy by using only
`setq' to set option values in their init files (and later
they wonder why some things don't work, only to be told
about :type or about :set functions etc.).

> I used Customize when I started out around 5 years ago.
> I don't use it now, except for providing it to the
> users of my packages.

You don't use `custom-set-variables' or `custom-set-faces'
or any other `custom*' functions?

Or perhaps you use only simple options that have no :set
or :initialize triggers or other complications?

Or perhaps you don't need type-checking>  Or more likely,
perhaps the options you use do not have very complex :type
control?

Too many defcustoms are written with rudimentary :type
declarations, essentially trying to turn defcustom into
defvar.  (And this includes in the Emac core.)  Dommage.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Customize is only for newbies?   [was: use-package.el -> Emacs core]
  2015-11-10 13:32             ` Wolfgang Jenkner
@ 2015-11-10 15:08               ` Drew Adams
  2015-11-11  0:01                 ` Wolfgang Jenkner
  0 siblings, 1 reply; 95+ messages in thread
From: Drew Adams @ 2015-11-10 15:08 UTC (permalink / raw)
  To: Wolfgang Jenkner, David Kastrup
  Cc: Juanma Barranquero, Emacs developers, Oleh Krehel, Dmitry Gutov

> > It also makes sure that any followup actions
> > necessary after setting the variables are being performed.
> 
> Sure, :set is kind of a custom(er) lock-in.

Dunno whether that was supposed to be a joke.

:set is a hook for variables.  It runs code whenever
the variable is set.  That's a feature that you can
use in your programming.  It doesn't lock anyone into
anything.

We should have :set, :type etc. available for defvar
as well as defcustom, IMHO.

(Someone will no doubt chime in now about advising variables.)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 12:47               ` Juanma Barranquero
@ 2015-11-10 15:15                 ` John Wiegley
  2015-11-10 15:42                   ` Juanma Barranquero
                                     ` (2 more replies)
  0 siblings, 3 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 15:15 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Dmitry Gutov, Oleh Krehel, Emacs developers

>>>>> Juanma Barranquero <lekktu@gmail.com> writes:

> On Tue, Nov 10, 2015 at 1:40 PM, Oleh Krehel <ohwoeowho@gmail.com> wrote:
>> I have a completely opposite opinion regarding syntactic sugar: it's
>> detrimental unless you know what it does.

> I think you're assuming that someone who uses such syntactic sugar will
> eventually want to learn what's underneath the sugar coating. Some do, some
> don't. I've had colleagues who were happy using Emacs but wouldn't want to
> learn even the simplest thing about elisp.

I agree, Juanma. I see what Oleh is saying pedagogically, but there are *many*
Emacs users who will never want to know anything about Emacs Lisp. Even if
they cut&paste an `add-to-list' form from some blog post -- and even given the
obvious nature of the name -- they won't know what Lisp lists are, or why they
need to be added to, or any of the things we take for granted. They just want
their Emacs to work.

use-package.el is a valuable DSL, in my opinion, because package configuration
is the one place in Emacs where non-Lisp programmers (and people who don't
want to become programmers) are forced to use Emacs Lisp to configure Emacs in
ways not allowed by the customization interface.

To suggest that we might lose an educational opportunity because we aren't
driving them towards define-key and with-eval-after-load, is to think of Emacs
as a Lisp environment rather than a text editor. Those who are motivated will
learn what these things do anyway; those who are not just want to get stuff
done with Emacs.

To me the primary reasons for having a DSL are: It makes it easier to do the
Right Thing; there are fewer things you need to learn; it offers more targeted
error handling and reporting; and for those who will cargo cult anyway, it
makes Emacs configuration (i.e., not Lisp, but configuration) more uniform
 and approachable.

Oleh's arguments against use-package.el seems to be that it will widen the gap
between users and Lisp; I want it to narrow the gap between users and Emacs.

John

Summary of responses so far:

For (7):

- Nicolas Petton
- Joakim Verona
- Phillip Lord
- Dimtry Gutov
- Artur Malabarb
- Kaushal Modi
- Ted Zlatanov

Cautious (1):

- Andreas Röhler

Against (2):

- Oleh Krehel - It encourages people away from learning Elisp
- João Távora - Adds too many bells & whistles
- [Stefan Monnier] - It detracts from authors taking package.el more seriously (?)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:22                 ` João Távora
@ 2015-11-10 15:17                   ` John Wiegley
  2015-11-10 15:46                     ` João Távora
  2015-11-10 15:56                     ` Kaushal Modi
  0 siblings, 2 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 15:17 UTC (permalink / raw)
  To: João Távora
  Cc: Juanma Barranquero, David Kastrup, Dmitry Gutov, Oleh Krehel,
	Emacs developers

>>>>> João Távora <joaotavora@gmail.com> writes:

> I don't think anyone is arguing against the usefulness of macros in general,
> only skeptic macros that introduce a totally new mini-language for a lot
> independent functionality, most of it already user-visible and documented in
> the user manual. Such is the case of `use-package'

use-package is not aimed at replacing the Lisp skills of the members of this
list; it is also for those whose only exposure to add-hook is an opaque thing
they copied from a web page. They will never read up on what it does, and
forcing them to see it does not encourage them to become programmers.

  (use-package python-mode :load-path "site-lisp/python-mode" :mode "\\.py$")

This is also something they'll just copy and paste, maybe not even knowing
what a mode is. Compare with:

  (add-to-list 'load-path (expand-file-name "site-lisp/python-mode"
                                            user-emacs-directory))
  (autoload 'python-mode "python-mode" nil t)
  (add-to-list 'auto-mode-alist '("\\.py$" . python-mode))

"Only a mother could love that". To an Emacs Lisp expert, the latter does have
some beauty, owing to its directness, and clarity with regard to fundamental
operations. Somehow, though, I prefer the former.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:48                 ` João Távora
@ 2015-11-10 15:40                   ` John Wiegley
  2015-11-12 12:43                   ` Nicolas Richard
  1 sibling, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 15:40 UTC (permalink / raw)
  To: João Távora
  Cc: Pedro Silva, Phillip Lord, Nicolas Richard, emacs-devel

>>>>> João Távora <joaotavora@gmail.com> writes:

> In the same vein, does `use-package' undo autoloads (or keybindings or any
> other thing) when the directive's value changes?

No, it was designed with the intention that it would be executed "once" at
Emacs load time in init.el. It doesn't have features for being changed and
then re-evaluated. Suggested use would be to make the change and restart
Emacs, just to be sure that everything happens as expected.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Customize is only for newbies? [was: use-package.el -> Emacs core]
  2015-11-10 14:58           ` Drew Adams
@ 2015-11-10 15:42             ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 15:42 UTC (permalink / raw)
  To: Drew Adams
  Cc: Juanma Barranquero, Dmitry Gutov, Oleh Krehel, Emacs developers

>>>>> Drew Adams <drew.adams@oracle.com> writes:

> It is a too common misconception (perhaps especially among near-newbies)
> that Customize is only for newbies. It's too bad to see folks here propagate
> the same misconception. That is the wrong message, not only for newbies but
> for those who are no longer newbies.

Just to chime in: I use customize, love customize in fact, and try to
configure as much as I can using the customize interface. It's clear,
declarative, and gives me a visual way to browse through my settings for
various packages. It stops me from making stupid errors. I love it.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:15                 ` John Wiegley
@ 2015-11-10 15:42                   ` Juanma Barranquero
  2015-11-10 15:56                     ` Dmitry Gutov
  2015-11-11  0:37                     ` Stephen Leake
  2015-11-10 15:55                   ` João Távora
  2015-11-10 16:23                   ` Drew Adams
  2 siblings, 2 replies; 95+ messages in thread
From: Juanma Barranquero @ 2015-11-10 15:42 UTC (permalink / raw)
  To: Juanma Barranquero, Oleh Krehel, Emacs developers, Dmitry Gutov

[-- Attachment #1: Type: text/plain, Size: 227 bytes --]

On Tue, Nov 10, 2015 at 4:15 PM, John Wiegley <jwiegley@gmail.com> wrote:

> For (7):
>
> - Nicolas Petton
> - Joakim Verona
> - Phillip Lord
> - Dimtry Gutov
> - Artur Malabarb
> - Kaushal Modi
> - Ted Zlatanov

I'm for

   J

[-- Attachment #2: Type: text/html, Size: 410 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:17                   ` John Wiegley
@ 2015-11-10 15:46                     ` João Távora
  2015-11-10 18:15                       ` John Wiegley
  2015-11-10 15:56                     ` Kaushal Modi
  1 sibling, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10 15:46 UTC (permalink / raw)
  To: David Kastrup
  Cc: Juanma Barranquero, Dmitry Gutov, Oleh Krehel, Emacs developers

John Wiegley <jwiegley@gmail.com> writes:

>>>>>> João Távora <joaotavora@gmail.com> writes:
>
>> I don't think anyone is arguing against the usefulness of macros in general,
>> only skeptic macros that introduce a totally new mini-language for a lot
>> independent functionality, most of it already user-visible and documented in
>> the user manual. Such is the case of `use-package'
>
> use-package is not aimed at replacing the Lisp skills of the members of this
> list; it is also for those whose only exposure to add-hook is an opaque thing
> they copied from a web page. They will never read up on what it does, and
> forcing them to see it does not encourage them to become programmers.
>
>   (use-package python-mode :load-path "site-lisp/python-mode" :mode "\\.py$")
>
> This is also something they'll just copy and paste, maybe not even knowing
> what a mode is. Compare with:
>
>   (add-to-list 'load-path (expand-file-name "site-lisp/python-mode"
>                                             user-emacs-directory))
>   (autoload 'python-mode "python-mode" nil t)
>   (add-to-list 'auto-mode-alist '("\\.py$" . python-mode))

But, if using package.el (or el-get), I don't need to write this, right? It's
already setup by python.el and by whatever method I used to install it.

For this simple example, doesn't `package-install' do exactly the same
thing? Why should we have a new way to solve the same problem? 

Can we have an example of real-world third-party emacs packages (perhaps
one in (m)ELPA and another one not on any package repository) and a fair
comparison of the different alternatives there are for setting it up? I
haven't seen any convincing examples, but I'm sure you can come up with
some.

I can help include other third-party alternatives like `el-get' for
instance in that comparison.

I think this is what we need before coming to a more objective
conclusion regarding usefulness.

Regarding functionality, correctness and the needs for documenting such
a high-profile feature in the user manual, that's a whole different
matter.

> "Only a mother could love that". To an Emacs Lisp expert, the latter does have
> some beauty, owing to its directness, and clarity with regard to fundamental
> operations. Somehow, though, I prefer the former.

Then by all means use it :). But should I have to learn it too?

Do you see my point about the impact that endorsing (another) package
installation/configuration method has for package maintainers?

Note that up until now I'm not talking, as others are, about "confusing"
new users. That is quite hard to measure or estimate. I can only
conjecture that some people are more attracted to the "single form"
aspect of it than to its particular mini-language. I know I am. And
someone mentioned bind-key's advantages and the logging also looks like
a nice feature.

In this sense, the particular merits of each particular feature could be
used to contribute to improving existing functionality, or to add new
functionality that helps everybody, not just fans of
use-package. Wouldn't that satisfy you? Wouldn't that be easier than
introducing and documenting a whole new way of configuring packages,
something that is a super-central pillar of Emacs?

João












^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:15                 ` John Wiegley
  2015-11-10 15:42                   ` Juanma Barranquero
@ 2015-11-10 15:55                   ` João Távora
  2015-11-10 16:08                     ` John Wiegley
  2015-11-10 16:23                   ` Drew Adams
  2 siblings, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10 15:55 UTC (permalink / raw)
  To: Juanma Barranquero, Oleh Krehel, Emacs developers, Dmitry Gutov

On Tue, Nov 10, 2015 at 3:15 PM, John Wiegley <jwiegley@gmail.com> wrote:

> Against (2):
>
> - Oleh Krehel - It encourages people away from learning Elisp
> - João Távora - Adds too many bells & whistles
> - [Stefan Monnier] - It detracts from authors taking package.el more seriously (?)

I missed the recent changes in emacs-devel regarding maintainership. I
understand
you, John, are the head maintainer, but has emacs-devel moved to a
"vote" system?

Also "adds too many bells & whistles" is not a good summary of my
opinion. I'm not even
sure I am "against it". I haven't seen any fair comparisons. Basically
"wants to see
fair comparisons between different alternatives" would be a more
objective summary, if
such a thing is needed

-- 
João Távora



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:17                   ` John Wiegley
  2015-11-10 15:46                     ` João Távora
@ 2015-11-10 15:56                     ` Kaushal Modi
  2015-11-10 18:20                       ` John Wiegley
  1 sibling, 1 reply; 95+ messages in thread
From: Kaushal Modi @ 2015-11-10 15:56 UTC (permalink / raw)
  To: João Távora, David Kastrup, Juanma Barranquero,
	Emacs developers, Oleh Krehel, Dmitry Gutov

I would also fit in the cautious category, leaning towards against
(see below for what I mean).

My biggest concern is the duplication and confusion for end-user code.
define-key vs bind-key. As João mentioned in a different context, I
feel this kind of syntactic sugar is probably not OK for end-user
code; providing many options increases the complexity when debugging
code for the user and the maintainer.

My suggestion would be to first merge bind-key into define-key and
sister defuns/macros. If that is feasible, then we can think if
use-package can be merged.

Biggest concerns with bind-key

(1) Plain bind-key macro is not very much different for define-key or
global-set key. I believe its addition is not necessary in the core.
(2) bind-key*, bind-keys, bind-keys* would be good additions but
should they be refactored as define-key* (while retaining the original
define-key arg order) + global-set-key*, define-keys and define-keys*?
(3) How would describe-personal-bindings work? Because if bind-key is
made part of the core, we cannot control which internal package makes
use of it. Write now the only way we know that the user
added/redefined a key is if they made use of one of the bind-key
macros. That luxury will go away once it is part of the core.

About use-package: I also have a opinion that the user will understand
less of how requires, autoloads, eval-after-loads and idle timers work
if they start using use-package as the first thing.

Until we have a solid solution for the above, my vote is against for
both bind-key and use-package.

With that said, would adding bind-key and use-package to GNU Elpa be a
better option?

If we do that,
- There is no concern of duplication and confusion among users that I
mentioned above.
- Maintainers do not have to worry about the use/debug of
use-package+bind-key in the core packages.
- When helping out users debug something, the instructions for
defining keys are pretty consistent: either define-key or
global-set-key (usually the latter) vs the options of
define-key/global-set-key/bind-key/bind-key*/bind-keys/bind-keys*
- Also only the users who know what they are doing would install these packages.
- use-package + bind-key would still reach a wider user-base as not
all users add Melpa to package-archives



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:42                   ` Juanma Barranquero
@ 2015-11-10 15:56                     ` Dmitry Gutov
  2015-11-11  0:37                     ` Stephen Leake
  1 sibling, 0 replies; 95+ messages in thread
From: Dmitry Gutov @ 2015-11-10 15:56 UTC (permalink / raw)
  To: Juanma Barranquero, Oleh Krehel, Emacs developers

On 11/10/2015 05:42 PM, Juanma Barranquero wrote:

>  > For (7):
>  >
>  > - Nicolas Petton
>  > - Joakim Verona
>  > - Phillip Lord
>  > - Dimtry Gutov
>  > - Artur Malabarb
>  > - Kaushal Modi
>  > - Ted Zlatanov

I simply do not mind (too much). But it can go into GNU ELPA just as 
well, as far as I'm concerned.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:55                   ` João Távora
@ 2015-11-10 16:08                     ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 16:08 UTC (permalink / raw)
  To: João Távora
  Cc: Juanma Barranquero, Dmitry Gutov, Oleh Krehel, Emacs developers

>>>>> João Távora <joaotavora@gmail.com> writes:

> I missed the recent changes in emacs-devel regarding maintainership. I
> understand you, John, are the head maintainer, but has emacs-devel moved to
> a "vote" system?

emacs-devel hasn't moved to a vote system, but I prefer to rule by consensus
when feasible. People have a lot of experience and expertise that I do not,
so I want to gather feedback before committing anything on this scale.

> Also "adds too many bells & whistles" is not a good summary of my opinion.
> I'm not even sure I am "against it". I haven't seen any fair comparisons.
> Basically "wants to see fair comparisons between different alternatives"
> would be a more objective summary, if such a thing is needed

Yes, we do need this summary. I'll craft a proposal for the Emacs Wiki, then,
as the way to move forward.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* RE: use-package.el -> Emacs core
  2015-11-10 15:15                 ` John Wiegley
  2015-11-10 15:42                   ` Juanma Barranquero
  2015-11-10 15:55                   ` João Távora
@ 2015-11-10 16:23                   ` Drew Adams
  2 siblings, 0 replies; 95+ messages in thread
From: Drew Adams @ 2015-11-10 16:23 UTC (permalink / raw)
  To: John Wiegley, Juanma Barranquero
  Cc: Emacs developers, Oleh Krehel, Dmitry Gutov

> package configuration is the one place in Emacs where non-Lisp
> programmers (and people who don't want to become programmers)
> are forced to use Emacs Lisp to configure Emacs in
> ways not allowed by the customization interface.

Wrong, in two ways:

1. No one is required to use packages, AFAIK.

2. Binding keys requires Lisp.  The Customize UI is not
   sufficient.   (This is unfortunate - there should be
   a reasonable Customize UI for key bindings.)

   (Of course, no one is required to bind keys either.)


---- OT ----

FWIW, I use this to let users use Customize to bind keys.
I don't claim it is ideal.  Just one attempt to provide
something.

(define-widget 'icicle-key-definition 'lazy
  "Key definition type for Icicle mode keys.
A list of three components: KEY, COMMAND, CONDITION, that represents
an `icicle-mode-map' binding of COMMAND according to KEY, if CONDITION
evaluates to non-nil.

KEY is either a key sequence (string or vector) or a command.
COMMAND is a command.
CONDITION is a sexp.

If KEY is a command, then the binding represented is its remapping to
COMMAND."
  :indent 1 :offset 0 :tag ""
  :type
  '(list
    (choice
     (key-sequence :tag "Key" :value [ignore])
     ;; Use `symbolp' instead of `commandp', in case the
     ;; library defining the command is not loaded.
     (restricted-sexp :tag "Command to remap"
      :match-alternatives (symbolp) :value ignore))
     ;; Use `symbolp' instead of `commandp'...
    (restricted-sexp :tag "Command"
     :match-alternatives (symbolp) :value ignore)
    (sexp :tag "Condition")))

Example:

(defcustom foo
  `((,(kbd "C-x m")       alpha    t)
    (,(kbd "C-x C-m -")   beta     t)
    (,(kbd "C-x C-m +")   gamma    (require 'toto nil t))
    (,(kbd "C-x v -")     delta    t))
  "*List of key bindings for blah..."
  :type '(repeat icicle-key-definition) :group 'some-group)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 13:37             ` João Távora
  2015-11-10 14:07               ` Oleh Krehel
  2015-11-10 14:39               ` Nicolas Richard
@ 2015-11-10 17:36               ` Phillip Lord
  2 siblings, 0 replies; 95+ messages in thread
From: Phillip Lord @ 2015-11-10 17:36 UTC (permalink / raw)
  To: João Távora; +Cc: Pedro Silva, emacs-devel

João Távora <joaotavora@gmail.com> writes:

> phillip.lord@russet.org.uk (Phillip Lord) writes:
>
>> use-package introduces a single (documented) form. So, it's easy to
>> re-eval everything, and keeps all your code in one place. Trivial as
>> this sounds, this is actually pretty useful.
>>
>> In your examples, you need to "progn" everything to achieve the same.
>
> Or use `eval-region'. Or eval the whole .emacs while you're at it.

The first is error prone, the second assumes your entire .emacs is
idempotent.


> So, unless I'm missing something, your example is misrepresenting the
> alternative: when I asked about a fair comparison, I didn't mean a mere
> macroexpansion of the `use-package' form.

The point is that the two forms have quite different expansions, despite
containing quite overlapping arguments.


>>           (message "%s...done" "Loading package foo"))))))
>
> By the way, for the pretty logging functionality, why not add something
> more atomic like a `timing' macro? It could be used as your `progn'
> replacement
>
>    (with-timing "Loading bla"
>      ... configure bla ...)
>
> As well as anything else not related to packages
>
>    (with-timing "Frankinboging fretzels" ...)
>
> I prefer reusable components to big obscure, hard-to-debug black magic
> spells.

That would be nice, yes, and would be a valuable change, as the
with-timing could be turned on and off in a uniform way.

> As another drawback, if a user messes up a line in use-package (still
> totally possible right?) it's much easier to catch that error in a
> backtrace, or a byte-compilation log, when *not* using the syntactic
> sugar.

Yes. Although, the ability to turn lazy loading (with defer) on and off
is a big help in debugging .emacs files. Still use-package now has some
nice error handling. You can't use invalid keyword any more. I've also
found the clean mechanism for disabling all configuration for a package
at once to be helpful.


> The problem could be slightly reduced if use-package came with an edebug
> spec. I don't think it does.

That would be useful, but only so useful. In practice, edebug is not, in
my experience, enormously useful in debugging .emacs files.


>> A useful system for working out why your .emacs is so slow to load.
>>
>> *shrugs*. I really like it, and it's made my .emacs cleaner.
>
> If *you* like it and in your opinion it's cleaner then *you* really
> should use it :-)

I do.


> My argument is that, by adding it to Emacs, especially to the core,
> you're effectively supporting another official package configuration
> method, thus burdening every package maintainer with a different opinion
> with the need to learn a new DSL when reading user's bug
> reports. Perhaps every other package maintainer has converted already,
> but at least I haven't, not yet.

Yes, I agree. On the flip-side, you are removing the burden of bootstrap
problem that use-package has. I use it to ensure that all the packages I
use are installed, but I have to install it with a different technique
(I call package directly). I think that the bootstrap burden is a
sensible justification for keeping use-package in core.

Phil




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:46                     ` João Távora
@ 2015-11-10 18:15                       ` John Wiegley
  2015-11-10 19:32                         ` João Távora
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10 18:15 UTC (permalink / raw)
  To: João Távora
  Cc: Juanma Barranquero, David Kastrup, Emacs developers, Oleh Krehel,
	Dmitry Gutov

>>>>> João Távora <joaotavora@gmail.com> writes:

>> (use-package python-mode :load-path "site-lisp/python-mode" :mode "\\.py$")

> But, if using package.el (or el-get), I don't need to write this, right?
> It's already setup by python.el and by whatever method I used to install it.

Correct. In fact, I'd _prefer_ it if the user didn't have to touch use-package
at all, and could get by with package.el and customize. use-package is the
"next step", after those two.

> Can we have an example of real-world third-party emacs packages (perhaps one
> in (m)ELPA and another one not on any package repository) and a fair
> comparison of the different alternatives there are for setting it up? I
> haven't seen any convincing examples, but I'm sure you can come up with
> some.
> 
> I can help include other third-party alternatives like `el-get' for instance
> in that comparison.

The only alternatives we need to consider right now is with and without
use-package.el -- for details not taken care of by package.el. el-get is
neither in core nor ELPA, so that knowledge doesn't help this discussion.

> Then by all means use it :). But should I have to learn it too?

Not necessarily. There are plenty of areas of Emacs that you don't have to
learn, but that doesn't prohibit them from being in Emacs. If you see a bug
dealing with use-package and don't want to handle it, don't.

> In this sense, the particular merits of each particular feature could be
> used to contribute to improving existing functionality, or to add new
> functionality that helps everybody, not just fans of use-package. Wouldn't
> that satisfy you? Wouldn't that be easier than introducing and documenting a
> whole new way of configuring packages, something that is a super-central
> pillar of Emacs?

It's not a "new way" of configuring packages. It's a WAY period. The
alternative, beyond package and customize, is to learn enough Emacs Lisp to
manually configure the package yourself. This is beyond many users' comfort
area, as I've learned from helping people with their Emacs setups.

I do want use-package in core, although it should probably be in ELPA for
25.1, until we flesh out what will happen to bind-key, a pillar feature. It
should also be documented as an official way of handling more complex
configuration scenarios. Such documentation would also, to answer Oleh's
concern, reference the various Emacs Lisp topics one would need to learn to
understand the logic beneath the sugar.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 13:06             ` Oleh Krehel
@ 2015-11-10 18:15               ` Evgeny Panasyuk
  2015-11-10 18:31                 ` Alan Mackenzie
  0 siblings, 1 reply; 95+ messages in thread
From: Evgeny Panasyuk @ 2015-11-10 18:15 UTC (permalink / raw)
  To: emacs-devel

10.11.2015 16:06, Oleh Krehel:

>>> We should encourage the core Elisp to be simple to learn, because it
>>> is actually very simple.  Not anymore so with macros like `cl-loop',
>>> `pcase' and `use-package'.  They are powerful, but /they are their own
>>> language/ completely separate from Elisp. They have their place, but
>>> in my opinion Elisp newbies should not be encouraged to use them.
>>
>> Sorry, but I cannot agree at all.  That's like saying C++ users should
>> not learn about the standard libraries since they should rather write
>> their own.
>
> No, it's like saying that it's OK for users to write Boost template
> constructs and do QT stuff without learning the basic C++ and STL.

It is OK to use Boost.Function or Boost.Spirit before learning every 
trick used inside. Yes, you have to read their documentation, but the 
same applies "normal/usual" libraries.
Another example is Boost.Preprocessor - it provides high level interface 
and uses a lot of tricks to make it portable across very different 
(buggy) preprocessor implementations - but you can successfully use it 
without knowing every internal trick and detail.




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:56                     ` Kaushal Modi
@ 2015-11-10 18:20                       ` John Wiegley
  2015-11-10 18:32                         ` Drew Adams
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10 18:20 UTC (permalink / raw)
  To: Kaushal Modi
  Cc: David Kastrup, Juanma Barranquero, Emacs developers, Oleh Krehel,
	Dmitry Gutov, João Távora

>>>>> Kaushal Modi <kaushal.modi@gmail.com> writes:

> My biggest concern is the duplication and confusion for end-user code.
> define-key vs bind-key. As João mentioned in a different context, I feel
> this kind of syntactic sugar is probably not OK for end-user code; providing
> many options increases the complexity when debugging code for the user and
> the maintainer.

`define-key' is not really an end-user function, as I've met countless people
who have never even heard of it. `global-set-key' is much more user-facing,
and I could see merging `bind-key' into `global-set-key'.

> My suggestion would be to first merge bind-key into define-key and sister
> defuns/macros. If that is feasible, then we can think if use-package can be
> merged.

I don't see a need for that much caution. The two can proceed in parallel.
use-package.el should go into the ELPA-subset-that-comes-with-Emacs today, and
then receive official blessing and documentation as an announced feature in
25.2.

> About use-package: I also have a opinion that the user will understand less
> of how requires, autoloads, eval-after-loads and idle timers work if they
> start using use-package as the first thing.

Yes! That is the *point*. Emacs is not just for Lisp programmers.

> With that said, would adding bind-key and use-package to GNU Elpa be a
> better option?

Certainly a good starting place, as long as it's available in the tarball so
that it's immediately available, and users don't have to go through some other
configuration work to start using it.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
                   ` (5 preceding siblings ...)
  2015-11-10  9:29 ` Nicolas Petton
@ 2015-11-10 18:21 ` Stephen Leake
  2015-11-10 18:34   ` John Wiegley
  6 siblings, 1 reply; 95+ messages in thread
From: Stephen Leake @ 2015-11-10 18:21 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

> I'd like to integrate use-package.el into Emacs core, as an alternative for
> package management to those who do not rely on package.el. I know Stefan had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.
>
> Are there any objections to moving this into core before the 25.1 freeze?

What is the rationale for moving this to core instead of Gnu ELPA?

To me, this looks like a good ELPA package; no other core code will rely
on it, only some users want it.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:15               ` Evgeny Panasyuk
@ 2015-11-10 18:31                 ` Alan Mackenzie
  0 siblings, 0 replies; 95+ messages in thread
From: Alan Mackenzie @ 2015-11-10 18:31 UTC (permalink / raw)
  To: Evgeny Panasyuk; +Cc: emacs-tangents, emacs-devel

[ Mail-Followup-To: set ]

On Tue, Nov 10, 2015 at 09:15:51PM +0300, Evgeny Panasyuk wrote:
> 10.11.2015 16:06, Oleh Krehel:

> >>> We should encourage the core Elisp to be simple to learn, because it
> >>> is actually very simple.  Not anymore so with macros like `cl-loop',
> >>> `pcase' and `use-package'.  They are powerful, but /they are their own
> >>> language/ completely separate from Elisp. They have their place, but
> >>> in my opinion Elisp newbies should not be encouraged to use them.

> >> Sorry, but I cannot agree at all.  That's like saying C++ users should
> >> not learn about the standard libraries since they should rather write
> >> their own.

> > No, it's like saying that it's OK for users to write Boost template
> > constructs and do QT stuff without learning the basic C++ and STL.

> It is OK to use Boost.Function or Boost.Spirit before learning every 
> trick used inside. Yes, you have to read their documentation, but the 
> same applies "normal/usual" libraries.
> Another example is Boost.Preprocessor - it provides high level interface 
> and uses a lot of tricks to make it portable across very different 
> (buggy) preprocessor implementations - but you can successfully use it 
> without knowing every internal trick and detail.

I think this part of the thread, although interesting, no longer has
anything to do with Emacs.  Therefore it is a prime example of what
should move to emacs-tangents@gnu.org.

I have attempted to direct follow ups there.  This is something of an
experiment.

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 95+ messages in thread

* RE: use-package.el -> Emacs core
  2015-11-10 18:20                       ` John Wiegley
@ 2015-11-10 18:32                         ` Drew Adams
  2015-11-10 18:38                           ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Drew Adams @ 2015-11-10 18:32 UTC (permalink / raw)
  To: John Wiegley, Kaushal Modi
  Cc: David Kastrup, Juanma Barranquero, Emacs developers,
	João Távora, Dmitry Gutov, Oleh Krehel

> `define-key' is not really an end-user function, 

Until/unless we have an alternative that is more "end-user", it
definitely _is_ an end-user function, and the only one we offer,
for keys on maps other than `global-map'.

End users often want/need to add or change a key binding in
a particular keymap.  Questions of how to do that are FAQ.

But yes, `global-set-key' is also a command; `define-key' is not.

> as I've met countless people who have never even heard of it.

That means nothing in this regard.  There are countless people,
including countless Emacs users, who have never heard of plenty
of end-user features.  There are probably countless such who
have never heard of `M-x' or `C-h f' or even `C-h C-h'...

> `global-set-key' is much more user-facing,

Only because (1) users more commonly add/change global bindings
and (2) it is also a command.

But both are "end-user functions" and "user-facing".  (That
doesn't mean that something better cannot be found for end
users to use.)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:21 ` Stephen Leake
@ 2015-11-10 18:34   ` John Wiegley
  2015-11-10 19:54     ` Dmitry Gutov
  2015-11-11  0:04     ` Stephen Leake
  0 siblings, 2 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 18:34 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes:

> What is the rationale for moving this to core instead of Gnu ELPA?

Well, it will be maintained by a core developer. :) It would also be in the
Emacs manual, and blessed as an official method for declaring complex package
configuration.

Further, I wouldn't want it changing on users as ELPA updates. Once a user
downloads Emacs X.Y and reads the manual on how to write such configurations,
the information should remain true until Emacs X.Z.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:32                         ` Drew Adams
@ 2015-11-10 18:38                           ` John Wiegley
  2015-11-10 18:52                             ` Kaushal Modi
  2015-11-10 19:24                             ` Drew Adams
  0 siblings, 2 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 18:38 UTC (permalink / raw)
  To: Drew Adams
  Cc: David Kastrup, Juanma Barranquero, Kaushal Modi, Emacs developers,
	Oleh Krehel, Dmitry Gutov, João Távora

>>>>> Drew Adams <drew.adams@oracle.com> writes:

> End users often want/need to add or change a key binding in
> a particular keymap.  Questions of how to do that are FAQ.

> But yes, `global-set-key' is also a command; `define-key' is not.

Yep, enriching global-set-key to take on the role of bind-key will mean
expanding it to handle keymaps, and this would make it the "Right Way" for end
users to modify their keybindings.

Core Emacs code should always use define-key, so that global-set-key bindings
can appear in the personal keybindings list.

>> as I've met countless people who have never even heard of it.

> That means nothing in this regard. There are countless people, including
> countless Emacs users, who have never heard of plenty of end-user features.
> There are probably countless such who have never heard of `M-x' or `C-h f'
> or even `C-h C-h'...

It means something to me, Drew, and I'm the one acting on behalf of those
users.

> But both are "end-user functions" and "user-facing".  (That
> doesn't mean that something better cannot be found for end
> users to use.)

I think that moving define-key to an internal/programmatic mechanism, and
enriching global-set-key toward an external/user mechanism, with all the
features of bind-key, is the solution we both want.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:38                           ` John Wiegley
@ 2015-11-10 18:52                             ` Kaushal Modi
  2015-11-10 18:55                               ` John Wiegley
  2015-11-10 19:24                             ` Drew Adams
  1 sibling, 1 reply; 95+ messages in thread
From: Kaushal Modi @ 2015-11-10 18:52 UTC (permalink / raw)
  To: Drew Adams, Kaushal Modi, David Kastrup, Juanma Barranquero,
	Emacs developers, Oleh Krehel, Dmitry Gutov,
	João Távora

> Yep, enriching global-set-key to take on the role of bind-key will mean
> expanding it to handle keymaps, and this would make it the "Right Way" for end
> users to modify their keybindings.

But then wouldn't global-set-key become a misnomer? global-set-key is
to set bindings only in the global-map.
Should `define-key` be enriched instead?



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:52                             ` Kaushal Modi
@ 2015-11-10 18:55                               ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 18:55 UTC (permalink / raw)
  To: Kaushal Modi
  Cc: David Kastrup, Juanma Barranquero, Emacs developers, Oleh Krehel,
	Dmitry Gutov, Drew Adams, João Távora

>>>>> Kaushal Modi <kaushal.modi@gmail.com> writes:

> But then wouldn't global-set-key become a misnomer? global-set-key is to set
> bindings only in the global-map. Should `define-key` be enriched instead?

I'd like to rename it to "set-key", with global-set-key as an alias.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* RE: use-package.el -> Emacs core
  2015-11-10 18:38                           ` John Wiegley
  2015-11-10 18:52                             ` Kaushal Modi
@ 2015-11-10 19:24                             ` Drew Adams
  2015-11-10 19:35                               ` John Wiegley
  1 sibling, 1 reply; 95+ messages in thread
From: Drew Adams @ 2015-11-10 19:24 UTC (permalink / raw)
  To: John Wiegley
  Cc: David Kastrup, Juanma Barranquero, Kaushal Modi, Emacs developers,
	Oleh Krehel, Dmitry Gutov, João Távora

> >> `define-key' is not really an end-user function,
> >> ...
> >> as I've met countless people who have never even heard of it.
> 
> > That means nothing in this regard. There are countless people,
> > including countless Emacs users, who have never heard of plenty
> > of end-user features.  There are probably countless such who
> > have never heard of `M-x' or `C-h f' or even `C-h C-h'...
> 
> It means something to me, Drew, and I'm the one acting on behalf
> of those users.

Sure, but it's not an argument that just _because_ some end users
are unaware of something that is used by other end users (especially
if there is no alternative to using that something) it _follows_
that that thing is not "end-user".  That's a phony argument.

`define-key' is "end-user" because end users sometimes want/need
to use keymaps other than `global-map', and it is their only way
to do that.  It might not be "end-user" enough for you, but that
is something different.

It is only the argument that I find fault with, not the attempt
to come up with something better or more end-userish.

> > But both are "end-user functions" and "user-facing".  (That
> > doesn't mean that something better cannot be found for end
> > users to use.)
> 
> I think that moving define-key to an internal/programmatic mechanism, and
> enriching global-set-key toward an external/user mechanism, with all the
> features of bind-key, is the solution we both want.

That's not a solution that I proposed or necessarily want.
Just as I have no problem with end users using `setq', I have
no problem with them using `define-key'.

That doesn't mean that I oppose giving them something better
as well (for both `setq' and `define-key').  But that does
not imply "moving define-key to an internal/programmatic
mechanism" (whatever you might mean by that).

FWIW, I also object to some kind of definite line, dividing
non-Lisp Emacs users from "internal/programmatic mechanisms"
and Lisp.  There is naturally a spectrum of Emacs usage that
involves different degrees of using Lisp.  And that's a good
thing.  All kinds of Emacs user are welcome.

Attempts to provide non-Lisp ways to do things can be helpful.
(They are not always/necessarily helpful, however.)  But in
general my attitude is that Emacs _is_ Elisp - Emacs is a Lisp
environment.  That is what makes Emacs different and specially
useful.

It is a mistake to draw a hard line between Emacs "end use"
and Lisp.  Lisp vastly increases one's use of Emacs.  Without
some use of Lisp, you are not really taking advantage of Emacs.
You might even say that you are not _really_ using it.

We should, yes, cater to helping novice users who do not
know Lisp.  But we should also encourage the use of Lisp
with Emacs, not discourage it.  You don't need Lisp to
start using Emacs.  But if you really want to use Emacs
then you will want to learn some Lisp.  That should not
be because you _have to_ learn it, but because you can
do so much more with Emacs if you do.

Lack of Lisp knowledge should not be an unnecessary obstacle
to using basic Emacs features.  But we should not hide Lisp
from users, as something that isn't helpful to them or
something they really shouldn't bother with.

The other aspect of not having a dividing line between
internal/programmer and external/end-user is that this is
what free software is about: users can and do dive into
whatever level of the "internals" - the source code - they
feel like.  And they are not discouraged from doing so -
quite the contrary.

Users _are_ developers in this context, even just by
suggesting things that can affect them directly, but also
by, themselves, getting involved with Lisp and coming up
with other ways to do things.  GNU Emacs has a privileged
role to play in this regard.  It is the use-it, customize-it,
fiddle-with-it, extend-it end-user application par excellence.

(Just one opinion.)

> I'm the one acting on behalf of those users.
  ^^^^^^^^^^^

You are not the only one.  Lots of us here keep those
users in mind and try to act on their behalf.  I'm glad
you do too.  Welcome aboard. ;-)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:15                       ` John Wiegley
@ 2015-11-10 19:32                         ` João Távora
  2015-11-10 19:47                           ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: João Távora @ 2015-11-10 19:32 UTC (permalink / raw)
  To: David Kastrup
  Cc: Juanma Barranquero, Emacs developers, Oleh Krehel, Dmitry Gutov

John Wiegley <jwiegley@gmail.com> writes:
>>> (use-package python-mode :load-path "site-lisp/python-mode" :mode "\\.py$")
>
>> But, if using package.el (or el-get), I don't need to write this, right?
>> It's already setup by python.el and by whatever method I used to install it.
>
> Correct. In fact, I'd _prefer_ it if the user didn't have to touch use-package
> at all, and could get by with package.el and customize. use-package is the
> "next step", after those two.

Righto. So after having agreed that `python.el' is not an ideal
demonstration of the potential of use-package, in fact it's useless in
that one, can you give some better examples?

> The only alternatives we need to consider right now is with and without
> use-package.el -- for details not taken care of by package.el. el-get is
> neither in core nor ELPA, so that knowledge doesn't help this
> discussion.

But aren't we discussing the potential installation in Emacs of *a* new
tool to ease the installation and the configuration of package? If
el-get is such a tool, why shouldn't it be included in this discussion?

Here's a very simple example: here's a way to configure markdown-mode

   (package-install 'markdown-mode)
   (with-eval-after-load 'markdown-mode
     (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))

Here's a completely different way using el-get (actually, untested and I
suspect there's a simpler way, but I think it does what I want)

   (add-to-list 'el-get-sources
                '(:name 'markdown-mode
                  :after (modify-syntax-entry ?` "\"" markdown-mode-syntax-table)))
   (el-get 'sync 'markdown-mode)

And, for completeness, here's the package.el-less way for people who
downloaded it separately?

   (add-to-list 'load-path "path/to/markdown-mode")
   (require 'markdown-mode-autoloads)
   (with-eval-after-load 'markdown-mode
     (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))

How would use-package handle this simple example? 

>> Then by all means use it :). But should I have to learn it too?
> Not necessarily. There are plenty of areas of Emacs that you don't have to
> learn, but that doesn't prohibit them from being in Emacs. If you see a bug
> dealing with use-package and don't want to handle it, don't.

I don't think you understood. I don't mean bugs in `use-package', I mean
bug reports in my extensions that are reported in terms of
`use-package'. Should I not handle those bugs?

> It's not a "new way" of configuring packages. It's a WAY period. The

I don't understand. It's a "new way", at least for me.

João



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 19:24                             ` Drew Adams
@ 2015-11-10 19:35                               ` John Wiegley
  2015-11-10 20:42                                 ` Drew Adams
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10 19:35 UTC (permalink / raw)
  To: Drew Adams
  Cc: David Kastrup, Juanma Barranquero, Kaushal Modi, Emacs developers,
	Oleh Krehel, Dmitry Gutov, João Távora

>>>>> Drew Adams <drew.adams@oracle.com> writes:

> Sure, but it's not an argument that just _because_ some end users are
> unaware of something that is used by other end users (especially if there is
> no alternative to using that something) it _follows_ that that thing is not
> "end-user". That's a phony argument.
>
> `define-key' is "end-user" because end users sometimes want/need to use
> keymaps other than `global-map', and it is their only way to do that. It
> might not be "end-user" enough for you, but that is something different.
>
> It is only the argument that I find fault with, not the attempt to come up
> with something better or more end-userish.

Ah, OK, I concede your point. I have no grounds for saying define-key *isn't*
user facing, just that I'd like a clearer divide between what developers would
use for this functionality, and something that caters more to users.

> FWIW, I also object to some kind of definite line, dividing non-Lisp Emacs
> users from "internal/programmatic mechanisms" and Lisp. There is naturally a
> spectrum of Emacs usage that involves different degrees of using Lisp. And
> that's a good thing. All kinds of Emacs user are welcome.

Yes!

> It is a mistake to draw a hard line between Emacs "end use" and Lisp. Lisp
> vastly increases one's use of Emacs. Without some use of Lisp, you are not
> really taking advantage of Emacs. You might even say that you are not
> _really_ using it.
> 
> We should, yes, cater to helping novice users who do not know Lisp. But we
> should also encourage the use of Lisp with Emacs, not discourage it. You
> don't need Lisp to start using Emacs. But if you really want to use Emacs
> then you will want to learn some Lisp. That should not be because you _have
> to_ learn it, but because you can do so much more with Emacs if you do.

So we probably agree that Emacs is a spectrum from "application" to
"programming heaven", and that while we'd like to be a good tool at every
point along that spectrum, we shouldn't discourage a gradual migration
towards the bliss most of us have found.

>> I'm the one acting on behalf of those users.
>   ^^^^^^^^^^^
> You are not the only one. Lots of us here keep those users in mind and try
> to act on their behalf. I'm glad you do too. Welcome aboard. ;-)

I'm very glad to hear that. :)

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 19:32                         ` João Távora
@ 2015-11-10 19:47                           ` John Wiegley
  2015-11-10 21:00                             ` João Távora
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10 19:47 UTC (permalink / raw)
  To: João Távora
  Cc: Juanma Barranquero, David Kastrup, Dmitry Gutov, Oleh Krehel,
	Emacs developers

>>>>> João Távora <joaotavora@gmail.com> writes:

> Here's a very simple example: here's a way to configure markdown-mode

>    (package-install 'markdown-mode)
>    (with-eval-after-load 'markdown-mode
>      (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))

> How would use-package handle this simple example? 

To match those semantics, you'd use:

    (use-package markdown-mode
      :ensure t
      :config (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))

> I don't think you understood. I don't mean bugs in `use-package', I mean bug
> reports in my extensions that are reported in terms of `use-package'. Should
> I not handle those bugs?

Ah. Does it help that you can macro-expand use-package forms, so that you see
what the underlying Emacs Lisp calls? I try hard to make the expanded code
"look like what you'd write", as much as possible.

> I don't understand. It's a "new way", at least for me.

I meant that between customize and Emacs Lisp, there nothing in between for
users of core Emacs right now. Beyond Emacs, there do exist several other
ways.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:34   ` John Wiegley
@ 2015-11-10 19:54     ` Dmitry Gutov
  2015-11-10 20:09       ` Kaushal Modi
  2015-11-11  0:04     ` Stephen Leake
  1 sibling, 1 reply; 95+ messages in thread
From: Dmitry Gutov @ 2015-11-10 19:54 UTC (permalink / raw)
  To: emacs-devel

On 11/10/2015 08:34 PM, John Wiegley wrote:

> Well, it will be maintained by a core developer. :)

Quite a few packages in ELPA come from Emacs committers. Stefan has 
several (e.g. sml-mode). I maintain three (2 of which are comparable in 
popularity to use-package, judging by the number of stars on GitHub).

> It would also be in the
> Emacs manual, and blessed as an official method for declaring complex package
> configuration.

Packages can also include manuals (I don't know the details, but e.g. 
Flycheck does). Of course, you can't declare use-package to be "blessed" 
that way.

> Further, I wouldn't want it changing on users as ELPA updates. Once a user
> downloads Emacs X.Y and reads the manual on how to write such configurations,
> the information should remain true until Emacs X.Z.

Do you expect use-package to depend on new features in every Emacs 
version? Otherwise, you can have pretty much the same by only releasing 
a new version of use-package once a year. :)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 19:54     ` Dmitry Gutov
@ 2015-11-10 20:09       ` Kaushal Modi
  2015-11-10 20:27         ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Kaushal Modi @ 2015-11-10 20:09 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Emacs developers

> Packages can also include manuals (I don't know the details, but e.g. Flycheck does). Of course, you can't declare use-package to be "blessed" that way.

Also non-Elpa packages come with detailed manuals: magit

> Do you expect use-package to depend on new features in every Emacs version? Otherwise, you can have pretty much the same by only releasing a new version of use-package once a year. :)

+1

The development for use-package can continue as it is happening now
and versions can be git-tagged as something like "stable". When the
time for next emacs release comes, the GNU Elpa version can be synced
with the latest "stable" tagged version from the development git.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 20:09       ` Kaushal Modi
@ 2015-11-10 20:27         ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-10 20:27 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: Emacs developers, Dmitry Gutov

>>>>> Kaushal Modi <kaushal.modi@gmail.com> writes:

> The development for use-package can continue as it is happening now and
> versions can be git-tagged as something like "stable". When the time for
> next emacs release comes, the GNU Elpa version can be synced with the latest
> "stable" tagged version from the development git.

Hmmm... you guys are both encouraging me to consider putting it in ELPA
instead. It really kind of is an "optional package if you want to do things
this way..."

I so want that ELPA policy document now. :) We're spending too much time
having this same debate about a fine line, like a hair in the dark.

I think for 25.1, at least, everything I've suggested recently should go into
ELPA. Then we'll let the policy document decide whether they belong in core
for 25.2.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* RE: use-package.el -> Emacs core
  2015-11-10 19:35                               ` John Wiegley
@ 2015-11-10 20:42                                 ` Drew Adams
  0 siblings, 0 replies; 95+ messages in thread
From: Drew Adams @ 2015-11-10 20:42 UTC (permalink / raw)
  To: John Wiegley
  Cc: David Kastrup, Juanma Barranquero, Kaushal Modi, Emacs developers,
	Oleh Krehel, Dmitry Gutov, João Távora

> So we probably agree that Emacs is a spectrum from "application" to
> "programming heaven", and that while we'd like to be a good tool at every
> point along that spectrum, we shouldn't discourage a gradual migration
> towards the bliss most of us have found.

Yes.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 19:47                           ` John Wiegley
@ 2015-11-10 21:00                             ` João Távora
  0 siblings, 0 replies; 95+ messages in thread
From: João Távora @ 2015-11-10 21:00 UTC (permalink / raw)
  To: John Wiegley
  Cc: Juanma Barranquero, Dmitry Gutov, Oleh Krehel, Emacs developers

John Wiegley <jwiegley@gmail.com> writes:

>>    (package-install 'markdown-mode)
>>    (with-eval-after-load 'markdown-mode
>>      (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))
>
> To match those semantics, you'd use:
>
>     (use-package markdown-mode
>       :ensure t
>       :config (modify-syntax-entry ?` "\"" markdown-mode-syntax-table))

OK, so we would agree that in this particular example it doesn't bring a
great advantage, if any. Perhaps you could provide another example where
you definitely think it does.

>> I don't think you understood. I don't mean bugs in `use-package', I mean bug
>> reports in my extensions that are reported in terms of `use-package'. Should
>> I not handle those bugs?
>
> Ah. Does it help that you can macro-expand use-package forms, so that you see
> what the underlying Emacs Lisp calls? I try hard to make the expanded code
> "look like what you'd write", as much as possible.

That's what I would do yes. But then I have to have a running emacs with
`use-package' myself, right? I've seen some macroexpansions of it
somewhere in this thread and it's not particularly pretty (also not
particularly correct apparently: see my criticism of the use of fboundp
and autoload, for example).

But I can't resist pointing out a certain irony in your argument: if
use-package is not hiding any ugly implementation details, there's
really no use for it :-).

For contrast, and quite a scare, see the macroexpansions of
`define-minor-mode` or `define-globalized-minor-mode'. yucky.

On the other hand, I have to admit that by participanting in this
discussion I ended up probably learning more than enough of the
use-package minilanguage to handle such a bug report.

So I don't know. Count me in the "initially against, but now doesn't
care" category and let the masses decide :-)

João



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  5:37           ` Kaushal Modi
  2015-11-10  6:07             ` John Wiegley
@ 2015-11-10 23:27             ` Stephen Leake
  2015-11-10 23:32               ` John Wiegley
  1 sibling, 1 reply; 95+ messages in thread
From: Stephen Leake @ 2015-11-10 23:27 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: johnw, Bruce Connor, Emacs developers

Kaushal Modi <kaushal.modi@gmail.com> writes:

> I use the use-package and bind-key packages in my config.
>
> The use-package would be nice to have in the core 

Would it be just as nice in ELPA?


-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 23:27             ` Stephen Leake
@ 2015-11-10 23:32               ` John Wiegley
  2015-11-11  9:29                 ` Oleh Krehel
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-10 23:32 UTC (permalink / raw)
  To: Stephen Leake; +Cc: Emacs developers, Bruce Connor, Kaushal Modi

>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes:

> Kaushal Modi <kaushal.modi@gmail.com> writes:
>> I use the use-package and bind-key packages in my config.
>> 
>> The use-package would be nice to have in the core 

> Would it be just as nice in ELPA?

I think now that it would be!

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Customize is only for newbies? [was: use-package.el -> Emacs core]
  2015-11-10 15:08               ` Customize is only for newbies? [was: use-package.el -> Emacs core] Drew Adams
@ 2015-11-11  0:01                 ` Wolfgang Jenkner
  0 siblings, 0 replies; 95+ messages in thread
From: Wolfgang Jenkner @ 2015-11-11  0:01 UTC (permalink / raw)
  To: Drew Adams
  Cc: Juanma Barranquero, David Kastrup, Dmitry Gutov, Oleh Krehel,
	Emacs developers

On Tue, Nov 10 2015, Drew Adams wrote:

>> > It also makes sure that any followup actions
>> > necessary after setting the variables are being performed.
>> 
>> Sure, :set is kind of a custom(er) lock-in.
>
> Dunno whether that was supposed to be a joke.

Quite serious, if a bit laconic.

> :set is a hook for variables.  It runs code whenever
> the variable is set.  That's a feature that you can
> use in your programming.  It doesn't lock anyone into
> anything.

Please see

http://permalink.gmane.org/gmane.emacs.bugs/107690

The bug report's author makes my point in an admirably eloquent way.

Wolfgang :-)



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 18:34   ` John Wiegley
  2015-11-10 19:54     ` Dmitry Gutov
@ 2015-11-11  0:04     ` Stephen Leake
  1 sibling, 0 replies; 95+ messages in thread
From: Stephen Leake @ 2015-11-11  0:04 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

>>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>
>> What is the rationale for moving this to core instead of Gnu ELPA?

(My search of list-packages did not find `use-package' the first time,
so I did not realize it is already in Gnu ELPA).

> Well, it will be maintained by a core developer. :) 

Not a good reason; I maintain ada-mode in ELPA, because I want an
independent release cycle. But I still consider myself a minor Emacs
core developer.

> It would also be in the Emacs manual,

It can provide a .info file, which will be in the user's top level info
list. Is that not sufficient?

Hmm. It might be that other sections of the Emacs manual want to 
reference use-package. They can do so, as long as they clearly label it
as an ELPA package, so users will know how to find it. For example:

    If you use the (really cool) ELPA package @elparef{use-package},
    then you can do ...

I'm not clear exactly what "@elparef" should do, but it seems like a
good idea. Perhaps it should add the "ELPA package" text, so it is done
consistently. Can it add a clickable link to the package.el description
of the package?

> and blessed as an official method for declaring complex package
> configuration.

Ah. So you are asking us to agree that _this_ package is better than
other similar packages.

That's a reasonable request in general. But given the controversy around
CEDET, I think it needs to wait for emacs 25+, so we can establish a
process for such requests.

> Further, I wouldn't want it changing on users as ELPA updates. 
> Once a user downloads Emacs X.Y and reads the manual on how to write
> such configurations, the information should remain true until Emacs
> X.Z.

As the package maintainer, that's under your control; if you don't want
it to change, don't change it.

You are completely free to determine the release schedule for your ELPA
package. If you want it synced with Emacs releases, do that. There is a
small race condition window at the actual release, but I don't think
that's a significant problem. Proper use of Emacs version in the
dependency header should handle that.

If you want to work on it between releases, use a branch in ELPA git, or
a separate repository.


On the other hand, that means you can't release bug fixes, either. Nor
really cool but backward-compatible enhancements. I'd rather have a
package in ELPA, so I don't have to wait for the next Emacs release.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  8:24 ` joakim
@ 2015-11-11  0:29   ` Stephen Leake
  2015-11-11  0:45     ` Dmitry Gutov
  0 siblings, 1 reply; 95+ messages in thread
From: Stephen Leake @ 2015-11-11  0:29 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

joakim@verona.se writes:

> I use req-package, https://github.com/edvorg/req-package, which is
> use-package with some additional features, like logging and load order
> reordering. I think use-package would be a great addition to emacs core,
> for people like me that like a clear and readable emacs
> configuration.

It's currently in Gnu ELPA; is that sufficient?

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10  9:29 ` Nicolas Petton
@ 2015-11-11  0:32   ` Stephen Leake
  2015-11-11  0:37     ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Stephen Leake @ 2015-11-11  0:32 UTC (permalink / raw)
  To: Nicolas Petton; +Cc: John Wiegley, emacs-devel

Nicolas Petton <nicolas@petton.fr> writes:

> John Wiegley <jwiegley@gmail.com> writes:
>
>> I'd like to integrate use-package.el into Emacs core, as an alternative for
>> package management to those who do not rely on package.el. I know Stefan had
>> some reservation, but I think enough people have enjoyed its utility to be
>> worth including.
>>
>> Are there any objections to moving this into core before the 25.1
>> freeze?
>
> That's fine with me. use-package.el is already used by many people.

Which is an argument for it being in Gnu ELPA; would that be enough?

I'm bugging people about this to help clarify the ELPA vs core policy.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 15:42                   ` Juanma Barranquero
  2015-11-10 15:56                     ` Dmitry Gutov
@ 2015-11-11  0:37                     ` Stephen Leake
  2015-11-11  0:56                       ` Juanma Barranquero
  1 sibling, 1 reply; 95+ messages in thread
From: Stephen Leake @ 2015-11-11  0:37 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Dmitry Gutov, Oleh Krehel, Emacs developers

Juanma Barranquero <lekktu@gmail.com> writes:

> On Tue, Nov 10, 2015 at 4:15 PM, John Wiegley <jwiegley@gmail.com> wrote:
>
>> For (7):
>>
>> - Nicolas Petton
>> - Joakim Verona
>> - Phillip Lord
>> - Dimtry Gutov
>> - Artur Malabarb
>> - Kaushal Modi
>> - Ted Zlatanov
>
> I'm for

Would you support putting it in Gnu ELPA instead?

It seems it's already there.

I'm trying to clarify ELPA vs core policy.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  0:32   ` Stephen Leake
@ 2015-11-11  0:37     ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-11  0:37 UTC (permalink / raw)
  To: Stephen Leake; +Cc: Nicolas Petton, emacs-devel

>>>>> Stephen Leake <stephen_leake@stephe-leake.org> writes:

>> That's fine with me. use-package.el is already used by many people.

> Which is an argument for it being in Gnu ELPA; would that be enough?

I think so.

> I'm bugging people about this to help clarify the ELPA vs core policy.

Thank you, it is helping. I can feel the mists converging toward a less
inchoate adumbration. :)

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  0:29   ` Stephen Leake
@ 2015-11-11  0:45     ` Dmitry Gutov
  2015-11-11  9:30       ` Stephen Leake
  0 siblings, 1 reply; 95+ messages in thread
From: Dmitry Gutov @ 2015-11-11  0:45 UTC (permalink / raw)
  To: Stephen Leake, joakim; +Cc: emacs-devel

On 11/11/2015 02:29 AM, Stephen Leake wrote:

>> I use req-package, https://github.com/edvorg/req-package, which is
>> use-package with some additional features, like logging and load order
>> reordering. I think use-package would be a great addition to emacs core,
>> for people like me that like a clear and readable emacs
>> configuration.
>
> It's currently in Gnu ELPA

What makes you think so?



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  0:37                     ` Stephen Leake
@ 2015-11-11  0:56                       ` Juanma Barranquero
  0 siblings, 0 replies; 95+ messages in thread
From: Juanma Barranquero @ 2015-11-11  0:56 UTC (permalink / raw)
  To: Stephen Leake; +Cc: Dmitry Gutov, Oleh Krehel, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 146 bytes --]

On Wed, Nov 11, 2015 at 1:37 AM, Stephen Leake <
stephen_leake@stephe-leake.org> wrote:
> Would you support putting it in Gnu ELPA instead?

Yes.

[-- Attachment #2: Type: text/html, Size: 352 bytes --]

^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 23:32               ` John Wiegley
@ 2015-11-11  9:29                 ` Oleh Krehel
  2015-11-11 16:48                   ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Oleh Krehel @ 2015-11-11  9:29 UTC (permalink / raw)
  To: Stephen Leake; +Cc: Emacs developers, Bruce Connor, Kaushal Modi

John Wiegley <jwiegley@gmail.com> writes:

>> Would it be just as nice in ELPA?
>
> I think now that it would be!

I use (a narrow subset of) use-package; I like it, and I'm all for
having it in GNU ELPA.  That should cover my reservations for added
Elisp complexity: if it's not in the core, my previously listed concerns
are much less severe.

    Oleh



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  0:45     ` Dmitry Gutov
@ 2015-11-11  9:30       ` Stephen Leake
  2015-11-11 10:04         ` Xue Fuqiao
  2015-11-11 10:20         ` Artur Malabarba
  0 siblings, 2 replies; 95+ messages in thread
From: Stephen Leake @ 2015-11-11  9:30 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: joakim, emacs-devel

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 11/11/2015 02:29 AM, Stephen Leake wrote:
>
>>> I use req-package, https://github.com/edvorg/req-package, which is
>>> use-package with some additional features, like logging and load order
>>> reordering. I think use-package would be a great addition to emacs core,
>>> for people like me that like a clear and readable emacs
>>> configuration.
>>
>> It's currently in Gnu ELPA
>
> What makes you think so?

Sorry, I misread the output of list-packages; it's currently in MELPA.

Which raises the question; what is the rationale for moving from MELPA
to Gnu ELPA?

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  9:30       ` Stephen Leake
@ 2015-11-11 10:04         ` Xue Fuqiao
  2015-11-11 10:20         ` Artur Malabarba
  1 sibling, 0 replies; 95+ messages in thread
From: Xue Fuqiao @ 2015-11-11 10:04 UTC (permalink / raw)
  To: Stephen Leake; +Cc: Emacs-devel, joakim, Dmitry Gutov

On Wed, Nov 11, 2015 at 5:30 PM, Stephen Leake
<stephen_leake@stephe-leake.org> wrote:

> what is the rationale for moving from MELPA to Gnu ELPA?

Some advantage of GNU ELPA (in comparison with MELPA):

* The GNU ELPA archive is the only archive that's configured by default,
  so we can tell people to M-x package-install without worrying about
  whether or not they've added MELPA to their config.

* The code uses the same copyright rules as Emacs code, so that we can
  easily move code between the two.  IOW it'd be ready for inclusion in
  Emacs proper.  (I'm aware of the controversy, but what if we want to
  move it to the core in the future?)

* All Emacs developers have write access to the code, so it can benefit
  from random cleanups or adjustments to new features.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  9:30       ` Stephen Leake
  2015-11-11 10:04         ` Xue Fuqiao
@ 2015-11-11 10:20         ` Artur Malabarba
  1 sibling, 0 replies; 95+ messages in thread
From: Artur Malabarba @ 2015-11-11 10:20 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel, joakim, Dmitry Gutov

> Sorry, I misread the output of list-packages; it's currently in MELPA.
>
> Which raises the question; what is the rationale for moving from MELPA
> to Gnu ELPA?

Being the default package archive, adding a package to Gelpa increases
its visibility to users who don't have Melpa configured (either for
not knowing it or not wanting it).
And if the author/maintainer doesn't mind managing a package on Gelpa,
then there's no downside either.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11  9:29                 ` Oleh Krehel
@ 2015-11-11 16:48                   ` John Wiegley
  2015-11-11 20:04                     ` Kaushal Modi
  0 siblings, 1 reply; 95+ messages in thread
From: John Wiegley @ 2015-11-11 16:48 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Kaushal Modi, Stephen Leake, Bruce Connor, Emacs developers

>>>>> Oleh Krehel <ohwoeowho@gmail.com> writes:

> I use (a narrow subset of) use-package; I like it, and I'm all for having it
> in GNU ELPA. That should cover my reservations for added Elisp complexity:
> if it's not in the core, my previously listed concerns are much less severe.

Thanks, Oleh, I do think it belongs in ELPA, so long as it's on the user's
load-path by default after they install Emacs. Since we're converging toward a
notion of "tarball ELPA" in other threads, this should satisfy both our
concerns.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11 16:48                   ` John Wiegley
@ 2015-11-11 20:04                     ` Kaushal Modi
  2015-11-11 20:10                       ` John Wiegley
  2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
  0 siblings, 2 replies; 95+ messages in thread
From: Kaushal Modi @ 2015-11-11 20:04 UTC (permalink / raw)
  To: Oleh Krehel, Stephen Leake, Emacs developers, Bruce Connor,
	Kaushal Modi

Do all the contributors here:
https://github.com/jwiegley/use-package/graphs/contributors

need to have signed the FSF copyright assignment?



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-11 20:04                     ` Kaushal Modi
@ 2015-11-11 20:10                       ` John Wiegley
  2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
  1 sibling, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-11 20:10 UTC (permalink / raw)
  To: Kaushal Modi; +Cc: Stephen Leake, Oleh Krehel, Bruce Connor, Emacs developers

>>>>> Kaushal Modi <kaushal.modi@gmail.com> writes:

> Do all the contributors here:
> https://github.com/jwiegley/use-package/graphs/contributors
> need to have signed the FSF copyright assignment?

Good call, Kaushal. They in fact do. I'll have to process that before
use-package.el can be considered for ELPA.

The same goes for the various backends people have contributed to alert.el. No
one has changed the core infrastructure but myself, I believe, but many of the
backends were written by other people.

pl.el has no contributors but myself.

Thanks for bringing this up, I don't fully have my GNU maintainer hat on tight
yet, clearly!

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core)
  2015-11-11 20:04                     ` Kaushal Modi
  2015-11-11 20:10                       ` John Wiegley
@ 2015-11-12  2:11                       ` Michael Heerdegen
  2015-11-12  2:19                         ` Copyright assignments in Gnu Elpa John Wiegley
                                           ` (2 more replies)
  1 sibling, 3 replies; 95+ messages in thread
From: Michael Heerdegen @ 2015-11-12  2:11 UTC (permalink / raw)
  To: emacs-devel

Kaushal Modi <kaushal.modi@gmail.com> writes:

> Do all the contributors here:
> https://github.com/jwiegley/use-package/graphs/contributors
>
> need to have signed the FSF copyright assignment?

This is a good question.

I've never thought about it, but AFAIU all contributors for all external
packages in Gnu Elpa need copyright assignments - right?

Are we sure that this is currently the case at all with all those
packages developed on Github (pull requests!) ?

And should there not be something said about that in elpa/README?


Michael.




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Copyright assignments in Gnu Elpa
  2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
@ 2015-11-12  2:19                         ` John Wiegley
  2015-11-12  3:50                         ` Artur Malabarba
  2015-11-12 22:31                         ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Richard Stallman
  2 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2015-11-12  2:19 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: emacs-devel

>>>>> Michael Heerdegen <michael_heerdegen@web.de> writes:

> I've never thought about it, but AFAIU all contributors for all external
> packages in Gnu Elpa need copyright assignments - right?

I put out a call for papers today for use-package and alert, and so far the
results have been quite positive. At least six people are mailing in signed
assignments. Many others already had an assignment. No one has said they'd
rather have their change pulled.

John



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Copyright assignments in Gnu Elpa
  2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
  2015-11-12  2:19                         ` Copyright assignments in Gnu Elpa John Wiegley
@ 2015-11-12  3:50                         ` Artur Malabarba
  2015-11-12 22:31                         ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Richard Stallman
  2 siblings, 0 replies; 95+ messages in thread
From: Artur Malabarba @ 2015-11-12  3:50 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: emacs-devel

Michael Heerdegen <michael_heerdegen@web.de> writes:

> This is a good question.
>
> I've never thought about it, but AFAIU all contributors for all external
> packages in Gnu Elpa need copyright assignments - right?

Non-trivial contributors, yes.

> Are we sure that this is currently the case at all with all those
> packages developed on Github (pull requests!) ?

Currently, for code to get into Gelpa it needs to be manually commited
by someone with push access. Gelpa (and Emacs) thus work on the
assumption that those with push access will only push code that they
have authored, or code that they were told was authored by someone with
an assignment on file.

> And should there not be something said about that in elpa/README?

Yes.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2015-11-10 14:48                 ` João Távora
  2015-11-10 15:40                   ` John Wiegley
@ 2015-11-12 12:43                   ` Nicolas Richard
  1 sibling, 0 replies; 95+ messages in thread
From: Nicolas Richard @ 2015-11-12 12:43 UTC (permalink / raw)
  To: João Távora; +Cc: Pedro Silva, Phillip Lord, emacs-devel

Hello,

joaotavora@gmail.com (João Távora) writes:
> Nicolas Richard <youngfrog@members.fsf.org> writes:
>> IIRC in the above snippet (from the expansion of a use-package
>> instance), `fboundp' is mostly used as `autoloadp' to avoid overwriting
>> existing autloads (I guess autloadp wasn't used because it takes an
>> OBJECT as argument instead of a symbol).
>
> Is this useful or desirable?

I guess it was useful to some people. This triggered its addition :
https://github.com/jwiegley/use-package/issues/135
(then later : https://github.com/jwiegley/use-package/issues/177)

I think however that this is a detail which is pretty much independent
from the question of adding use-package to core.

>                              Doesn't this mean that making a correction
> to a `use-package' instantiation and re-evaluating it will silently
> produce a noop?

In case of autoloads it seems so. For other configuration keywords, not
necessarily.

> In the same vein, does `use-package' undo autoloads (or keybindings or
> any other thing) when the directive's value changes?

No.

-- 
Nico.



^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core)
  2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
  2015-11-12  2:19                         ` Copyright assignments in Gnu Elpa John Wiegley
  2015-11-12  3:50                         ` Artur Malabarba
@ 2015-11-12 22:31                         ` Richard Stallman
  2015-11-15 14:51                           ` Copyright assignments in Gnu Elpa Andreas Röhler
  2 siblings, 1 reply; 95+ messages in thread
From: Richard Stallman @ 2015-11-12 22:31 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > I've never thought about it, but AFAIU all contributors for all external
  > packages in Gnu Elpa need copyright assignments - right?

All those who make nontrivial contributions of code need to have their
work assigned to the FSF, or else disclaimed.

They can do these by signing individual papers, or they may be
covered by employer's papers.

-- 
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Copyright assignments in Gnu Elpa
  2015-11-12 22:31                         ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Richard Stallman
@ 2015-11-15 14:51                           ` Andreas Röhler
  2015-11-16 19:30                             ` Richard Stallman
  0 siblings, 1 reply; 95+ messages in thread
From: Andreas Röhler @ 2015-11-15 14:51 UTC (permalink / raw)
  To: emacs-devel; +Cc: Richard Stallman

  On 12.11.2015 23:31, Richard Stallman wrote:
> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>    >  I've never thought about it, but AFAIU all contributors for all external
>    >  packages in Gnu Elpa need copyright assignments - right?
>
> All those who make nontrivial contributions of code need to have their
> work assigned to the FSF, or else disclaimed.

Is "else disclaimed" to be understood as signing the disclaimer handed 
out by FSF?
Saying: I'm the author and coyright-owner etc.?

That would be great.




> They can do these by signing individual papers, or they may be
> covered by employer's papers.
>




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: Copyright assignments in Gnu Elpa
  2015-11-15 14:51                           ` Copyright assignments in Gnu Elpa Andreas Röhler
@ 2015-11-16 19:30                             ` Richard Stallman
  0 siblings, 0 replies; 95+ messages in thread
From: Richard Stallman @ 2015-11-16 19:30 UTC (permalink / raw)
  To: Andreas Röhler; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > All those who make nontrivial contributions of code need to have their
  > > work assigned to the FSF, or else disclaimed.

  > Is "else disclaimed" to be understood as signing the disclaimer handed 
  > out by FSF?
  > Saying: I'm the author and coyright-owner etc.?

The contributor can sign either a copyright assignment (which transfers
the copyright to the FSF) or a copyright disclaimer (which says only
"I don't claim any copyright").

This is explained in what we give to contributors to show them
the options for contributing.

-- 
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.




^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
@ 2017-02-15 19:49 Toon Claes
  2017-02-15 19:51 ` John Wiegley
  0 siblings, 1 reply; 95+ messages in thread
From: Toon Claes @ 2017-02-15 19:49 UTC (permalink / raw)
  To: John Wiegley, Emacs Devel

On Mon, 09 Nov 2015 16:02:33 -0800 John Wiegley wrote:
> I'd like to integrate use-package.el into Emacs core, as an alternative for
> package management to those who do not rely on package.el. I know Stefan had
> some reservation, but I think enough people have enjoyed its utility to be
> worth including.
> 
> Are there any objections to moving this into core before the 25.1 freeze?
> 
> John

I was reading through this thread from 2015 and I was wondering what happened
with the plans to integrate use-package.el into the Emacs core?

-- Toon


^ permalink raw reply	[flat|nested] 95+ messages in thread

* Re: use-package.el -> Emacs core
  2017-02-15 19:49 Toon Claes
@ 2017-02-15 19:51 ` John Wiegley
  0 siblings, 0 replies; 95+ messages in thread
From: John Wiegley @ 2017-02-15 19:51 UTC (permalink / raw)
  To: Toon Claes; +Cc: Emacs Devel

>>>>> Toon Claes <toon@iotcl.com> writes:

> I was reading through this thread from 2015 and I was wondering what
> happened with the plans to integrate use-package.el into the Emacs core?

I should have all the copyright assignments from everyone now, I just need to
reserve a weekend to go through them, one by one, and ensure that it's OK to
move the code in. Then I'll need to adapt the documentation to fit within the
Emacs manual.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 95+ messages in thread

end of thread, other threads:[~2017-02-15 19:51 UTC | newest]

Thread overview: 95+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-10  0:02 use-package.el -> Emacs core John Wiegley
2015-11-10  0:14 ` Dmitry Gutov
2015-11-10  0:31   ` John Wiegley
2015-11-10  0:40     ` Dmitry Gutov
2015-11-10  7:55     ` Oleh Krehel
2015-11-10 11:52       ` Juanma Barranquero
2015-11-10 12:10         ` Oleh Krehel
2015-11-10 12:23           ` Juanma Barranquero
2015-11-10 12:40             ` Oleh Krehel
2015-11-10 12:47               ` Juanma Barranquero
2015-11-10 15:15                 ` John Wiegley
2015-11-10 15:42                   ` Juanma Barranquero
2015-11-10 15:56                     ` Dmitry Gutov
2015-11-11  0:37                     ` Stephen Leake
2015-11-11  0:56                       ` Juanma Barranquero
2015-11-10 15:55                   ` João Távora
2015-11-10 16:08                     ` John Wiegley
2015-11-10 16:23                   ` Drew Adams
2015-11-10 14:03               ` David Kastrup
2015-11-10 14:15                 ` Oleh Krehel
2015-11-10 14:22                 ` João Távora
2015-11-10 15:17                   ` John Wiegley
2015-11-10 15:46                     ` João Távora
2015-11-10 18:15                       ` John Wiegley
2015-11-10 19:32                         ` João Távora
2015-11-10 19:47                           ` John Wiegley
2015-11-10 21:00                             ` João Távora
2015-11-10 15:56                     ` Kaushal Modi
2015-11-10 18:20                       ` John Wiegley
2015-11-10 18:32                         ` Drew Adams
2015-11-10 18:38                           ` John Wiegley
2015-11-10 18:52                             ` Kaushal Modi
2015-11-10 18:55                               ` John Wiegley
2015-11-10 19:24                             ` Drew Adams
2015-11-10 19:35                               ` John Wiegley
2015-11-10 20:42                                 ` Drew Adams
2015-11-10 12:42             ` Kaushal Modi
2015-11-10 12:46           ` David Kastrup
2015-11-10 13:06             ` Oleh Krehel
2015-11-10 18:15               ` Evgeny Panasyuk
2015-11-10 18:31                 ` Alan Mackenzie
2015-11-10 13:32             ` Wolfgang Jenkner
2015-11-10 15:08               ` Customize is only for newbies? [was: use-package.el -> Emacs core] Drew Adams
2015-11-11  0:01                 ` Wolfgang Jenkner
2015-11-10 14:58           ` Drew Adams
2015-11-10 15:42             ` John Wiegley
2015-11-10  8:49     ` use-package.el -> Emacs core João Távora
2015-11-10  8:57       ` Pedro Silva
2015-11-10  9:45         ` João Távora
2015-11-10 12:01           ` Phillip Lord
2015-11-10 13:37             ` João Távora
2015-11-10 14:07               ` Oleh Krehel
2015-11-10 14:39               ` Nicolas Richard
2015-11-10 14:48                 ` João Távora
2015-11-10 15:40                   ` John Wiegley
2015-11-12 12:43                   ` Nicolas Richard
2015-11-10 17:36               ` Phillip Lord
2015-11-10  0:44 ` Artur Malabarba
2015-11-10  1:05   ` John Wiegley
2015-11-10  1:24     ` Artur Malabarba
2015-11-10  1:37       ` John Wiegley
2015-11-10  3:20         ` Artur Malabarba
2015-11-10  5:37           ` Kaushal Modi
2015-11-10  6:07             ` John Wiegley
2015-11-10 23:27             ` Stephen Leake
2015-11-10 23:32               ` John Wiegley
2015-11-11  9:29                 ` Oleh Krehel
2015-11-11 16:48                   ` John Wiegley
2015-11-11 20:04                     ` Kaushal Modi
2015-11-11 20:10                       ` John Wiegley
2015-11-12  2:11                       ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Michael Heerdegen
2015-11-12  2:19                         ` Copyright assignments in Gnu Elpa John Wiegley
2015-11-12  3:50                         ` Artur Malabarba
2015-11-12 22:31                         ` Copyright assignments in Gnu Elpa (was: use-package.el -> Emacs core) Richard Stallman
2015-11-15 14:51                           ` Copyright assignments in Gnu Elpa Andreas Röhler
2015-11-16 19:30                             ` Richard Stallman
2015-11-10  1:37 ` use-package.el -> Emacs core Ted Zlatanov
2015-11-10  8:24 ` joakim
2015-11-11  0:29   ` Stephen Leake
2015-11-11  0:45     ` Dmitry Gutov
2015-11-11  9:30       ` Stephen Leake
2015-11-11 10:04         ` Xue Fuqiao
2015-11-11 10:20         ` Artur Malabarba
2015-11-10  8:44 ` Andreas Röhler
2015-11-10  9:29 ` Nicolas Petton
2015-11-11  0:32   ` Stephen Leake
2015-11-11  0:37     ` John Wiegley
2015-11-10 18:21 ` Stephen Leake
2015-11-10 18:34   ` John Wiegley
2015-11-10 19:54     ` Dmitry Gutov
2015-11-10 20:09       ` Kaushal Modi
2015-11-10 20:27         ` John Wiegley
2015-11-11  0:04     ` Stephen Leake
  -- strict thread matches above, loose matches on Subject: below --
2017-02-15 19:49 Toon Claes
2017-02-15 19:51 ` John Wiegley

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).