Bug#727708: loose ends for init system decision

2014-01-02 Thread Nikolaus Rath
Russ Allbery r...@debian.org writes:
 This message is about a transition plan for an init system replacement and
 about how to handle portability to our non-Linux ports.  I'm keeping the
 same subject as Ian's message on the same basic topics and attaching it to
 the same thread, but this is more of a separate writeup than a reply.
[...]

 5. Support for the other init system that was not chosen should be handled
in the same fashion, should a team choose to pursue it.  If we select
systemd, package maintainers should still be willing to merge
contributed upstart configuration, with the understanding that they
can't test it and any support is on a best-effort basis only.
Similarly, if we select upstart, package maintainers should be willing
to merge systemd unit files and to enable upstream systemd support
where requested and where it doesn't interfere with the operation of
the daemon under upstart, with the understanding that the package
maintainer is not committing to testing or directly supporting this
configuration.

Thanks all a lot for all your detailed writeups Russ. It is much
appreciated.


I think there is one additional questions that will probably need to be
decided by the tc but hasn't really been discussed yet:

Will packages that explicity depend on a (non-default) init system be
allowed in Debian?


For example, if I want to package a program that depends on a feature
available only in upstart, but systemd was chosen as the default init
system, can I upload this package with a depends on upstart, or will
this be rejected?

If such packages will not be allowed in the archive, does the burden of
making them work with the default init lie on the maintainers of the
default init (to add the missing feature), or the package maintainer (to
work around the features absence if he wants the package in Debian)?


The specific situation that I have in mind is of course when upstart
becomes the default, and gnome becomes dependent on systemd, but I think
the question is larger than just this example.


Best,
-Nikolaus

-- 
Encrypted emails preferred.
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

 »Time flies like an arrow, fruit flies like a Banana.«


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Ian Jackson
Nikolaus Rath writes (Bug#727708: loose ends for init system decision):
 I think there is one additional questions that will probably need to be
 decided by the tc but hasn't really been discussed yet:
 
 Will packages that explicity depend on a (non-default) init system be
 allowed in Debian?

My answer to this is no.

So, firstly, I would say that all packages must, in jessie at least,
continue to support sysvinit.  Russ (from the other side of the
upstart/systemd fence) agrees.  Failure to support sysvinit would be
an RC bug.

And since all the proposed replacement inits have a compatibility
mode, that naturally means they'll work.

Contributors who support the non-default new init system will be able
to supply patches for native support and should have them accepted.

 If such packages will not be allowed in the archive, does the burden of
 making them work with the default init lie on the maintainers of the
 default init (to add the missing feature), or the package maintainer (to
 work around the features absence if he wants the package in Debian)?

The latter.

 The specific situation that I have in mind is of course when upstart
 becomes the default, and gnome becomes dependent on systemd, but I think
 the question is larger than just this example.

Such a decision by Gnome (implying ditching all non-Linux
architectures, too) would be very disappointing IMO.  I think this is
a bridge we should cross if and when we come to it.

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Nikolaus Rath
On 01/02/2014 10:20 AM, Ian Jackson wrote:
 Nikolaus Rath writes (Bug#727708: loose ends for init system decision):
 I think there is one additional questions that will probably need to be
 decided by the tc but hasn't really been discussed yet:

 Will packages that explicity depend on a (non-default) init system be
 allowed in Debian?
 
 My answer to this is no.
 
 So, firstly, I would say that all packages must, in jessie at least,
 continue to support sysvinit.  Russ (from the other side of the
 upstart/systemd fence) agrees.  Failure to support sysvinit would be
 an RC bug.
 
 And since all the proposed replacement inits have a compatibility
 mode, that naturally means they'll work.
 
 Contributors who support the non-default new init system will be able
 to supply patches for native support and should have them accepted.
 
 If such packages will not be allowed in the archive, does the burden of
 making them work with the default init lie on the maintainers of the
 default init (to add the missing feature), or the package maintainer (to
 work around the features absence if he wants the package in Debian)?
 
 The latter.

Just to make sure that I expressed myself correctly: I was not thinking
about a package that depends on a specific init system to start or stop,
but about a program that is really specific to the *new* features of
upstart or systemd.


For example, a hypothetical future program to interactively adjust
program cgroups cannot be sysvinit compatible in any meaningful sense,
because it does not need to be supervised, started, or stopped. However,
this program would depend on the cgroups API offered by systemd. So this
program would not be allowed in Debian, unless its maintainer adds
support for whatever cgroups managed we would eventually use with upstart?


Best,
Nikolaus


-- 
Encrypted emails preferred.
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

 »Time flies like an arrow, fruit flies like a Banana.«


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Ian Jackson
Nikolaus Rath writes (Re: Bug#727708: loose ends for init system decision):
 For example, a hypothetical future program to interactively adjust
 program cgroups cannot be sysvinit compatible in any meaningful sense,
 because it does not need to be supervised, started, or stopped. However,
 this program would depend on the cgroups API offered by systemd. So this
 program would not be allowed in Debian, unless its maintainer adds
 support for whatever cgroups managed we would eventually use with upstart?

I would hope that we can standardise on a single API to the system's
single cgroup writer.

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Nikolaus Rath
On 01/02/2014 10:30 AM, Ian Jackson wrote:
 Nikolaus Rath writes (Re: Bug#727708: loose ends for init system decision):
 For example, a hypothetical future program to interactively adjust
 program cgroups cannot be sysvinit compatible in any meaningful sense,
 because it does not need to be supervised, started, or stopped. However,
 this program would depend on the cgroups API offered by systemd. So this
 program would not be allowed in Debian, unless its maintainer adds
 support for whatever cgroups managed we would eventually use with upstart?
 
 I would hope that we can standardise on a single API to the system's
 single cgroup writer.

I certainly hope so too, but I think the question of how such a
situation would be handled needs to be answered. Even if we end up with
a standardized cgroup API, it may show up in a different disguise.


Best,
Nikolaus

-- 
Encrypted emails preferred.
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

 »Time flies like an arrow, fruit flies like a Banana.«


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Josselin Mouette
Le jeudi 02 janvier 2014 à 18:30 +, Ian Jackson a écrit : 
 I would hope that we can standardise on a single API to the system's
 single cgroup writer.

I have already explained why this is not going to happen. The cgroups
API in systemd is already part of the core systemd interface and subject
to the stability promise. The only other existing implementation
(cgmanager) is merely wrapping in D-Bus the existing kernel API, which
is going to die when a single writer becomes necessary.

-- 
 .''`.  Josselin Mouette
: :' :
`. `'
  `-


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Ian Jackson
Josselin Mouette writes (Bug#727708: loose ends for init system decision):
 Le jeudi 02 janvier 2014 à 18:30 +, Ian Jackson a écrit : 
  I would hope that we can standardise on a single API to the system's
  single cgroup writer.
 
 I have already explained why this is not going to happen. The cgroups
 API in systemd is already part of the core systemd interface and subject
 to the stability promise. The only other existing implementation
 (cgmanager) is merely wrapping in D-Bus the existing kernel API, which
 is going to die when a single writer becomes necessary.

Err, I'm not sure I see what is stopping the provision of the systemd
cgroup manager API by a program other than systemd.  But I haven't
looked at this in detail.

Ian.


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Cameron Norman
On Thu, Jan 2, 2014 at 11:46 AM, Josselin Mouette j...@debian.org wrote:

 Le jeudi 02 janvier 2014 à 18:30 +, Ian Jackson a écrit :
  I would hope that we can standardise on a single API to the system's
  single cgroup writer.

 I have already explained why this is not going to happen. The cgroups
 API in systemd is already part of the core systemd interface and subject
 to the stability promise. The only other existing implementation
 (cgmanager) is merely wrapping in D-Bus the existing kernel API, which
 is going to die when a single writer becomes necessary.


It seems like you just explained how it has already happened. systemd's
cgroup interface is covered under the stability promise, and seems like a
good fit for a standard interface to the single cgroup arbitrator.

Cameron


Bug#727708: loose ends for init system decision

2014-01-02 Thread Tollef Fog Heen
]] Ian Jackson 

 Nikolaus Rath writes (Bug#727708: loose ends for init system decision):
  I think there is one additional questions that will probably need to be
  decided by the tc but hasn't really been discussed yet:
  
  Will packages that explicity depend on a (non-default) init system be
  allowed in Debian?
 
 My answer to this is no.
 
 So, firstly, I would say that all packages must, in jessie at least,
 continue to support sysvinit.  Russ (from the other side of the
 upstart/systemd fence) agrees.  Failure to support sysvinit would be
 an RC bug.

I think it would be unwise to require upstart and systemd to continue to
support sysvinit.  I'm not even sure what that would mean, in particular
in the case of systemd-sysv whose sole purpose is to replace sysvinit.

-- 
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-02 Thread Ian Jackson
Tollef Fog Heen writes (Bug#727708: loose ends for init system decision):
 Ian Jackson:
  So, firstly, I would say that all packages must, in jessie at least,
  continue to support sysvinit.  Russ (from the other side of the
  upstart/systemd fence) agrees.  Failure to support sysvinit would be
  an RC bug.
 
 I think it would be unwise to require upstart and systemd to continue to
 support sysvinit.  I'm not even sure what that would mean, in particular
 in the case of systemd-sysv whose sole purpose is to replace sysvinit.

I was speaking looaely.  I meant, still loosely speaking but rather
less so, all packages which contain daemons which are to be started by
the init system.

In my draft resolution I gave an even longer and more precise
definition which proves still yet to have edge cases people aren't
happy with.  But I hope you understand roughly what I'm getting at.

For the avoidance of doubt, I mean to include things like inetd and
apache and the system dbus and udev and the nameserver, but to exclude
things like systemd-sysv and upstart-socket-bridge.

The wording in my draft resolution is designed to tolerate (although
obviously not encourage) a hypothetical daemon whose bare bones
packaging doesn't arrange for the daemon to be started at all,
regardless of the init system in use.

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-01 Thread Colin Watson
On Tue, Dec 31, 2013 at 10:18:08PM -0800, Russ Allbery wrote:
 For upstart readiness, obviously one needs some sort of explicit flag or
 trigger to enable the raise(SIGSTOP) behavior, since that will otherwise
 cause rather obvious problems in getting the daemon to work outside of
 upstart.  I prefer to use a command-line flag for this (-Z, per your
 recommendation) since it has to be explicitly enabled and there isn't the
 same sort of safe fallback if it's missing the way that there is for the
 systemd protocol.  I don't see any real problem with using an environment
 variable, though, as long as it's unset afterwards so that it's not
 inherited by children.

Bear in mind that this may often be being done by the Debian maintainer
in advance of upstream, and adding a one-character command-line option
is problematic since that stands a decent chance of clashing.

-- 
Colin Watson   [cjwat...@debian.org]


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2014-01-01 Thread Neil McGovern
On 30 Dec 2013, at 18:47, Russ Allbery r...@debian.org wrote:
 However, I think it's the best available approach that balances our ideals
 as a project against the opportunities offered by a new init system.  This
 approach does permit full use of new init system features for jessie
 except for eliminating /etc/default files (which I doubt we'd successfully
 do quickly anyway), and opens up the full spectrum of use cases after
 jessie.  The cost is that packagers should merge contributed patches to
 the init systems that they don't use.  I don't think this is too much to
 ask, nor do I think it will have serious effects on package complexity
 based on my own experience configuring a package to work under all three
 init systems I considered.
 

I’m no longer a RM, but I would echo Russ’ comments here - an ordered 
transition is very important for Debian releases - and the size of this 
transition would be something that (in my opinion) would be very hard to 
achieve in one release cycle.

Neil


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Ian Jackson
Russ Allbery writes (Bug#727708: loose ends for init system decision):
 Ian Jackson ijack...@chiark.greenend.org.uk writes:
   - avoid extra build-dependencies (eg on libsystemd)
   - avoid extra runtime dependencies (eg on deb-systemd-helper)
 
 These requirements, on the other hand, I find completely baffling.

 This approach seems completely contrary to Debian best practices.  Our
 standard practice with all packages is to fully enable all available
 features that make sense on Debian and don't pose some concrete risk.

The case in point is a little different.  It's one thing to say that
mail daemons should come with ldap support enabled, or whatever (and
even then we sometimes have two versions e.g. heavy and light).

For me it's a different proposition to suppose that _every_ daemon
should bring in these kind of dependencies.  This is particularly the
case for build-dependencies on an avowedly and intentionally
non-portable program.  Of course this can be made conditional, but
this is IMO too fiddly.

  We should recommend:
   - daemon authors and Debian maintainers should prefer command-line
 options to environment variables
 
 I disagree with including this in a statement.  I think it's outside the
 scope of what we were asked to resolve, and I don't think it's the place
 of the TC to offer this sort of general advise to upstreams.

It is very likely that Debian contributors will be implementing native
support for whatever readiness protocol, in the upstream parts of the
codebase.  It is IMO appropriate for those contributors to get advice
on how to do this.  Policy already gives advice on this kind of
thing.  Given the context, and the fact that this advice is going to
be read by a lot of people as part of a big enhancement project, I
think it's appropriate for the TC to answer this question.

 If we're going to offer specific advice, we should limit it to the
 specific integrations that we're asked to consider.  But I think we should
 be mindful of the restriction on the TC not doing design work and let
 Policy for packaging support of upstart and/or systemd be hashed out
 through the regular Policy process.

Are you proposing then that the TC should decide the default init
system, but asmk people NOT to start converting packages until the
policy questions are settled ?

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Russ Allbery
Ian Jackson ijack...@chiark.greenend.org.uk writes:
 Russ Allbery writes (Bug#727708: loose ends for init system decision):

 These requirements, on the other hand, I find completely baffling.

 This approach seems completely contrary to Debian best practices.  Our
 standard practice with all packages is to fully enable all available
 features that make sense on Debian and don't pose some concrete risk.

 The case in point is a little different.  It's one thing to say that
 mail daemons should come with ldap support enabled, or whatever (and
 even then we sometimes have two versions e.g. heavy and light).

I'm aware of only one case of that in the archive.  It's certainly not
what we normally do.

 For me it's a different proposition to suppose that _every_ daemon
 should bring in these kind of dependencies.

It's only going to be *every* daemon if we select systemd as the default
init system, in which case we should be doing this in many daemons for
either socket activation or for readiness notification as part of a proper
systemd integration.  If we do not select systemd as the default init
system, the only maintainers doing this will be those who want their
packages to work well with systemd or whose daemons are of particular
interest to people who want to run systemd as a non-default init system.
In which case, what's the harm?  It's going to be very difficult to even
notice this dependency is there.

I think the position you're taking here is directly contrary to Debian's
position of deference and reasonable accomodation to things that people
want to work on.

 This is particularly the case for build-dependencies on an avowedly and
 intentionally non-portable program.  Of course this can be made
 conditional, but this is IMO too fiddly.

Adding [linux-any] to the Build-Depends line is not too fiddly, and if the
goal is to enable optional upstream support for systemd, that will be
sufficient.  Besides, in general, it's up to the packager to decide what
is or is not too fiddly in how they want to package software.

Obviously, we should not add an unconditional build dependency for a
library that isn't available on some of our ports to software that can
work on those ports.  But I think that's obvious.  I'm happy to have us
say that explicitly if if helps.

 We should recommend:
  - daemon authors and Debian maintainers should prefer command-line
options to environment variables

 I disagree with including this in a statement.  I think it's outside
 the scope of what we were asked to resolve, and I don't think it's the
 place of the TC to offer this sort of general advise to upstreams.

 It is very likely that Debian contributors will be implementing native
 support for whatever readiness protocol, in the upstream parts of the
 codebase.  It is IMO appropriate for those contributors to get advice on
 how to do this.  Policy already gives advice on this kind of thing.
 Given the context, and the fact that this advice is going to be read by
 a lot of people as part of a big enhancement project, I think it's
 appropriate for the TC to answer this question.

If you feel like Policy should give advice on this, you can bring it up in
the context of Policy.  I don't think the exact mechanism of integration
is important enough for the TC to explicitly favor a particular mechanism,
and different upstreams may have different approaches.  I'm not seeing the
important gain to Debian here in trying to standardize exactly how one
tells a daemon to use socket activation or readiness notification.

I also, for what it's worth, directly disagree with this advice with
respect to systemd because I think compatibility with how systemd is used
elsewhere is more important than any marginal gain from using a
configuration method that's not inherited by subprocesses by default,
particularly given that the standard systemd APIs include environment
sanitizing.  But I also don't see any point in arguing about it here,
since I don't think this dispute is ripe (in the legal sense).

If you do bring it up in the context of Policy and we can't resolve the
debate there, it can get appealed to the TC and we can decide it here
separately, but I think this is all premature, given that the whole point
becomes basically moot if we don't pick systemd anyway.

If you're worried about programs configured with environment variables in
the archive, you've got quite a lot of work to do, starting with nearly
every Perl program in existence.

 If we're going to offer specific advice, we should limit it to the
 specific integrations that we're asked to consider.  But I think we
 should be mindful of the restriction on the TC not doing design work
 and let Policy for packaging support of upstart and/or systemd be
 hashed out through the regular Policy process.

 Are you proposing then that the TC should decide the default init
 system, but asmk people NOT to start converting packages until the
 policy questions are settled ?

Sure.  I think

Bug#727708: loose ends for init system decision

2013-12-31 Thread Ian Jackson
Michael Gilbert writes (Bug#727708: loose ends for init system decision):
 On Mon, Dec 30, 2013 at 7:16 PM, Vincent Bernat wrote:
  Unfortunately, being the best init is the not only the matter of its
  maintainers. A good integration implies to modify some packages whose
  maintainer may be hostile to some init and may consider that their
  package work well enough to not enable some feature needed by some init.
 
 That is a hypothetical, of course, but it is a very real possibility
 for any path that the TC decides here.  However, selectable inits may
 (possibly counter-intuitively) reduce this likely-hood.  Since that
 maintainer in the way also gets his init of choice, he may be less
 likely to oppose an alternative that doesn't in any real sense get in
 his way.
 
 However, if/when this does happen, it will be an interesting test of
 whether the TC has the political will to override an indignant
 maintainer with their 3-to-1 majority power.

This is why I think the TC resolution should explain what kinds of
integration package maintainers shuuld accept.  Maintainers who flout
that advice will indeed get overruled.

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Ian Jackson
Russ Allbery writes (Bug#727708: loose ends for init system decision):
 Ian Jackson ijack...@chiark.greenend.org.uk writes:
  For me it's a different proposition to suppose that _every_ daemon
  should bring in these kind of dependencies.
 
 It's only going to be *every* daemon if we select systemd as the default
 init system, in which case we should be doing this in many daemons for
 either socket activation or for readiness notification as part of a proper
 systemd integration.  [...]

Well, no.  I think that even if we select upstart as the default, we
should enable the systemd community to provide as complete a set of
integration in Debian as they care to put the work in for.

That translates directly to an expectation that the maintainer of any
daemon package must be willing to accept reasonable systemd
integration patches.

If the systemd community is very dynamic (and certainly we can't fault
their dynamism so far) this may well translate to all or almost all
daemons.  Certainly it could be expected to include most of the core
daemons where the extra dependencies are most troublesome.

So I think we need to say what we regard as reasonable patches, in
advance.  As the Debian maintainer for uservd (for example), am I
entitled to decline to incorporate systemd integration into my package
on the grounds that the patch involves additional build- and runtime
dependencies which I consider undesirable ?

I don't consider it desirable to answer this question differently for
different daemons.  We need to set out a clear rule for maintainers to
follow or we'll end up adjudicating a gazillion individual disputes.

And if the answer to this question is, in general, the maintainer
must include the patch then the logical conclusion is that it is OK
for every daemon in Debian to acquire these additional build- and
runtime dependencies.  We would be telling non-Linux ports that they
need to arrange for these dependencies to be somehow provided despite
the lack of systemd on their architecture, or to have conditional
compilation of the systemd support in every daemon package.

If the TC's answer is the maintainer may reject the patch, we would
be telling the systemd community that they need to improve and
simplify their integration.

I think the latter is the right approach, for two reasons.  Firstly,
it is less work overall.  Secondly, it is proper that the maintainers
of an init system should be encouraged to provide as simple and
nonintrusive an integration interface as possible.

  This is particularly the case for build-dependencies on an avowedly and
  intentionally non-portable program.  Of course this can be made
  conditional, but this is IMO too fiddly.
 
 Adding [linux-any] to the Build-Depends line is not too fiddly, and if the
 goal is to enable optional upstream support for systemd, that will be
 sufficient.  Besides, in general, it's up to the packager to decide what
 is or is not too fiddly in how they want to package software.

Adding [linux-any] to the Build-Depends is not sufficient.

It is also necessary to make the actual source code conditionally use
sd_notify, using #ifdefs or other similar techniques.  The conditional
compilation will have to be automated (perhaps with autoconf if the
package has it - an then we need new --with[out]-systemd configuration
options to avoid miscompilation; or perhaps in an ad hoc way if the
daemon doesn't use autoconf).  The fact that the systemd-specific
command line option may or may not be compiled in needs to be
mentioned in the documentation, along with text which allows the user
to know whether it's included in the version they actually have.

This turns what could be a simple change into a multi-part epic
involving all of the components of the package: primary source code,
upstream build system and portability layer, Debian build system,
documentation, and so on.

And it might come about later that someone provides a portable
sd_notify so half (but just the right half) of the above would have to
be undone.

 Obviously, we should not add an unconditional build dependency for a
 library that isn't available on some of our ports to software that can
 work on those ports.  But I think that's obvious.  I'm happy to have us
 say that explicitly if if helps.

I think maintainers should not be required to introduce the additional
build- and runtime dependencies, if they do not wish to.  Obviously if
they want to then that's fine by me.

  It is very likely that Debian contributors will be implementing native
  support for whatever readiness protocol, in the upstream parts of the
  codebase.  It is IMO appropriate for those contributors to get advice on
  how to do this.  Policy already gives advice on this kind of thing.
  Given the context, and the fact that this advice is going to be read by
  a lot of people as part of a big enhancement project, I think it's
  appropriate for the TC to answer this question.
 
 If you feel like Policy should give advice

Bug#727708: loose ends for init system decision

2013-12-31 Thread Michael Stapelberg
Hi Ian,

Ian Jackson ijack...@chiark.greenend.org.uk writes:
  This is particularly the case for build-dependencies on an avowedly and
  intentionally non-portable program.  Of course this can be made
  conditional, but this is IMO too fiddly.
 
 Adding [linux-any] to the Build-Depends line is not too fiddly, and if the
 goal is to enable optional upstream support for systemd, that will be
 sufficient.  Besides, in general, it's up to the packager to decide what
 is or is not too fiddly in how they want to package software.

 Adding [linux-any] to the Build-Depends is not sufficient.

 It is also necessary to make the actual source code conditionally use
 sd_notify, using #ifdefs or other similar techniques.  The conditional
 compilation will have to be automated (perhaps with autoconf if the
 package has it - an then we need new --with[out]-systemd configuration
 options to avoid miscompilation; or perhaps in an ad hoc way if the
 daemon doesn't use autoconf).  The fact that the systemd-specific
 command line option may or may not be compiled in needs to be
 mentioned in the documentation, along with text which allows the user
 to know whether it's included in the version they actually have.

 This turns what could be a simple change into a multi-part epic
 involving all of the components of the package: primary source code,
 upstream build system and portability layer, Debian build system,
 documentation, and so on.
No, this is all not true :).
libsystemd-daemon already contains the conditionals necessary to be a
noop on non-linux:
http://sources.debian.net/src/systemd/204-5/src/libsystemd-daemon/sd-daemon.c

Therefore, you can just use it, and don’t need to use any conditionals
on your end, neither in the compilation process, nor in the code itself.

That being said, I just checked and realized the package is not
available on non-linux. I’ll look into that now, since intuitively there
is no reason for this.

-- 
Best regards,
Michael


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Russ Allbery
Michael Stapelberg stapelb...@debian.org writes:

 That being said, I just checked and realized the package is not
 available on non-linux. I’ll look into that now, since intuitively there
 is no reason for this.

Thank you, Michael.  That would indeed make things much easier.  I think
Ian is being excessively dramatic about very simple conditional
integrations, but still, avoiding the conditional entirely is useful.

One approach that would, I hope, minimize Ian's concerns is to provide a
libsystemd-daemon-dev on non-Linux ports that just stubs out the calls,
and that, on those architectures, provides some sort of dummy empty
library that does nothing and adds no dependency.  (There may be an
elegant way to do this with a linker script.)  That way, the exact same
build process can be used everywhere, and everything just quietly
disappears on non-Linux ports where systemd isn't available, without even
adding a dependency on an (on that platform) useless shared library.

What I used for lbcd is:

#ifdef HAVE_SD_NOTIFY
# include systemd/sd-daemon.h
#else
# define SD_LISTEN_FDS_START 3
# define sd_listen_fds(u) 0
# define sd_notify(u, s)  0
#endif

which of course only stubs out the two major calls and doesn't address the
rest of the API.  That would need to be expanded to at least account for
sd_notifyf (which will require a variadic macro, but that shouldn't be a
problem in Debian) and sd_booted.

I'm not sure what the best thing to do about the sd_is_* calls would be.
One possible approach would be to just define them all to -ENOSYS, since
they generally wouldn't be called when sd_listen_fds isn't available,
although that would be a problem if any package ever used those APIs
outside of a systemd context.  (But I'm not sure why one would do that.)

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Tollef Fog Heen
]] Ian Jackson 

 So I think we need to say what we regard as reasonable patches, in
 advance.  As the Debian maintainer for uservd (for example), am I
 entitled to decline to incorporate systemd integration into my package
 on the grounds that the patch involves additional build- and runtime
 dependencies which I consider undesirable ?

If find it incredible that you consider adding 18 lines of
unconditional code to your daemon unreasonable, while forcing the
systemd maintainers to split the package, add explicitly rejected
upstream-incompatible features reasonable.

-- 
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Michael Gilbert
On Mon, Dec 30, 2013 at 10:24 PM, Steve Langasek wrote:
 On Mon, Dec 30, 2013 at 08:12:19PM -0500, Michael Gilbert wrote:
  Part of my goal in writing up that plan was, as you
  say, to try to provide a means for people who are committed to one system
  or the other to continue to work on what they're passionate about even if
  it's not chosen as the default init system.

 Unfortunately at least two camps will be entirely dejected by any TC
 mandate here.

 I don't agree with that conclusion.

That no unhappiness will arise out of this decision is, I think, a
quite unlikely outcome, so this statement is quite surprising.  As
Russ eloquently states today [1]

The degree to which this all should affect our decision-making
process is limited.  That's particularly true in this case, which
is one of those decisions where, whatever we choose, some
group of people in Debian who have put a ton of work into
something they care about are going to be at least somewhat
unhappy.  That may be the systemd maintainers, the GNOME
team, the Hurd porters, the kFreeBSD porters, the upstart
maintainers, those who care deeply about tight Debian and
Ubuntu integration, or any number of other groups.  It will
probably be several of those.

The TC needs to find a path that minimizes unintended social
consequences.  I have been trying to make the case in this thread that
the only reasonable solution that does so is one which empowers all
camps to do work to further their cause without feeling excluded.
Eventually, and this may take sometime but everything worth doing
does, a clearly superior solution will emerge that can, when ready,
become the default.

 When it comes to technology choices, you win some and you lose some.

The fact that there may be winners and losers is not the issue at
hand.  It is the specter of being disqualified before the game even
starts.

 Your proposal smells like the status quo.

That is only true if none of the systemd, openrc, and upstart teams
get to the point where their init is usable, then we're stuck with
sysvinit.  This is probably an unlikely circumstance, but sysvinit
does work.

 Namely, instead of the project
 making a decision and being able to all pull together in the same direction
 to provide the best possible OS, we will continue to coast, squandering
 efforts on preserving users' ability to make choices about things that no
 user should ever be asked to care about

The project never goes in the same direction.  1,000 people go in
their own direction, creative solutions eventually emerge, one often
gains the most traction, but others remain as alternatives (think
debhelper/cdbs/etc), and choice and freedom remain.  It will be a
major change in project governance to select any resolution prior to
emergence.

In my opinion, the only reasonable TC decision is one that requests
project members feel empowered to work toward the solutions that they
are interested in, while being open-minded and non-obstructive to all
of the other competing solutions.

Best wishes,
Mike


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-31 Thread Anthony Towns
Okay, let's see how replying to a mail on my phone while in flight mode
goes. Apologies in advance for formatting, quoting and vocabulary issues.

On Dec 31, 2013 4:48 AM, Russ Allbery r...@debian.org wrote:

 2. Impact of Multiple Init Systems
 Obviously, the ideal situation for project-wide integration and support,
 and for Debian's ability to make full use of the capabilities of new init
 systems, is for all of Debian's ports to be running the same init system.

So, reading this (and trimming loss of stuff that makes sense) I wonder if
it's worth stepping back and considering what happens when a package
doesn't support /any/ init system. The answer I think is that the sysadmin
sighs, adds their own configuration, and maybe thinks well at least I
didn't have to compile it, I guess.

That still sucks compared to the alternative of typing apt-get install
and having it just start working, of course.

 Attempting to support multiple init systems has several obvious drawbacks:

 * Packages will either be limited by the functionality of the least
   capable init system or will behave differently (and have to be
   configured differently) on different ports.

I think the Debian way of dealing with multiple init systems would be to
provide a compatibility layer for the most common packaging and admin
tasks, and allowing packages to provide fancier integration where
appropriate. I'm thinking of things like newaliases and sendmail, and
cgi-bin and apache modules, I guess. Probably that's already covered for
init systems via sysvinit compatibility and update-rc.d. Maybe there's a
missing tool that could be written to let you set init specific
configuration somehow, which would change /etc/default for sysv and other
files for upstart/systemd.

It seems like there's maybe three separate questions then: what init system
gets used by default, what work gets done to make that experience
different/better than everything just having upstart or systemd pretending
to be sysvinit, and what's the experience of maintaining packages to
support secondary init systems and using secondary init systems on a Debian
system?

(Personally, I think a gr would be better for choosing the default then
having the tech ctte decide that issue, but whatever)

Based on what I've read, it seems like the ideas floating around amount to:

- if systemd is default: there would be a release goal to include systemd
configs added to packages and to get daemons converted to support socket
activation. Maybe other stuff too? As far as maintaining sysvinit, openrc
or upstart systemd goes, you'd just have to get upstart configs written and
packaged, and accept that there's an unused systemd library on your system.
Multiple inits must be supported to some extent, since systemd isn't
available on ports and that isn't likely to change apparently.

- upstart is default, other inits are supported: pull in Ubuntu configs for
upstart for various packages. If systemd socket stuff is allowed, dummy
library will probably be on most systems, if not, systemd in Debian won't
be very interesting.

- upstart is default and only init supported by Debian. Same support work
for Jessie, except any ports that want to stick around need to get upstart
enabled.

I don't think the latter is really the Debian way - better to have the
choice left in the users' hand if feasible, but it's likely a lot easier to
get some impressive results that way. I think the ideal page for tradeoffs
like that is in derivatives like Ubuntu personally.

 I believe Debian should take this path forward:
 1. We should select a new init system for jessie, either systemd or
upstart.  Support for that init system should be release-critical, but
only in the sense that the daemon works properly under that init
system.  In other words, use of the sysvinit compatibility of either
init system is acceptable support for jessie.

So that would mean switching the init system, and decorating anything that
breaks as a result RC buggy. Seems sensible.

 2. All packages providing init scripts must continue to support sysvinit
scripts through the jessie release.  Such support will continue to be
release-critical.

I'm not sure this makes sense, though. If someone packages a new daemon
that works fine with systemd and upstart, I don't see why it shouldn't get
released just because it doesn't work with two secondary init systems.
Filling a wishlist bug with a patch and doing an NMU seem like they'd be
sufficient here.

As far as upgrades go, if the idea is that systemd is the way to go for
Jessie it seems to me that an update would by default switch you from
sysvinit to systemd (likewise for upstart) - I don't think it makes much
sense to do systemd/upstart for new installs but leave upgrades with sysv
until Jessie+1.

 7. After jessie, functionality between systems running the primary Linux
init system and other init systems (including non-Linux ports) should
be allowed to drift.  In other 

Bug#727708: loose ends for init system decision

2013-12-31 Thread Russ Allbery
Ian Jackson ijack...@chiark.greenend.org.uk writes:

 Well, no.  I think that even if we select upstart as the default, we
 should enable the systemd community to provide as complete a set of
 integration in Debian as they care to put the work in for.

 That translates directly to an expectation that the maintainer of any
 daemon package must be willing to accept reasonable systemd integration
 patches.

 If the systemd community is very dynamic (and certainly we can't fault
 their dynamism so far) this may well translate to all or almost all
 daemons.  Certainly it could be expected to include most of the core
 daemons where the extra dependencies are most troublesome.

 So I think we need to say what we regard as reasonable patches, in
 advance.  As the Debian maintainer for uservd (for example), am I
 entitled to decline to incorporate systemd integration into my package
 on the grounds that the patch involves additional build- and runtime
 dependencies which I consider undesirable ?

Ah!  Okay, now I understand why you think this is linked and something we
should decide here.  Thank you.

Okay, so let me see if I understand what we agree on and what we would
need to debate.  Would you agree with both of these statements?

* If we adopt systemd, then obviously integration with systemd would be
  desirable and should be accepted, including build and runtime
  dependencies as is appropriate for how systemd is integrated into the
  distribution as a whole.

* If a maintainer wishes to integrate with systemd via build and runtime
  dependencies in their daemon, that would be their call, not something
  the TC would decide.  (I think you do agree with this given the
  statement below, but leaving this in as summary.)

If so, then the problem reduces to what to do in the case where someone
requests integration with systemd via a bug report and the maintainer
doesn't want to provide that integration, at least with build or runtime
dependencies or both.

Let's put aside the question of how to handle this on the ports that don't
have systemd for the moment, and hence the conditional build integration
parts, since that was discussed in the other thread and I think there are
possible lightweight schemes that are specific to the case where we just
want to stub out the calls.

I assume that the reason why you're bringing this up, per your original
message, is that you don't want to introduce either build or runtime
dependencies.  I don't, however, understand why; the logic doesn't make
any sense to me.  Both of those dependencies are so lightweight that I
have a hard time seeing how anyone would notice they exist, beyond having
a couple of packages installed on the system that wouldn't otherwise be.

I'm inclined to say that asking maintainers to add those dependencies is
appropriate.  I'm not aware of a precedent for this for something that
we're not committing to supporting for the archive, but it certainly
parallels other deployments in Debian, such as SELinux and multi-arch.

 I think the latter is the right approach, for two reasons.  Firstly, it
 is less work overall.  Secondly, it is proper that the maintainers of an
 init system should be encouraged to provide as simple and nonintrusive
 an integration interface as possible.

I believe that systemd has already provided this, and I find your belief
that it hasn't to be strange.  I certainly don't think that we will
succeed, or *should* succeed, in convincing systemd to adopt a new API
that offers no clear benefit over their existing API and is incompatible
with it.  If I were them, I'd reject it out of hand as a waste of time and
effort.

Incidentally, the tools in the init-system-helpers package are basically
playing the same role as tools that are in the sysv-rc package now.  I
think one could make a pretty good argument that, were we designing this
from scratch today without worrying about history or backward
compatibility, update-rc.d and invoke-rc.d would go into
init-system-helpers, since they're (now) general tools that support a
variety of underlying init systems.

If the dependency on that package is really such a burden, one thing we
could do is just move the two scripts in it into sysv-rc and use sysv-rc
as the package that holds those tools.  I don't really care, and I don't
mind having two packages, but looking at the current contents of both,
they're really quite close to the same thing.  (sysv-rc also continues to
provide a small amount of additional infrastructure for sysvinit, but it's
pretty limited.)

 I think maintainers should not be required to introduce the additional
 build- and runtime dependencies, if they do not wish to.  Obviously if
 they want to then that's fine by me.

Ah, good, okay.  This is less of a conflict than at first I thought we
had.

I definitely understand the desire to not impose requirements on package
maintainers that they don't like, and to minimize the impact of such
requirements.

 If you feel like Policy 

Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
This message is about a transition plan for an init system replacement and
about how to handle portability to our non-Linux ports.  I'm keeping the
same subject as Ian's message on the same basic topics and attaching it to
the same thread, but this is more of a separate writeup than a reply.
I'll reply to Ian's message separately.

I've expressed my opinion separately about which init system we should
choose.  This message is written from the assumption that we will choose
either upstart or systemd as the init system for the non-Linux ports.  I
believe either system would pose basically the same concerns.


1. Role of Non-Linux Ports in Debian

There has been a lot of discussion in various places, including the Debian
mailing lists, about the utility of the non-Linux ports and about how much
they should play a role in project decisions.  I think this deserves to be
addressed directly here.

One of the things that I love about Debian, and one of the reasons why I
am involved in this project as opposed to a different distribution, is
that it is a labor of love.  Debian is not driven by market forces; we
have users and we want the distribution to work for them, but we're not
competing for market share.  Debian does not make decisions based on
simple popularity, or on customer counts.  Rather, Debian is a project of
mutual cooperation among Debian's contributors.  We work on what we care
about, regardless of whether that makes economic sense.

It is not, in general, necessary to justify what you want to do in Debian.
It doesn't matter if it's going to be used by thousands of people or two
people.  If you can do your work to the standards that we expect to be
maintained across the archive, and without negative impact on Debian's
other contributors, you can work on whatever you love.  And, furthermore,
we all support each other in our passions.  Debian is built on a culture
of deference to other people's work, and reasonable accomodation to the
projects that other people want to work on.

Now, there is a fine balance here.  Deference to other people's work does
not mean a requirement to join their work.  Reasonable accomodation does
not mean that every Debian developer is required to test their software on
non-Linux ports.  The goal is that all of us should be empowered to work
on the things we are passionate about, which implicitly includes being
empowered to not work on the things that are not of interest to us.
Therefore, for some efforts, and specifically for the non-Linux port
efforts, the work is mostly born by the porters.  They're expected to
test, diagnose problems, and submit patches.  The deference and reasonable
accomodation that we expect of Debian contributors is to merge those
patches when they are reasonable, to not undermine the porting effort when
there is a reasonable approach that preserves it, and to be aware of the
implications of their packaging for those ports in the broad sense (such
as qualifying build-dependencies with [linux-any] where appropriate).

We do not expect Debian contributors to reject significant new upstream
versions or significant new integrations because they will affect the
non-Linux ports, or, for that matter, other projects in Debian.  We do
expect those changes to follow the standards that we expect of Debian as a
whole, and that porting efforts will be treated with deference and
reasonable accomodation.

I think this status applies to both our Hurd port and our kFreeBSD port.
Those ports have different challenges, and arguably different levels of
utility to general users, but as mentioned, I don't consider popularity to
be a useful metric here.  It doesn't make any difference to me if the port
is used by thousands of people or if it's only used by the people actively
working on it: the same principles of deference and reasonable
accomodation apply.

I believe strongly that this is something that defines Debian as a project
and is worth preserving.

It's also worth saying here that I don't believe any of the above is
particularly controversial within the project.  We have wide-ranging
arguments about it in the abstract, and quite a few disparaging comments
have been thrown around about the non-Linux ports in the init system
discussion, which makes me sad.  But when it comes to the day-to-day work
in the project, nearly all maintainers are quite good (and have been for
years) about merging required patches for the Hurd and pushing them
upstream, responding to bug reports on systems they don't use, and making
a reasonable effort to accomodate other people's projects.

Similarly, our non-Linux porters have been exemplary.  Neither the Hurd
nor the kFreeBSD ports have expected every Debian contributor to directly
support their platforms.  They track down problems, develop patches, and
submit tested patches to the BTS.  They have developed their own solutions
for packages that are not portable and worked out how to integrate them
with the archive.

Despite the often 

Bug#727708: loose ends for init system decision

2013-12-30 Thread Ian Jackson
Russ Allbery writes (Bug#727708: loose ends for init system decision):
 1. Role of Non-Linux Ports in Debian

I agree with most of this.

 2. Impact of Multiple Init Systems

I don't want to do a blow-by-blow quote/rebuttal of this.

 3. systemd and upstart As Multiple Systems
..
 I therefore think that, regardless of which init system we pick, we should
 keep in mind the above principle of Debian's deference and reasonable
 accomodation to other people's projects and apply that to systemd and
 upstart as well as to the non-Linux ports.  Obviously, this also has the
 same issues mentioned above: Debian contributors can only be expected to
 test on the primary init system, other configurations will tend to bitrot
 without active porter attention, and so forth.  But if people want to take
 on the work, that deserves our respect.

Right.


 4. Conclusions
...
 1. We should select a new init system for jessie, either systemd or
upstart.  Support for that init system should be release-critical, but
only in the sense that the daemon works properly under that init
system.  In other words, use of the sysvinit compatibility of either
init system is acceptable support for jessie.

I agree.

 2. All packages providing init scripts must continue to support sysvinit
scripts through the jessie release.  Such support will continue to be
release-critical.  This is going to be painful for packages that want
to do an early conversion, since it means testing two different init
systems for this release cycle, but I think this is the right thing to
do regardless for a clean upgrade path and Debian's normal robust
committment to upgrades.  Here it has the additional advantage of
giving the non-Linux ports some breathing space to strategize.

Yes.

 3. Related, up through the jessie release, packages must (where possible;
it's possible there will be cases where this is simply impossible)
support switching back and forth between the new default init system
and sysvinit.  This means that configurations should not be moved out
of /etc/default and that startup files for the new init system should
read the same configuration that the existing sysvinit scripts use (or
both should be modified compatibly).

Yes.

 4. Post-jessie, support for sysvinit will no longer be release-critical,
and package maintainers will no longer be expected to ensure that it
continues working.  [...]
 
 5. Support for the other init system that was not chosen should be handled
in the same fashion, should a team choose to pursue it.  [...]

I think it is probably premature for us to drop support for the other
system in jessie+1.

But we don't need to make this decision now.

 6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

Is there some difficulty expected with upstart on hurd ?

 We should revisit this decision again after the jessie release in case the
 situation has substantially changed.

I would be very reluctant to write now that the support for sysvinit,
or the non-default new system, may be dropped in jessie+1.  That will
result in premature rot and removal.

It's also possible that some kind of compatibility mechanism will
become available.

I would like to leave this decision to the policy maintainers, with
the expectation that the TC will probably need to decide.

Thanks,
Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Ian Jackson ijack...@chiark.greenend.org.uk writes:
 Russ Allbery writes (Bug#727708: loose ends for init system decision):

 6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

 Is there some difficulty expected with upstart on hurd ?

I don't know if anyone has looked at it, and in the absence of any
practical experience, I think it's fair to expect some challenges.  The
blog post on kFreeBSD porting indicated that the porting effort to date
required eglibc and FreeBSD kernel changes.  It seems like a reasonable
assumption that at least a similar level of effort will be required on
Hurd, and I don't know if the Hurd has as mature (if incompatible)
capabilities such as kqueue on FreeBSD to use to implement such things as
inotify or epoll.

I know very little about the Hurd, so basically I just don't know.

 I would be very reluctant to write now that the support for sysvinit, or
 the non-default new system, may be dropped in jessie+1.  That will
 result in premature rot and removal.

 It's also possible that some kind of compatibility mechanism will become
 available.

That's a reasonable point.  I have no objections to deferring that
decision until after the jessie release.

 I would like to leave this decision to the policy maintainers, with the
 expectation that the TC will probably need to decide.

Yeah, with my Policy hat on, I don't want any piece of that one.  I would
be inclined to immediately escalate to the TC.  I don't believe that
Policy's conservative consensus approach is going to work here, and I
expect trying to be painful.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Ian Jackson ijack...@chiark.greenend.org.uk writes:

 I think we should give package maintainers some guidance on what kinds
 of upstart or systemd patches should be accepted.  Without this, it's
 likely we'll find ourselves adjudicating disputes that ought to have
 been settled in principle much earlier.

 I think that patches for either should:
  - use a non-forking startup method
  - avoid significant amounts of open-coded AF_UNIX socketry
  - avoid embedded copies of daemon library code

These all seem reasonable to me, with the caveat that if *upstream*
includes open-coded AF_UNIX socketry or embedded copies of daemon library
code, I don't see any need for Debian package maintainers to remove that
code.

  - avoid extra build-dependencies (eg on libsystemd)
  - avoid extra runtime dependencies (eg on deb-systemd-helper)

These requirements, on the other hand, I find completely baffling.

This approach seems completely contrary to Debian best practices.  Our
standard practice with all packages is to fully enable all available
features that make sense on Debian and don't pose some concrete risk.
This means that, for example, I have CUPS libraries on this system despite
the fact that I never print, Avahi libraries depsite the fact that I will
never use that software, and SELinux libraries deeply embedded in core
code despite the fact that few Debian systems currently run SELinux.

These requirements seem like would fit with Gentoo, where much emphasis is
placed on letting people build custom-crafted binaries to their local
requirements, not Debian's approach of providing a full-featured and
uniform distribution.

Needless to say, I don't think we should avoid dependencies on
libsystemd-daemon or init-system-helpers, and I think it would be wholly
inappropriate for the Technical Committee to say anything of the sort.

 (If the current state of the art in readiness protocols persists that
 means that upstart patches using raise(SIGSTOP) ought to be accepted,
 but systemd ones rejected unless they can use socket activation.)

So, as mentioned above, I don't agree with this, although of course I
think using socket activation is, in general, better than using the
readiness protocol.

 We should recommend:
  - daemon authors and Debian maintainers should prefer command-line
options to environment variables

I disagree with including this in a statement.  I think it's outside the
scope of what we were asked to resolve, and I don't think it's the place
of the TC to offer this sort of general advise to upstreams.

  - whatever environment variables and fds are used, measures should be
taken to avoid them being inherited by daemons' arbitrary children

I agree with this as good practice for daemons, but again, I don't think
it's the role of the TC to issue this sort of general advice that is not
directly related to a question put before us.

If we're going to offer specific advice, we should limit it to the
specific integrations that we're asked to consider.  But I think we should
be mindful of the restriction on the TC not doing design work and let
Policy for packaging support of upstart and/or systemd be hashed out
through the regular Policy process.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Tollef Fog Heen
]] Russ Allbery 

 Given that, I don't believe a Technical Committee choice of a default init
 system is going to make either the systemd or the upstart maintainers want
 to stop maintaining their packages.

Given what you're basically deciding between is «upstart + castrated
systemd» or «systemd» and I think I've pretty clearly expressed my
thoughts on splitting up systemd, I don't know where that conclusion
comes from.  Were you to choose upstart, I'd be seriously thinking about
stopping maintaining systemd.  (This is meant as a data point, not as a
threat or anything like that.)  My ideas for the package align pretty
well with upstream (which I'm a sometimes-active part of) where the
different services are free to assume that they run with systemd as pid
1. Continously porting new upstream versions to an environment
unsupported by upstream is not what I consider reasonable or fun.  I'm
speaking for myself here, not the other systemd maintainers.

In addition, as per my other message, were you to choose upstart as a
default, I'd be inclined to remove the init functionality from systemd.
I think trying to support multiple init systems is crazy and a recipe
for disaster and I don't want to do that.  (Doing it as part of a
transition is a necessary pain, that much I can agree with, but ongoing?
No thanks.)

 6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

I think allowing them to use a compatible init system should be ok too,
if somebody wants to do that.

-- 
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Michael Gilbert
On Mon, Dec 30, 2013 at 1:47 PM, Russ Allbery wrote:

 4. Conclusions

 I previously argued that much of the benefit of a new init system comes
 from when we can stop maintaining init scripts.  I still believe that, but
 after thinking more about the cultural and project issues at stake here,
 as well as the immediate needs for a clean upgrade path, I ended up at
 more of a compromise position than I expected.

 I believe Debian should take this path forward:

 1. We should select a new init system for jessie, either systemd or
upstart.  Support for that init system should be release-critical, but
only in the sense that the daemon works properly under that init
system.  In other words, use of the sysvinit compatibility of either
init system is acceptable support for jessie.

 2. All packages providing init scripts must continue to support sysvinit
scripts through the jessie release.  Such support will continue to be
release-critical.  This is going to be painful for packages that want
to do an early conversion, since it means testing two different init
systems for this release cycle, but I think this is the right thing to
do regardless for a clean upgrade path and Debian's normal robust
committment to upgrades.  Here it has the additional advantage of
giving the non-Linux ports some breathing space to strategize.

 3. Related, up through the jessie release, packages must (where possible;
it's possible there will be cases where this is simply impossible)
support switching back and forth between the new default init system
and sysvinit.  This means that configurations should not be moved out
of /etc/default and that startup files for the new init system should
read the same configuration that the existing sysvinit scripts use (or
both should be modified compatibly).

 4. Post-jessie, support for sysvinit will no longer be release-critical,
and package maintainers will no longer be expected to ensure that it
continues working.  However, for as long as Debian has accepted
non-Linux ports using a different init system, package maintainers
should continue to ship init scripts if they work and should apply
patches and other reasonable fixes from porters for those init scripts.
In other words, this should be treated the same as merging patches for
the Hurd to remove hard-coded constant assumptions: if the change is
reasonable and doesn't break Linux ports (and this should be fairly
easy to handle for nearly all cases with init scripts), the package
maintainer should merge it.

 5. Support for the other init system that was not chosen should be handled
in the same fashion, should a team choose to pursue it.  If we select
systemd, package maintainers should still be willing to merge
contributed upstart configuration, with the understanding that they
can't test it and any support is on a best-effort basis only.
Similarly, if we select upstart, package maintainers should be willing
to merge systemd unit files and to enable upstream systemd support
where requested and where it doesn't interfere with the operation of
the daemon under upstart, with the understanding that the package
maintainer is not committing to testing or directly supporting this
configuration.

 6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

 7. After jessie, functionality between systems running the primary Linux
init system and other init systems (including non-Linux ports) should
be allowed to drift.  In other words, there will be cases where
features will only be available with the primary init system.  Possible
examples include security hardening, socket activation, automatic
daemon restarts, and so forth.  Packagers are under no obligation to
port those features to other init systems, but should welcome and merge
patches that do so.  After jessie, packagers will no longer be required
to preserve daemon configuration when the init system is switched, so
use of such facilities as modification of upstart configuration files
or systemd overrides may be used.

 We should revisit this decision again after the jessie release in case the
 situation has substantially changed.

Doesn't a TC mandate on the default init system in some sense violate
Debian's spirit of meritocracy?  May I suggest something like the
following (this isn't meant to be definitive) as a more meritocratic
approach:

1. The TC encourages a team (probably debian-boot) to provide a
package (similar to 

Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Tollef Fog Heen tfh...@err.no writes:
 ]] Russ Allbery 

 Given that, I don't believe a Technical Committee choice of a default
 init system is going to make either the systemd or the upstart
 maintainers want to stop maintaining their packages.

 Given what you're basically deciding between is «upstart + castrated
 systemd» or «systemd» and I think I've pretty clearly expressed my
 thoughts on splitting up systemd, I don't know where that conclusion
 comes from.

I have to admit that I didn't give it a whole lot of thought.  It was an
assumption based on the presence of both in the archive for some time now
as non-default init systems under sysvinit.  In that sense, things don't
change that horribly much, at least up to the jessie release, if the
default changes from one non-systemd thing to another non-systemd thing.

That being said, obviously you should speak for yourself, and I stand
corrected.  Apologies for misprepresenting your feelings here.

 6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

 I think allowing them to use a compatible init system should be ok too,
 if somebody wants to do that.

Oh, yes, good point.  I was thinking more in terms of two different init
systems with different preferred configuration files.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Michael Gilbert mgilb...@debian.org writes:

 Doesn't a TC mandate on the default init system in some sense violate
 Debian's spirit of meritocracy?

I believe that we have enough information to make an informed choice
already, and that the sides are fairly well-defined and hardened in their
opinions.  That means that this dispute falls under section 6.1.2 of the
constitution:

Decide any technical matter where Developers' jurisdictions overlap.

In cases where Developers need to implement compatible technical
policies or stances (for example, if they disagree about the
priorities of conflicting packages, or about ownership of a command
name, or about which package is responsible for a bug that both
maintainers agree is a bug, or about who should be the maintainer for
a package) the technical committee may decide the matter.

Regardless of how we structure the installer, we need to have a default
init system (unless we plan on making every user choose, which I would
dismiss out of hand as a horrible UI experience for the average user, who
really doesn't care).  We have to mandate support for at least that
default init system.  Realistically, the ability of the Debian developer
community to support more than one init system is limited, since any given
system is generally only going to run one.  That means the level of
quality of integration is going to drop off significantly relative to the
default init system, particularly over time.

Init systems are not like desktop environments: they require work by a
huge swath of the developer community, and the average user does not
generally switch from one to the other.  The reality is that either
systemd or upstart is fully capable of everything the typical user is
going to need (for that matter, sysvinit is capable of most of what the
typical user needs); there isn't the same driving force of user preference
that leads users to switch between desktop environments, and quite a bit
more integration support is required for the init system.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Cory

On 12/30/2013 04:31 PM, Michael Gilbert wrote:

On Mon, Dec 30, 2013 at 1:47 PM, Russ Allbery wrote:

4. Conclusions

I previously argued that much of the benefit of a new init system comes
from when we can stop maintaining init scripts.  I still believe that, but
after thinking more about the cultural and project issues at stake here,
as well as the immediate needs for a clean upgrade path, I ended up at
more of a compromise position than I expected.

I believe Debian should take this path forward:

1. We should select a new init system for jessie, either systemd or
upstart.  Support for that init system should be release-critical, but
only in the sense that the daemon works properly under that init
system.  In other words, use of the sysvinit compatibility of either
init system is acceptable support for jessie.

2. All packages providing init scripts must continue to support sysvinit
scripts through the jessie release.  Such support will continue to be
release-critical.  This is going to be painful for packages that want
to do an early conversion, since it means testing two different init
systems for this release cycle, but I think this is the right thing to
do regardless for a clean upgrade path and Debian's normal robust
committment to upgrades.  Here it has the additional advantage of
giving the non-Linux ports some breathing space to strategize.

3. Related, up through the jessie release, packages must (where possible;
it's possible there will be cases where this is simply impossible)
support switching back and forth between the new default init system
and sysvinit.  This means that configurations should not be moved out
of /etc/default and that startup files for the new init system should
read the same configuration that the existing sysvinit scripts use (or
both should be modified compatibly).

4. Post-jessie, support for sysvinit will no longer be release-critical,
and package maintainers will no longer be expected to ensure that it
continues working.  However, for as long as Debian has accepted
non-Linux ports using a different init system, package maintainers
should continue to ship init scripts if they work and should apply
patches and other reasonable fixes from porters for those init scripts.
In other words, this should be treated the same as merging patches for
the Hurd to remove hard-coded constant assumptions: if the change is
reasonable and doesn't break Linux ports (and this should be fairly
easy to handle for nearly all cases with init scripts), the package
maintainer should merge it.

5. Support for the other init system that was not chosen should be handled
in the same fashion, should a team choose to pursue it.  If we select
systemd, package maintainers should still be willing to merge
contributed upstart configuration, with the understanding that they
can't test it and any support is on a best-effort basis only.
Similarly, if we select upstart, package maintainers should be willing
to merge systemd unit files and to enable upstream systemd support
where requested and where it doesn't interfere with the operation of
the daemon under upstart, with the understanding that the package
maintainer is not committing to testing or directly supporting this
configuration.

6. Debian's non-Linux ports should either use the same init system as
Debian's Linux ports or agree on an init system that they're both going
to use.  The porting work is going to be hard enough without the ports
going in different directions on which secondary init system they want
to use.  I prefer to leave it up to the porters to decide which init
system to choose, but I do think OpenRC would be a strong contender.

7. After jessie, functionality between systems running the primary Linux
init system and other init systems (including non-Linux ports) should
be allowed to drift.  In other words, there will be cases where
features will only be available with the primary init system.  Possible
examples include security hardening, socket activation, automatic
daemon restarts, and so forth.  Packagers are under no obligation to
port those features to other init systems, but should welcome and merge
patches that do so.  After jessie, packagers will no longer be required
to preserve daemon configuration when the init system is switched, so
use of such facilities as modification of upstart configuration files
or systemd overrides may be used.

We should revisit this decision again after the jessie release in case the
situation has substantially changed.

Doesn't a TC mandate on the default init system in some sense violate
Debian's spirit of meritocracy?  May I suggest something like the
following (this isn't meant to be definitive) as a more meritocratic
approach:

1. The TC encourages a team (probably debian-boot) to 

Bug#727708: loose ends for init system decision

2013-12-30 Thread Michael Gilbert
On Mon, Dec 30, 2013 at 5:51 PM, Russ Allbery wrote:
 Michael Gilbert writes:

 Doesn't a TC mandate on the default init system in some sense violate
 Debian's spirit of meritocracy?

 I believe that we have enough information to make an informed choice
 already, and that the sides are fairly well-defined and hardened in their
 opinions.  That means that this dispute falls under section 6.1.2 of the
 constitution:

I entirely concur that the social problem resides rightly within the
jurisdiction of the TC.  With that said, however, it is worth
considering whether the role of the TC may be more effective if
directed at the root (the social), rather than the branches (the
technical choice), of the problem.  The key, I think, is for the TC to
provide a reasonable path for those currently identifying with any of
the hardened camps to redirect their negative energy away from
argument and toward something more positive: technical work and actual
code.

 Regardless of how we structure the installer, we need to have a default
 init system (unless we plan on making every user choose, which I would
 dismiss out of hand as a horrible UI experience for the average user, who
 really doesn't care).

As stated in my suggestion, initsel would of course always have a
default, and only expert users would be empowered to travel the road
less traveled.  The no default idea that gets thrown about a lot is,
of course, infeasible as a matter of practicality.

 Init systems are not like desktop environments: they require work by a
 huge swath of the developer community, and the average user does not
 generally switch from one to the other.

I think, on the contrary, the nmu procedure is quite effective at
enabling a small subset of the developer community (those that have a
strong shared interest) to effect large changes across the entire
archive (of course when maintainers stay out of the way,).

This process has been demonstrated many times (although slow-going)
for lots of other sweeping changes (e.g. buildflags, usr/share/doc,
etc.).

Best wishes,
Mike


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Vincent Bernat
 ❦ 30 décembre 2013 23:31 CET, Michael Gilbert mgilb...@debian.org :

 Doing something like this, the best init system can win based truly on
 merit (if/when the work gets done), rather than as a fuzzy upfront
 judgement call.

Unfortunately, being the best init is the not only the matter of its
maintainers. A good integration implies to modify some packages whose
maintainer may be hostile to some init and may consider that their
package work well enough to not enable some feature needed by some init.

I am pretty vague, by I believe that the TC has currently a case for
such an example.

Only once (and if) systemd gets to be the default init, we will be able
to leverage all its abilities by full integration into Debian.
-- 
Don't compare floating point numbers just for equality.
- The Elements of Programming Style (Kernighan  Plauger)


signature.asc
Description: PGP signature


Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Michael Gilbert mgilb...@debian.org writes:
 On Mon, Dec 30, 2013 at 5:51 PM, Russ Allbery wrote:

 I believe that we have enough information to make an informed choice
 already, and that the sides are fairly well-defined and hardened in
 their opinions.  That means that this dispute falls under section 6.1.2
 of the constitution:

 I entirely concur that the social problem resides rightly within the
 jurisdiction of the TC.  With that said, however, it is worth
 considering whether the role of the TC may be more effective if directed
 at the root (the social), rather than the branches (the technical
 choice), of the problem.  The key, I think, is for the TC to provide a
 reasonable path for those currently identifying with any of the hardened
 camps to redirect their negative energy away from argument and toward
 something more positive: technical work and actual code.

Well, I think it's worth pointing out that my transition plan looks
somewhat similar to your plan, as far as the jessie release.  (Then it
starts diverging.)  Part of my goal in writing up that plan was, as you
say, to try to provide a means for people who are committed to one system
or the other to continue to work on what they're passionate about even if
it's not chosen as the default init system.

Whether they do so or not is up to them, of course, as it should be.

However, I don't want to understate the amount of effort required to
integrate with the init system across the distribution.  I'm less
pessimistic than Steve, but he's not wrong that the choice of a default
init system will have sweeping consequences for what will work and what
won't.  This will particularly be the case if that init system supports
capabilities beyond the sysvinit set.

I do think it would be possible to maintain package compatibility with
both systemd and upstart.  That was something I was curious about and
therefore explicitly tested as part of my evaluation, and was able to do
so to my satisfaction.  That said, I tackled a fairly simple daemon, and
something like NFS support would require people with deep knowledge of
each supported init system to maintain that support.

I don't think it's a good idea to ask everyone to pursue all paths in
parallel.  I think Debian does a bit too much of that right now.  We
should pick a winner that we believe is technically superior and focus the
mandatory, archive-wide effort on it.  We should then *not get in the way*
of people who also want to pursue alternative paths, but not assume that
they will necessarily be successful, and not require that everyone get
involved in that effort beyond the level of integrating patches that we
currently expect for, say, the Hurd port.

But, anyway, I don't think our positions are really that different.  The
main difference is that I think we should pick a default init system for
jessie now, and you feel like we should do effectively an archive-wide
bake-off and then go with whatever one achieves the best integration.  I
have to admit to a deep personal dislike of contests like that, since I
find them stressful and demotivating and think they make the process of
free software development less fun.  I'd rather decide on our default and
on the mandatory work now, so that everyone knows where they stand, and
then let people make their own decisions about what they want to spend
time on beyond the required minimum.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Michael Gilbert
On Mon, Dec 30, 2013 at 7:16 PM, Vincent Bernat wrote:
  ❦ 30 décembre 2013 23:31 CET, Michael Gilbert :

 Doing something like this, the best init system can win based truly on
 merit (if/when the work gets done), rather than as a fuzzy upfront
 judgement call.

 Unfortunately, being the best init is the not only the matter of its
 maintainers. A good integration implies to modify some packages whose
 maintainer may be hostile to some init and may consider that their
 package work well enough to not enable some feature needed by some init.

That is a hypothetical, of course, but it is a very real possibility
for any path that the TC decides here.  However, selectable inits may
(possibly counter-intuitively) reduce this likely-hood.  Since that
maintainer in the way also gets his init of choice, he may be less
likely to oppose an alternative that doesn't in any real sense get in
his way.

However, if/when this does happen, it will be an interesting test of
whether the TC has the political will to override an indignant
maintainer with their 3-to-1 majority power.

Best wishes,
Mike


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Michael Gilbert
On Mon, Dec 30, 2013 at 7:20 PM, Russ Allbery wrote:
 Michael Gilbert mgilb...@debian.org writes:
 On Mon, Dec 30, 2013 at 5:51 PM, Russ Allbery wrote:

 I believe that we have enough information to make an informed choice
 already, and that the sides are fairly well-defined and hardened in
 their opinions.  That means that this dispute falls under section 6.1.2
 of the constitution:

 I entirely concur that the social problem resides rightly within the
 jurisdiction of the TC.  With that said, however, it is worth
 considering whether the role of the TC may be more effective if directed
 at the root (the social), rather than the branches (the technical
 choice), of the problem.  The key, I think, is for the TC to provide a
 reasonable path for those currently identifying with any of the hardened
 camps to redirect their negative energy away from argument and toward
 something more positive: technical work and actual code.

 Well, I think it's worth pointing out that my transition plan looks
 somewhat similar to your plan, as far as the jessie release.  (Then it
 starts diverging.)

The key differences are that it is more succinct, roles and
requirements are defined, no init system is outright rejected, and the
default is selected on demonstrable merit.

 Part of my goal in writing up that plan was, as you
 say, to try to provide a means for people who are committed to one system
 or the other to continue to work on what they're passionate about even if
 it's not chosen as the default init system.

Unfortunately at least two camps will be entirely dejected by any TC
mandate here.

 Whether they do so or not is up to them, of course, as it should be.

 However, I don't want to understate the amount of effort required to
 integrate with the init system across the distribution.  I'm less
 pessimistic than Steve, but he's not wrong that the choice of a default
 init system will have sweeping consequences for what will work and what
 won't.  This will particularly be the case if that init system supports
 capabilities beyond the sysvinit set.

 I do think it would be possible to maintain package compatibility with
 both systemd and upstart.  That was something I was curious about and
 therefore explicitly tested as part of my evaluation, and was able to do
 so to my satisfaction.  That said, I tackled a fairly simple daemon, and
 something like NFS support would require people with deep knowledge of
 each supported init system to maintain that support.

 I don't think it's a good idea to ask everyone to pursue all paths in
 parallel.  I think Debian does a bit too much of that right now.  We
 should pick a winner that we believe is technically superior and focus the
 mandatory, archive-wide effort on it.  We should then *not get in the way*
 of people who also want to pursue alternative paths, but not assume that
 they will necessarily be successful, and not require that everyone get
 involved in that effort beyond the level of integrating patches that we
 currently expect for, say, the Hurd port.

I don

 But, anyway, I don't think our positions are really that different.  The
 main difference is that I think we should pick a default init system for
 jessie now, and you feel like we should do effectively an archive-wide
 bake-off and then go with whatever one achieves the best integration.

And Debian ends up with not only apple pie, but pumpkin and blueberry
pies, and of in a corner there will be others thinking about
cinnamon-spiced apple and blueberry-raspberry and other
never-before-seen flavors.   What a wonderful bake-off that would be
:)

Think about how it would go over if the directors of that metaphorical
bake-off forced all the participants to produce the exact same pie.
No one would really want to participate, and winning would be entirely
meaningless.  It wouldn't be a bake-off at all.  It would be more like
a mass-production assembly line.

Best wishes,
Mike


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-30 Thread Steve Langasek
On Mon, Dec 30, 2013 at 08:12:19PM -0500, Michael Gilbert wrote:
  Part of my goal in writing up that plan was, as you
  say, to try to provide a means for people who are committed to one system
  or the other to continue to work on what they're passionate about even if
  it's not chosen as the default init system.

 Unfortunately at least two camps will be entirely dejected by any TC
 mandate here.

I don't agree with that conclusion.

When it comes to technology choices, you win some and you lose some.  If
upstart wins, I will be happy.  If systemd wins, I will also be happy,
because it's long overdue that Debian *make a decision*; and for all that
there are aspects of systemd that make me uncomfortable, it will still be
far better than the status quo.

Your proposal smells like the status quo.  Namely, instead of the project
making a decision and being able to all pull together in the same direction
to provide the best possible OS, we will continue to coast, squandering
efforts on preserving users' ability to make choices about things that no
user should ever be asked to care about.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developerhttp://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: Digital signature


Bug#727708: loose ends for init system decision

2013-12-30 Thread Russ Allbery
Steve Langasek vor...@debian.org writes:

 When it comes to technology choices, you win some and you lose some.  If
 upstart wins, I will be happy.  If systemd wins, I will also be happy,
 because it's long overdue that Debian *make a decision*; and for all
 that there are aspects of systemd that make me uncomfortable, it will
 still be far better than the status quo.

I concur with this.

I freely admit that I fell in love with systemd while investigating both
systems, but if we agree to use upstart, I will happily go add upstart
configurations to all of my packages and make use of those features.  It's
still a massive improvement over what we have now.

Furthermore, and more philosophically, Debian has to learn how to respect
a governance process and make decisions.  We spent way too much time and
effort not making decisions in this project, which results in big
flamewars and discomfort and everyone sniping at each other while little
productive happens.  Frequently, I think this is like tearing off bandages
over the course of months.  The cumulative pain is much higher than if we
just made a decision and everyone knew where they stood and what reality
they needed to adjust to.

Also, I too am happy when we can successfully pursue all courses of action
at the same time, but at the end of the day, we're trying to create a
distribution, and that means integrating components, and that means
deciding on integration protocols.  It's not useful to try to integrate
everything with everything else in every possible way at the same time.
You just create an unmanageable combinatoric explosion of possibilities,
and then someone who just wants to run a Debian system doesn't know which
paths are supported and tested, and which paths have only been touched by
one developer if that.

We need to pick a winner.  That doesn't mean we need to pick losers.  It
does mean that one solution is going to get better support than everything
else, because that's what integration *means*.  It doesn't mean, or
shouldn't mean, that other solutions are impossible if someone wants to
make them work; it just means that we're not going to *require* that they
work in order to get one's software into Debian.

We probably should have had this discussion for wheezy, to be honest.  But
regardless, we should pick a default, supported init system for jessie.

-- 
Russ Allbery (r...@debian.org)   http://www.eyrie.org/~eagle/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#727708: loose ends for init system decision

2013-12-28 Thread Ian Jackson
We have been asked to decide the default init system for jessie.  As I
have just said, my conclusion is that we should choose upstart.

However, we also need to decide whether we intend to allow users to
choose otherwise.  So we need to say what we expect of package
maintainers in terms of support for other init system(s).

It seems to me that the benefits of upstart integration are such that
we should encourage transition to upstart jobs, subject to my concerns
about the need for a new readiness protocol.


I am not comfortable with the idea of /mandating/ use of upstart.  We
may discover that despite our adoption, upstart loses the war, or we
may find that we want to switch to openrc or another contender.  And,
given the strong opinions on this topic, I think it is at the very
least premature to tell our users and downstreams that they are on
their own if they want to use systemd.

At the moment, there is no meaningful compatibility layer between all
these systems other than sysvinit scripts.  This is unfortunate, but
given the current state of development of both systems I think this is
to be expected.

So I'm sorry to say that I think we need to continue to maintain
sysvinit scripts in jessie.  The alternative would be to permit a
package to drop sysvinit support if both systemd and upstart
configuration were provided, but I'm not happy at this stage to burn
our bridges like that.

It would be worth researching some kind of compatibility options.
Perhaps simple daemons with very formulaic upstart job files could
have synthetic systemd units created.  Or something.


I think we should give package maintainers some guidance on what kinds
of upstart or systemd patches should be accepted.  Without this, it's
likely we'll find ourselves adjudicating disputes that ought to have
been settled in principle much earlier.

I think that patches for either should:
 - use a non-forking startup method
 - avoid significant amounts of open-coded AF_UNIX socketry
 - avoid embedded copies of daemon library code
 - avoid extra build-dependencies (eg on libsystemd)
 - avoid extra runtime dependencies (eg on deb-systemd-helper)
(If the current state of the art in readiness protocols persists that
means that upstart patches using raise(SIGSTOP) ought to be accepted,
but systemd ones rejected unless they can use socket activation.)

We should recommend:
 - daemon authors and Debian maintainers should prefer command-line
   options to environment variables
 - whatever environment variables and fds are used, measures should be
   taken to avoid them being inherited by daemons' arbitrary children

IMO we should treat native non-forking upstart support as we have in
the past done for release goals, ie with a low threshold NMU policy of
some kind.


But as I say I would like to see us try to get agreement or
near-agreement on an improved startup protocol.  I would suggest that
we allow (say) a month for this process, starting now.  Before this is
settled we shouldn't go around converting a whole bunch of daemons.


And, there are two loose ends about systemd in particular:
 - There doesn't seem to be any Debian policy about how to
   provide systemd units in Debian;
 - systemd upstream and the Debian maintainers like to put much of the
   configuration in /lib; this is controversial and someone needs to
   decide whether this is appropriate.

Ian.


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org