all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Amy Grinn <grinn.amy@gmail.com>
To: Philip Kaludercic <philipk@posteo.net>
Cc: clemera@posteo.net,  emacs-devel@gnu.org
Subject: Re: Objed maintenance
Date: Thu, 02 May 2024 09:13:01 -0400	[thread overview]
Message-ID: <s31sez09x2a.fsf@gmail.com> (raw)
In-Reply-To: <87ttjhpfue.fsf@posteo.net> (Philip Kaludercic's message of "Wed,  01 May 2024 18:06:01 +0000")

Philip Kaludercic <philipk@posteo.net> writes:

> Amy Grinn <grinn.amy@gmail.com> writes:
>
>> Philip Kaludercic <philipk@posteo.net> writes:
>>
>>> Amy Grinn <grinn.amy@gmail.com> writes:
>>>
>>>> Philip Kaludercic <philipk@posteo.net> writes:
>>>>
>>>>> Amy Grinn <grinn.amy@gmail.com> writes:
>>>>>
>>>>>> Philip, I am using an unpublished dependency called key-game,
>>>>>> which I wrote, which I thought might be useful for other modal
>>>>>> editing packages, or for large packages like gnus.  Anyways I
>>>>>> will try to submit that package for publishing on GNU ELPA before
>>>>>> objed is updated.
>>>>>
>>>>> That sounds good, just inferring from the name it sounds like
>>>>> wizard or training program?  Is this going to be a hard dependency
>>>>> or a weak one?
>>>>
>>>> Yes, it's a utility package to help create key-based or
>>>> command-based tutorial games.  It's not a user-facing package,
>>>> similar to boxy; I wouldn't want users to have to install it
>>>> explicitly.  To answer a potential followup, I also wouldn't want
>>>> to split up the objed tutorial game into a separate package.  That
>>>> would hinder discoverability and make the installation of objed
>>>> more complex.  All that to say I believe key-game will be a hard
>>>> dependency.
>>>
>>> That is a pity.  I try to advocate for minimising dependencies,
>>> especially if these aren't required for the core functionality of a
>>> package.  I don't know how your package is designed, but couldn't
>>> you have a command like M-x objed-tutorial that reports an error if
>>> the package is not installed (or proposes to install it)?  FWIW I
>>> don't think having a separate package is a good idea either -- too
>>> much noise in the package list.
>>
>> Practically, the entrypoint for the objed tutorial game is a key-game
>> macro call, so it would be difficult to rewire.  Moreover, this would
>> cause a similar issue in all other packages which might use key-game.
>> This implies much more boilerplate which must be maintained
>> separately in all those packages.
>>
>> I see your point that the tutorial is not *the* core feature of
>> objed, but in my opinion it is *a* core part, and one that is more
>> likely to be invoked by new users.  I don't want to put up roadblocks
>> for them.  I think peer dependencies can be useful for extending a
>> package, and objed already has such a dependency with avy, but this
>> seems like an unnecessary installation step instead.
>>
>> I'm not as experienced with ELPA, so I would like to know more about
>> the thought process behind discouraging direct dependencies.  But
>> again, I don't think key-game has any intrinsic features which an end
>> user may want separate and apart from its use in other packages, and
>> I would find it odd to suggest users add it to their selected
>> packages.
>
> Abstractly: My advice is my advice, it is inherently biased.  I take
> that position, because of my experience, which is why I refuse to
> install packages with more than 1-~2 transitive dependencies (I was
> recently once again shocked by "ement").  As everything I say that
> isn't part of the ELPA rules, you can ignore it if you think you know
> better.  My motivation to help with ELPA is rooted in my own interest
> to have good packages, given my own understanding of what makes
> packages good.
>
> Concretely: I don't know how key-game looks like, so I cannot really
> say if it makes sense or not.  I had something in mind like a generic
> wizard framework, where you'd M-x key-game, then get prompted what
> game to play (as defined by whatever package provides a game) and then
> it would play that game.

That's an interesting idea, kind of like man pages except for tutorial
games.  Centralizing the entrypoint for all key games is not exactly the
direction I took though, in the current implementation each package is
responsible for creating a separate entrypoint.

I'll have to give it some more thought but I have a few concerns
already.  It probably doesn't address the boilerplate code issue I
brought up but more importantly it seems like a dual dependency:
objed-game requires key-game for its implementation and key-game
requires objed-game to register itself as a valid game.  If only one of
the packages is loaded it would necessarily load the other I think?
Currently, the command objed-game resides in a separate file which is
autoloaded (along with key-game) IFF a user invokes it.

When you have the time, I would like to know if you have a specific
autoload/dependency scheme in mind and if there are any similar packages
already in ELPA which act as a centralized interface for interacting
with other packages.

-- 
Best,

Amy



  parent reply	other threads:[~2024-05-02 13:13 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-18 22:45 Objed maintenance Amy Grinn
2024-04-22  7:22 ` Philip Kaludercic
2024-04-25 12:38   ` Amy Grinn
2024-04-27 10:06     ` Philip Kaludercic
2024-04-27 11:32       ` Amy Grinn
2024-04-27 11:54         ` Philip Kaludercic
2024-04-27 21:51           ` Amy Grinn
2024-05-01 18:06             ` Philip Kaludercic
2024-05-02  1:39               ` Adam Porter
2024-05-02  6:02                 ` Philip Kaludercic
2024-05-02  9:43                   ` Adam Porter
2024-05-02 17:09                     ` Philip Kaludercic
2024-05-03  4:06                       ` Adam Porter
2024-05-03  5:49                         ` Philip Kaludercic
2024-05-02 13:13               ` Amy Grinn [this message]
2024-05-03  6:51                 ` Philip Kaludercic
2024-05-04 13:59                   ` Amy Grinn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s31sez09x2a.fsf@gmail.com \
    --to=grinn.amy@gmail.com \
    --cc=clemera@posteo.net \
    --cc=emacs-devel@gnu.org \
    --cc=philipk@posteo.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.