Re: ***UNCHECKED*** Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Simon Richter
Hi,

On Sun, Nov 10, 2019 at 12:19:24AM +0100, Bernd Zeimetz wrote:

> > Yes, that would be my desired outcome: an affirmation that Debian wants to
> > be "universal". This has been our greatest strength for years.

> Its a strength that wasted an enormous  amount of ressources. See
> kfreebsd (which was actually really nice!) and Hurd, to name some
> prominent examples.

Taking this to the extreme, it is an enormous waste of resources to
maintain both Debian and Ubuntu as separate entities. What differentiates
us?

> People should not be forced to waste their time, but also we should not
> necessarily stop them if they want to do it.

The problem is at the intersection when one person considers it a waste of
their time when they are asked to integrate the work of another person,
whose work is wasted if it is not integrated.

> For me I think the only useful way would be to maintain all init-scripts
> in a single package that gets pulled in with sysvinit. Whoever wants to
> use and maintain it is free to do so. Initscript could actually be
> installed using dpkg triggers or whatever else works.

You are still missing the point. This is not a technical problem, and
providing a technical solution...

> (And at some time we can still move that package into an external
> repository).

... that essentially tells people to leave the project if they disagree
with you is not a solution for a social problem, quite the opposite in
fact.

   Simon



Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Bernd Zeimetz



On 11/9/19 11:24 PM, Simon Richter wrote:

> Yes, that would be my desired outcome: an affirmation that Debian wants to
> be "universal". This has been our greatest strength for years.

Its a strength that wasted an enormous  amount of ressources. See
kfreebsd (which was actually really nice!) and Hurd, to name some
prominent examples.

People should not be forced to waste their time, but also we should not
necessarily stop them if they want to do it.

For me I think the only useful way would be to maintain all init-scripts
in a single package that gets pulled in with sysvinit. Whoever wants to
use and maintain it is free to do so. Initscript could actually be
installed using dpkg triggers or whatever else works.

(And at some time we can still move that package into an external
repository).

-- 
 Bernd ZeimetzDebian GNU/Linux Developer
 http://bzed.dehttp://www.debian.org
 GPG Fingerprint: ECA1 E3F2 8E11 2432 D485  DD95 EB36 171A 6FF9 435F



Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Matthias Klumpp
Am Sa., 9. Nov. 2019 um 23:01 Uhr schrieb Mike Gabriel
:
> [...]
> Isn't as side-question that is on the table with this GR: what about
> the future of non-Linux variants of Debian. If systemd becomes _the_
> init system of focus in Debian (by vote, not only de facto), kFreeBSD
> and Hurd will certainly have more of their difficulties, more than
> they have now.
> [...]

This comes up often, but I don't think this is actually that big of a
deal: kFreeBSD & Co. already require a lot of other changes in
packages, related to facilities (DBus services, syscalls, etc.) not
available on these platforms.
While all Linux ports could use systemd, the kFreeBSD/Hurd
architectures could continue using sysvinit, and packages could
conditionally install init-scripts only on the kFreeBSD architecture.
This also avoids dependency issues and problems caused by switching
out init.

Note that I am not saying "this is what should be done", just that in
case we *would* go all-in on systemd, this in no way would mean the
death of non-Linux ports. Sure, they would be slightly harder to
maintain, but they are already a hard thing to do, and compared to
porting stuff that uses Linux syscalls, the init issue isn't that much
different.

The one thing I am against though is the non-Linux ports holding back
innovation and experimentation on the Linux ports. If we go with the
lowest common denominator, we can't realistically move forward, ever.

Cheers,
Matthias

-- 
I welcome VSRE emails. See http://vsre.info/



Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Simon Richter
Hi Mike,

On Sat, Nov 09, 2019 at 09:48:03PM +, Mike Gabriel wrote:

> root@minobo:~# apt-rdepends -r systemd | wc -l

> 6598

It's not as bad as you think: the important package is systemd-sysv.

In buster:
$ apt-cache rdepends systemd-sysv


In bullseye:
systemd-sysv
Reverse Depends:
  systemd-cron
  dbus-user-session
 |xfce4-session
 |unattended-upgrades
  sysvinit-core
  sysvinit-core
  libvirt-daemon-system
  udev
  libpam-systemd
  runit-systemd
  runit-init
  runit-init
  prometheus-postgres-exporter
  prometheus-node-exporter
  prometheus-bind-exporter
  prometheus-apache-exporter
  prometheus-alertmanager
  prometheus
  profile-sync-daemon
  pk4
 |numad
  munin
  micro-httpd
  mender-client
 |mandos
  logrotate
  dbus-user-session
 |libguestfs0
 |init
  gpsd
  friendly-recovery
  exim4-base

The lines marked with a | have an alternative, e.g. numad has

..., systemd-sysv | cgmanager, ...

Several of these are not Depends, but Conflicts/Replaces relationships, but
I have no idea how to quickly filter them, and several like exim4-base have
alternatives, but these aren't shown here.

What I can confirm depends on systemd-sysv are

 - systemd-cron (not relevant, we have cron)
 - dbus-user-session (can be replaced by dbus-x11, although apt doesn't
   find that solution)
 - libvirt-daemon-system (real problem)
 - udev (not relevant, we have eudev)
 - libpam-systemd (not relevant, that is the integration for
   dbus-user-session & co)

So the only real issues at the moment are libvirt-daemon-system and apt
needing a manual poke when installing something that pulls in
dbus-user-session, such as libgtk.

   Simon



Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Mike Gabriel

Hi,

On  Do 07 Nov 2019 19:59:49 CET, Sam Hartman wrote:


No, the difference intended between choice 2 and 3 is about how we
handle technologies like elogind, or a mythical technology that parsed
sysusers files, rather than how we handle starting daemons.


I'd suggest leaving elogind entirely out of the discussion, here.

The elogind fork of the systemd component systemd-logind only kicks  
in, just like systemd-logind, once a user logs into the session.


As I get it, the rest of the GR draft is about system services  
initialization, not user session services startups.


If systemd was mandatory, user session services would be handled by  
systemd-logind.


If systemd was replaceable by some other init system, than there would  
be (at least) two options:


  - still use systemd-logind for user session service startups
(and have all the systemd entanglement package-wise) [1, 2]
  - use elogind (drop-in replacement for systemd-logind, no entanglement
with systemd as a system service orchestrator)

Isn't as side-question that is on the table with this GR: what about  
the future of non-Linux variants of Debian. If systemd becomes _the_  
init system of focus in Debian (by vote, not only de facto), kFreeBSD  
and Hurd will certainly have more of their difficulties, more than  
they have now.


light+love,
Mike

[1] in Debian jessie this was possible
[2] Ubuntu used to have a phase when upstart was handling system  
services and systemd-logind was handling user session services


--

DAS-NETZWERKTEAM
c\o Technik- und Ökologiezentrum Eckernförde
Mike Gabriel, Marienthaler str. 17, 24340 Eckernförde
mobile: +49 (1520) 1976 148
landline: +49 (4351) 850 8940

GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22  0782 9AF4 6B30 2577 1B31
mail: mike.gabr...@das-netzwerkteam.de, http://das-netzwerkteam.de



pgpFxlp1eGHIc.pgp
Description: Digitale PGP-Signatur


Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Mike Gabriel

On  Sa 09 Nov 2019 19:09:35 CET, Holger Levsen wrote:


On Sat, Nov 09, 2019 at 06:08:54PM +0100, Simon Richter wrote:

(Option 1.1.1)

Automated variant transitions shall be supported.

[Rationale: moving from systemd to sysvinit is currently an involved manual
process, so unavailable to anyone not already skilled in Unix
administration, creating an artificial barrier.]


please clarify what you mean by this. I understand that you claim that
"apt-get install -y sysvinit-core" is hard (I disagree somewhat, but I
also think that those for this is hard shouldn't care) but anyway, what
do you envision how 'automated variant transitions' should be done? A
click in some UI?

(This is a serious question and the reason i'm sending this mail. I'm
really curious as I think
https://wiki.debian.org/systemd#Installing_without_systemd is pretty
clear and easy.)



The problem here is this (queried on a buster system):

```
root@minobo:~# apt-rdepends -r systemd
systemd
  Reverse Depends: 389-ds-base (1.4.0.21-1)
  Reverse Depends: apticron-systemd (1.2.1)
  Reverse Depends: arctica-greeter (0.99.1.3-1)
  Reverse Depends: ayatana-indicator-session (0.4.3-2)
  Reverse Depends: biometric-auth (0.9.61-2)
  Reverse Depends: biometric-utils (0.9.61-2)
  Reverse Depends: btrfsmaintenance (0.4.2-1)
  Reverse Depends: clevis-systemd (11-2)
  Reverse Depends: cloudprint-service (0.14-12)
  Reverse Depends: dbus-user-session (1.12.16-1)
  Reverse Depends: fakemachine (0.0~git20181105.9316584-2)
  Reverse Depends: fcgiwrap (1.1.0-12)
  Reverse Depends: iio-sensor-proxy (2.4-2)
  Reverse Depends: kde-config-systemd (>= 1.2.1-3)
  Reverse Depends: libbiometric-dev (0.9.61-2)
  Reverse Depends: libbiometric0 (0.9.61-2)
  Reverse Depends: liblxc1 (1:3.1.0+really3.0.3-8)
  Reverse Depends: libnss-resolve (= 241-7~deb10u1)
  Reverse Depends: libnss-systemd (= 241-7~deb10u1)
  Reverse Depends: libpam-systemd (= 241-7~deb10u1)
  Reverse Depends: libreswan (3.27-6)
  Reverse Depends: live-config-systemd (5.20190519)
  Reverse Depends: local-apt-repository (0.6)
  Reverse Depends: ltsp-client (>= 5.18.12-3)
  Reverse Depends: mate-power-manager (1.20.3-2)
  Reverse Depends: netplan.io (>= 0.95-2)
  Reverse Depends: ntpsec-ntpviz (1.1.3+dfsg1-2)
  Reverse Depends: oddjob (0.34.4-1)
  Reverse Depends: open-infrastructure-system-config (20190202-1)
  Reverse Depends: openvpn-systemd-resolved (>= 1.2.7-1)
  Reverse Depends: plymouth (>= 0.9.4-1.1)
  Reverse Depends: python-ipalib (4.7.2-3)
  Reverse Depends: rasdaemon (0.6.0-1.2)
  Reverse Depends: snapd (2.37.4-1+b1)
  Reverse Depends: sogo (4.0.7-1)
  Reverse Depends: systemd-container (= 241-7~deb10u1)
  Reverse Depends: systemd-coredump (= 241-7~deb10u1)
  Reverse Depends: systemd-journal-remote (= 241-7~deb10u1)
  Reverse Depends: systemd-tests (= 241-7~deb10u1)
  Reverse Depends: tomcat9 (>= 9.0.16-4)
  Reverse Depends: ukui-power-manager (1.1.2-1)
  Reverse Depends: vblade (24-3)
  Reverse PreDepends: systemd-sysv (241-7~deb10u1)
[...]
```

Output has been shortened to the first layer of the dependency tree.

```
root@minobo:~# apt-rdepends -r systemd | wc -l
Reading package lists... Done
Building dependency tree
Reading state information... Done
6598
```

The previous command would print out 6598 lines, in fact.


We have several packages that hard-depend on systemd. IMHO, all of  
those should be investigated, if such a hard dependency could not be  
avoided. (In fact, arctica-greeter and mate-power-manager could indeed  
live without it). For iio-proxy-sensor, I just did an NMU that dropped  
the hard systemd dependency.



On my local notebook (on buster), a switch to sysvinit-core would to this...

```
root@minobo:~# apt-get install sysvinit-core
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer  
required:
  accountsservice appstream apt-config-icons apt-config-icons-large  
argyll bluefish-data bluefish-plugins bolt brasero-cdrkit  
breeze-cursor-theme caja-common catdoc cinnamon-common  
cinnamon-control-center-data cinnamon-screensaver  
cinnamon-screensaver-x-plugin cinnamon-settings-daemon cjs colord-data  
dvd+rw-tools
  evemu-tools evtest gir1.2-abi-3.0 gir1.2-cinnamondesktop-3.0  
gir1.2-clutter-gst-3.0 gir1.2-cmenu-3.0 gir1.2-cvc-1.0  
gir1.2-dazzle-1.0 gir1.2-gdm-1.0 gir1.2-gnomebluetooth-1.0  
gir1.2-grilo-0.3 gir1.2-gsf-1 gir1.2-keybinder-3.0 gir1.2-mediaart-2.0  
gir1.2-meta-muffin-0.0 gir1.2-mutter-3 gir1.2-packagekitglib-1.0
  gir1.2-pluma-1.0 gir1.2-xapp-1.0 gnome-session-bin  
gnome-session-common growisofs hwdata iso-flags-png-320x240 k3b-data  
kate5-data katepart kde-cli-tools-data kde-style-qtcurve-qt4 kded5  
kdelibs-bin kdoctools kdoctools5 khotkeys-data kio-extras-data  
kpackagetool5 ksysguard-data ksysguardd ktexteditor-data
  kwin-data kwrited libappstream4 libappstreamqt2 libblockdev-fs2  
libblockdev-loop2 libblockdev-part-err2 

Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Simon Richter
Hi,

On Sat, Nov 09, 2019 at 10:01:27AM -0800, Russ Allbery wrote:

> > (Option 1)

> > The Debian Project aims at providing the greatest configuration flexibility
> > while maintaining a sensible default installation for end users. To that
> > end, we document functional dependencies in a machine-readable way and
> > provide alternative variants if possible.

> "Functional dependencies" feels odd to me as a way of characterizing this
> whole problem space.  I can kind of see where you're coming from with
> that, but it's about more than dependencies.  It's also about configuring
> the environment in which a service should run and controlling the
> mechanisms of starting the service and determining when it should be
> running.

Yes, but all of these can be boiled down to required interfaces, "can I
express the desired environment and start conditions in the terms of this
interface?"

Interfaces are versioned, however, and we need either a negotiation process
or a mechanism to avoid version mismatch. With a slow-moving interface like
sysvinit's, that was not a problem, but systemd evolves faster than Debian
releases. Negotiation is out for static unit files, so that leaves a
lockout mechanism.

In the "full diversity" case, we'd ideally map the required interfaces onto
package relationships, e.g.

Depends: interface-systemd-timer-unit-1 (>= 4)

Here, 1 and 4 are the version numbers for the interface -- no
compatibility breaks yet, but the unit file uses declarations added in a
later revision. This mechanism could work similar to shared libraries with
symbol versions, and the usual Conflicts/Provides mechanism would make sure
that only one provider for each interface is installed.

Long term, init scripts would lose their special status and require a
dependency declaration as well, which could be used to decide if systemd
generators for init compatibility are needed. A package providing both an
init script and a service unit file would declare that it requires either,
and thus would not force anyone to install compatibility code.

> The phrasing here doesn't really address how aggressive we're going to be
> about using systemd services.  I think "if possible" is doing a bit too
> much heavy lifting and not providing enough guidance.

The default would still remain systemd. Alternative implementations will
only appear if there is interest in having them, so there is no point in
binding the project into providing them with no users.

My expectation is that alternative implementations will pick and choose
what interfaces to implement, based on users' needs and feasibility.
Basically, if the sysvinit users are mostly running system services on
headless boxes, then there is no need to provide an implementation of
dbus-activated session services.

> > (Option 1.1.1)

> > Automated variant transitions shall be supported.

> > [Rationale: moving from systemd to sysvinit is currently an involved
> > manual process, so unavailable to anyone not already skilled in Unix
> > administration, creating an artificial barrier.]

> Doesn't this have that same problem that it votes for creating an RC bug
> that we have no real idea how to fix?

Probably a package that diverts /sbin/init and replaces it with a shell
script that checks if a transition is pending and performs it if all
requirements are met (e.g. required packages available in apt cache and
checksums correct, ...). No need to do this in existing packages.

> In general, for these variants, is the transition path from systemd to
> sysvinit something that is controversial in the project?  I thought the
> problem was mostly ensuring things work on sysvinit at all.

The transition path is important as long as the installer installs systemd
by default and this cannot be changed (which would be option 1.1.3).

The number "1% of new installations use sysvinit" is floating around. In
absolute terms, that is a massive number of people who went through a long
manual process, and making that process less painful would be a great
service.

> > (Option 1.2.1)

> > Package maintainers for packages requiring tighter integration into a
> > particular ecosystem are asked to form teams to cover adequate
> > integration testing.

> I truly have no idea what this means, what Policy language it would
> translate into, or what work this implies a Debian package maintainer
> should do.

As for Policy, not much, since that is an organizational, not a technical
thing.

My expectation is that services that require more complex integration than
"start process (after rcS.d|before multi-user.target)" will be
team-maintained anyway, and this is expressing a wish that if a volunteer
pops up who is using that service on a sysvinit box and they are remotely
competent, they get added to the team as the go-to person for sysvinit
integration. That doesn't necessitate commit access, but likely will, and
it probably implies a mail "I'm about to upload a new upstream release, can
you check if it 

Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Russ Allbery
Simon Richter  writes:

> the main problem I see with this GR is that it is in essence a rehash of
> the GR[1] we had in 2014, with pretty much the same options minus the
> one that won, "A GR is not required."

I voted that option in 2014 and definitely will not be voting that option
today, for the reasons explained in another thread on debian-devel.  If
there are a sufficient number of people like myself who feel that way now,
this isn't really a rehash.  It's five years later; some things have
changed and we understand more about the problem space.

> The fact that only service start is documented in policy is a bug in
> itself.

There are numerous bugs in Policy in this area and a truly huge amount of
work that needs to be done.

On to your proposal

> (Option 1)

> The Debian Project aims at providing the greatest configuration flexibility
> while maintaining a sensible default installation for end users. To that
> end, we document functional dependencies in a machine-readable way and
> provide alternative variants if possible.

"Functional dependencies" feels odd to me as a way of characterizing this
whole problem space.  I can kind of see where you're coming from with
that, but it's about more than dependencies.  It's also about configuring
the environment in which a service should run and controlling the
mechanisms of starting the service and determining when it should be
running.

The phrasing here doesn't really address how aggressive we're going to be
about using systemd services.  I think "if possible" is doing a bit too
much heavy lifting and not providing enough guidance.

> (Option 1.1.1)

> Automated variant transitions shall be supported.

> [Rationale: moving from systemd to sysvinit is currently an involved
> manual process, so unavailable to anyone not already skilled in Unix
> administration, creating an artificial barrier.]

Doesn't this have that same problem that it votes for creating an RC bug
that we have no real idea how to fix?

In general, for these variants, is the transition path from systemd to
sysvinit something that is controversial in the project?  I thought the
problem was mostly ensuring things work on sysvinit at all.

> (Option 1.2.1)

> Package maintainers for packages requiring tighter integration into a
> particular ecosystem are asked to form teams to cover adequate
> integration testing.

I truly have no idea what this means, what Policy language it would
translate into, or what work this implies a Debian package maintainer
should do.

> (Option 1.2.3)

> The same software may be packaged multiple times by different
> maintainers if integration requirements cause incompatibilities.

> [Rationale: this allows packaging to be kept simple, at the expense of
> some space in the archive]

This seems fraught with technical peril.  Are we sure our package
dependency resolution code is capable of dealing with this tangle of
Conflicts and Provides?

> (Option 2)

> The Debian project aims at providing a tightly integrated operating
> system, standardizing on specific components to ensure the availability
> of basic functionality.

I think it would be interesting to have this sort of "all in on systemd"
option on the ballot to understand how many people in the project may feel
this way but be unwilling to wade into the interminable threads, although
it feels kind of aggressive as only one of two choices.

Also, I think that if this is about standardizing on systemd, we should
just say that, as opposed to speaking in generic terms.

> (Option 2.1.1)

> The available interfaces for each Debian release are defined in Debian
> Policy.

> [Rationale: this is how we have always done it: Policy explains the
> interfaces for package integration]

> (Option 2.1.2)

> The available interfaces for each Debian release are defined by the
> maintainers of the packages providing them.

> [Rationale: the maintainers of these packages have the best overview
> over which interfaces can be best supported for the support period of a
> release.]

We've always done a combination of these two things based on a lot of
factors: how foundational the interface is, how much time the relevant
teams have, etc.  I'm not sure it makes sense to collapse this waveform
quite this definitively.

> (Option 2.2.1)

> Core system components are excluded from backports, and backported
> packages need to be compatible with the interfaces provided by the
> stable release.

> [Rationale: it's a stable release.]

> (Option 2.2.2)

> It is permissible for backports to declare a dependency on a newer
> version of a core system component. Users installing a backported
> version of a service may be required to pull in backports of other
> packages.

> [Rationale: interfaces change, and it may not always be possible to
> combine two components from different releases]

This is an interesting question but I'm not sure it needs to be decided by
GR.  Is this really that controversial?  I'm not sure we've spent much

Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Andrey Rahmatullin
On Sat, Nov 09, 2019 at 06:08:54PM +0100, Simon Richter wrote:
> the main problem I see with this GR is that it is in essence a rehash of
> the GR[1] we had in 2014, with pretty much the same options minus the one
> that won, "A GR is not required."
The option that won is worded like this:

"""
The Debian project asks its members to be considerate when proposing General
Resolutions, as the GR process may be disruptive regardless of the outcome of
the vote.

Regarding the subject of this ballot, the Project affirms that the procedures
for decision making and conflict resolution are working adequately and thus
a General Resolution is not required.
"""

Are we still sure that the procedures are working adequately?


-- 
WBR, wRAR


signature.asc
Description: PGP signature


Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Simon Richter
Hi,

the main problem I see with this GR is that it is in essence a rehash of
the GR[1] we had in 2014, with pretty much the same options minus the one
that won, "A GR is not required."

> Choice 1: Affirm Init Diversity

The way this is worded is even stronger than in the 2014 GR, which made
allowances for degraded operation, because it was already obvious then that
GNOME would tightly integrate with systemd.

We cannot sensibly pass this as a resolution because it would create tons
of highly complex RC bugs, something the 2014 GR proposal explicitly
avoided, so this would just set us up for another GR reversing the decision
in light of its total unworkability.

> Being able to run Debian systems with init systems other than systemd
> continues to be something that the project values.  With one
> exception, the Debian Project affirms the current policy on init
> scripts and starting daemons (policy 9.3.2, 9.11).

This is the smallest part of the problem. If it was about starting daemons,
we'd have found a solution already.

The question is what we do with packages that have an explicit functional
dependency on a particular feature only implemented in one particular
service orchestrator (because systemd is definitely more than a pure init
system, it just happens to include one as a byproduct).

The fact that only service start is documented in policy is a bug in
itself.

The question at this point is no longer "which init system do we want to
have", but "who sets policy for package integration?" -- and that is a
question that will have to be answered even in a systemd-only ecosystem.

So as a counterproposal, two major directions for diversity yes/no (with no
middle ground, and two further questions for each, then flattened out to
make use of the fact that we're using Condorcet and don't have to deal with
tactical voting.

(Common)

The Debian Project recognizes that several upstream software projects are
converging on a common service orchestrator architecture and therefore
require distribution maintainers to ensure that compatible interfaces are
provided when the software is installed. At the same time, users are
deploying Debian in environments where a hard dependency on a specific
service orchestrator either introduces additional complexity or conflicts
with other software.

[Rationale: we want to be the universal operating system, which includes
desktop, server, container and embedded setups, probably a few others, and
mixes between them. For desktop users, we need a default installation that
is fully functional, but container solutions have their own dependency
tracking across machines, and will make different decisions on which
services to deploy where than a standalone desktop system would make.]

(Option 1)

The Debian Project aims at providing the greatest configuration flexibility
while maintaining a sensible default installation for end users. To that
end, we document functional dependencies in a machine-readable way and
provide alternative variants if possible.

[Rationale: not every combination of software makes sense or has sufficient
interest to be maintained, and that is okay, but if there are users, we
should try to support them.]

(Option 1.1.1)

Automated variant transitions shall be supported.

[Rationale: moving from systemd to sysvinit is currently an involved manual
process, so unavailable to anyone not already skilled in Unix
administration, creating an artificial barrier.]

(Option 1.1.2)

Moving installations between variants shall be supported.

[Rationale: this is what we have now, so it probably should be an option]

(Option 1.1.3)

Installation variant is decided at installation time and there is no
expectation that this can be altered later.

[Rationale: this allows us to write package dependencies without regard for
conversion paths, and also gives administrators a scriptable path for
deployments, which they currently do not have.]

(Option 1.2.1)

Package maintainers for packages requiring tighter integration into a
particular ecosystem are asked to form teams to cover adequate integration
testing.

[Rationale: we're moving towards team maintenance in git anyway for many
packages. If someone volunteers to maintain a particular variant that they
also use, then that should probably work.]

(Option 1.2.2)

Package maintainers are asked to merge patches implementing support for
different ecosystems. Bug reports for problems arising on these variants
may be forwarded if they are packaging related.

[Rationale: this is like team maintenance, but with a hierarchy and lower
barrier to entry, in the hope that derived distributions send patches to
minimize differences]

(Option 1.2.3)

The same software may be packaged multiple times by different maintainers
if integration requirements cause incompatibilities.

[Rationale: this allows packaging to be kept simple, at the expense of some
space in the archive]

(Option 2)

The Debian project aims at providing a tightly integrated 

Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Martin Pitt
Hello Wouter,

Wouter Verhelst [2019-11-09 10:32 +0200]:
> > Choice 1: Affirm Init Diversity
> > 
> > Being able to run Debian systems with init systems other than systemd
> > continues to be something that the project values.  With one
> > exception, the Debian Project affirms the current policy on init
> > scripts and starting daemons (policy 9.3.2, 9.11).  Roughly, packages
> > should include init scripts to start services that are included.
> > Policy notes that early boot services like those started from
> > /etc/rcS.d may be tied closely to the init system in use.
> 
> I don't see why this is relevant in the current discussion.
> 
> My nbd-client package is one that is relevant here; it has a systemd
> unit, and an rcS init script (which is then ignored by systemd). If this
> choice wins, then init scripts remain mandatory. If you provide an rcS
> init script, then systemd units are also mandatory.

IMHO early-boot services in rcS.d are one of the most important aspects of this
entire discussion. Late boot services are generally easy, as the vast majority
have simple dependencies and simple startup logic in the sense of how deeply
they need to interact with the guts of the OS. Ignoring systemd features like
privilege reduction/isolation/robustness, a systemd unit and a SysV script that
uses /lib/init/init-d-script have roughly the same complexity. They are
reasonably easy to test on both a systemd and a SysV init system, and it's the
right thing to let them be maintained by the individual package maintainers.

But this picture is entirely different in early boot (rcS.d, or
sysinit.target): these have complex, brittle, and dynamic dependencies, are
hardware/install type/configuration dependent, and require an integrative
cross-package design, development, and maintenance.  This is the part where
SysV init scripts and distributed maintenance are desperately bad, and why a
lot of configurations had been so buggy or impossible for many years. They
suffer from imperative shell script hell and not enough machine
readability/introspectability/uniformity to reason about or validate them.

For these a distributed maintenance approach has been shown to not work well;
integrating NetworkManager, LUKS, NFS, LVM, RAID, dynamic partition type
detection, udev, X.org/wayland/login managers etc. needs to be a primary
responsibility of the team that maintains the init system itself [1].  These
need comprehensive system integration tests [2] with lots of different
scenarios.

This is the one thing in that GR that I have a strong opinion on (backed by
doing *two* init system migrations in my life): Choice 1 is a non-starter if it
mandates distributed SysV init script maintenance for early-boot services. If
these are exept, and maintained/QAed by the corresponding init system, then
Choice 1 is very sensible and practical.

I wish that the GR text could expand on that a little bit, but I do appreciate
that this quickly gets into the trenches of deep technical details. For now I
interpret the last sentence as a sufficient exception (avoiding the word
"loophole") for that scenario.

> So this is not an exception to the rule? It just means you have more
> work to do.

What do you mean by "more work to do"? I. e. what and who?

Thanks,

Martin

[1] That of course doesn't mean that the package maintainer doesn't have a say
in that -- they absolutely do. But to a large degree they need to trust and
defer to the maintainers of the init system.

[2] autopkgtests can also do that -- I wish we had had what we have today in
the upstart/early systemd times!



Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Martin Pitt
Hello all,

Sam Hartman [2019-11-07 13:04 -0500]:
> I hope my actions demonstrate that I've tried to work with and understand the
> needs of all sides here; that has been my intent.

Many thanks! (Again, in public now :-) )

Full disclosure: I discussed that with Sam in private before, as representative
of the systemd maintainers.

> Choice 1: Affirm Init Diversity
> 
> Being able to run Debian systems with init systems other than systemd
> continues to be something that the project values.  With one
> exception, the Debian Project affirms the current policy on init
> scripts and starting daemons (policy 9.3.2, 9.11).

To clarify: Is the exception to alter the "must" in the current policy, that
says

   However, any package integrating with other init systems must also be
   backwards-compatible with sysvinit by providing a SysV-style init script

?

> Roughly, packages should include init scripts to start services that are
> included.

I. e. changing "must" to "should", and thus stop making packages like
cockpit have an RC bug. cockpit has deep systemd dependencies both for startup
and at runtime -- support for non-systemd will not happen. So even choice 1
would mean to move from "everything in Debian must work with SysVinit" to "we
accept that there are some packages in the archive which only work with
systemd".

This may soon apply to GNOME as well:
https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd/

> Policy editors are requested to amend policy; including a service unit
> without an init script is appropriate for a non-maintainer upload but
> should no longer be an RC bug.

This is ambiguous: I think you mean that "a package having a service unit but
without an init script is no longer an RC bug", not that the process of
*including* a service unit is an RC bug. So how about

   a package having a service unit but without an init script is no longer an
   RC bug, but including an init script is appropriate for a non-maintainer
   upload.

?

> Policy editors are requested to consider whether there are cases where
> removing an init script that used to be provided should be RC because it
> would break a system on upgrade.

+1 that makes absolute sense for Choice 1.

Thanks,

Martin


signature.asc
Description: PGP signature


Re: [draft] Draft text on Init Systems GR

2019-11-09 Thread Wouter Verhelst
On Thu, Nov 07, 2019 at 01:04:20PM -0500, Sam Hartman wrote:
> 
> This is a draft GR.  I hope to be at a point where I could formally
> propose a GR in a week, assuming discussion converges that fast.

You can formally propose a GR today, and I recommend you do -- otherwise
we end up discussing things before the discussion period, and then you
need to sit and wait at least seven days during the *actual* discussion
period for no good reason.

Note that "proposing a GR" does not imply "calling for the vote"; that
happens later, after the GR has been properly drafted and discussion on
all amendments has ended.

Note also that every accepted amendment resets the discussion period,
and that while you have the ability (as DPL) to accept amendments
without seconds, and to vary the discussion period by up to a week, you
do not have the ability to eliminate the discussion period altogether.
Therefore it would make sense to have a formal GR proposal today so tha
amendments can be made.

> At this point, the question is whether the choices that need to be on
> the ballot are represented in this draft GR.
>
> I did not obtain a review of this version from someone who favors init
> diversity.

In my opinion, our GR procedure works best if every choice on the ballot
was drafted by someone who actually wants it to happen; otherwise you
run the risk of two problems:

- You may end up with options on the ballot that don't actually
  represent the opinion of *any* developer, *at all*. This represents
  clutter, and needlessly wastes time of voting developers who will have
  to wade through reading a (number of) useless options that nobody
  really wants.
- You will need to judge whether any proposed amendment matches the
  opinion of anyone who previously already agreed with that option, when
  you are not in the best position to do so. Every time you accept (or
  reject) an amendment, you run the risk of alienating whoever actually
  agreed with that proposal, possibly resulting in them proposing their
  own alternate option.

This almost ended up happening for GR 2004_004, and that one was a mess.

Given your above statement, I'm assuming that your preferred option is
#3. Is that correct?

> I didn't give them a lot of time, and they just wrote to let
> me know that they weren't going to be able to do a review this week.
> Based on the feedback from debian-devel I decided that getting text to
> the community now was the most important thing.
> If this text doesn't meet the needs of that community, we'll change the
> text.  I hope my actions demonstrate that I've tried to work with and
> understand the needs of all sides here; that has been my intent.
> 
> 
> 
> version 2330c05afa4
> 
> Using its power under Constitution section 4.1 (5), the project issues
> the following statement describing our current position on Init
> systems, Init system diversity, and the use of systemd features.  This
> statement describes the position of the project at the time it is
> adopted.  That position may evolve as time passes without the need to
> resort to future general resolutions.  The GR process remains
> available if the project needs a decision and cannot come to a
> consensus.
> 
> Choice 1: Affirm Init Diversity
> 
> Being able to run Debian systems with init systems other than systemd
> continues to be something that the project values.  With one
> exception, the Debian Project affirms the current policy on init
> scripts and starting daemons (policy 9.3.2, 9.11).  Roughly, packages
> should include init scripts to start services that are included.
> Policy notes that early boot services like those started from
> /etc/rcS.d may be tied closely to the init system in use.

I don't see why this is relevant in the current discussion.

My nbd-client package is one that is relevant here; it has a systemd
unit, and an rcS init script (which is then ignored by systemd). If this
choice wins, then init scripts remain mandatory. If you provide an rcS
init script, then systemd units are also mandatory.

So this is not an exception to the rule? It just means you have more
work to do.

> Init
> scripts are the lowest common denominator across all init systems.
> Packages may include support for init systems like systemd service
> units in addition to init scripts.  Current policy makes it an RC bug
> to include a service unit without an init script.
> 
> Policy editors are requested to amend policy; including a service unit
> without an init script is appropriate for a non-maintainer upload but
> should no longer be an RC bug.

If this choice wins, then why should it not be an RC bug to not have an
init script? That doesn't seem to make sense.

> Policy editors are requested to
> consider whether there are cases where removing an init script that
> used to be provided should be RC because it would break a system on
> upgrade.
> 
> Once the community of users of an alternate init system have said that
> 

Re: Init Systems GR Timeline

2019-11-09 Thread Holger Levsen
On Fri, Nov 08, 2019 at 06:46:53PM -0500, Sam Hartman wrote:
> I think you may be mishearing what I'm proposing for a timeline.
[...]

thanks for clarifying, Sam, much appreciated.


-- 
cheers,
Holger

---
   holger@(debian|reproducible-builds|layer-acht).org
   PGP fingerprint: B8BF 5413 7B09 D35C F026 FE9D 091A B856 069A AA1C



signature.asc
Description: PGP signature