#954794 Permit packages to declare dependencies on Essential packages

#954794#3
Date:
2020-03-23 15:00:04 UTC
From:
To:
Previously discussed on the mailing list, which led to a request for
concrete Policy language.

Over the years, "Essential" has made it difficult to reduce installation
size, to reduce chroot/container size, or to coordinate various
transitions. Removing something from the Essential set requires tracking
down every package using it, adding a dependency, carefully managing a
transition across Debian releases, and risking breakage of third-party
packages outside Debian.

Add language to Policy that still allows existing Essential packages to
refactor or transition to different packages (coordinated via
debian-devel) but does not allow new Essential packages.

Also add language that allows packages to declare dependencies on
Essential packages as part of transitions (such dependencies would
previously violate Policy, technically), and soften language that
connects "base system" with "essential".

This change does not propose eliminating the concept of Essential, nor
does it propose that any specific package become non-Essential.

Patch attached; also available at
https://salsa.debian.org/josh-guest/policy/ on the branch
no-new-essential.

- Josh Triplett

#954794#8
Date:
2020-03-23 15:29:33 UTC
From:
To:
I do not think this proposal make sense _as a Debian policy change_.
What I mean is that if the release team decide that some new packages
need to be marked Essential: yes for some technical reason, then either
policy will be ignored and this change will be reverted. Or maybe the
bug will be serious but not RC.

Remember as Manoj used to say, policy is no a stick to beat people with.

Cheers,
Bill.

#954794#13
Date:
2020-03-23 17:35:31 UTC
From:
To:
Hello,

I'm inclined to agree with Bill here.

In particular, it is not clear to me we have a project consensus that
the requirement to seek consensus on debian-devel is not sufficient.

#954794#18
Date:
2020-04-01 09:14:13 UTC
From:
To:
I concur with the comments raised so far.

I think it would be great to do a better job of outlining the problems
with essential packages in debian-policy.
I don't understand why we would tie our hands though.
A consensus of debian-devel seems adequate to consider those issues and
evaluate them.
If after making that consideration we decide to create a new essential
package, we're going to do that policy not withstanding.

I would support a statement in policy that as of the time of writing we
do not anticipate ever creating a new essential package.  That would
help people considering proposing making an essential package know they
are probably looking at things the wrong way.

#954794#23
Date:
2020-04-01 09:42:31 UTC
From:
To:
...

But is it an actual problem ?
Do we see packages marked Essential: yes by mistake ?

Each time we make policy longer we dilute the content.

Cheers,

#954794#28
Date:
2020-04-01 10:52:17 UTC
From:
To:
    Bill> But is it an actual problem ?  Do we see packages marked
    Bill> Essential: yes by mistake ?

I think Josh's analysis brought up some important points for me that I
did not consider before and that need to be considered making decisions
in the future.
I think capturing that analysis in a pointer from policy or in policy is
important to me.

    Bill> Each time we make policy longer we dilute the content.


Obviously, in the limit this is true.
I think that capturing rationale for things that have good rationale and
that could affect the project if not properly considered is worth doing
even though it makes policy longer.

#954794#33
Date:
2020-09-21 15:15:45 UTC
From:
To:
What is the point of Essential? To omit declaring dependencies on the
false assumption that some packages are always required by all systems;
the concept is essentially ill. Thus, if you are not pursuing the
elimination of Essential, your effort is virtually useless. Do you want
to remove Essential?

#954794#36
Date:
2020-09-21 15:15:45 UTC
From:
To:
What is the point of Essential? To omit declaring dependencies on the
false assumption that some packages are always required by all systems;
the concept is essentially ill. Thus, if you are not pursuing the
elimination of Essential, your effort is virtually useless. Do you want
to remove Essential?

#954794#41
Date:
2020-09-29 15:35:17 UTC
From:
To:
El dl 21 de 09 de 2020 a les 17:15 +0200, Javier Serrano Polo va
escriure:

Since it looks like you do not try to eliminate Essential, I will close
this report.

#954794#44
Date:
2020-09-29 15:35:17 UTC
From:
To:
El dl 21 de 09 de 2020 a les 17:15 +0200, Javier Serrano Polo va
escriure:

Since it looks like you do not try to eliminate Essential, I will close
this report.

#954794#49
Date:
2020-09-29 22:08:31 UTC
From:
To:
I want to avoid letting the problem get any worse. Eliminating the
concept entirely would have substantial backwards-compatibility issues,
and would invite substantially more controversy. Right now, I'd just
like to propose not adding any *new* Essential packages.

#954794#54
Date:
2020-09-29 22:08:31 UTC
From:
To:
I want to avoid letting the problem get any worse. Eliminating the
concept entirely would have substantial backwards-compatibility issues,
and would invite substantially more controversy. Right now, I'd just
like to propose not adding any *new* Essential packages.

#954794#57
Date:
2020-09-29 22:08:31 UTC
From:
To:
I want to avoid letting the problem get any worse. Eliminating the
concept entirely would have substantial backwards-compatibility issues,
and would invite substantially more controversy. Right now, I'd just
like to propose not adding any *new* Essential packages.

#954794#62
Date:
2020-09-29 22:36:02 UTC
From:
To:
El dt 29 de 09 de 2020 a les 15:08 -0700, Josh Triplett va escriure:

So Essential packages are a problem. Do you want to remove Essential in
the long-term? If this goal is not clear, there is little point in
changing policy. New Essential packages will exist if there is a good-
enough reason.

#954794#65
Date:
2020-09-29 22:36:02 UTC
From:
To:
El dt 29 de 09 de 2020 a les 15:08 -0700, Josh Triplett va escriure:

So Essential packages are a problem. Do you want to remove Essential in
the long-term? If this goal is not clear, there is little point in
changing policy. New Essential packages will exist if there is a good-
enough reason.

#954794#70
Date:
2020-09-30 00:23:38 UTC
From:
To:
Hi,

Josh Triplett wrote:

Interesting.  On the other side if we were to eliminate Essential
would be bloat in the Packages file from e.g. ~every package needing
Pre-Depends on a shell.

[...]

I think I'd be more supportive of this change if it did.  Freezing the
current essential set in time feels oddly unpragmatic.  If we had a
plan, even one that would take a while, to shrink the essential set,
then it would be more likely to feel worth the cognitive load.

I think there is still a problem to solve here --- e.g. maybe there is
some definition of essential that we may want to move to that would
include things like base-files but wouldn't include things like dpkg
(to take an extreme example) but I don't think we've found it yet.

So even though I'm a fan of the intent here, I agree with the
consensus that we should close this until we have a more specific
proposal.

Thanks,
Jonathan

#954794#75
Date:
2020-09-30 21:03:12 UTC
From:
To:
That seems like it'd be trivially handled by compression. I just did a
quick test, and adding "bash, coreutils, " to every single package
record would only add 10k to the entire gzip-compressed file (which is
currently 10816k, so, <0.1%). There are currently ~60k *packages* in the
packages file, so this adds, on average, about a sixth of a byte per
package.

Long-term, I'd like to see that happen. But I'm a huge fan of
incremental steps; defining the problem as "eliminate Essential" makes
it both difficult enough and controversial enough to make it unlikely to
happen at all. Right now, the first step is "let's not let the problem
get any worse, and let's ensure that any new package that might have
otherwise used Essential must instead get packages to add a dependency".

#954794#80
Date:
2020-10-01 01:34:06 UTC
From:
To:
Josh Triplett wrote:
see work in incremental steps, and it's not necessary to get full
consensus for the full plan in advance.  After all, we can learn as we
go and would need to change the plan.

Even so, some *rough* consensus on the plan is very useful for helping
people evaluate that first step.  It also gives people confidence that
it can still move forward even if some people involved no longer have
time to carry it forward themselves.  In this example, I think we
agree about the ideal first (freeze the current Essential set) and
last (eliminate Essential) steps but we don't have a clear picture of
what happens in between.  That makes it hard to be comfortable with
the first step because there's no reason to be confident that we'll
get any further than that.

If we don't have a rough plan, then the current state already seems
okay: whenever someone proposes adding new Essential functionality, we
can discuss it on debian-devel and the most likely outcome is that it
gets rejected.

Some next steps that would make me more comfortable with an explicit
freeze on Essential:

- document how to mark a package as "not safe in normal circumstances
  to uninstall" (such as apt and systemd-sysv).  Is "Priority:
  important" enough or should one use more?  As a package maintainer,
  how do I mark a package as something that a user would never want to
  deinstall in normal circumstances?

- some rough idea about how to find undeclared dependencies.  Do we
  do an NMU to add currently Essential packages as Pre-Depends on all
  packages and then unmark them as Essential and let package
  maintainers sort it out?  Is there some autodetection we can do
  using autopkgtest?

- some rough idea about what to do with packages from outside the
  Debian archive.  Do we provide a way to declare implicit Pre-Depends
  for everything from a particular archive?

To be clear, I'm not saying we need to commit to a plan (and I'm
certainly not saying it should be documented in policy), but a rough
sense of whether this seems possible and whether there are people
interested in moving it forward would help build consensus for the
first step.

Thanks,
Jonathan

#954794#85
Date:
2020-10-07 19:00:40 UTC
From:
To:
Here is a rough plan:

   1. Policy: Packages should declare all their dependencies, even
      essential ones.
   2. Make easier this task: document dependencies, add Lintian checks,
      etc.
   3. Policy: Packages must declare all their dependencies.
   4. Wait until previous Debian releases become unsupported.
   5. Drop support for Essential.

#954794#88
Date:
2020-10-07 19:00:40 UTC
From:
To:
Here is a rough plan:

   1. Policy: Packages should declare all their dependencies, even
      essential ones.
   2. Make easier this task: document dependencies, add Lintian checks,
      etc.
   3. Policy: Packages must declare all their dependencies.
   4. Wait until previous Debian releases become unsupported.
   5. Drop support for Essential.

#954794#93
Date:
2020-10-07 22:43:22 UTC
From:
To:
    Josh> Long-term, I'd like to see that happen. But I'm a huge fan of
    Josh> incremental steps; defining the problem as "eliminate
    Josh> Essential" makes it both difficult enough and controversial
    Josh> enough to make it unlikely to happen at all. Right now, the
    Josh> first step is "let's not let the problem get any worse, and
    Josh> let's ensure that any new package that might have otherwise
    Josh> used Essential must instead get packages to add a dependency".

Josh, my current reading is that there is not support for even the first
step.
I believe Guillem and I have disagreed, and I haven't noticed support
from anyone other than you.

Is there support I'm failing to remember?

I would not attempt to summarize Guillem's concerns.
My concerns are roughly that I think

1) debian-devel consensus is an
adequate block for things getting worse unless there is a good reason

2) I am not convinced that we would (or should) decline to use this
particular hammer if it really is the best tool we have available for a
bind we find ourselves in; nor do I think policy would actually bar us
if we had necessity

3) The benefit I perceive in spending more time trying to figure out
whether I could be convinced that there are no circumstances under which
I'd support a new essential package is less than  what I think we'd get
out of it , so I'd rather not spend the time.

In the interest of being constructive:

A) I do support reducing the essential set over time

B) I would support better education of the community about why we should
be hesitant to support essential: yes on debian-devel

C) I'd support non-normative documentation that we don't expect to
approve new essential packages in the future in policy.

#954794#98
Date:
2020-10-08 00:48:17 UTC
From:
To:
Hello,

Speaking as Policy Editor, I agree.  I don't see any sort of consensus
that we should deprive ourselves of the ability to declare packages
Essential.

This sounds like a good idea to me too.

#954794#103
Date:
2020-10-15 18:35:31 UTC
From:
To:
Worthless documentation, I think.

Fine, then you should choose one essential package and remove it from
the set for bullseye or bookworm.

#954794#106
Date:
2020-10-15 18:35:31 UTC
From:
To:
Worthless documentation, I think.

Fine, then you should choose one essential package and remove it from
the set for bullseye or bookworm.

#954794#111
Date:
2020-10-15 18:56:19 UTC
From:
To:
Javier Serrano Polo wrote:

More specifically, it's the right first three steps.

https://www.debian.org/doc/debian-policy/ch-binary.html#dependencies
currently says

	Packages are not required to declare any dependencies they
	have on other packages which are marked Essential (see below),
	and should not do so unless they depend on a particular
	version of that package.[4]

	[4] [...] If packages add unnecessary dependencies on packages
	in this set, the chances that there will be an unresolvable
	dependency loop caused by forcing these Essential packages to
	be configured first before they need to be is greatly
	increased.

I'd propose that as a first step we change that to

	Packages are not required to declare any dependencies they
	have on other packages which are marked Essential (see below),
	but are permitted to do so even if they do not depend on a
	particular version of that package.[4]

	[4] Functionality is rarely ever removed from the Essential
	set, but packages have been removed from the Essential set
	when the functionality moved to a different package. So when
	depending on these packages for such functionality, it is
	recommended to depend on an appropriate virtual package
	instead.

	Future versions of Debian policy may encourage and then
	require including explicit dependencies even for essential
	functionality. This is helpful to users putting together
	ultra-minimal systems (though Debian does not support omitting
	Essential functionality out of the box), and it means less
	work is required in case the moment comes to remove some
	functionality from the Essential set in the future.

(The next two steps would be to change that from "are permitted" to
"should", and then to "must".)

What do you think?

Thanks,
Jonathan

[4] "Essential is needed in part to avoid unresolvable dependency loops
on upgrade. If packages add unnecessary dependencies on packages in
this set, the chances that there will be an unresolvable dependency
loop caused by forcing these Essential packages to be configured first
before they need to be is greatly increased. It also increases the
chances that frontends will be unable to calculate an upgrade path,
even if one exists.

"Also, functionality is rarely ever removed from the Essential set, but
packages have been removed from the Essential set when the
functionality moved to a different package. So depending on these
packages just in case they stop being essential does way more harm
than good."

#954794#114
Date:
2020-10-15 18:56:19 UTC
From:
To:
Javier Serrano Polo wrote:

More specifically, it's the right first three steps.

https://www.debian.org/doc/debian-policy/ch-binary.html#dependencies
currently says

	Packages are not required to declare any dependencies they
	have on other packages which are marked Essential (see below),
	and should not do so unless they depend on a particular
	version of that package.[4]

	[4] [...] If packages add unnecessary dependencies on packages
	in this set, the chances that there will be an unresolvable
	dependency loop caused by forcing these Essential packages to
	be configured first before they need to be is greatly
	increased.

I'd propose that as a first step we change that to

	Packages are not required to declare any dependencies they
	have on other packages which are marked Essential (see below),
	but are permitted to do so even if they do not depend on a
	particular version of that package.[4]

	[4] Functionality is rarely ever removed from the Essential
	set, but packages have been removed from the Essential set
	when the functionality moved to a different package. So when
	depending on these packages for such functionality, it is
	recommended to depend on an appropriate virtual package
	instead.

	Future versions of Debian policy may encourage and then
	require including explicit dependencies even for essential
	functionality. This is helpful to users putting together
	ultra-minimal systems (though Debian does not support omitting
	Essential functionality out of the box), and it means less
	work is required in case the moment comes to remove some
	functionality from the Essential set in the future.

(The next two steps would be to change that from "are permitted" to
"should", and then to "must".)

What do you think?

Thanks,
Jonathan

[4] "Essential is needed in part to avoid unresolvable dependency loops
on upgrade. If packages add unnecessary dependencies on packages in
this set, the chances that there will be an unresolvable dependency
loop caused by forcing these Essential packages to be configured first
before they need to be is greatly increased. It also increases the
chances that frontends will be unable to calculate an upgrade path,
even if one exists.

"Also, functionality is rarely ever removed from the Essential set, but
packages have been removed from the Essential set when the
functionality moved to a different package. So depending on these
packages just in case they stop being essential does way more harm
than good."

#954794#119
Date:
2020-10-17 23:49:03 UTC
From:
To:
That sounds great to me. This would mean that there'd be no policy
violation involved if someone wanted to send out patches working towards
making a package non-Essential. It's a good incremental step.

#954794#124
Date:
2020-10-17 23:49:03 UTC
From:
To:
That sounds great to me. This would mean that there'd be no policy
violation involved if someone wanted to send out patches working towards
making a package non-Essential. It's a good incremental step.

#954794#127
Date:
2020-10-17 23:49:03 UTC
From:
To:
That sounds great to me. This would mean that there'd be no policy
violation involved if someone wanted to send out patches working towards
making a package non-Essential. It's a good incremental step.

#954794#132
Date:
2020-10-18 09:43:18 UTC
From:
To:
This is very dangerous with respect to upgrade between stable releases.
The issue is at the time a package is made for a stable release, the
state of Debian and Essential: yes packages is not known. It is
unrealistic to expect Debian to plan so far in advance.
Requiring changes to Essential packages to take into account spurious
dependencies is too fragile.

Cheers,

#954794#135
Date:
2020-10-18 09:43:18 UTC
From:
To:
This is very dangerous with respect to upgrade between stable releases.
The issue is at the time a package is made for a stable release, the
state of Debian and Essential: yes packages is not known. It is
unrealistic to expect Debian to plan so far in advance.
Requiring changes to Essential packages to take into account spurious
dependencies is too fragile.

Cheers,

#954794#140
Date:
2020-10-18 13:43:57 UTC
From:
To:
    >> I'd propose that as a first step we change that to
    >>
    >> Packages are not required to declare any dependencies they have
    >> on other packages which are marked Essential (see below), but are
    >> permitted to do so even if they do not depend on a particular
    >> version of that package.[4]

    Bill> This is very dangerous with respect to upgrade between stable
    Bill> releases.  The issue is at the time a package is made for a
    Bill> stable release, the state of Debian and Essential: yes
    Bill> packages is not known. It is unrealistic to expect Debian to
    Bill> plan so far in advance.  Requiring changes to Essential
    Bill> packages to take into account spurious dependencies is too
    Bill> fragile.

I'm sorry, but I consider myself reasonably knowledgable about package
dependencies and Debian--not admittedly as knowledgable as you, but
knowledgable enough that I ought to be able to follow this discussion.
And after spending a couple minutes thinking about the above I don't
understand what you are getting at.

So, please explain in enough detail that we are able to understand and
evaluate your concern.

#954794#143
Date:
2020-10-18 13:43:57 UTC
From:
To:
    >> I'd propose that as a first step we change that to
    >>
    >> Packages are not required to declare any dependencies they have
    >> on other packages which are marked Essential (see below), but are
    >> permitted to do so even if they do not depend on a particular
    >> version of that package.[4]

    Bill> This is very dangerous with respect to upgrade between stable
    Bill> releases.  The issue is at the time a package is made for a
    Bill> stable release, the state of Debian and Essential: yes
    Bill> packages is not known. It is unrealistic to expect Debian to
    Bill> plan so far in advance.  Requiring changes to Essential
    Bill> packages to take into account spurious dependencies is too
    Bill> fragile.

I'm sorry, but I consider myself reasonably knowledgable about package
dependencies and Debian--not admittedly as knowledgable as you, but
knowledgable enough that I ought to be able to follow this discussion.
And after spending a couple minutes thinking about the above I don't
understand what you are getting at.

So, please explain in enough detail that we are able to understand and
evaluate your concern.

#954794#148
Date:
2020-11-07 20:30:13 UTC
From:
To:
control: retitle -1 Permit packages to declare dependencies on Essential packages

Hello Josh,

Could I ask you to explain your wanting to reduce the Essential set for
the sake of small installation size in more detail, including some
numbers, please?  It would be good to get to the bottom of Bill's worry
about this change, but in addition, I would like to see a stronger
positive case.

As someone who is not concerned about small installation size, I rather
enjoy how the functionality of the Essential set isn't likely to be
reduced any time soon.  As an example, I understand that RedHat systems
aren't guaranteed to have Perl on them anymore; I appreciate how when
I'm working with Debian systems, I know I'm not going to have to spend
time improving my knowledge of awk, and anyway having to use a tool
which I think is worse.

I don't mean to suggest that this usecase of mine is decisive, but it
illustrates that the benefits of keeping Essential as it is are clear,
whereas the benefits of reducing Essential are, currently, vague.  Could
we actually decrease installation size in a way that actually benefits
actually existing usecases if we were to start trying to reduce
Essential?  I would like to see evidence of that.

#954794#155
Date:
2020-11-16 02:04:00 UTC
From:
To:
This could refer to concerns with two opposite situations, I guess:

  - When adding new Essential:yes marks, with omitted dependencies (but
    that is already a problem with the current text). In that case
    the dependencies on the new Essential:yes should only be dropped
    after the next stable release, or packages might assume the
    presence of functionality that might not be there.
  - When removing old Essential:yes marks, with adding "excess"
    dependencies, which could possibly introduce dependency loops,
    that could break ordering assumptions in maintainer script
    execution. This can be problematic if the requirements for the
    behavior of an Essential:yes package for the affected package are
    dropped before the next stable release (work even when unpacked,
    Pre-Depends usage, etc), but otherwise it should be fine I guess.

Thanks,
Guillem

#954794#158
Date:
2020-11-16 02:04:00 UTC
From:
To:
This could refer to concerns with two opposite situations, I guess:

  - When adding new Essential:yes marks, with omitted dependencies (but
    that is already a problem with the current text). In that case
    the dependencies on the new Essential:yes should only be dropped
    after the next stable release, or packages might assume the
    presence of functionality that might not be there.
  - When removing old Essential:yes marks, with adding "excess"
    dependencies, which could possibly introduce dependency loops,
    that could break ordering assumptions in maintainer script
    execution. This can be problematic if the requirements for the
    behavior of an Essential:yes package for the affected package are
    dropped before the next stable release (work even when unpacked,
    Pre-Depends usage, etc), but otherwise it should be fine I guess.

Thanks,
Guillem

#954794#163
Date:
2020-11-16 02:58:46 UTC
From:
To:
I'm in full support of trying to reduce the essential set, and this is
something we have already been trying to do for a while now:

https://wiki.debian.org/Proposals/EssentialOnDiet
https://wiki.debian.org/BusterPriorityRequalification

I also do not see the need to disallow adding new stuff to it if need
be. I think there's enough resistance in place that proposing that on
debian-devel would be met with quite some skepticism, *but* in case it
is needed, it would seem odd to do it anyway, even if policy disallows
it.

While the idea of completely getting rid of the Essential:yes concept
has been floated around in the bootstrapping and multiarch circles,
and seems like an interesting idea, I think it currently has too many
problems to be entertained.

Several of the Essential:yes properties [P] would need to be preserved
somehow for the packaging system to be able to operate as of now. Making
that marking implicit (some kind of lore) seems worse, than the current
explicit one, because the Essential field does not get involved much in
the package system operations anyway, it's more of a contract to be
honored by *maintainers*! Having to add Pre-Depends to tons of packages,
would probably substantially strain our dependency resolvers. Maintainer
scripts in at least the essential set are another problematic area,
so they would need to be reduced substantially, or eliminated
completely [B][D].

 [P] <https://lists.debian.org/debian-dpkg/2020/03/msg00002.html>
 [B] <https://wiki.debian.org/Teams/Dpkg/Spec/InstallBootstrap>
 [D] <https://wiki.debian.org/Teams/Dpkg/Spec/DeclarativePackaging>

I think there are some rough plans for some of the problematic pieces,
but otherwise this seems rather premature, and I concur that the
current state seems fine.

This is already supported with the Protected (old Important) fields,
and was implemented precisely to make it possible to split the
essential set into its different facets.

  <https://wiki.debian.org/Teams/Dpkg/Spec/ProtectedField>

Not all packages need Pre-Depends on currently Essential:yes packages,
but this would require careful consideration. But as mentioned above,
having to increase the amount of Pre-Depends relationships could make
our dependency resolvers and upgrades unhappy.

Trying to detect dependencies is going to be tricky, given that most
of the essential set are callable interfaces, which need to be checked
within scripts calling those tools, or compiled code doing that while
possibly composing tools names are run-time, etc. Using a full code
search would be the usual approach, but that might not be scalable
depending on the dependency.

I don't think we usually take external packages into account TBH,
besides letting our usual one stable release gap in between.

Making it possible (or more explicit) in policy to remove packages from
the essential set might be worthwhile by for example at least covering
that some of the requirements do not need to be met while those removal
transitions are taking place, and that those transitions need to be
discussed in debian-devel, but then we have already been doing that
w/o much of a fuss anyway, so…

Thanks,
Guillem

#954794#168
Date:
2020-11-16 03:12:56 UTC
From:
To:
I'm not sure about Josh, but I think the main reasons for wanting to
reduce the essential set are:

  - Making chroots/containers slimmer, which can have a substantial
    impact when needing lots of them, where even few MiB can make a
    difference.
  - Making bootstrapping (build and installation) in general easier,
    even though for the former these packages also need to then
    be ideally removed from the build-essential set too.

Then there are these:

  - Making the packaging system less opaque, as the full implications
    of Essential:yes do not seem generally clear to all maintainers?
  - Making it easier to use alternative implementations for some of
    these packages, as then it's easier to know what depends on what,
    instead of having to unconditionally provide the entire interface
    surface for anything.
  - Making it easier to handle some multiarch problems, as then
    dependencies can be explicitly marked as needed.

Thanks,
Guillem

#954794#173
Date:
2020-11-16 23:45:07 UTC
From:
To:
Hello,

Thank you for this, but I was hoping for some more specifics.  For
example, what are some examples of large Essential: yes packages that
might actually, in practice, be removable?

#954794#178
Date:
2020-11-17 00:11:53 UTC
From:
To:
Hi,

Sean Whitton wrote:
e2fsprogs, which is ~2.1 MiB.  (You might not consider that large, but
when you multiply that by "every Debian installation everywhere", it
adds up.)

https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=nonessentiale2fsprogs;users=helmutg@debian.org
shows that people are already adding explicit dependencies on it,
which means that
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954794;msg=111 is
the de facto policy / what people believe policy to say.  (Which is a
surprise to me, but it's a useful signal.)

Thanks,
Jonathan

#954794#183
Date:
2021-03-16 23:50:42 UTC
From:
To:
So, should policy change? Currently, it says that packages "should not"
declare essential dependencies, which is more permissive than "must
not". Is the workflow with e2fsprogs the path to follow?

#954794#186
Date:
2021-03-16 23:50:42 UTC
From:
To:
So, should policy change? Currently, it says that packages "should not"
declare essential dependencies, which is more permissive than "must
not". Is the workflow with e2fsprogs the path to follow?

#954794#193
Date:
2025-03-16 13:11:45 UTC
From:
To:
Hello,

A lot of systems do not actually need *anything* from util-linux.
Yet is is Essential: yes, and because of the large set of programs
in it, removing the Essential flag on it will be extremely painful.

Even more so when other packages cannot depend on it for an orderly
transition.

~5MB installed, give or take for libraries which may also become
removable.

Chris

#954794#198
Date:
2025-03-17 02:33:55 UTC
From:
To:
Hello,

Thanks. Clearly this is a situation that we want to avoid happening
again.

I don't see how the current text would be inadequate, though.  For a
package like util-linux, a discussion on debian-devel would result in a
resounding "no".