/srv/irclogs.ubuntu.com/2007/01/10/#upstart.txt

=== Vlan [i=Vlan@c9.vl.net.ua] has left #upstart []
=== Seveas [n=seveas@ubuntu/member/seveas] has joined #upstart
=== theCore_ [n=alex@ubuntu/member/theCore] has joined #upstart
=== Md [i=md@freenode/staff/md] has joined #upstart
=== Keybuk [n=scott@wing-commander.netsplit.com] has joined #upstart
Keybukinteresting02:28
KeybukJimmy has "quit" initNG02:29
Keybukand some fun stats02:31
Keybukdevelopment from scratch to 0.2.7 (which was in edgy)02:32
Keybuk 62 files changed, 19961 insertions(+)02:32
Keybukdevelopment since then02:32
Keybuk 68 files changed, 18083 insertions(+), 9995 deletions(-)02:32
=== j_ack [n=rudi@p508DAA7D.dip0.t-ipconnect.de] has joined #upstart
pkthi Keybuk04:09
Keybukhihi04:10
pkthow is progress on upstart scripts?04:10
Keybukpkt: for feisty?  we haven't formally begun them yet, though they're all mapped out04:11
pktah, ok04:11
pktI 'm hoping to use upstart for my private (LFS-based) distro04:12
Keybukcurrent timeline04:12
Keybuk0.3.2 today if I can04:12
Keybukthat fixes all of the "rushed" code in 0.2.7, and introduces a stable IPC layer, etc.04:12
pktnice to hear that :-)04:13
Keybukthen I start on the proper features listed in the wiki for the 0.3 milestone04:13
Keybukhttps://launchpad.net/upstart/+milestone/0.304:13
=== pkt looks ...
Keybukmost of those make changes to the job structure that we wanted to do the startup scripts04:14
Keybukso I hope to have those done over the next week or two after 0.3.204:15
Keybukleaving a few weeks to do the boot scripts themselves04:15
pktah, ok so you suggest to take a look again in a few weeks correct?04:16
Keybukso the first run of those should be done by Feb 8th04:16
pktbtw, have you looked at depinit?04:16
Keybukno, URL?04:18
pktwait a sec ..04:18
pktha! found it http://www.nezumi.plus.com/depinit/04:21
pktIt has some interesting features04:21
pktlike using different signals to stop daemons and shells04:21
pktreliable loggers (from daemontools) etc04:21
pktof course it is primitive and never had a development community with size > 104:22
pktbut it has some nice ideas to get inspiration from04:22
Keybuknever seen that one before04:24
pktmostly only old LFSers know about it04:25
pktbtw, the author released a newer version and probably forgot to update the page04:26
pktso the last (known to me) version is probably http://www.nezumi.plus.com/depinit/depinit-0.1.5.tar.bz204:27
Keybuktbh, from a glance at the features list, there's not much there that'd be useful to us04:27
Keybuka lot of it is to do with being a dependency-based init system, which upstart is expressly not04:28
pktwell some of its "side" features are interesting04:28
pktlike pipelines between daemons for reliable logging04:29
pktI 'll probably try to port some of the interesting stuff to upstart04:30
pkt(assuming I 'm able to base my system on it first)04:30
Keybukyeah, that bit's kinda interesting04:30
_ionWould 'state' work as the 'FOO'?04:36
_ionIt's somewhat ambiguous, admittedly.04:36
Keybuk"the 'FOO'" ?04:47
_ionhttps://lists.ubuntu.com/archives/upstart-devel/2006-December/000200.html05:00
=== maro [n=mark@0x55511dab.adsl.cybercity.dk] has joined #upstart
=== j_ack [n=rudi@p508DAA7D.dip0.t-ipconnect.de] has joined #upstart
AlexExtremehrm07:48
AlexExtremeKeybuk, what was the alternative to the Profiles spec?07:48
KeybukFlags07:49
Keybukthere's no spec for that one yet07:49
AlexExtremeand what did it involve? passing parameters on the kernel command line?07:49
Keybukprofiles, iirc, involves defining lists of jobs either by include or exclude07:52
Keybukso you'd have the "with networking" profile which would include jobs that are excluded by the "without networking" profile,e tc.07:53
Keybukthose profiles would have to be defined elsewhere07:53
Keybukthey're a bit like existing runlevels, or initng goals07:53
Keybukand would have to be maintained by hand07:53
AlexExtremeyes, I wrote a spec for that07:53
Keybuk*nods*07:53
KeybukFlags was an alternate idea07:53
Keybukthey'd be states that were either up or down, and set by the kernel by default07:54
Keybukuh, kernel command-line07:54
Keybukobviously ;p07:54
Keybukso you could have a networking flag, a multi-user flag, etc.07:54
AlexExtremeI'd definitely prefer the profiles idea07:55
Keybukjobs can then say "if FLAG" or "unless FLAG"07:55
Keybukthe advantage to flags is they're more flexible07:55
KeybukFOO (network-up until network-down if networking) or if multi-user07:55
AlexExtremebut, when we write a gui to configure upstart, it would have to detect which bootloader is in use and modify it's configuration file07:56
AlexExtremeto set the kernel command line07:56
Keybukah no :)07:56
Keybukflags are just command-less jobs07:56
Keybukso there's an /etc/event.d/networking that has "start on startup" in it07:56
Keybukor something like that, anyway07:56
Keybukwhich flags were up or down is the only thing dictated by the kernel command line07:57
Keybukwhich is the same with profiles; which profile you're in is dictated by the kernel command line07:57
Keybukthe difference is the method of inclusion of jobs into them07:57
Keybukprofiles is defined by seperate files07:57
Keybukflags are defined within the job file07:57
AlexExtrememmm07:57
AlexExtremeyou've lost me :)07:59
Keybukheh07:59
KeybukI need to write the spec07:59
Keybukor wasabi does :p07:59
KeybukI don't particularly favour or disfavour either of them08:03
AlexExtremei'd certainly prefer profiles08:03
wasabiHmmm.08:04
wasabilemmie load that back into my head08:04
wasabiit's long been swapped out08:04
wasabiI think I have a natural tendency to suport, as much as possible, alterting the obvious parts of the configuration without modifying the job files themselves.08:05
wasabimodifying the job files themselves introduces an upgrade issue.08:05
wasabiHmm. Cept that isn't an issue.08:06
wasabiHMMM.08:06
AlexExtremeWell, flags would require some modification of job files, definitely08:06
wasabiSo, a flag would be a job named 'flag-networking' or something.   And the actual network scripts would define a level between flag-networking started and flag-networking stopped08:06
Keybukif profiles are stored in a configuration file, then that still has the same upgrade issue08:07
Keybukyou'd end up with conflicts modifying /etc/bootprofiles08:07
wasabiThen you could use hte kernel commad line to make the system boot into a state where flag-networking is "started"08:07
Keybukif they were directories of symlinks, otoh ...08:07
wasabiWhich is an unnatural state, as nothing starts flag-networking, ever, except that.08:07
wasabiYeah, Keybuk, that's why I just now realized it was a non-issue.08:07
wasabiI don't think we want users modifying profiles.08:08
AlexExtremebut what if they want to disable services?08:08
wasabiI think they'll end up being more of a tool for us.08:08
wasabilike safe-mode is for windows.08:08
KeybukAlexExtreme: define disable08:08
Keybukdoes disable mean that "start JOB" will return "DISABLED"08:09
AlexExtremestop a service from starting08:09
wasabiMaybe disabling services BY THE USER, is a completely seperate act from defining run states.08:09
Keybukor does it mean it's just not started by its usual events?08:09
Keybukand that a sysadmin can still start it manually?08:09
AlexExtremeyes they could still start it manually, just wouldn't be started at boot08:09
wasabiHow are we with adding a "disabled" line-item to the job definition?08:09
wasabiAnd making an installer merge?08:10
wasabiWhich is what we already have I think.08:10
wasabiAnd defining boot profiles using distro-supplied files.08:10
wasabiSuch as extra jub definitions.08:10
wasabilemmie write that out once.08:11
Keybukthat makes adding disabled equivalent to commenting out the start events :)08:11
AlexExtremebasically, all I'm concerned about is having a system where you can stop services from being started at boot08:11
Keybukboth are job file edits08:11
Keybuksomething in SMF(?) I liked ...08:11
Keybukif you list jobs on the kernel command line, they're started at boot automatically08:11
Keybukif you list them with "!" in front, they're not started08:12
wasabiOkay, lets wait a second, we have one up front question we need to clear up.08:12
wasabiShould we EXPECT< during normal OS operation, the user to edit the distributed job files to change stuff. If yes: are we willing to take care of that during hte upgrade procedure.08:13
wasabiThere's not much doubt in my mind that "turning off a service" is normal OS operation.08:13
wasabiAnd I suspect we'll have lovely and wonderful UI's that do it in the future.08:13
KeybukI think that normal users will likely only want to disable or enable services/tasks08:13
Keybukadvanced users may wish to configure when services/tasks are run08:14
Keybukand advanced users may also wish to modify them08:14
wasabiYes, we need to plan for the normal use case.08:14
AlexExtremeyes08:14
wasabiSome guy sitting down at his server and flipping a switch to turn off apache.08:14
wasabiThat seems pretty understandable to me.08:14
wasabiIf apache is configured wrong, that's a bug.08:14
wasabiOr if it starts at the wrong times so he has to edit the files, it's a bug.08:15
wasabi(or a missing feature)08:15
wasabiSo, if we put "disabled" in the job file, we commit to making the upgrade scripts detect and remember it.08:16
AlexExtremeBut I don't think editing the job file is the best way of doing it08:16
wasabiI'm unsure if it is. Adding one line "disabled" isn't the hardest thing to build a merge for.08:19
AlexExtremeIf there was a line that could be added in the job file, 'required', then that job would always be started, for example in udev's job file. Then anything that hasn't got required in could be overridden. Having a line like '!foo' in say, /etc/bootprofiles, under a profile section would disable foo in the profile it's listed under08:19
Keybukwhy is udev required?08:20
AlexExtremeit was just an example ;)08:20
wasabione thing at a time. Are we going to merge job files? :)08:20
Keybukwasabi: I tend to think that needs human intervention08:21
AlexExtremeIt'd certainly be easier not to08:21
Keybuke.g. user adds "limit core 0 0", distro adds "limit core 100 100"08:21
Keybukyou need a human to resolve that08:21
wasabiYup. I mean, we can merge SIMPLE stuff.08:21
wasabiWe could merge "disabled", and prompt on anything else.08:21
wasabiif disabled in old; if !disabled in new; add disabled to new08:22
AlexExtremePrompting wouldn't be good, there are distros (including Frugalware) that don't like having the upgrade process interactive08:22
wasabiPrompting would only happen if the user changed stuff manually.08:22
wasabiOther than disabled.08:23
AlexExtremeIt'd make 'update-manager -d' more difficult, too08:23
KeybukUbuntu forbids prompting also08:23
Keybuk(well, where the user didn't change anything)08:23
wasabiPrompting in ALL cases? Even if the USER went in and edited a text file?08:23
wasabiOkay. Heh.08:23
wasabiI would be fine with disabled being in the job files, and handled silent during upgrade.08:28
wasabiI think that's fairly easy to do.08:28
wasabiSo, that takes care of the user being able to disable services from some UI of some sort.08:29
wasabiOn to profiles. Who are these for?08:29
wasabiI don't, or can't yet see, any reason to support allowing users to write their own profiles.08:30
wasabiI suspect we'll just want to use these to drive out stuff like a Safe Mode boot prompt.08:30
wasabiWhere X doesn't start, and maybe no networking or something.08:30
AlexExtremeHmm.08:31
wasabiI think at it's simpliest this could be accomplished by letting the distro define a few items they want to provide to their users, no X, no network, etc... and implement those in the job files THEY distribute.08:31
wasabiAnd I think as Keybuk mentioned earlier, these are actually just flags.08:32
AlexExtremeAll the examples I came up with in my head for using profiles can be solved with events :p08:32
AlexExtremeGotta disappear for half an hour, bbl08:32
wasabiThese don't HAVE to be anything more than a set of flags which a service can choose to check to disable itself.08:32
=== mbiebl [n=michael@e180122163.adsl.alicedsl.de] has joined #upstart
_ionSwitch to libelektra and forget about any problems with syncing config files. ;-)08:44
Keybukthat looks a lot like gconf08:44
Keybukwhich has the same problems :p08:44
Keybukand it used leverage on the first paragraph of its website08:45
Keybukhmm, there's nothing there that eliminates upgrade issues that I can see?08:45
=== j_ack [n=rudi@p508DAA7D.dip0.t-ipconnect.de] has joined #upstart
_ionI was under the impression that there would be a system config tree (parts of which would be updated when upgrading software) and a user config tree (corresponding to /etc) which would override key/value pairs in the system config tree, but maybe i remembered wrong; i don't seem to find such information from the website.08:51
Keybukyes08:52
Keybukso then you update the system config tree08:52
Keybukbut if the user has logged in and used the app, they'd be using the user config tree instead08:52
Keybukso wouldn't get the change08:52
Keybukcf. gconf08:52
_ionIf that happens, the system hasn't been designed correctly.08:53
_ionIf root disables a certain job, the only thing that should be added to the user tree would be the "disabled" key.08:53
Keybukbzzt08:54
_ionNot a full copy of the settings from the system tree.08:54
Keybukthat way lies madness08:54
Keybukbecause now you have an application that has to handle BOTH v1 and v2 config keys08:54
Keybukwhich may have different formats08:54
Keybukin fact, it has to handle every possible combination of every possible key it's ever used08:54
Keybukalso08:54
Keybukwhat user doesn't open up every preference dialog for a look at some point or other?08:54
Keybukif you only write when the user toggles ... do you delete the key from the user tree if they put it back to the default?08:54
KeybukAND to make matters worse08:55
Keybukif you don't copy the entire tree08:55
_ionValid points.08:55
Keybukyou now have the "I configured my app, was perfectly happy with it, AND AN UPGRADE CHANGED THE WAY IT WORKED!!(*"(*(*" problem08:55
Keybuksimply because the user didn't look at that page, or didn't toggle that option on/off, ect.08:56
Keybukdifficult problem :p09:00
_ionSo it seems that whatever we do (re: the "updated config file" issue, out of upstart's context), we lose. :-)09:00
_ionEvery path seems to have compromises.09:01
AlexExtremeback09:12
AlexExtremeAll I can say is that we simply add a file in /etc containing a list of services that the user *doesn't* want to start, and upgrade wouldn't touch that. The file would be updated by a config gui or by a command line tool like gentoo's rc-update.09:21
=== jonib1 [n=jonas@ua-83-227-144-18.cust.bredbandsbolaget.se] has joined #upstart
=== jonib1 [n=jonas@ua-83-227-144-18.cust.bredbandsbolaget.se] has joined #upstart
=== juergbi [n=juerg@80-219-19-246.dclient.hispeed.ch] has joined #upstart

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!