unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dmitry@gutov.dev>
To: Eli Zaretskii <eliz@gnu.org>
Cc: joaotavora@gmail.com, emacs-devel@gnu.org
Subject: Re: Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot)
Date: Wed, 19 Apr 2023 22:25:08 +0300	[thread overview]
Message-ID: <b03853dc-bef0-df74-5c1a-3cbf44d2f619@gutov.dev> (raw)
In-Reply-To: <83a5z482e3.fsf@gnu.org>

On 19/04/2023 15:47, Eli Zaretskii wrote:

>>> This will be one of the serious issues if we ever move to having some
>>> packages only in elpa.git, and will then bundle them when preparing an
>>> Emacs release tarball.  It will be imperative to know at that time
>>> which version/branch of each such package to take as part of preparing
>>> a release.  We must have a solution by then, so this is as good time
>>> as any to start discussing the issue.
>>
>> Sure. Please keep in mind, however, that very few of external packages
>> have separate branches for releases and development. I guess Org does,
>> but I'm not sure if others exist. One of the reasons for that is that
>> the ELPA repositories only package the very latest released version
>> anyway and quickly delete the older ones. And package.el is the foremost
>> distribution method for Elisp code.
> 
> Then maybe ELPA will have to change as well.

I don't think that should be, or can be reasonably required. But that 
can be put it to a separate discussion. With Stefan and Philip involved, 
probably.

>> So every time a new version if tagged, it's a value judgment on the part
>> of the maintainer: whether enough time has passed since the most recent
>> big feature was added, whether there were bug reports or not.
> 
> Similar judgment calls are necessary for Emacs.  So I see nothing here
> that brings some fundamentally new issues.
> 
> Moreover, I don't see how this affects the need to have good criteria
> for stability, and the importance of applying those criteria when
> deciding which versions to bundle with Emacs.

Ok, if the question is just "how to choose the version of :core package 
to bundle with an Emacs release", then just see the criterion "N weeks 
have passed without issue" that I just described in the bug thread.

This one doesn't need any changes to ELPA, and I've been using it, more 
or less, for some years now.

>>> If some core package is not tested enough before it gets a new
>>> version, then why are we okay with telling users of a stable Emacs to
>>> update the package willy-nilly as soon as another version is on ELPA?
>>> Shouldn't we at least warn them, or, better, somehow indicate that
>>> this version is not yet considered stable?
>>
>> I have a different answer from all that had been presented here: because
>> the user can uninstall it.
> 
> User can also downgrade to a previous version of the package, don't
> they?  Or if they cannot, they should be able to do that.

Even if there was such possibility, they wouldn't have a single stable 
version to go back to (they'd have to make a choice). When we bundle a 
version, that's one fewer question to answer.

> Once that
> is possible, what exactly is the difference between these two kinds of
> packages?  Downgrading to an older version when a newer one is buggy
> or otherwise unsatisfactory should be supported for all packages.

Then the difference would be that we hand-picked a set of particular 
versions of packages, whereas for third-party packages that was done (or 
failed to be done) by other people we have no responsibility over.

> Also, does package.el support "downgrading" to the bundled version?
> Did anyone actually try that?  In particular, what happens with the
> dependencies the user upgraded together with the package being
> "uninstalled", due to the minimum requirements of that package?

It should work by "uninstalling" the package. An when you uninstall a 
package, package.el warns you about any dependencies that would be 
broken this way. Someone should test it just in case, of course.

But the important part is that the bundled package stays installed. You 
asked why we can encourage people to upgrade said packages freely. One 
answer is that they have a safety net.

>>> IOW, shouldn't packages have some "stability gradation" that is
>>> visible when users look at the list of packages via package.el?
>>> Shouldn't we allow users to tell package.el which stability they want
>>> to download, so that unstable packages don't inadvertently get
>>> installed and mess up their production environment?
>>
>> We have elpa and elpa-devel. The latter is "explicitly unstable" and the
>> former is "checkpoint releases".
> 
> So what is the stability measure of "elpa", again?  Is it on par with
> the Emacs's release branch?  Could it be?

It's more stable than 'git clone' but less stable than using a release.

And this will stay that way while we're using it to help stabilize 
package versions, too.

 > If not, why not?

I don't think we want ELPA to have the same frequency of package 
releases as Emacs itself.

We could add a new archive, though. Like elpa-very-stable. Which would 
be pushed, for example, the same versions of bundled packages that go 
into Emacs releases. Or something like that.

>> Neither keeps the previous versions around, so it's not like the user at
>> any point could make a choice to install a minor version update instead
>> of going up a full major version.
> 
> That in itself is a serious deficiency, IMO, and we should fix it by
> providing the "downgrade" option.

Doing that for every package will mean more work for everybody around, 
and it'll also increase the costs of hosting packages considerably.

>>> I don't see what development pace has to do with this issue.  If a
>>> package is being developed at a high pace, it might mean that the
>>> stable version will lag more.  But what does this change in principle?
>>
>> It matters when we're talking not about simple additional, optional
>> features, but about changes that keep pace with the evolution of the LSP
>> standard, with new LSP servers that arrive, new changes in existing
>> protocols. Things that users come to expect to be able to use now, and
>> not in 3 years.
> 
> Users who must have these features (presumably because they must use
> servers which require that) will have to give up some stability
> expectations.  Exactly like users who must have some new enough
> feature of Emacs which is only available on the master branch.
> 
> So once again: what is fundamentally different or new about packages
> which develop at fast pace, in the context of this discussion?  Why do
> we need to bring up those details here?

It's an issue of whether a "stable" Eglot could actually be useful 2 
years later for most people. If not (I admit I don't know for certain), 
we should choose to focus on other scenarios and needs, and less on 
stability in this particular case.

>> Taking a conservative stance can work when the ecosystem supports it
>> too. E.g. if every LSP server that we support now had an implicit
>> promise to be properly maintained for 3 years since, at least. I don't
>> think that's the case. Almost every one could be deprecated in that time
>> frame, with community being recommended to switch to a newer one.
> 
> How does this help us move forward with the discussion and with
> handling this issue?  Conservative doesn't mean stupid; if some
> external factor changes outside of our control and forces us to make
> potentially destabilizing changes, what else can we do that requires a
> discussion?

No, I don't think that conservative means stupid. I am fairly 
conservative in some things, just not in others.

Or take Joao: he's at the moment being conservative about how the users 
install Eglot and have had it upgraded over time when using all previous 
releases of Emacs.

> And how does it impact what we should do about
> categorizing package releases according to their stability and about
> the decisions which version to bundle with Emacs?

No, that's a different question. One I had hopefully addressed above.

>> To clarify: I made that suggestion from the premise that we do expect
>> and encourage a fair fraction of the users to use just the versions of
>> Eglot and Eldoc that come with Emacs 29, and never upgrade to the latest
>> ones.
> 
> AFAIU, João is of the opposite opinion: he thinks that most Eglot
> users will want the latest version on ELPA, or at least a version that
> is newer than the one bundled with Emacs.

I am of the above opposite opinion as well, but I can appreciate your 
POV as well, I think. And, well, if the ultimate decision is made using 
the latter principle, we still could make the most of it.

>> And as per above explanation, Eglot 0.14 depends on Eldoc 0.14.0 not
>> because it's the very latest and spiffiest version, but because it needs
>> a particular feature from it.
> 
> And there's no reasonable way of adding to Eglot 1.14 some fallback or
> compatibility shim to remove that dependency?

Everything's possible. It might not even be too hard.

But if we're talking about the improvement I was eyeing (better 
eglot<->eldoc behavior all around), then a simple shim won't cut it.



  parent reply	other threads:[~2023-04-19 19:25 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87a5zj2vfo.fsf@gmail.com>
     [not found] ` <83wn2h5825.fsf@gnu.org>
     [not found]   ` <87wn2gkhzr.fsf@posteo.net>
     [not found]     ` <83cz485oxi.fsf@gnu.org>
     [not found]       ` <87leiwdyff.fsf@posteo.net>
     [not found]         ` <834jpk5hih.fsf@gnu.org>
     [not found]           ` <871qkom3fj.fsf@posteo.net>
     [not found]             ` <83mt3b4yfc.fsf@gnu.org>
     [not found]               ` <87edonlsxi.fsf@posteo.net>
     [not found]                 ` <83jzyf4vzb.fsf@gnu.org>
     [not found]                   ` <871qknllkj.fsf@posteo.net>
     [not found]                     ` <83fs934pjf.fsf@gnu.org>
     [not found]                       ` <87wn2fk47y.fsf@posteo.net>
     [not found]                         ` <83sfd2g2ek.fsf@gnu.org>
     [not found]                           ` <875y9yfxrr.fsf@gmail.com>
     [not found]                             ` <CALDnm50-Su4SAGDSBiLjt0yrjrVsvyW71NSMi=zt7uHgv7rdng@mail.gmail.com>
     [not found]                               ` <87y1muefks.fsf@gmail.com>
     [not found]                                 ` <CALDnm50b6hRu+4EFqQDVydOF07HdiZT4nHA=aLDjYQKtMBTk2Q@mail.gmail.com>
     [not found]                                   ` <fc2ed4a0-2368-682d-e34d-5cf94ac261fc@gutov.dev>
     [not found]                                     ` <CALDnm527Avsa-MBTD-bvRqOn52AeBLfPvffxjL-NB3tqM=43ZQ@mail.gmail.com>
     [not found]                                       ` <834jpifizy.fsf@gnu.org>
     [not found]                                         ` <CALDnm53X5Yyn_EitG+iHJVx=RO2hjNaWkrgPz0+jKVWVM=eEBQ@mail.gmail.com>
     [not found]                                           ` <83y1mue1qi.fsf@gnu.org>
     [not found]                                             ` <CALDnm51hmRMxstQdZdstA2LrbvYw=zD5=XRVy6uCU=Z+OmONRg@mail.gmail.com>
     [not found]                                               ` <83sfd2e01f.fsf@gnu.org>
     [not found]                                                 ` <1a5e5837-513b-84d8-3260-cdbf42b71267@gutov.dev>
     [not found]                                                   ` <83sfcz9rf2.fsf@gnu.org>
     [not found]                                                     ` <09a49ab9-ac72-36a9-3e68-9c633710eba7@gutov.dev>
2023-04-18 12:57                                                       ` Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot) Eli Zaretskii
2023-04-18 14:02                                                         ` João Távora
2023-04-18 14:47                                                           ` Eli Zaretskii
2023-04-18 15:45                                                             ` João Távora
2023-04-18 16:19                                                               ` Eli Zaretskii
2023-04-18 17:49                                                                 ` João Távora
2023-04-18 21:19                                                                   ` Dmitry Gutov
2023-04-18 18:56                                                         ` Jim Porter
2023-04-18 19:21                                                           ` Eli Zaretskii
2023-04-18 19:36                                                             ` Jim Porter
2023-04-19 11:55                                                               ` Eli Zaretskii
2023-04-19  8:50                                                           ` João Távora
2023-04-19 12:13                                                             ` Dr. Arne Babenhauserheide
2023-04-19 17:03                                                               ` Eli Zaretskii
2023-04-19 17:21                                                                 ` João Távora
2023-04-19 18:07                                                                   ` Eli Zaretskii
2023-04-19 18:14                                                                     ` Dmitry Gutov
2023-04-19 18:32                                                                       ` Eli Zaretskii
2023-04-19 19:33                                                                         ` João Távora
2023-04-20  4:26                                                                           ` tomas
2023-04-19 19:39                                                                         ` Dmitry Gutov
2023-04-19 19:46                                                                           ` João Távora
2023-04-19 20:50                                                                             ` Dmitry Gutov
2023-04-19 20:57                                                                               ` João Távora
2023-04-19 21:58                                                                                 ` Jim Porter
2023-04-19 22:29                                                                                   ` João Távora
2023-04-19 22:42                                                                                     ` Jim Porter
2023-04-19 22:58                                                                                       ` João Távora
2023-04-19 22:06                                                                                 ` Dmitry Gutov
2023-04-19 22:21                                                                                   ` Jim Porter
2023-04-19 22:27                                                                                     ` Dmitry Gutov
2023-04-19 22:43                                                                                       ` Jim Porter
     [not found]                                                                                 ` <f32d7008-ea39-a9d7-8224-2c5b969236b7@gutov.dev>
     [not found]                                                                                   ` <CALDnm53vPnODxpv_=nvOHRjLX-PfhyTS0MFudR0qZ3Pa-Lw-AQ@mail.gmail.com>
2023-04-19 23:25                                                                                     ` Dmitry Gutov
2023-04-20  0:13                                                                                       ` João Távora
2023-04-20  1:13                                                                                         ` Dmitry Gutov
2023-04-20  1:49                                                                                           ` João Távora
2023-04-20  2:04                                                                                             ` Dmitry Gutov
2023-04-19 19:15                                                                     ` João Távora
2023-04-20  9:38                                                                       ` Eli Zaretskii
2023-04-20  9:48                                                                         ` João Távora
2023-04-20 11:47                                                                           ` Eli Zaretskii
2023-04-20 12:00                                                                             ` João Távora
2023-04-20 12:16                                                                               ` Eli Zaretskii
2023-04-20 12:24                                                                                 ` João Távora
2023-04-19 17:35                                                                 ` John Yates
2023-04-19 17:42                                                                   ` João Távora
2023-04-19 18:02                                                                   ` Eli Zaretskii
2023-04-19 18:04                                                                 ` Jim Porter
2023-04-19 18:34                                                                   ` Eli Zaretskii
2023-04-19 19:35                                                                     ` Jim Porter
2023-04-20  9:49                                                                       ` Eli Zaretskii
2023-04-19 19:40                                                                 ` Dr. Arne Babenhauserheide
2023-04-20  6:02                                                                   ` Eli Zaretskii
2023-04-29  5:21                                                                     ` Stability of core packages emacs
2023-04-29  6:26                                                                       ` Eli Zaretskii
2023-04-29 21:47                                                                         ` Mohsen BANAN
2023-04-30  6:21                                                                           ` Eli Zaretskii
2023-04-30  9:07                                                                           ` Philip Kaludercic
2023-04-30 13:12                                                                           ` Corwin Brust
2023-05-07  5:58                                                                             ` Mohsen BANAN
2023-05-05  4:36                                                                       ` David Masterson
2023-05-05  4:56                                                                       ` David Masterson
     [not found]                                                                       ` <878re3bdj6.fsf@penguin>
2023-05-05  4:59                                                                         ` David Masterson
2023-04-19 12:55                                                             ` Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot) Eli Zaretskii
2023-04-19 13:18                                                               ` João Távora
2023-04-19 13:44                                                                 ` Eli Zaretskii
2023-04-19 14:13                                                                   ` João Távora
2023-04-18 22:10                                                         ` Dmitry Gutov
2023-04-19  8:34                                                           ` João Távora
2023-04-19 12:47                                                           ` Eli Zaretskii
2023-04-19 18:22                                                             ` Jim Porter
2023-04-19 18:37                                                               ` Eli Zaretskii
2023-04-19 19:32                                                                 ` Jim Porter
2023-04-19 22:51                                                                 ` Lynn Winebarger
2023-04-20 13:47                                                                   ` history of ELPA packages and dependencies (was: Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot)) Lynn Winebarger
2023-04-20 13:58                                                                   ` Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot) Lynn Winebarger
2023-04-19 19:25                                                             ` Dmitry Gutov [this message]
2023-04-19 19:40                                                               ` João Távora
2023-04-20  9:47                                                               ` Eli Zaretskii
2023-04-20 13:03                                                                 ` Dmitry Gutov
2023-04-20 14:03                                                                   ` Eli Zaretskii
2023-04-20 14:22                                                                     ` Dmitry Gutov
2023-04-20 14:42                                                                       ` Eli Zaretskii
2023-04-20 15:30                                                                         ` Dmitry Gutov
2023-04-20 15:49                                                                           ` Eli Zaretskii
2023-04-20 17:26                                                                             ` Stability of core packages Philip Kaludercic
2023-04-20 18:46                                                                               ` Eli Zaretskii
2023-04-20 21:25                                                                             ` Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot) Dmitry Gutov
2023-04-21 14:12                                                                             ` Lynn Winebarger
2023-04-19 12:31                                                         ` What is :core? (was: Stability of core packages (was: Not easy at all to upgrade :core packages like Eglot)) Lynn Winebarger
2023-04-19 12:57                                                           ` João Távora
2023-04-19 13:03                                                           ` Eli Zaretskii

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=b03853dc-bef0-df74-5c1a-3cbf44d2f619@gutov.dev \
    --to=dmitry@gutov.dev \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=joaotavora@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 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).