General Resolution: Init systems and systemd

Proposal and amendment 2019-11-16 Discussion Period: 2019-11-22 Voting Period: Saturday 2019-12-07 00:00:00 UTC Friday 2019-12-27 23:59:59 UTC

The Project Leader has varied discussion period so that the minimum discussion period ends on November 30. [ mail

Martin Michlmayr [tbm@debian.org] [text of proposal]

Michael Biebl [biebl@debian.org] [mail] Ansgar Burchardt [ansgar@debian.org] [mail] Julien Cristau [jcristau@debian.org] [mail] Enrico Zini [enrico@debian.org] [mail] Matthias Klumpp [mak@debian.org] [mail] Ana Beatriz Guerrero López [ana@debian.org] [mail] Russ Allbery [rra@debian.org] [mail] Intrigeri [intrigeri@debian.org] [mail] Luca Filipozzi [lfilipoz@debian.org] [mail] Moritz Mühlenhoff [jmm@debian.org] [mail] Paul Tagliamonte [paultag@debian.org] [mail] Jordi Mallach [jordi@debian.org] [mail] Philipp Kern [pkern@debian.org] [mail] Holger Levsen [holger@debian.org] [mail] Jeremy Bicha [jbicha@debian.org] [mail]

Choice 1: F: Focus on systemd

This resolution is a position statement under section 4.1 (5) of the Debian constitution:

Cross-distribution standards and cooperation are important factors in the choice of core Debian technologies. It is important to recognize that the Linux ecosystem has widely adopted systemd and that the level of integration of systemd technologies in Linux systems will increase with time.

Debian is proud to support and integrate many different technologies. With everything we do, the costs and benefits need to be considered, both for users and in terms of the effects on our development community. An init system is not an isolated component, but is deeply integrated in the core layer of the system and affects many packages. We believe that the benefits of supporting multiple init systems do not outweigh the costs.

Debian can continue to provide and explore other init systems, but systemd is the only officially supported init system. Wishlist bug reports with patches can be submitted, which package maintainers should review like other bug reports with patches. As with systemd, work should be done upstream and in cooperation with other Linux and FOSS distributions where possible. The priority is on standardization without the reliance on complicated compatibility layers.

Integrating systemd more deeply into Debian will lead to a more integrated and tested system, improve standardization of Linux systems, and bring many new technologies to our users. Packages can rely upon, and are encouraged to make full use of, functionality provided by systemd. Solutions based on systemd technologies will allow for more cross-distribution cooperation. The project will work on proposals and coordinate transitions from Debian-specific solutions where appropriate.

Sam Hartman [hartmans@debian.org] [text of proposal] [amendment]

Choice 2: B: Systemd but we support exploring alternatives

This amendment has been submitted by the current Project Leader, and thus does not require seconding

Using its power under Constitution section 4.1 (5), the project issues the following statement describing our current position on Init systems, multiple init systems, and the use of systemd facilities. 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.

The Debian project recognizes that systemd service units are the preferred configuration for describing how to start a daemon/service. However, Debian remains an environment where developers and users can explore and develop alternate init systems and alternatives to systemd features. Those interested in exploring such alternatives need to provide the necessary development and packaging resources to do that work. Technologies such as elogind that facilitate exploring alternatives while running software that depends on some systemd interfaces remain important to Debian. It is important that the project support the efforts of developers working on such technologies where there is overlap between these technologies and the rest of the project, for example by reviewing patches and participating in discussions in a timely manner.

Packages should include service units or init scripts to start daemons and services. Packages may use any systemd facility at the package maintainer's discretion, provided that this is consistent with other Policy requirements and the normal expectation that packages shouldn't depend on experimental or unsupported (in Debian) features of other packages. Packages may include support for alternate init systems besides systemd and may include alternatives for any systemd-specific interfaces they use. Maintainers use their normal procedures for deciding which patches to include.

Debian is committed to working with derivatives that make different choices about init systems. As with all our interactions with downstreams, the relevant maintainers will work with the downstreams to figure out which changes it makes sense to fold into Debian and which changes remain purely in the derivative.

Sam Hartman [hartmans@debian.org] [text of proposal] [amendment] [amendment] [amendment]

Choice 3: A: Support for multiple init systems is Important

This amendment has been submitted by the current Project Leader, and thus does not require seconding

The project issues the following statement describing our current position on Init systems, multiple init systems, and the use of systemd facilities. 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.

Being able to run Debian systems with init systems other than systemd continues to be something that the project values. Every package should work with pid1 != systemd, unless it was designed by upstream to work exclusively with systemd and no support for running without systemd is available. It is an important bug (although not a serious one) when packages should work without systemd but they do not. According to the NMU guidelines, developers may perform non-maintainer uploads to fix these bugs.

Software is not to be considered to be designed by upstream to work exclusively with systemd merely because upstream does not provide, and/or will not accept, an init script.

Modification of Policy to adopt systemd facilities instead of existing approaches is discouraged unless an equivalent implementation of that facility is available for other init systems.

Ian Jackson [iwj@debian.org] [text of proposal] [text of amended] [text of amended] [text of amended]

Russ Allbery [rra@debian.org] [mail] Sean Whitton [spwhitton@debian.org] [mail] Simon Richter [sjr@debian.org] [mail] Kyle Robbertze [paddatrapper@debian.org] [mail] Dmitry Bogatov [kaction@debian.org] [mail] Jonathan McDowell [noodles@debian.org] [mail] Matthew Vernon [matthew@debian.org] [mail] James Clarke [jrtc27@debian.org] [mail] Thomas Goirand [zigo@debian.org] [mail] Jonathan Dowland [jmtd@debian.org] [mail]

Choice 4: D: Support non-systemd systems, without blocking progress

PRINCIPLES

1. We wish to continue to support multiple init systems for the foreseeable future. And we want to improve our systemd support.

2. It is primarily for the communities in each software ecosystem to maintain and develop their respective software - but with the active support of other maintainers and gatekeepers where needed.

SYSTEMD DEPENDENCIES

3. Ideally, packages should be fully functional with all init systems. This means (for example) that daemons should ship traditional init scripts, or use other mechanisms to ensure that they are started without systemd. It also means that desktop software should be installable, and ideally fully functional, without systemd.

4. So failing to support non-systemd systems, where no such support is available, is a bug. But it is not a release-critical bug. Whether the requirement for systemd is recorded as a formal bug in the Debian bug system, when no patches are available, is up to the maintainer.

5. When a package has reduced functionality without systemd, this should not generally be documented as a (direct or indirect) Depends or Recommends on systemd-sysv. This is because with such dependencies, installing such a package can attempt to switch the init system, which is not what the user wanted. For example, a daemon with only a systemd unit file script should still be installable on a non-systemd system, since it could be started manually.

One consequence of this is that on non-systemd systems it may be possible to install software which will not work, or not work properly, because of an undeclared dependency on systemd. This is unfortunate but trying to switch the user's init system is worse. We hope that better technical approaches can be developed to address this.

6. We recognise that some maintainers find init scripts a burden and we hope that the community is able to find ways to make it easier to add support for non-default init systems. Discussions about the design of such systems should be friendly and cooperative, and if suitable arrangements are developed they should be supported in the usual ways within Debian.

CONTRIBUTIONS OF NON-SYSTEMD SUPPORT WILL BE ACCEPTED

7. Failing to support non-systemd systems when such support is available, or offered in the form of patches (or packages), should be treated as a release critical bug. For example: init scripts must not be deleted merely because a systemd unit is provided instead; patches which contribute support for other init systems (with no substantial effect on systemd installations) should be filed as bugs with severity “serious”.

This is intended to provide a lightweight but effective path to ensuring that reasonable support can be provided to Debian users, even where the maintainer's priorities lie elsewhere. (Invoking the Technical Committee about individual patches is not sensible.)

If the patches are themselves RC-buggy (in the opinion of, initially, the maintainer, and ultimately the Release Team) then of course the bug report should be downgraded or closed.

8. Maintainers of systemd components, or other gatekeepers (including other maintainers and the release team) sometimes have to evaluate technical contributions intended to support non-systemd users. The acceptability to users of non-default init systems, of quality risks of such contributions, is a matter for the maintainers of non-default init systems and the surrounding community. But such contributions should not impose nontrivial risks on users of the default configuration (systemd with Recommends installed).

NON-INIT-RELATED DECLARATIVE SYSTEMD FACILITIES

9. systemd provides a variety of facilities besides daemon startup. For example, creating system users or temporary directories. Current Debian approaches are often based on debhelper scripts.

In general more declarative approaches are better. Where

systemd provides such facility

a specification of the facility (or suitable subset) exists

the facility is better than the other approaches available in Debian, for example by being more declarative

it is reasonable to expect developers of non-systemd systems including non-Linux systems to implement it

including consideration of the amount of work involved

the facility should be documented in Debian Policy (by textual incorporation, not by reference to an external document). The transition should be smooth for all users. The non-systemd community should be given at least 6 months, preferably at least 12 months, to develop their implementation. (The same goes for any future enhancements.)

If policy consensus cannot be reached on such a facility, the Technical Committee should decide based on the project's wishes as expressed in this GR.

BEING EXCELLENT TO EACH OTHER

10. In general, maintainers of competing software, including maintainers of the various competing init systems, should be accommodating to each others' needs. This includes the needs and convenience of users of reasonable non-default configurations.

11. Negative general comments about software and their communities, including both about systemd itself and about non-systemd init systems, are strongly discouraged. Neither messages expressing general dislike of systemd, nor predictions of the demise of non-systemd systems, are appropriate for Debian communication fora; likewise references to bugs which are not relevant to the topic at hand.

Communications on Debian fora on these matters should all be encouraging and pleasant, even when discussing technical problems. We ask that communication fora owners strictly enforce this.

12. We respectfully ask all Debian contributors including maintainers, Policy Editors, the Release Team, the Technical Committee, and the Project Leader, to pursue these goals and principles in their work, and embed them into documents etc. as appropriate. (This resolution is a position statement under s4.1(5).)

Ian Jackson [iwj@debian.org] [text of proposal]

Jonas Smedegaard [js@debian.org] [mail] Holger Levsen [holger@debian.org] [mail] Michael Lustfield [mtecknology@debian.org] [mail] Guilhem Moulin [guilhem@debian.org] [mail] Matthew Vernon [matthew@debian.org] [mail] Kyle Robbertze [paddatrapper@debian.org] [mail] gregor herrmann [gregoa@debian.org] [mail] Sean Whitton [spwhitton@debian.org] [mail]

Choice 5: H: Support portability, without blocking progress

PRINCIPLES

1. The Debian project reaffirms its commitment to be the glue that binds and integrates different software that provides similar or equivalent functionality, with their various users, be them humans or other software, which is one of the core defining traits of a distribution.

2. We consider portability to different hardware platforms and software stacks an important aspect of the work we do as a distribution, which makes software architecturally better, more robust and more future-proof.

3. We acknowledge that different upstream projects have different views on software development, use cases, portability and technology in general. And that users of these projects weight tradeoffs differently, and have at the same time different and valid requirements and/or needs fulfilled by these diverse views.

4. Following our historic tradition, we will welcome the integration of these diverse technologies which might sometimes have conflicting world-views, to allow them to coexist in harmony within our distribution, by reconciling these conflicts via technical means, as long as there are people willing to put in the effort.

5. This enables us to keep serving a wide range of usages of our distribution (some of which might be even unforeseen by us). From servers, to desktops or deeply embedded; from general purpose to very specifically tailored usages. Be those projects hardware related or software based, libraries, daemons, entire desktop environments, or other parts of the software stack.

SYSTEMD DEPENDENCIES

6. Ideally, packages should be fully functional with all init systems. This means (for example) that daemons should ship traditional init scripts, or use other mechanisms to ensure that they are started without systemd. It also means that desktop software should be installable, and ideally fully functional, without systemd.

7. So failing to support non-systemd systems, where no such support is available, is a bug. But it is not a release-critical bug. Whether the requirement for systemd is recorded as a formal bug in the Debian bug system, when no patches are available, is up to the maintainer.

8. When a package has reduced functionality without systemd, this should not generally be documented as a (direct or indirect) Depends or Recommends on systemd-sysv. This is because with such dependencies, installing such a package can attempt to switch the init system, which is not what the user wanted. For example, a daemon with only a systemd unit file script should still be installable on a non-systemd system, since it could be started manually.

One consequence of this is that on non-systemd systems it may be possible to install software which will not work, or not work properly, because of an undeclared dependency on systemd. This is unfortunate but trying to switch the user's init system is worse. We hope that better technical approaches can be developed to address this.

9. We recognise that some maintainers find init scripts a burden and we hope that the community is able to find ways to make it easier to add support for non-default init systems. Discussions about the design of such systems should be friendly and cooperative, and if suitable arrangements are developed they should be supported in the usual ways within Debian.

CONTRIBUTIONS OF NON-SYSTEMD SUPPORT WILL BE ACCEPTED

10. Failing to support non-systemd systems when such support is available, or offered in the form of patches (or packages), should be treated as a release critical bug. For example: init scripts must not be deleted merely because a systemd unit is provided instead; patches which contribute support for other init systems (with no substantial effect on systemd installations) should be filed as bugs with severity “serious”.

This is intended to provide a lightweight but effective path to ensuring that reasonable support can be provided to Debian users, even where the maintainer's priorities lie elsewhere. (Invoking the Technical Committee about individual patches is not sensible.)

If the patches are themselves RC-buggy (in the opinion of, initially, the maintainer, and ultimately the Release Team) then of course the bug report should be downgraded or closed.

11. Maintainers of systemd components, or other gatekeepers (including other maintainers and the release team) sometimes have to evaluate technical contributions intended to support non-systemd users. The acceptability to users of non-default init systems, of quality risks of such contributions, is a matter for the maintainers of non-default init systems and the surrounding community. But such contributions should not impose nontrivial risks on users of the default configuration (systemd with Recommends installed).

NON-INIT-RELATED DECLARATIVE SYSTEMD FACILITIES

12. systemd provides a variety of facilities besides daemon startup. For example, creating system users or temporary directories. Current Debian approaches are often based on debhelper scripts.

In general more declarative approaches are better. Where

systemd provides such facility

a specification of the facility (or suitable subset) exists

the facility is better than the other approaches available in Debian, for example by being more declarative

it is reasonable to expect developers of non-systemd systems including non-Linux systems to implement it

including consideration of the amount of work involved

the facility should be documented in Debian Policy (by textual incorporation, not by reference to an external document). The transition should be smooth for all users. The non-systemd community should be given at least 6 months, preferably at least 12 months, to develop their implementation. (The same goes for any future enhancements.)

If policy consensus cannot be reached on such a facility, the Technical Committee should decide based on the project's wishes as expressed in this GR.

BEING EXCELLENT TO EACH OTHER

13. In general, maintainers of competing software, including maintainers of the various competing init systems, should be accommodating to each others' needs. This includes the needs and convenience of users of reasonable non-default configurations.

14. Negative general comments about software and their communities, including both about systemd itself and about non-systemd init systems, are strongly discouraged. Neither messages expressing general dislike of systemd, nor predictions of the demise of non-systemd systems, are appropriate for Debian communication fora; likewise references to bugs which are not relevant to the topic at hand.

Communications on Debian fora on these matters should all be encouraging and pleasant, even when discussing technical problems. We ask that communication fora owners strictly enforce this.

15. We respectfully ask all Debian contributors including maintainers, Policy Editors, the Release Team, the Technical Committee, and the Project Leader, to pursue these goals and principles in their work, and embed them into documents etc. as appropriate. (This resolution is a position statement under s4.1(5).)

Dmitry Bogatov [kaction@debian.org] [text of latest proposal]

Ian Jackson [iwj@debian.org] [mail] Matthew Vernon [matthew@debian.org] [mail] Jonathan Carter [jcc@debian.org] [mail] Kyle Robbertze [paddatrapper@debian.org] [mail] Axel Beckert [abe@debian.org] [mail] Brian Gupta [bgupta@debian.org] [mail] Simon Richter [sjr@debian.org] [mail]

Choice 6: E: Support for multiple init systems is Required

Being able to run Debian systems with init systems other than systemd continues to be of value to the project. Every package MUST work with pid1 != systemd, unless it was designed by upstream to work exclusively with systemd and no support for running without systemd is available.

Software is not to be considered to be designed by upstream to work exclusively with systemd merely because upstream does not provide, and/or will not accept, an init script.

Guillem Jover [guillem@debian.org] [text of proposal]

Simon Richter [sjr@debian.org] [mail] gregor herrmann [gregoa@debian.org] [mail] Jonas Smedegaard [js@debian.org] [mail] Guilhem Moulin [guilhem@debian.org] [mail] Ricardo Mones [mones@debian.org] [mail] Mathias Behrle [mbehrle@debian.org] [mail] Steve Kostecke [steve@debian.org] [mail] Alberto Gonzalez Iniesta [agi@debian.org] [mail] Kyle Robbertze [paddatrapper@debian.org] [mail] Adam Borowski [kilobyte@debian.org] [mail] Donald Scott Kitterman [kitterman@debian.org] [mail]

Choice 7: G: Support portability and multiple implementations

Principles

The Debian project reaffirms its commitment to be the glue that binds and integrates different software that provides similar or equivalent functionality, with their various users, be them humans or other software, which is one of the core defining traits of a distribution.

We consider portability to different hardware platforms and software stacks an important aspect of the work we do as a distribution, which makes software architecturally better, more robust and more future-proof.

We acknowledge that different upstream projects have different views on software development, use cases, portability and technology in general. And that users of these projects weight trade-offs differently, and have at the same time different and valid requirements and/or needs fulfilled by these diverse views.

Following our historic tradition, we will welcome the integration of these diverse technologies which might sometimes have conflicting world-views, to allow them to coexist in harmony within our distribution, by reconciling these conflicts via technical means, as long as there are people willing to put in the effort.

This enables us to keep serving a wide range of usages of our distribution (some of which might be even unforeseen by us). From servers, to desktops or deeply embedded; from general purpose to very specifically tailored usages. Be those projects hardware related or software based, libraries, daemons, entire desktop environments, or other parts of the software stack.

Guidance

In the same way Debian maintainers are somewhat constrained by the decisions and direction emerging from their respective upstreams, the Debian distribution is also somewhat constrained by its volunteer based nature, which has as another of its core defining traits, not willing to impose work obligations to its members, while at the same time being limited by its members bounded interests, motivation, energy and time.

Because of these previous constraints, trying to provide guidance in a very detailed way to apply the aforementioned principles, is never going to be satisfactory, as it will end up being inexorably a rigid and non-exhaustive list of directives that cannot possibly ever cover most scenarios, which can perpetuate possible current tensions.

These will always keep involving case by case trade-offs between what changes or requests upstreams might or might not accept, or the upkeep on the imposed deltas or implementations the Debian members might need to carry on. Which can never be quantified and listed in a generic and universal way.

We will also keep in mind that what might be considered important for someone, might at the same time be considered niche or an uninteresting diversion of time for someone else, but that we might end up being on either side of the fence when sending or receiving these requests.

We will be guided, as we have been in many other Debian contexts in the past, by taking all the above into account, and discussing and evaluating each situation, and respecting and valuing that we all have different interests and motivations. That is in our general interest to try to work things out with others, to compromise, to reach solutions or find alternatives that might be satisfactory enough for the various parties involved, to create an environment where we will collectively try to reciprocate. And in the end and in most cases it's perhaps a matter of just being willing to try.

Sam Hartman [hartmans@debian.org] [text of proposal] [amendment] [withdrawal]

Ansgar Burchardt [ansgar@debian.org] [mail]

Focus on systemd for init system and other facilities (withdrawn)

This amendment has been submitted by the current Project Leader, and thus does not require seconding

With the current list of voting developers, we have:

Current Developer Count = 1011 Q ( sqrt(#devel) / 2 ) = 15.8981130955846 K min(5, Q ) = 5 Quorum (3 x Q ) = 47.6943392867539

Quorum

Option1 Reached quorum: 307 > 47.6943392867539

Option2 Reached quorum: 299 > 47.6943392867539

Option3 Reached quorum: 225 > 47.6943392867539

Option4 Reached quorum: 281 > 47.6943392867539

Option5 Reached quorum: 271 > 47.6943392867539

Option6 Reached quorum: 173 > 47.6943392867539

Option7 Reached quorum: 216 > 47.6943392867539

For this GR, like always, statistics will be gathered about ballots received and acknowledgements sent periodically during the voting period. Additionally, the list of voters will be recorded. Also, the tally sheet will also be made available to be viewed.

The proposals need a simple majority

Majority

Option1 passes Majority. 2.791 (307/110) >= 1

Option2 passes Majority. 2.694 (299/111) >= 1

Option3 passes Majority. 1.355 (225/166) >= 1

Option4 passes Majority. 2.465 (281/114) >= 1

Option5 passes Majority. 2.185 (271/124) >= 1

Dropping Option6 because of Majority. 0.808 (173/214) <= 1

Option7 passes Majority. 1.286 (216/168) >= 1

In the graph above, any pink colored nodes imply that the option did not pass majority, the Blue is the winner. The Octagon is used for the options that did not beat the default.

Option 1 "F: Focus on systemd"

Option 2 "B: Systemd but we support exploring alternatives"

Option 3 "A: Support for multiple init systems is Important"

Option 4 "D: Support non-systemd systems, without blocking progress"

Option 5 "H: Support portability, without blocking progress"

Option 6 "E: Support for multiple init systems is Required"

Option 7 "G: Support portability and multiple implementations"

Option 8 "Further Discussion"

In the following table, tally[row x][col y] represents the votes that option x received over option y. A more detailed explanation of the beat matrix may help in understanding the table. For understanding the Condorcet method, the Wikipedia entry is fairly informative.

The Beat Matrix Option 1 2 3 4 5 6 7 8 Option 1 185 246 223 227 278 243 307 Option 2 207 243 211 216 286 240 299 Option 3 159 131 113 120 250 165 225 Option 4 192 177 235 137 309 261 281 Option 5 187 168 222 163 301 246 271 Option 6 116 104 88 53 51 121 173 Option 7 168 145 176 93 91 207 216 Option 8 110 111 166 114 124 214 168

Looking at row 2, column 1, B: Systemd but we support exploring alternatives

received 207 votes over F: Focus on systemd



Looking at row 1, column 2, F: Focus on systemd

received 185 votes over B: Systemd but we support exploring alternatives.



Pair-wise defeats

Option 2 defeats Option 1 by ( 207 - 185) = 22 votes.

Option 1 defeats Option 3 by ( 246 - 159) = 87 votes.

Option 1 defeats Option 4 by ( 223 - 192) = 31 votes.

Option 1 defeats Option 5 by ( 227 - 187) = 40 votes.

Option 1 defeats Option 7 by ( 243 - 168) = 75 votes.

Option 1 defeats Option 8 by ( 307 - 110) = 197 votes.

Option 2 defeats Option 3 by ( 243 - 131) = 112 votes.

Option 2 defeats Option 4 by ( 211 - 177) = 34 votes.

Option 2 defeats Option 5 by ( 216 - 168) = 48 votes.

Option 2 defeats Option 7 by ( 240 - 145) = 95 votes.

Option 2 defeats Option 8 by ( 299 - 111) = 188 votes.

Option 4 defeats Option 3 by ( 235 - 113) = 122 votes.

Option 5 defeats Option 3 by ( 222 - 120) = 102 votes.

Option 7 defeats Option 3 by ( 176 - 165) = 11 votes.

Option 3 defeats Option 8 by ( 225 - 166) = 59 votes.

Option 5 defeats Option 4 by ( 163 - 137) = 26 votes.

Option 4 defeats Option 7 by ( 261 - 93) = 168 votes.

Option 4 defeats Option 8 by ( 281 - 114) = 167 votes.

Option 5 defeats Option 7 by ( 246 - 91) = 155 votes.

Option 5 defeats Option 8 by ( 271 - 124) = 147 votes.

Option 7 defeats Option 8 by ( 216 - 168) = 48 votes.

The Schwartz Set contains

Option 2 "B: Systemd but we support exploring alternatives"

The winners

Option 2 "B: Systemd but we support exploring alternatives"