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

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.

-- 
	Philip Kaludercic on peregrine



  reply	other threads:[~2024-05-01 18:06 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 [this message]
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
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=87ttjhpfue.fsf@posteo.net \
    --to=philipk@posteo.net \
    --cc=clemera@posteo.net \
    --cc=emacs-devel@gnu.org \
    --cc=grinn.amy@gmail.com \
    /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.