Re: Bug#762194: Alternative proposal for init switch on upgrades.

2014-11-30 Thread Cameron Norman
On Sat, Nov 29, 2014 at 11:15 PM, Tollef Fog Heen tfh...@err.no wrote:
 ]] Cameron Norman

 On Sat, Nov 22, 2014 at 6:10 PM, Adam Borowski kilob...@angband.pl wrote:
  On Sat, Nov 22, 2014 at 05:29:42PM -0800, Cameron Norman wrote:
  I would like to propose a different one.
  [...]
 
  So, the change would be that: the sysvinit package would cease being a
  transition / shim package, however it would not signal that a user
  explicitly installed sysvinit; sysvinit-core would be a simple package
  that just depended on sysvinit, and the presence of this package
  *would* signal that the user explicitly installed sysvinit; init would
  (pre-)depend on systemd-sysv | sysvinit | sysvinit-core | upstart.
 
  I'm afraid this doesn't allow partial upgrades from wheezy to use
  systemd-sysv, as sysvinit is an essential package there, and apt considers
  packages to be essential if they're present in any source.

 I take it you mean that the user will have to remove an essential
 package to install systemd-sysv, not that the package will not be
 installable, correct?

 That seems reasonable to me. If the user has packages from Wheezy
 installed, those packages could reasonably depend on sysvinit as PID 1
 without expressing that dependency.

 No.  They could reasonably depend on sysvinit being installed.  We ship
 alternative inits in wheezy, some of which does not require sysvinit to
 be uninstalled (systemd and runit comes to mind, I would not be
 surprised if there are more).

 However, in the tradition of Essential packages, nowhere is it
 well-defined which of sysvinits interfaces were part of the
 essentialness and which are not.  I kinda wish we'd fix that at some
 point, to make it easier to swap out (or get rid of) Essential packages.

Would systemd-sysv having a `Provides: sysvinit` fix this issue? I
think if the pre-installation /etc/inittab checking that has been
discussed is implemented then systemd could reasonably be considered
to provide sysvinit's interfaces (especially with the /dev/initctl
compatibility).

Thank you,
--
Cameron


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CALZWFRL_8DtvpvM=gunqtnfpwo3lszvku6pvtve3sc3eabg...@mail.gmail.com



Bug#762194: Alternative proposal for init switch on upgrades.

2014-11-29 Thread Cameron Norman
On Sat, Nov 22, 2014 at 6:10 PM, Adam Borowski kilob...@angband.pl wrote:
 On Sat, Nov 22, 2014 at 05:29:42PM -0800, Cameron Norman wrote:
 I would like to propose a different one.
 [...]

 So, the change would be that: the sysvinit package would cease being a
 transition / shim package, however it would not signal that a user
 explicitly installed sysvinit; sysvinit-core would be a simple package
 that just depended on sysvinit, and the presence of this package
 *would* signal that the user explicitly installed sysvinit; init would
 (pre-)depend on systemd-sysv | sysvinit | sysvinit-core | upstart.

 I'm afraid this doesn't allow partial upgrades from wheezy to use
 systemd-sysv, as sysvinit is an essential package there, and apt considers
 packages to be essential if they're present in any source.

I take it you mean that the user will have to remove an essential
package to install systemd-sysv, not that the package will not be
installable, correct?

That seems reasonable to me. If the user has packages from Wheezy
installed, those packages could reasonably depend on sysvinit as PID 1
without expressing that dependency. It would be a bug, IMO, if
sysvinit was not PID 1 while Wheezy packages were installed and the
user had not expressed that he or she understood the implications of
removing sysvinit.

Thus, I maintain that my proposal is an appropiate approach.

Cheers,
--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/calzwfr+g3rqjwecw08xkjm8hxjihb5e11qzkzvxbwbamvzp...@mail.gmail.com



Bug#762194: a technical proposal

2014-11-22 Thread Cameron Norman
Hello,

On Sat, Nov 22, 2014 at 5:21 AM, Adam Borowski kilob...@angband.pl wrote:
 Hi!
 As Ansgar requests technical solutions, here's one:

 just like systemd-shim|systemd-sysv, switch the init package from
   Pre-Depends: systemd-sysv | sysvinit-core | upstart
 to
   Pre-Depends: sysvinit-core | systemd-sysv | upstart

 The set of packages installed by d-i / debootstrap is steered by hard-coded
 scripts, thus new systems can default to whatever is set there.  On the
 other hand, during upgrades, the init system is driven by apt's resolution
 of the above pre-dependency.  If systemd-sysv or upstart were already
 installed, no change is done; if none of these three packages is present,
 apt would install sysvinit-core, preserving existing init system.

One of Steve Langasek's criticisms of not switching by default was the
pain of having systems still running sysvinit for many years to come,
which makes the distribution more difficult to support.

If there was an intention to do so, how would we go about switching
systems over to systemd in the next release, if we use the solution
displayed here in Jessie?

Thanks,
--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CALZWFR+c=a6hrefjsqndhcs-fmntmufosu5h+bmqm5httug...@mail.gmail.com



Bug#762194: a technical proposal

2014-11-22 Thread Cameron Norman
On Sat, Nov 22, 2014 at 9:01 AM, Cameron Norman
camerontnor...@gmail.com wrote:
 Hello,

 On Sat, Nov 22, 2014 at 5:21 AM, Adam Borowski kilob...@angband.pl wrote:
 Hi!
 As Ansgar requests technical solutions, here's one:

 just like systemd-shim|systemd-sysv, switch the init package from
   Pre-Depends: systemd-sysv | sysvinit-core | upstart
 to
   Pre-Depends: sysvinit-core | systemd-sysv | upstart

 The set of packages installed by d-i / debootstrap is steered by hard-coded
 scripts, thus new systems can default to whatever is set there.  On the
 other hand, during upgrades, the init system is driven by apt's resolution
 of the above pre-dependency.  If systemd-sysv or upstart were already
 installed, no change is done; if none of these three packages is present,
 apt would install sysvinit-core, preserving existing init system.

 One of Steve Langasek's criticisms of not switching by default was the
 pain of having systems still running sysvinit for many years to come,
 which makes the distribution more difficult to support.

Here is the message which I am referencing. Please see the footnote. I
hope I did not misrepresent you, Steve, please correct me if so.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=746578#66

--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CALZWFRL22BKRHHkTatFQ1HPM-8kJb9m+=g7raubwd9uzzeq...@mail.gmail.com



Bug#762194: Alternative proposal for init switch on upgrades.

2014-11-22 Thread Cameron Norman
Hello everyone,

Since I myself and some others had some criticisms and/or doubts of
Adam Borowski's proposal, I would like to propose a different one.
With this I hope to:

 * make new installations use systemd-sysv (with no reliance on
undefined or inconsistent behavior from the various ways of setting up
a Debian install or chroot)
 * make current installations that have sysvinit stick with it
 * allow for the automatic switch from sysvinit to systemd-sysv in
stretch, buster, or another later release

So, the change would be that: the sysvinit package would cease being a
transition / shim package, however it would not signal that a user
explicitly installed sysvinit; sysvinit-core would be a simple package
that just depended on sysvinit, and the presence of this package
*would* signal that the user explicitly installed sysvinit; init would
(pre-)depend on systemd-sysv | sysvinit | sysvinit-core | upstart.

If an automatic switch is something that the project wants, but after
Jessie, then then the init dependency would be changed to
systemd-sysv | sysvinit-core | upstart.

Cheers,
--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/calzwfrj_qv1vpwrcvtr7hakj1ivw8nn_dmzp8h1q8xkbbzk...@mail.gmail.com



Bug#765803: Status of prompting / notification on upgrade for init system switch?

2014-10-23 Thread Cameron Norman
On Thu, Oct 23, 2014 at 8:13 PM, Josh Triplett j...@joshtriplett.org wrote:
 On Thu, Oct 23, 2014 at 10:21:27PM -0400, Sam Hartman wrote:
  Josh == Josh Triplett j...@joshtriplett.org writes:

 Josh - It can't check for generated lines for serial consoles or
 Josh similar; finish-install can generate various additional
 Josh inittab lines, which the check should include.

 Since when did systemd actually handle these correctly?
 I've generally found that systemd will give me a serial console only if
 the kernel console is that serial console.
 I've found that if I manually enable a serial console but have the
 kernel console  go somewhere else, I end up with a system I cannot log
 into when I  upgrade to systemd.
 This has been no end of frustration and I hope that your check correctly
 prompts in this case even when  the line I generate is exactly the
 same as a line generated by the installer.

 If it's gotten better and I'd actually get a console in that case,
 that's of course fine too.
 It should either let me know I'm about to hurt myself or work:-)
 Either behavior is fine.

 TTBOMK, you'll automatically get a console on a serial port in a few
 cases:

 - If the kernel console points there (console=ttyS0); note that this
   works even if you change that console.

 - If the console is identified as a default system console (works for
   virtual machine serial ports, and for systems with unusually named
   standard console serial ports).

 See systemd-getty-generator.

 In other cases, you have to manually systemctl enable
 serial-getty@ttyX.service.

 I wonder if it might make sense to do a one-time migration that parses
 /etc/inittab, looks for serial console getty lines, and enables
 serial-getty@.service for any consoles it finds gettys for?

If you are going to the work of parsing it all, would it not make
sense to make a systemd generator out of it?

--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CALZWFRJsMWVXXx5iz=kstt82dn3ovddc9xrhn8asqon-wvk...@mail.gmail.com



Bug#765803: Status of prompting / notification on upgrade for init system switch?

2014-10-21 Thread Cameron Norman
 to be
taken on their own.

--
Tollef Fog Heen, on behalf of the systemd team
UNIX is user friendly, it's just picky about who its friends are


Thanks,
--
Cameron Norman


Bug#765803: tech-ctte: Ask before changing init system when upgrading to jessie and Inform about init systems when installing jessie

2014-10-18 Thread Cameron Norman
On Sat, Oct 18, 2014 at 3:56 PM, Vincent Bernat ber...@debian.org wrote:
  ❦ 18 octobre 2014 13:32 +0200, Svante Signell svante.sign...@gmail.com :

 In summary, the CTTE is asked to make a decision on debconf warnings on:
 1) Changing init system on upgrades (including sid)
 2) Inform about alternate init systems for new installations

 2 is quite far-fetched. Why not a debconf warning to tell there are
 alternatives to nano? And another one to tell there are alternatives to
 bash? The installation will take several hours to let the user know
 there are alternatives to almost any component.

Well one good reason is that when you install nano or bash,
vi/vim/emacs and zsh/fish are not uninstalled. Furthermore, these
components are not necessary to boot your system into a stage where
you can login, have internet capabilities, and can install or remove
packages. The exception to this is when you remove bash, and you get a
loud warning at that point.

Cheers,
--
Cameron Norman


--
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/calzwfrlegcpuv2gi3nrdkuawytwb9wnu2yzmavomrfnopor...@mail.gmail.com



Bug#746578: Reasons to keep systemd-sysv as the first alternative

2014-09-18 Thread Cameron Norman
On Thu, Sep 18, 2014 at 2:10 PM, Josh Triplett j...@joshtriplett.org wrote:
 I'm pulling a quote from the bottom of Steve's mail to the top, to call
 attention to a new and critical point that I didn't see raised anywhere
 in the debian-devel discussion:

 On Thu, 18 Sep 2014 12:23:18 -0700 Steve Langasek vor...@debian.org wrote:
 If we decide that init *should* be automatically changed on upgrade, then

 (Which I'm assuming from your footnote [1] that you *are* in favor of?)

 the ordering of the dependencies on libpam-systemd is immaterial except in
 the specific case that someone has upgraded to (or newly installed) jessie,
 selected an init system other than the default, and subsequently installed a
 desktop environment on a system that didn't initially have one.  In this
 case, installing the DE *definitely* should not override the user's
 explicit selection of init system.

 *This* is a point that I haven't seen raised in the entire previous
 discussion on debian-devel, and I think it's a completely valid point.

 Personally, in this case, I'd argue that the desirable dependency (which
 we can't easily express) would be sysvinit-core ? systemd-shim :
 systemd-sysv.

To be more precise, it would be !systemd-sysv ? systemd-shim :
systemd-sysv so that other alternate inits are treated equally.

As you hopefully can see, this can be condensed to systemd-sysv ?
systemd-sysv : systemd-shim AKA systemd-shim | systemd-sysv :)

One question: if `init` and `libpam-systemd` (with the inversed
dependency) are installed simultaneously on a system with only
sysvinit installed (i.e. Wheezy), apt would know that systemd-sysv is
going to be installed (to satisfy init package's dependency) and would
not install systemd-shim, correct? Although, according to Steve that
would be simply an aesthetic issue, as systemd-shim does not impede
operation of systemd as init.

Best regards,
--
Cameron Norman


-- 
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/CALZWFR+DKFwoR=dcarpea5czesyiaupywuwuoa+nmpdjf8l...@mail.gmail.com



Bug#746578: More systemd fallout :-/

2014-09-18 Thread Cameron Norman
On Thu, Sep 18, 2014 at 11:59 AM, Josh Triplett j...@joshtriplett.org wrote:
 On Wed, 17 Sep 2014 15:34:48 +0100 Ian Jackson 
 ijack...@chiark.greenend.org.uk wrote:
 In #746578, a user requests that the dependency from libpam-systemd to
 systemd be changed from
systemd-sysv | systemd-shim
 to
systemd-shim | systemd-sysv

 The maintainers of libpam-systemd have rejected this change.  I would
 like the TC to set out the applicable principle(s), and overrule the
 maintainer in this case.


 As I understand it from reading the threads in the bug and on
 debian-devel, the effect of this would be:

  * New jessie installations would still get systemd.

  * squeeze-jessie upgrades which are not already using systemd would
 not be switched silently to systemd but would use systemd-shim
 instead.

  * Attempts to upgrade non-systemd systems in some other circumstances
would no longer switch silently to systemd.

 The latter two points are not actually accurate.  I just tested this by
 installing a wheezy minbase chroot using debootstrap and upgrading it
 to jessie.

 The list of packages installed as part of the wheezy minbase chroot:

 apt base-files base-passwd bash bsdutils coreutils dash debconf
 debconf-i18n debian-archive-keyring debianutils diffutils dpkg e2fslibs
 e2fsprogs findutils gcc-4.7-base gnupg gpgv grep gzip hostname
 initscripts insserv libacl1 libapt-pkg4.12 libattr1 libblkid1 libbz2-1.0
 libc-bin libc6 libcomerr2 libdb5.1 libgcc1 liblocale-gettext-perl
 liblzma5 libmount1 libncurses5 libpam-modules libpam-modules-bin
 libpam-runtime libpam0g libreadline6 libselinux1 libsemanage-common
 libsemanage1 libsepol1 libslang2 libss2 libstdc++6
 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl
 libtinfo5 libusb-0.1-4 libustr-1.0-1 libuuid1 login lsb-base mawk mount
 multiarch-support ncurses-base ncurses-bin passwd perl-base
 readline-common sed sensible-utils sysv-rc sysvinit sysvinit-utils tar
 tzdata util-linux xz-utils zlib1g

 The upgrade:

 /# apt-get --no-install-recommends dist-upgrade
 Reading package lists... Done
 Building dependency tree... Done
 Calculating upgrade... Done
 The following NEW packages will be installed:
   acl adduser dmsetup gcc-4.9-base init libaudit-common libaudit1 libcap2 
 libcap2-bin libcryptsetup4 libdb5.3 libdbus-1-3 libdebconfclient0 
 libdevmapper1.02.1 libgcrypt11 libgcrypt20 libgpg-error0 libkmod2 
 libncursesw5 libpcre3 libprocps3 libsystemd-daemon0 libsystemd-journal0
   libsystemd-login0 libudev1 libwrap0 procps startpar systemd systemd-sysv 
 udev
 The following packages will be upgraded:
   apt base-files base-passwd bash bsdutils coreutils dash debconf 
 debconf-i18n debian-archive-keyring debianutils diffutils dpkg e2fslibs 
 e2fsprogs findutils gcc-4.7-base gnupg gpgv grep gzip hostname initscripts 
 libacl1 libapt-pkg4.12 libattr1 libblkid1 libbz2-1.0 libc-bin libc6
   libcomerr2 libgcc1 liblocale-gettext-perl libmount1 libncurses5 
 libpam-modules libpam-modules-bin libpam-runtime libpam0g libreadline6 
 libselinux1 libsemanage-common libsemanage1 libsepol1 libslang2 libss2 
 libstdc++6 libtext-charwidth-perl libtext-iconv-perl libtinfo5
   libusb-0.1-4 libuuid1 login lsb-base mount multiarch-support ncurses-base 
 ncurses-bin passwd perl-base readline-common sed sensible-utils sysv-rc 
 sysvinit sysvinit-utils tar tzdata util-linux zlib1g
 70 upgraded, 31 newly installed, 0 to remove and 0 not upgraded.
 Need to get 33.7 MB of archives.
 After this operation, 27.5 MB of additional disk space will be used.

 (Including recommends would install a few additional packages, including
 libpam-systemd because systemd Recommends it, but I used
 --no-install-recommends to prove that libpam-systemd was *not* the
 driver of the transition, nor was it involved in the upgrade.)

 This transition is driven not by libpam-systemd as suggested in this bug
 report, but by the sysvinit transitional package (which depends on
 init) and by moving the Essential: yes bit from sysvinit to init.
 Note that that transition was coordinated between the sysvinit, systemd,
 and upstart maintainers, and that the init package also supports
 sysvinit and upstart.

If the transition is already happening, why have the dependency be
like it is anyway? User's systems will be switched regardless, so
there is no use in having a second pass at changing the init.

Also, although the squeeze/wheezy - jessie bit Ian wrote seems to be
incorrect, his last point still stands: on a jessie minbase (with init
shifted to !systemd-sysv), if you install libpam-systemd, your init is
changed back to systemd.

So the systemd-sysv | systemd-shim bit is either pointless and
redundant (upgrading to Jessie) or actively disruptive (installation
of libpam-systemd on jessie+ systems).

Cheers,
--
Cameron Norman


--
To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https

Bug#741573: Two menu systems

2014-06-27 Thread Cameron Norman
On Thursday, June 26, 2014, Colin Watson cjwat...@debian.org wrote:

 On Thu, Jun 26, 2014 at 05:50:38PM +0100, Ian Jackson wrote:
  I see Keith has committed a draft to git.  As discussed, I disagree
  with this approach.  This amounts to nonconsensually abolishing
  someone's work when it is still being maintained, and the global cost
  is minimal.

 My feelings on this draft are mixed.

 On the one hand, I happen to agree with the position that the
 categorisation system in .desktop files (and X-Show-In etc.) should be
 able to cover the bulk of the practical requirements of the trad menu
 system:

  * There's no reason that has a .desktop file should imply shows up
in modern desktop environments, and so I think that the question of
coverage is to some extent a red herring; the systems have different
coverage because they've always had different coverage, not because
the .desktop format is inherently unable to meet the needs of trad
menu consumers.

  * We might have to look into the presentation of menu item names,
although Name / GenericName offers some support for the different
names that people are likely to want, and if all else fails the
.desktop file format does have extension mechanisms.

 I would be very happy to see additional .desktop files being added to
 packages with suitable categorisation such that they don't need to
 interfere with how the maintainers of modern DEs want to present their
 desktops, so that menu-xdg (or similar) can supplant the current menu
 system with negligible loss of functionality for users of trad menus.  I
 think this would make a great project for people interested in unifying
 the two worlds a bit more, which doesn't even have to step on anyone's
 toes.  Perhaps for instance it would be a good project for Debian's
 Google Summer of Code efforts.

 On the other hand, Keith's draft seems highly aspirational to me.  While
 it seems to me to be broadly the right kind of long-term technical
 direction, there is an awful lot of work in there for people who want
 something like trad menus which is being glossed over.


 So, I prefer Ian's position in
 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741573#355 for the
 purposes of how the policy text should remain for the time being, and in
 terms of the philosophy of not ripping out work from under people's
 feet.  I disagree with its argument that it follows directly from the
 two sets of competing requirements that we must have these two file
 formats.  I prefer Keith's position as a long-term direction, but agree
 with Ian that it is lacking an awful lot of transitional thought, and
 feel that it has a lot of things-should-be-done without it being clear
 who will do them.

  Thirdly, IMO the resolution needs to acknowledge (in the whereas
  section) that consuming a trad Debian menu entry is simpler and easier
  than consuming a .desktop file.

 I think this is really overstated.  .desktop files are in a
 long-standing and popular basic file format for which plenty of parsing
 libraries in various languages exist, so you can get to the point of
 having a parsed data structure trivially.  In contrast the menu entry
 format is a bespoke thing.  While the .desktop file format has more
 bells and whistles, many of them can be ignored if you don't support
 whatever it is.  I don't think it's worth emphasising ease of
 consumption either way.


I believe the major aspect of .desktop files that makes them harder is the
icon handling. Perhaps debian policy should instruct that a certain icon
size must always be available in a particular format (e.g. 32x32 png) so
that WMs do not have to handle so many corner cases in that area.

Best,
--
Cameron Norman


Bug#746715: the foreseeable outcome of the TC vote on init systems

2014-05-06 Thread Cameron Norman
El Tue, 6 de May 2014 a las 7:54 PM, Russ Allbery r...@debian.org 
escribió:

Faidon Liambotis parav...@debian.org writes:

 I haven't gotten any such bug reports, so this is still 
theoretical, but
 I think I'd simply reject anything more complicated than simply 
adding a
 debian/foo.upstart file to the tree, including adding (and 
maintaining)
 hacks or modifying existing SysV init scripts. I certainly won't 
work on

 adding an upstart job to my packages myself.

The hacks we're talking about here are pretty minimal: just three 
lines in

the init script that we're mentioning.  I think it's pretty
straightforward and think that maintainers should just add that 
support.




In addition, as has been mentioned, they will soon be unnecessary, as 
Dimitri Ledkov is working to put the functionality into a 
init-functions.d hook.



[snippity snip]


‘3’

Hope that stuff clears up! Stress is very stressful, and that is never 
good. I do not know your taste in music, but maybe you will like this: 
https://www.youtube.com/watch?v=tNygDLi9gb4.


Top of the day,
--
Cameron Norman


Bug#746715: the foreseeable outcome of the TC vote on init systems

2014-05-06 Thread Cameron Norman
El Tue, 6 de May 2014 a las 8:41 PM, Bdale Garbee bd...@gag.com 
escribió:

Russ Allbery r...@debian.org writes:

 I can see your point that the future of upstart is possibly 
unclear, but
 my feeling is that if anyone filed a bug against a package 
requesting
 upstart support, that's sufficient indication of interest to merge 
upstart support patches, including this sort of minor modification 
of the init script.



I agree.



From your other message I was under the impression that you thought it 
was ok to remove Upstart support, but now you agree that if there was 
interest, then it should be kept (as long as it does not cause issues). 
Is the maintainer supposed to accept the support then remove it a few 
months later :) ? Are those interested in Upstart support supposed to 
hawk over packages and never get a wink of sleep? I do not think that 
is what you want, but the wording of your other message (that you would 
not be surprised if upstart support was removed) seems like it is.


Would you mind clarifying a little?

Thanks y buenos noches,
--
Cameron Norman


Bug#746715: the foreseeable outcome of the TC vote on init systems

2014-05-02 Thread Cameron Norman
El Fri, 2 de May 2014 a las 3:01 PM, Ian Jackson 
ijack...@chiark.greenend.org.uk escribió:
Russ Allbery writes (Bug#746715: the foreseeable outcome of the TC 
vote on init systems):

 Steve Langasek vor...@debian.org writes:
  An Ubuntu developer just brought the following Debian changelog 
entry to

  my attention:
 
   tftp-hpa (5.2-17) experimental; urgency=low
 * Removing upstart hacks, they are ugly and upstart is dead 
now.
 
  Since various members of the Technical Committee argued that 
choosing a
  default would not prevent Debian from supporting other init 
systems, I
  would like to hear from those members how they think this should 
be

  addressed.
 
 Well, one, in the abstract this seems like a bad idea.  I certainly 
don't
 intend to remove upstart support in my packages, any more than I 
would reintroduce a bunch of PATH_MAX expressions and intentionally 
drop Hurd support.



The removed change is presumably what was added here:

  tftp-hpa (5.2-9) experimental; urgency=low

* Adding upstart exit codes in initscript.



There we go! As somebody who likes Upstart, _this is an ugly hack_. It 
is mandated by Debian policy [0], as most of you may know, though. 
Perhaps the simplest solution to the immediate problem is to perform 
the actions suggested by Dimitri Ledkov in BTS #712763 [1]. That said, 
there is obviously a bigger question here for the TC to address.


[0] 
https://www.debian.org/doc/debian-policy/ch-opersys.html#s-alternateinit

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712763

Best regards,
--
Cameron Norman


Bug#727708: call for votes on default Linux init system for jessie

2014-02-08 Thread Cameron Norman
El Sat, 8 de Feb 2014 a las 3:56 PM, Michael Gilbert 
mgilb...@debian.org escribió:

On Sat, Feb 8, 2014 at 6:40 PM, Paul Tagliamonte wrote:

 I understand you think that, and I empathize, but I disagree.

 The fact is, I have limited time. If I'm going to focus on making a
 bigger impact with my work, I'm going to stick to dealing with 
issues

 that effect the most users.

 I don't care about the init system all that much, in the end, it's 
not
 important. I do care about ensuring we have something maintainable 
and

 stable.


Why bring such a controversial and polarizing issue before the TC if
the outcome doesn't matter much to you?

sysvinit is maintainable and stable, so why seek to change it?



Perhaps the movement in GNOME to depend on a number of systemd provided 
interfaces has led Paul to believe that sysvinit is unmaintainable? 
AFAIR, systemd-shim was not available when he presented the question to 
the TC (or am I mistaken?).


--
Cameron





Bug#727708: I'd like to voice my opinion

2014-02-06 Thread Cameron Norman
El Thu, 6 de Feb 2014 a las 7:41 PM, Schlacta, Christ 
aarc...@aarcane.org escribió:
I'd like to request that upstart be chosen over systemd mainly 
because there's already a large availability of deb packages that 
support init mainly due to ubuntu.  Ubuntu acts as a gateway distro 
to the debian universe, and is a basis upon which numerous other 
distros are based as well.


As such, a lot of packages are developed for ubuntu instead of 
debian.  Making upstart the default init package allows for 
compatibility with the majority of these ubuntu specific packages.


Furthermore, I know upstart is capable of maintaining backward 
compatibility with systemvinit scripts as debian implements them 
currently.



Hello Christ.

systemd proponents have been hard at work in getting systemd units 
packaged up and installed. Just load up Sid to see how many there are. 
Furthermore, systemd supports sysv scripts just like Upstart (actually, 
they are integrated into systemd's dependency chain, so the 
implementation is better in that way).


I understand that you had the best of faith in writing this, but I 
assure you that the availability of init configurations will not be a 
problem for systemd, Upstart, or OpenRC (OpenRC supports sysv scripts).


That said, Upstart could be a good choice because of the number of 
desktop environments that have their main focus as Ubuntu (Pantheon, 
Cinnamon, MATE) and could be encouraged to adopt Upstart as a session 
init if Debian goes with it. The same could be said of systemd, though 
(with GNOME and KDE instead of Pantheon and Cinnamon), though.


Have a great day,
Cameron


Bug#727708: Processed: block 726763 with 727708

2014-02-01 Thread Cameron Norman
On Sat, Feb 1, 2014 at 3:48 PM, Uoti Urpala uoti.urp...@pp1.inet.fi wrote:

 On Sat, 2014-02-01 at 15:24 -0800, Steve Langasek wrote:
  While I think the Depends: systemd should be dropped (via a split of the
  systemd package), that's not required for fixing the present problem.
  That
  can be addressed by having gnome-settings-daemon Depends: systemd,
  systemd-shim | systemd-sysv.
 
  Would the GNOME maintainers be willing to upload such a change?  Or would
  they be ok with me NMUing gnome-settings-daemon for it?

 I have the impression that systemd-shim diverts systemd files and you
 don't want to have it installed if you're actually booting with systemd.
 If this is accurate (I didn't check), then such a dependency change
 would not be appropriate - the recommended way to install systemd is
 still to NOT use systemd-sysv, while the above dependency would either
 force installation of systemd-sysv or would incorrectly install
 systemd-shim on systemd-booting systems.


I think there is a huge problem with recommending that systemd be installed
by the user changing the init line in grub: a package can not depend on an
init system being PID 1. Can a package be made that changes the init line
to systemd? I think that is preferable, because it folows the upstream
convention of installing systemd by changing the init value, while also
allowing packages to depend on systemd being PID 1.

Nevertheless, there still needs to be a org-freedesktop-login1 virtual
package. This will allow the systemd packagers to bump to systemd(-logind)
v209 and let someone else maintain a systemd(-logind) v204 package in order
to use logind without requiring systemd to be PID 1.

I think that, with these two packages (one virtual), the systemd packagers
will be happy and GNOME can actually function properly with no intervention.

--
Cameron Norman


Bug#727708: Thoughts/Summary on the init-system

2014-01-19 Thread Cameron Norman
On Sun, Jan 19, 2014 at 10:27 AM, Steven Chamberlain 
ste...@pyro.eu.org wrote:

On 19/01/14 18:15, Andreas Metzler wrote:

 could you provide a little bit of background why you consider both
 Systemd on Linux, openrc/sysv-rc on non-Linux and Upstart
 everywhere viable long-term but not systemd on Linux  and upstart 
on

 !Linux?


As a porter, I'd slightly prefer we switch to OpenRC on GNU/kFreeBSD.
But, if Upstart were chosen as the default on Debian GNU/Linux, that
might be sufficient to change my mind;  we could stay more closely in
sync with the Linux ports and avoid so much duplication of effort that
way.  So, I would agree exactly with what Andi said.



I suspect that init job/service/script/thingy writers would prefer a 
systemd-OpenRC combo as well, because they are both dependency based 
and the logic of the thingy can be more easily transferred to the 
other format.


Best,
--
Cameron Norman


Bug#727708: init system thoughts

2014-01-17 Thread Cameron Norman
On Fri, Jan 17, 2014 at 12:50 AM, Anthony Towns a...@erisian.com.au wrote:

 On 31 December 2013 12:55, Colin Watson cjwat...@debian.org wrote:
  The criticisms of Upstart's event model in the systemd position
  statement simply do not make sense to me.  Events model how things
  actually happen in reality; dependencies are artificial constructions on
  top of them, and making them work requires the plethora of different
  directives in systemd (e.g. Wants, which is sort of a non-depending
  dependency) to avoid blocking the boot process on a single failing
  service.

 Riffing off this more than replying to it.

 I tend to think dependencies and events are both useful ways of
 describing when to start up parts of the system. In particular, it
 seems like:

  - when a network is connected, start web server
  - when a usb disk is connected, mount it
  - when a VPN is started, sync various things

 are best described by an event model, while:

  - in order to run GNOME, logind must be started
  - in order to run logind, dbus must be available
  - as part of making the system ready for a user, network-manager
 should be running


You could express that as an event because GNOME and logind communicate
with logind and dbus (respectively) through IPC. So you can say when GNOME
tries to use logind's dbus interface, start logind, or you can say when
//anything// tries to use logind's dbus interface, start logind and have
that done for. Same for starting dbus, just change a dbus interface to
dbus's port.


 make the most sense when described by dependencies. In particular,
 in many of those cases, the reverse might not be true: For debugging,
 I might want to start the web server manually without connecting the
 network; or I might want logind running without GNOME, or
 network-manager running without the other parts of my desktop
 environment.


With the above method, this problem is avoided because GNOME does not start
when logind starts, it just starts whenever the runlevel is right and then
logind is started automatically. So if GNOME is stopped/waiting, you can
start logind without GNOME starting.

--
Cameron Norman


Bug#727708: Thoughts on Init System Debate

2014-01-17 Thread Cameron Norman

On Fri, Jan 17, 2014 at 8:41 PM, Don Armstrong d...@debian.org wrote
Upstart's CLA is problematic, and coupled with the fact that the rest 
of
the non-Debian distributions appear to be standardizing on systemd 
gives

me pause. I'm not sure if this is actually a major concern, though, as
long as Ubuntu continues using upstart.



If you have the time, I must ask: if Upstart had no CLA, would you 
prefer it over systemd?


--
Cameron Norman


Bug#727708: init system discussion status

2014-01-03 Thread Cameron Norman
On Fri, Jan 3, 2014 at 7:17 PM, Russ Allbery r...@debian.org wrote:

 Clint Adams cl...@debian.org writes:

  As loath as I am to participate in this discussion, I have to ask if
  your intent is to suddenly outlaw all the packages which depend on
  runit.

 I don't think runit (or daemontools) are init systems.  If you feel like
 that may be ambiguous, we should say that explicitly.  (This is one of the
 problems with how to word matters around OpenRC, since in a way it's
 actually closer to daemontools or runit.  The latter just never attempted
 to deal with *all* the startup scripts.)


Upstart running as a session init is not really an init system either,
then, under that definition. Perhaps we should ban packages that depend on
a certain init system being PID 1. Upstart, runit, daemontools, Circus, God
etc. can run as session inits on top of any other init system, and
therefore will have a small, confined effect when doing so and should be
allowed.

Regards,
Cameron


Bug#727708: upstart dependency handling

2014-01-02 Thread Cameron Norman
On Thu, Jan 2, 2014 at 8:35 AM, Russ Allbery r...@debian.org wrote:

 I wanted to lift this out of the thread it was buried in and see if I'm
 understanding it correctly, since if I am, it seems like a significant
 issue.

 Cameron Norman camerontnor...@gmail.com writes:

  I think you raise a lot of good points in this email, but here you are
  saying something which may demonstrate your (understandable) confusion
  about the Upstart event model. Upstart does not treat dependencies as
  events. Often times, Upstart //jobs// treat dependencies as events (and
  the ones you wrote below do), but events do not signal a
  dependency. Just because you said that jobOne starts with jobTwo does
  not mean that jobOne needs jobTwo, just that during boot up jobOne will
  start with jobTwo. To express a dependency, jobTwo needs to have a
  start on (event where I am needed). If, for example, jobOne depends on
  a dbus interface of jobTwo, then jobTwo could have a start on dbus ...
  to show that dependency.

 But does that actually provide a dependency?  In other words, if the
 sysadmin manualy starts jobTwo, does that either prevent jobTwo from
 starting becaus the dbus service isn't available, or start the dbus
 service?  Or is jobTwo just started without dbus to cope as best it can?


That is where you have to start going down the dependency list and make
sure that dbus is (a) pretty much always started when it is possible for
jobTwo to be started or (b) started when any service connects to dbus's
socket (I think /run/dbus/system_bus_socket or whatever for the system
socket, and then ~/.dbus/session-bus). The dbus socket address is actually
stored in an environment variable, so it is pretty easy to handle in
Upstart jobs.


 Having actual dependencies strikes me as an important technical feature.
 I don't like the idea of the init system not caring about whether the
 prerequisites for a job are met and just blindly starting it anyway.
 We're all somewhat used to that behavior, since that's what we get with
 sysvinit, but it's inherently fragile.  We can try to hold all software
 packaged in Debian to the standard that it will fail cleanly and without
 problems if started in the wrong sequence, but it still seems to preserve
 the possibility of a whole class of bugs that systemd would close.

 Assuming, that is, that the understanding expressed on this thread is
 correct.

 Note that dependency handling is relevant to socket activation as well.
 As I discovered when experimenting with systemd, for reproducible
 behavior, you want to ensure that the job is always started with socket
 activation if that's how you have it configured; if not, such things as
 bind addresses may not be honored, which could even pose security issues.
 That includes the case where the job is configured to not start by default
 but is manually started by the administrator.

 Now, you could introduce a new dependency model just for socket activation
 or treat socket activation as part of that service rather than (as systemd
 does) a separate service that's tightly coupled with the daemon.  So this
 is addressable by making socket setup a special case of sorts, such as by
 converting the request for the socket into a method event that is
 triggered before starting the daemon itself.  But all that does feel
 harder to understand to me, particularly since you really want the sockets
 started independently of the jobs and early in the boot process so that
 other services can start talking to them, which makes the method call
 approach tricky.


AFAIU, one can just use:

start on socket PROTO=unix SOCKET_PATH=/run/dbus/system_bus_socket

for the system job and:

start on socket PROTO=unix SOCKET_PATH=DBUS_SESSION_BUS_ADDRESS

for the session job. If I am correct, this will ensure that dbus will be
started whenever a job tries to create a dbus interface (or access one).
This is much less verbose than every single dbus using service listing dbus
as a dependency. I would very much like to know what Steve Langasek's
thoughts are on this.

Something else that is relevant to this discussion is this Upstart cookbook
section:
http://upstart.ubuntu.com/cookbook/#critique-of-dependency-based-init-systems
.

Cheers,
Cameron Norman



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


 --
 To UNSUBSCRIBE, email to debian-ctte-requ...@lists.debian.org
 with a subject of unsubscribe. Trouble? Contact
 listmas...@lists.debian.org
 Archive: http://lists.debian.org/87mwjeqr45.fsf...@windlord.stanford.edu




Bug#727708: init system discussion status

2014-01-02 Thread Cameron Norman
 by that init system.
 |
 |C. However, a maintainer is entitled to consider a patch unreasonable
 |   if it:
 | (i) Requires additional build-dependencies; or
 | (ii) Requires additional runtime dependencies except sysv-rc; or
 | (iii) Introduces other than trivial new code into the daemon; or
 | (iv) Abuses SIGSTOP as done by the upstart expect stop
 |   protocol and as disliked by the systemd community.
 |
 |Code to write to an already-open fd and close it, or to raise a
 |signal, will usually be trivial for these purposes.  (This includes
 |enabling the new protocol via command-line switches or environment
 |variable tests, and removing any small fixed set of associated
 |variables from the environment.)  Code to connect to an AF_UNIX
 |socket and send a message will not usually be considered trivial.
 |
 |We are aware that at present it is not possible to provide a patch
 |for any of systemd's or upstart's main non-forking daemon startup
 |readiness protocols which is necessarily reasonable by this
 |definition.
 |
 |Therefore if the upstart and systemd communities in Debian want the
 |widest adoption in the project, these problems should be addressed
 |by changes to the upstart and systemd package to widen their
 |support for different startup protocols.  Ideally each init should
 |in any case provide support for the main protocols supported by
 |their competition.
 |
 |Failure to apply reasonable patches, including failure to explain
 |promptly and constructively why a patch is not reasonable, is
 |likely to lead to the maintainer being overruled. ]
 |
 | Detailed policy specifications:
 |
 | 7. [ No package in Debian should use expect fork or expect daemon
 |in upstart jobs.  The corresponding code in upstart may be disabled
 |or compiled out on some or all architectures. ]
 |
 | 8. Policy rules for support for init systems must:
 |
 |(a) Specify the use of a non-forking startup protocol (for
 |upstart and systemd),
 |
 |(b) Use facilities documented in the reference manuals for the init
 |system in question (as found in sid).  [ This requirement
 |cannot be met until the init system has a suitable reference
 |manual. ]
 |
 |(c) Require that environment variables and fds involved in the
 |daemon startup protocol should not in general be inherited by
 |the daemon's descendants.
 |
 |(d) Forbid the introduction of embedded copies of library code
 |(or the use of any embedded copies included by upstream).
 |

| 9. [ Policy should provide non-binding suggestions to Debian
 |contributors who are converting daemons to upstart and/or systemd,
 |for example:
 |
 |(a) If changes are necessary to the core daemon code, make those
 |changes acceptable to the daemon's upstream if possible.
 |
 |(b) It is fine to introduce new code in the main body of the daemon
 |to support non-forking startup, socket activation or readiness
 |signalling.
 |
 |(c) Support for upstart is usually best provided with the
 |raise(SIGSTOP) non-forking daemon readiness protocol, unless
 |and until a better protocol is available.
 |


Should it not be added that raise(SIGSTOP) should only be used with a
command line option (like --debian-Z) to ensure that the daemon does not
hang on sysv or systemd?

Cheers,
Cameron Norman


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: init system other points, and conclusion

2014-01-01 Thread Cameron Norman
On Wed, Jan 1, 2014 at 4:56 AM, Colin Watson cjwat...@debian.org wrote:

 On Tue, Dec 31, 2013 at 04:27:16AM -0008, cameron wrote:
  On Mon, Dec 30, 2013 at 7:17 PM, Colin Watson cjwat...@debian.org
  inotify is used to notice changes to configuration files.  This is
  certainly helpful for users, but it isn't critical as initctl
  reload-configuration works without it.  We could probably do without
  this with the aid of a dpkg trigger.
 
  inotify use can easily be ported to kqueue within Upstart, or
  libinotify-kqueue can be used.

 Note that I'm talking about the Hurd here.  kqueue is a kFreeBSD thing,
 as far as I know.  (Compare e.g.
 https://lists.debian.org/debian-hurd/2013/10/msg00021.html)

  prctl (PR_SET_CHILD_SUBREAPER) is used to make SIGCHLD notification
  work properly when Upstart is supervising a user session.  This isn't
  a required feature and could easily be compiled out until suitable
  kernel support is available (this actually seems like the sort of
  thing that could be done in the Hurd without too much difficulty, but
  I haven't looked into it).  If absent, it might well impede the
  ability to do an advanced desktop port, but it wouldn't get in the
  way of porting the bulk of services.
 
  Unity, likely the only desktop environment using Upstart as a
  session init, is not in Debian. The sacrifice of this functionality
  on non-linux systems is perfectly acceptable.

 While this is true today, we need to look to the future.  Using Upstart
 as a session init is not conceptually tied to Unity in any way, and I
 expect that other desktop environments will want to use more advanced
 session supervision soon enough.


I place less importance on the session init capabilities of Upstart, as
alternative home grown solutions ww.ritten by the environments are in place
and are portable. Furthermore, portability of these environments hinges on
a session and seat manager, ConsoleKit support in GNOME is quickly
disappearing, and ConsoleKit itself is completely abandoned. What this
means, to me, is there is a lot more effort required to accomplish this
than to port Upstart's session init capabilities or use the current
portable session inits.

Sincerely,
Cameron Norman

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



Bug#727708: init system thoughts

2014-01-01 Thread Cameron Norman
On Wed, Jan 1, 2014 at 4:00 PM, Nikolaus Rath nikol...@rath.org wrote:

 Colin Watson cjwat...@debian.org writes:
  The criticisms of Upstart's event model in the systemd position
  statement simply do not make sense to me.  Events model how things
  actually happen in reality; dependencies are artificial constructions on
  top of them, and making them work requires the plethora of different
  directives in systemd (e.g. Wants, which is sort of a non-depending
  dependency) to avoid blocking the boot process on a single failing
  service.  Yes, there are some bugs possible in the Upstart design, but I
  don't agree that those are world-ending fundamental issues and I think
  they're generally incrementally fixable.  The systemd design appears to
  me to expose far more complexity to the user writing unit files, and I
  think it's important that their mental model be as straightforward as
  possible.
 
  (Now, I've been working with Upstart's model for years, and it's now a
  pretty fundamental way of how I think of system operation; so if people
  who are new to *both* models rather than partisans of one side or the
  other consistently tell me that the systemd model is easier to grasp,
  then I'll listen.)

 For what it's worth, I consider myself new to both the upstart and the
 systemd model, and for me the upstart event model has been pretty much
 the only reason to prefer systemd over upstart (though after reading
 Russ' opinion, that has changed a bit).

 For me, upstart was actually the reason for me switching from Debian to
 Ubuntu for a while. I am less familiar with systemd, so it may well be
 that I underestimate the complexities of the systemd model. However, I
 am very certain in my dislike for the upstart approach.


 My first point of criticism has already been described by Russ, but
 maybe I can make it clearer by giving an example. In my opinion, the
 following job looks completely harmless, and should not result in an
 unbootable system (but at least on Ubuntu 13.10 it does, you have to
 reboot with init=/bin/sh and remove/fix the evilJob.conf file):

 $ cat evilJob.conf
 start on (mounted MOUNTPOINT=/var and started lightdm)
 stop on runleves [016]
 respawn
 script
exec /bin/sleep 60
 end script

 I believe that the equivalent systemd unit (where dependencies are
 specified with Requires=) works just fine.  It is not clear to me how
 this can be incrementally fixed in upstart without fundamentally
 changing the design.


 My second point is that by treating dependencies as events, upstart does
 not seem to truly recognize dependencies as such and is then unable to
 resolve them.  For example, with the following two job files (created
 according to the upstart cookbook, 6.32.2):


I think you raise a lot of good points in this email, but here you are
saying something which may demonstrate your (understandable) confusion
about the Upstart event model. Upstart does not treat dependencies as
events. Often times, Upstart //jobs// treat dependencies as events (and the
ones you wrote below do), but events do not signal a dependency. Just
because you said that jobOne starts with jobTwo does not mean that jobOne
needs jobTwo, just that during boot up jobOne will start with jobTwo. To
express a dependency, jobTwo needs to have a start on (event where I am
needed). If, for example, jobOne depends on a dbus interface of jobTwo,
then jobTwo could have a start on dbus ... to show that dependency.
Basically, to express dependencies in Upstart you express all the ways a
job is needed inside of that job, not inside others. That said, Upstart
developers and Ubuntu developers do not use Upstart this way and write jobs
like you did below, so an Upstart system will most likely not act like I
explained above (however this is not an inherent flaw in Upstart). I would
also like to note that launchd acts the same exact way as I have described
and had similar limitations. Furthermore, SystemStarter (Apple's previous
init) acted in a very similar way to systemd:

The hardest part to manage during a launchd boot is dependencies.
SystemStarter had a very simple system of dependencies that used the
Uses, Requires, and Provides keys in the plist of a startup item.
There are two main strategies when creating launch dependencies on [OS X] .
Using IPC will allow the daemons to talk amongst themselves to work it out,
or you can watch files or paths for changes. Using IPC is much more subtle
than the SystemStarter's keys and requires more work from the developer,
but it may* https://en.wikipedia.org/wiki/Wikipedia:Citation_needed*lead
to cleaner and quicker startups. --
https://en.wikipedia.org/wiki/Launchd#launchd

I still think your points are relevant, however, because Upstart in Ubuntu
acts in the same way as the below jobs, and Debian will most likely inherit
that behavior if it uses Upstart.

Happy New Year,

Cameron Norman

$ cat jobOne.conf
 start on (starting jobTwo and runlevel stop on runlevel [016])
 stop

Bug#727708: init system thoughts

2014-01-01 Thread Cameron Norman
On Wed, Jan 1, 2014 at 5:09 PM, Nikolaus Rath nikol...@rath.org wrote:

 Cameron Norman camerontnor...@gmail.com writes:
  On Wed, Jan 1, 2014 at 4:00 PM, Nikolaus Rath nikol...@rath.org wrote:
 
  Colin Watson cjwat...@debian.org writes:
   The criticisms of Upstart's event model in the systemd position
   statement simply do not make sense to me.  Events model how things
   actually happen in reality; dependencies are artificial constructions
 on
   top of them, and making them work requires the plethora of different
   directives in systemd (e.g. Wants, which is sort of a non-depending
   dependency) to avoid blocking the boot process on a single failing
   service.  Yes, there are some bugs possible in the Upstart design,
 but I
   don't agree that those are world-ending fundamental issues and I think
   they're generally incrementally fixable.  The systemd design appears
 to
   me to expose far more complexity to the user writing unit files, and I
   think it's important that their mental model be as straightforward as
   possible.
  
   (Now, I've been working with Upstart's model for years, and it's now a
   pretty fundamental way of how I think of system operation; so if
 people
   who are new to *both* models rather than partisans of one side or the
   other consistently tell me that the systemd model is easier to grasp,
   then I'll listen.)
 
  For what it's worth, I consider myself new to both the upstart and the
  systemd model, and for me the upstart event model has been pretty much
  the only reason to prefer systemd over upstart (though after reading
  Russ' opinion, that has changed a bit).
 
  For me, upstart was actually the reason for me switching from Debian to
  Ubuntu for a while. I am less familiar with systemd, so it may well be
  that I underestimate the complexities of the systemd model. However, I
  am very certain in my dislike for the upstart approach.
 
 
  My first point of criticism has already been described by Russ, but
  maybe I can make it clearer by giving an example. In my opinion, the
  following job looks completely harmless, and should not result in an
  unbootable system (but at least on Ubuntu 13.10 it does, you have to
  reboot with init=/bin/sh and remove/fix the evilJob.conf file):
 
  $ cat evilJob.conf
  start on (mounted MOUNTPOINT=/var and started lightdm)
  stop on runleves [016]
  respawn
  script
 exec /bin/sleep 60
  end script
 
  I believe that the equivalent systemd unit (where dependencies are
  specified with Requires=) works just fine.  It is not clear to me how
  this can be incrementally fixed in upstart without fundamentally
  changing the design.
 
 
  My second point is that by treating dependencies as events, upstart does
  not seem to truly recognize dependencies as such and is then unable to
  resolve them.  For example, with the following two job files (created
  according to the upstart cookbook, 6.32.2):
 
 
  I think you raise a lot of good points in this email, but here you are
  saying something which may demonstrate your (understandable) confusion
  about the Upstart event model. Upstart does not treat dependencies as
  events. Often times, Upstart //jobs// treat dependencies as events (and
 the
  ones you wrote below do), but events do not signal a dependency. Just
  because you said that jobOne starts with jobTwo does not mean that jobOne
  needs jobTwo, just that during boot up jobOne will start with jobTwo. To
  express a dependency, jobTwo needs to have a start on (event where I am
  needed). If, for example, jobOne depends on a dbus interface of jobTwo,
  then jobTwo could have a start on dbus ... to show that dependency.

 I think I understand what you're saying, thanks for the explanations!

 However, I can't say that this improved understanding has improved my
 opinion about upstart. If I understand correctly, this means that either

 a) every upstart job definition needs to explicitly list every possible
way in which another service may depend on it (and, furthermore,
every possible such dependency needs to have upstart integration so
that it can actually be used as an event)


Pretty much all IPC mechanisms have integration into Upstart, so a lot of
dependencies are covered.


 or

 b) a package providing jobOne that depends on jobTwo from another
package needs to patch the *other* package's configuration to add the
dependency information to jobTwo's definition.


Yes. The patch would, however, be limited to a or (...) in the start on
section. So it is not like the patch is going to change a ton.


 Neither of this sounds appealing to me at all, especially compared to
 systemd, where all you have to do is drop a Requires= line into jobOne's
 configuration.


I agree, especially when one can have a Requires=*.socket or
Requires=*.bus and get the same benefits.


  Basically, to express dependencies in Upstart you express all the ways
  a job is needed inside of that job, not inside others