Slashdot Mirror


Replacing the Aging Init Procedure on Linux

SmellsLikeTeenGarlic writes "Seth Nickell (of Storage and Gnome HIG fame) has started a new project which aims to replace the aging Init system on Linux. OSNews has more details on the project, directly from Seth. The new Python-based approach will make booting faster and it will talk to the D-BUS daemon, freedesktop.org's leading project. And speaking of freedesktop.org, it is important to mention the release of HAL 0.1, an implementation of a hardware abstraction layer for KDE, XFce and Gnome, based on a proposal by freedesktop.org's founder Havoc Pennington and being implemented by David Zeuthen. It is innovative projects like Storage, SystemServices and HAL that can bring the kind of integration to the underlying system that current X11 desktop environments lack."

106 of 628 comments (clear)

  1. Keep this away from my server! by Bryan+Ischo · · Score: 3, Insightful

    Reading this guy's thoughts on replacing init, makes it very clear that this is intended for very tight integration with the Gnome desktop system. It's not a general purpose mechanism built using the thinnest layer with the least dependencies possible (like init is). All you need to run init is a kernel, a filesystem, and for most init scripts, a shell program. This person's SystemServices concept is heavily tied into Gnome and would require a complete Gnome implementation to function properly. On the other hand, most init scripts do seem to be very specific in operation and make many assumptions about the tools available and the locations of files, making them tightly bound to the distribution they are running on as well. But at least init as a service starting program has minimal requirements, even if init script authors choose (typically because they have no other choice due to the lack of standardization of Linux systems) to make their scripts specific to the distribution.

    This makes it unsuitable for the purpose of starting up system services on a Linux system which does not include Gnome. I think that init was designed with very limited requirements and thus runs on every Linux system no matter how it has been customized.

    But that's typically the trade-off in software design: if your software can make more assumptions and be more specific in operation, then often it can be more powerful and integrate better with the specific system it is made to work on. Unfortunately, for something as general and low-level as the service running program, the SystemServices concept seems to specific to be useful for general use.

    Which is not to say that it's a useless project, just don't expect to see it replacing init any time soon.

    1. Re:Keep this away from my server! by elmegil · · Score: 2, Insightful
      Exactly. Here's some more of what he says:

      SystemServices has four major goals:

      1. Provide a full services framework (including handling "boot up")
      2. Integrate well with a desktop interface
      3. Start X, and then allow login ASAP
      4. Allow daemon binaries to directly contribute services rather than requiring each distro/vendor to write shell script wrappers

      Items 2 & 3 are the killer. This is clearly a guy who thinks that the only reason to run Linux is to support an X environment, which is absolutely wrong.

      --
      7 November 2006: The day Americans realized corruption and incompetence weren't addressing 11 September 2001
    2. Re:Keep this away from my server! by elmegil · · Score: 5, Insightful

      As far as "most" sysadmins not understanding run levels, he's out of his mind. Maybe he doesn't get it, but it's a long standing thing that works well. In fact, it works SO well, that Linux adopted it from System V after using the older monolithic rc scripts for a long while.

      --
      7 November 2006: The day Americans realized corruption and incompetence weren't addressing 11 September 2001
    3. Re:Keep this away from my server! by sweetooth · · Score: 2, Interesting

      You missed the part where he said

      and checks to see if it should be doing a graphical bootup.

      So, this shows that he doesn't think the only reason to run Linux is to support an X environment. He continues to talk about what would happen IF starting up in a GUI mode were the current choice. He doesn't however ever state that would be the only choice.

    4. Re:Keep this away from my server! by Horny+Smurf · · Score: 2, Insightful
      Dan Bernstein has a services daemon which can replace init. I use it on my BSD box, and it does have some advantages over init and rc.d files.


      Briefly, there's a service daemon that monitors the /service/ directory (the location can be changed). In the service directory are symlinks (or actual folders) to services that it should monitor.


      Each of those directories has a "run" script which starts the program, and a log/run script which is run to log stdout.


      you can start/stop/hup/etc processes: svc -h /service/tinydns


      If you wnt to add a new service, you just set up the run and logging scripts, and create symlink. No editing config files, restarting init, etc.

      And, like all djb software, no bugs!

    5. Re:Keep this away from my server! by miniver · · Score: 2, Insightful
      As far as "most" sysadmins not understanding run levels, he's out of his mind. Maybe he doesn't get it, but it's a long standing thing that works well. In fact, it works SO well, that Linux adopted it from System V after using the older monolithic rc scripts for a long while.

      Sadly, I've met plenty of SysAdmins who didn't "get" SysV-style init scripts. Particularly the in-duh-vidual who thought that "S100weblogic" would start after "S99local". [sigh] Admittedly, I wouldn't let this person administer any of my machines, if I had any say in it (which I don't), but there are plenty of other wannabe-sysadmins out there who are confused by init scripts.

      I'm not overly enthralled by this proposal, but I'm interested in the dependencies aspect -- nothing worse than changing the IP address for an interface and then trying to discover which services need to be restarted when you restart the interface. Or (hypothetically) what should start first: sendmail or its milter-daemons? A standard for specifying this type of information could be useful.

      --
      We call it art because we have names for the things we understand.
    6. Re:Keep this away from my server! by jorleif · · Score: 2, Insightful

      Remember this is open source. Nobody will force it down your throat. If it's any good people will use it, otherwise it will just die silently.

      Even if it becomes popular, I'm sure there will be distros using traditional init.

    7. Re:Keep this away from my server! by oohp · · Score: 3, Interesting

      Actually, there's been a huge thread on an OpenBSD mailing list with DJB telling people to "do what he says" and the /package, /doc and /service is better, breaking their filesystem hier(7)archy. The result is that the OpenBSD port maintainers have removed all DJB software from the ports tree, and now DJB is now switching to FreeBSD.

      I'm a happy djbdns user but I find it to be less scalable (backup name servers for a domain) without some amounts of work to write rsync scripts, etc.

      PS: I love UNIX fs hierarchy and do not intend to change it whatever DJB says.

  2. Why change what isn't broken by wawannem · · Score: 2, Insightful

    Dare I ask? I mean, I've never had any problems with the init process on Linux, Solaris, or HP-UX... Was there some problem or inefficiency I didn't know about?

    1. Re:Why change what isn't broken by Anonymous Coward · · Score: 2, Insightful

      Because "old" code is automatically "bad" code, regardless of any other considerations. I know far too many programmers who think this way.

    2. Re:Why change what isn't broken by js290 · · Score: 2, Insightful

      Because too many "hackers" don't seem to consider the cost and risks of upgrading, or in the manufacturing world, "retooling."

      --
      "Tempers are wearing thin. Let's just hope some robot doesn't kill everybody." --Bender
    3. Re:Why change what isn't broken by Fat+Cow · · Score: 2, Interesting

      unnecessarily slow bootup caused by lack of parallelism.

      i'm making a tivo box and i know that the startup times will be appalling compared to windows.

      --
      stay frosty and alert
    4. Re:Why change what isn't broken by Anonym0us+Cow+Herd · · Score: 3, Insightful

      Why are we replacing all our punch card keypunch stations with these frickin' interactive terminals? The punch cards have always worked fine.

      Why are we replacing perfectly good command line interfaces with GUI's?

      Why are we trying to replace X with something modern?

      Why are most people dumping FVWM95 for KDE or GNOME?

      Why are our filesystems all getting features such as arbitrary metadata attachments on files, and ACL's? (Metadata in filesystems is a feature that could make desktop systems *way* more friendly.)

      Why this? Why that? Why....? Why...?

      Answer: It's called progress. The things being replaced are being *improved*.

      Nobody is forcing you to use them. That's the nice thing about open source. It can fork or branch as many times as necessary to satisfy anyone.

      Me, I'm hoping for a Free desktop computer system that is as well integrated as both Mac and Windows. For instance, a "services" control panel that really does have an integrated idea of services, knowing more about them than just "start" or "stop". Apache should be able to show me its status. But do so through a mechanism that other deamons use to do the same thing.

      I am always amused at the resistance there is to every single improvement that will make a really good Linux desktop possible. Nobody is taking away *your* Linux system. Why do you want to take away *mine* before it is even born?

      If it ain't broke, then fix it 'till it is!

      --
      The price of freedom is eternal litigation.
    5. Re:Why change what isn't broken by Erwos · · Score: 3, Informative

      I don't think Seth's reasoning _ever_ got on this.

      The boot process on Linux is slow. It's one of the few things that seems to be the same about every distribution. Compare boot time on a WinXP box with non-essential services turned off to boot time on a Linux box with non-essential services turned off. WinXP boots a lot faster, at least in my experience. Can the current system be improved enough to compete? At least one person is saying no.

      Seth is proposing a new system that would be faster and have daemons "take care of themselves" without the need for tons of complicated scripts. These are valid and appropriate goals. It's not pushing some sort of desktop agenda (the "GNOME is taking over!" conspiracists amuse me, I must say), or forcing you to run X.

      This doesn't "address the server-side", or so some people claim, but I've seen no reason that you couldn't easily direct text output to console exactly like the current init does. Of course he's addressing the X desktop - because that's the far more complicated problem.

      -Erwos

      --
      Plausible conjecture should not be misrepresented as proof positive.
  3. The new init procedure by Anonymous Coward · · Score: 3, Funny

    if $OS [] *linux* or $OS [] *nix* then
    repeat
    SCO.account = SCO.account + yourbankaccount
    until bankvault = empty
    end if

  4. Legacy by HermesHuang · · Score: 2, Interesting

    I'm one of the crowd who will probably stick with init. It took me many many tries to tune my scripts the way I like it (and since I'll be reinstalling at some point, I'll have to spend some more time tuning) and I'm just too lazy to learn a new way. This is of course why old stuff is still all over the place, but hey, if it isn't broken, I'm not in a big hurry to replace it.

  5. Cool by mao+che+minh · · Score: 4, Interesting
    That's the strength of open source development: every little component has the potential of being made more efficient at any given time by any given party of developers.

    The current init system is actually fine in my opinion, but if someone comes up with better system that can boot my Linux system as fast as my XP system boots, I'm game.

    1. Re:Cool by truthsearch · · Score: 3, Informative

      He plans on implementing one of the key things which will makes systems bring up the user interface faster: launch only those services required by the system to boot, then launch the desktop (if applicable), then continue loading any "secondary" services. For example, the log rotation script found on some distros doesn't need to run before the interface is launched. I think this has been needed for a long time on the Linux desktop. It's worked that way on Windows for a long time.

    2. Re:Cool by bogie · · Score: 2, Insightful

      "but if someone comes up with better system that can boot my Linux system as fast as my XP system boots, I'm game."

      I do find it interesting that anyone beside embedded developers care about Linux boot times. I guess dual-booters might need this, but then again booting and dealing with two different OS's on the same machine is always going to involve some headache.

      I mean really how often do you have to reboot your linux box? This isn't the days of Win95 where you had to reboot daily. The most your should ever have to do on a linux box is Cntrl-Alt-Bkspace to restart X because something went way wrong. If your actually having to reboot your linux box more than once a month your either playing with too many kernels or have a serious hardware problem.

      While I agree that speeding up boot time is a "good thing" for me just isn't an issue.

      --
      If you wanna get rich, you know that payback is a bitch
    3. Re:Cool by sweetooth · · Score: 3, Insightful

      Some people don't leave their computers on 24/7. They turn them off when they leave the house etc. Hence they are booting their computers once a day probably.

    4. Re:Cool by derF024 · · Score: 2

      If your actually having to reboot your linux box more than once a month your either playing with too many kernels or have a serious hardware problem.

      Or you're running linux on a laptop. I reboot my linux machine as often as 3 times a day, because that's how often I go from one place to another with my computer. Waiting 25 to 30 seconds for my desktop to come up each time I boot is annoying to say the least.

    5. Re:Cool by wirelessbuzzers · · Score: 2, Insightful

      This feature shouldn't really need hardware support. It should be able to make a memory image in a file on the hard disk, and when it reboots, if the image exists, to reload it.

      --
      I hereby place the above post in the public domain.
    6. Re:Cool by MsGeek · · Score: 3, Funny

      People like me who live in earthquake-prone areas turn their computers off when not in use. Much safer for the hard drive.

      --
      Knowledge is power. Knowledge shared is power multiplied.
    7. Re:Cool by bninja_penguin · · Score: 2, Interesting

      My XP - a gaming rig, at that - (sic)botts in about 30 seconds.

      That is the thing right there. Your system is a "gaming" rig, and that's probably all you do with it, so you've got it all tweaked and rarely change anything with it. Nothing wrong with that, but, on a "general purpose" machine, or the average XP users machine, I guarantee it slows down to an aching crawl for boot after a few weeks/months of use. This is caused by everything from Quick Books "TSR" bot to default settings in IE that allow every damned search bar/spyware piece of junk to automatically install in the background.

      I work on Windows boxes all day long, and I know this happens. Machines I've built for customers, with nothing but XP loaded will boot in under 20 seconds. Two months later, when they've just purchased a new scanner or what have you, and want me to install it, the boot time of the exact same machine is now over 2 1/2 minutes. They had installed Anti-Virus software, Office XP, a few games, Quick Books, etc., nothing exotic. I checked for viruses, there were none. I ran Spy Bot, and there was 350 (non-cookie) issues found. Even after cleaning, clearing temp files, and defragging, the boot time was still just under two minutes. My Mandrake machines' boot times haven't changed by even 2 seconds in three years. My Mandrake boots from power button on to fully loaded KDE desktop in 40 seconds, and I've only got 256MB RAM in it. The XP box I've been talking about has 1GB.

      No matter what people say, nor what the benchmarks show, Windows XP appears slow, and feels sluggish. Go to the Add/Remove Programs in the control panel. Even with a 2.6Ghz processor with 1GB of RAM, you have to "Please wait while list is being populated." Sure, you can "prove" with benchmarking that XP is faster than 98SE, but my K6-III Win98 machine feels one Hell of alot faster than any XP machine I've worked with.

      So, I guess my point would be, yeah, you are probably right, there's something broken with the parent poster's XP box, but it's probably broken in every other XP box on the planet as well (except for yours.)
      :)

      --
      For those who describe their systems as 'boxen', do you order multiple 'boxen' of corn flakes also?
    8. Re:Cool by zdzichu · · Score: 2, Interesting

      Find following line in your /etc/inittab :

      # Script to run when going multi user.
      rc:2345:wait:/etc/rc.d/rc.M

      and change it into

      # Script to run when going multi user.
      rc:2345:once:/etc/rc.d/rc.M

      Much faster, isn't it?

      --
      :wq
    9. Re:Cool by baka_boy · · Score: 2, Insightful

      Even if you're using Linux boxen purely in a server environment, having parellelized startup of system services could be a big win: if your SSH daemon could start up before or in parallel with log rotation, hardware monitoring (devfsd, kudzu, etc.), etc., you could log back on to the server that just rebooted much more quickly. I know, in an ideal world, you'd never have to reboot a production system, but we live in the world of failing hard drives and power supplies.

    10. Re:Cool by baka_boy · · Score: 2

      ...or you're using more than one OS on the same machine. I've routinely had as many as four different bootable partitions on my workstation, often running completely different operating systems (Linux, Net/OpenBSD, Win2k, BeOS R5).

      Is it strictly necessary? No. Is it a big part of how I've learned to code for and support all of those systems? Yes. Would I like to shave a minute or two off every Linux boot time? Definitely.

    11. Re:Cool by GlassHeart · · Score: 4, Insightful
      an extra minute or so each day isn't going to make a lot of difference.

      Reminds me of an old story of somebody hired to improve the elevator waiting time that people had been complaining about. Instead of tinkering with elevator algorithms or making it run faster, he simply installed mirrors by the elevator. Nobody complained anymore.

      It makes a difference, because it's something I'm waiting for. It's one more minute before I can read email, or search for something on Google, or whatever I turned on the computer to do.

      An extra three minutes shutting down, on the other hand, isn't that important for a desktop, because I would probably have walked away to do something else. It might be for a laptop, however, because the user might be waiting to unplug it, etc.

      The point is, it's not the amount of time, but whether I'm waiting for it or not. This means that one solution to the problem may simply be downloading Slashdot headlines and showing them while the system boots.

    12. Re:Cool by derF024 · · Score: 2

      On a crappy laptop, I think you mean. :-)

      I'm not running linux, but OS X, on a laptop. I had an uptime of about 65 days before I screwed something up and it had a kernel panic.


      Yes, my laptop can sleep. I corrupted 2 hard disks and burned a horrible memory into a battery before I realized how stupid it is to actually use the sleep function on modern laptops.

      1) sleep (as opposed to hibernate) doesn't actually shut the machine down, it just puts everything in low power mode, draining your battery. If you sleep your laptop while it's plugged in, go somewhere else and plug in your laptop again, you'll destroy your battery within 2 months.

      2) the machine still generates heat when it's sleeping. With my P4 based laptop, it's enough heat to melt my vinyl bag near the exhaust port when i sleep the machine and put it in the bag for a few hours.

      3) in low power mode, many laptops don't lock the disks (because they take longer to spin back up when they're locked.) Unlocked disks mean that the heads will strike the platters if the laptop gets hit hard enough.

      Beyond that, resuming from sleep on a different network usually means restarting daemons and bouncing interfaces until they realize what's going on. At the very least, my local DNS cache (djbdns) needs to be reloaded.

    13. Re:Cool by juhaz · · Score: 2

      And cost you it again when you turn the system on again and all the capacitors have to refill with juice.

      That's bullshit. And you know it. Typical (used for mostly only, they're not batteries or anything...) caps hold a miniscule amount of juice.

      If an average setup draws 200W of power, then over-the-night amount would be around 1.6kWh, if you've got caps that can store that in few cm^3 and be loaded in few seconds, you'd be an instant billionaire. PC power supply would take hours to load them, thouh, or more probably be overloaded and you'd be left with a smoldering wreck.

      Boil an egg and take it directly out of the boiling water and throw in ice water. Note the effect on the shell. Then remember you do that to the most critical components of your computer everday.

      No you don't. Temperature of CPU core on hottest systems might be near boiling point, but rest of the system is not even half of that, and the "throw in the ice water" part is mysteriosly missing.

      How about: boil and egg and take it out of the water. Leave it on the table to cool, wait. Nothing happens.

      Sure. Heat expansion probably does lessen the life expectansy of components somewhat (probably not enough to be significant, you're going to swap it in few years anyway), but you're overstating it so much it's not even funny, only stupid.

  6. Why ? by Anonymous Coward · · Score: 5, Insightful

    I like python a lot, but why make it a requirement for init ? Just means more stuff has to be installed fort he default system to work. I prefer to sue the base shell.

    1. Re:Why ? by Anonymous Coward · · Score: 5, Insightful

      Remember when everything in /sbin was staticly linked, /bin -> /usr/bin and /usr was a separate filesystem?

      No more.

      The only thing we need still is parallel loading. Methinks a good RC system can do it.

    2. Re:Why ? by dcgaber · · Score: 4, Funny

      Sue the base shell? Darl, stop posting as AC!

    3. Re:Why ? by crotherm · · Score: 2, Interesting

      Moderators, mod up this parent!

      I 100% agree that linux can use a parallel service loader, but not with the bloat Seth envisions. All systems come with bash. Why not use it? Python is not needed for this.

      Personnaly I LIKE my init.d scripts.

      --
      "Those who make peaceful revolution impossible, make violent revolution inevitable" - JFK
    4. Re:Why ? by the_2nd_coming · · Score: 2, Interesting

      becasue BASH does not scale well and is dificult to use when needing to expose APIs to an upper layer.

      --



      I am the Alpha and the Omega-3
    5. Re:Why ? by __past__ · · Score: 4, Insightful
      All systems come with bash.
      <rant>
      How about "All POSIX-compatible systems come with a bourne-compatible shell"? I don't see any reason why a developer of an init system, which is so not tied to a specific kernel, should restrict himself to a non-standard embrace-and-extend version when he can also follow open standards, and create something more useful to more people instead.
      </rant>
  7. RTFA by truthsearch · · Score: 5, Insightful

    SystemServices is not at all tied to Gnome. It will probably not require much more than the kernel and Python. His goal is partly to make a nice set of APIs callable from a desktop like Gnome to ease with management and error reporting. This project is not tightly integrated with Gnome just because someone from Gnome has started it.

    1. Re:RTFA by Bryan+Ischo · · Score: 2, Funny

      This would all be very offensive if it wasn't true.

      Just kidding (of course).

    2. Re:RTFA by Lennie · · Score: 2, Insightful

      /bin/sh is not interpreted ? You don't consider it bloated ? Look better at Python, it's actually very elegant.

      --
      New things are always on the horizon
    3. Re:RTFA by tigga · · Score: 5, Insightful
      /bin/sh is not interpreted ? You don't consider it bloated ? Look better at Python, it's actually very elegant.

      Python may be elegant as many other interpreters, but Linux supposed to be more or less Unix-compliant and if you already have /bin/sh there then just use it. There is no justification to complicate things.

  8. Please don't replace me. by Anonymous Coward · · Score: 5, Funny


    Back in my day, young whippersnappers didn't show disrespect to their
    elders by talking about replacing them with fancy-pants code. We were
    shell scripts and we liked it.

    Not Bash scripts either, real life ksh scripts. You hippies and your
    bash shell.. why I outta.. ouch, hurt my arm waving it so.

    Anywho.. back in the day when we were happy little startup systems
    we didn't have to worry about snakes. Python? Who ever heard of that
    back then? We has ksh and csh and WE LIKED IT.

    Damn granola-crunching kids and their need to improve what don't need
    improving.. Stay in school, don't become pot-junkies and enjoy the
    blessed rc that nature intended.

    It started with all this Rock and/or Roll that you ingrates listen to.
    Back in the 70's we rc scripts were appreciated. Then along comes this
    electric gee-tar thing getting so popular and that did it.

    Dag nabbit... where's my crontab..

    where was I? Oh yeah..

    Back in my day, young whippersnappers didn't show disrespect to their
    elders by talking about replacing them with fancy-pants code. We were
    shell scripts and we liked it.
    .
    .
    .

    1. Re:Please don't replace me. by red+floyd · · Score: 2, Funny

      You had a shell? We had to type things into the ROM monitor!

      --
      The only reason we have the rights we have is that people just like us died to gain those rights. -- Cheerio Boy
  9. Is it broken enough to need fixing? by ajs318 · · Score: 2, Informative

    The Linux startup process works. Is there any need to muck about with it? On Red Hat et al and Debian, there's the powerful but complicated init.d directory; while Slackware users have a less sophisticated system to contend with.

    And hey, it's not like we have to boot all that often, is it ;-)

    --
    Je fume. Tu fumes. Nous fûmes!
  10. That's a joke, right? by Fefe · · Score: 5, Interesting

    It's "faster", because it's "python based"?!

    The standard Linux init system is based on sysvinit and is slow precisely _because_ it is interpreted (it's basically a ton of shell scripts). The other reason why it's so slow is because glibc is slow and the init system starts several hundred processes during the init process. Just log in on a freshly restarted Linux system and type "echo $$" in a shell prompt to see how many programs were run before you logged in. On my minit based notebook, the number is below 20. On my minit based server, it's still below 30.

    minit takes less than one second to initialize the whole server system, on an aging 466 MHz Celeron box, right from the point where the kernel starts init up to the login prompt. And the server does file sharing, cvs serving, rsync serving, runs a mail server and sshd.

    In fact, because minit does not even depend on glibc, minit can probably initialize a small system in less time than it takes to even load python and glibc on this init system.

    Fast and python based, give me a break. And the freedesktop people should keep their bloat to themselves, if you ask me. With the notable exception of KDE, all the gui systems on Linux have gotten progressively slower and more bloated over the years. KDE has also become slower, but less drastically, so it can be excused IMHO. But Gtk? Give me a break! Even starting the gnome theme engine takes 5 seconds on my 2 GHz Athlon XP!

    1. Re:That's a joke, right? by be-fan · · Score: 5, Informative

      What kind of coke are you on?

      1) Shell-scripting being interpreted is not the bottleneck. The bottleneck is all the processes that most init-scripts start at bootup, as well as stuff like hardware detection, waiting for DHCP leases, etc. Besides, Python isn't interpreted like shell-scripts, it runs on a bytecode-VM. And Python is fast enough that RedHat uses it for its GUI tools, and most people can't tell the difference.

      2)KDE has gotten *faster* since 2.0.x. 3.2 is the fastest release since the 1.x series. In the 2.x transition, GNOME got a lot faster, but people didn't notice it as much because GTK 2.x was so much slower.

      --
      A deep unwavering belief is a sure sign you're missing something...
    2. Re:That's a joke, right? by Fefe · · Score: 2, Informative

      Oh yes it is. When I log in a user with bash as shell, you can _feel_ the delay while bash and the dynamic libraries of it are loaded. Yes, even on my Athlon XP. Why? Because my init system loads neither glibc nor bash.

      KDE is only faster than 2.x if you disable all the new eye candy that is now available, like translucent menus and the flashy theme stuff. Yes, that's comparing apples and oranges, but it's also comparing the default desktops. Keramik is themed with large pixmaps, the kde 2.x default layout wasn't (or I'm on crack and didn't notice).

  11. Doh. by jensend · · Score: 5, Interesting

    A replacement for the current init system, while necessary, should have fewer, if possible, dependencies than the current init, not more. Unices are being deployed across more and more diverse kinds of systems, and dependencies on python and d-bus, both of which projects I support in themselves, are not going to be welcome in the init of the majority of unix systems today, especially in servers or embedded systems.

    1. Re:Doh. by pmz · · Score: 5, Insightful

      Unices are being deployed across more and more diverse kinds of systems, and dependencies on python and d-bus, both of which projects I support in themselves, are not going to be welcome in the init of the majority of unix systems today, especially in servers or embedded systems.

      This still won't stop the GNU folks from fucking it up, though, because more dependencies ensure GPL-lock-in (you didn't think it could happen to us, too, did you?). This isn't a troll, but a very serious issue, where lots of software is becoming very GNU-specific rather than UNIX-specific (I hope everyone can see this distinction).

    2. Re:Doh. by AME · · Score: 2, Funny
      GNU-specific rather than UNIX-specific (I hope everyone can see this distinction)

      Well, if GNU is not Unix, isn't the distinction explicit?

      --
      "I have a good idea why it's hard to verify programs. They're usually wrong." --Manuel Blum, FOCS 94
    3. Re:Doh. by groomed · · Score: 3, Insightful

      GNU software is better, cheaper and freer than its UNIX counterparts. It's no wonder that GNU is finishing off the lame and deaf UNIX moloch. Besides, that has always been the project's goal. It's not like that's a secret or anything.

      As for "lock-in", well, if GNU's the prison, I don't mind being a criminal.

  12. login by panxerox · · Score: 2, Funny

    for god's sake make it so we dont have to log in each time we turn it on.

    --
    "It's so convenient to have a system where everyone is a criminal" - A. Hitler
  13. HAL?? by heh2k · · Score: 2, Insightful

    why would you need it on nix*? devices are standardized. eg, except for a few ioctl quirks, ide and scsi devices are the same, from userspace. usb devices often look like serial char devs (pda cradles) or blk devs (cameras).

  14. Another Gentoo feature by Otter · · Score: 4, Informative
    Gentoo has a number of great modifications over traditional Linux distributions that don't get nearly as much hype as the nebulous performance increases from building everything from source.

    The relevant one here is the management of services -- far easier than anything similar I've ever dealt with in the Unix world. I realize that 1) this proposed replacement goes beyond what the Gentoo system manages and 2) real sysadmins running real servers aren't going to leave the existing system any time soon, but for desktop users today, it's a great advance that doesn't get the credit it deserves.

    1. Re:Another Gentoo feature by Chardros · · Score: 2, Informative

      I'm in agreement. I read this a few days ago, when it appeard on footnotes. It talked a lot about dependancies, etc, which the Gentoo init structure already accomplishes well. As a matter of fact, extend the Gentoo init structure SLIGHTLY (to accomidate things like "starting" and "stopping" like this guy is talking about, and pretty names or whatever else you want) and all the information he's looking for could be published in /mnt/.init.d. Accessible by every shell/desktop/scripting service on linux, without the need for the CORBA-wannabe D-BUS stuff. Simple file i/o (fopen(), fread())... ya know... the Unix way.

      Oh well. I'm not preaching the Gentoo way here... I'm simply saying this way should be looked at before starting down the convoluted sounding path the article talks about.

      My $0.02US.

  15. Not very *nix-ish by MobyDisk · · Score: 4, Insightful

    His approach isn't very *nix-ish, it is very Windows-ish. It assumes you have a GUI. It relies on a large complex framework of interfaces. It assumes you have Python scripting. This may work very well for many desktop distros, but it can't become some great unifying thing like he wants, since he chose dependencies that are not the least common denominator. I believe that his goals can all be achieved with minor changes to the existing init system, rather than a megalithic rewrite.

    This approach sounds like he is trying to push some specific technologies he is interested in, and so he decided a new init system that uses them would be a nice PR way to push them.

    1. Re:Not very *nix-ish by J.+J.+Ramsey · · Score: 4, Informative

      "His approach isn't very *nix-ish, it is very Windows-ish. It assumes you have a GUI."

      Please read the article again, especially the part where Seth Nickell wrote "I *will* provide a way to boot into a "stripped down console mode" aka "single" for system recovery and backup, and a regular non-graphical boot for servers."

      From what I can tell, SystemServices in and of itself only depends on D-BUS and libc. There are Python bindings for D-BUS, so that may make it easy to write a script for SystemServices using Python, but that's the extent of Python's relationship to SystemServices.

    2. Re:Not very *nix-ish by nvrrobx · · Score: 5, Informative

      If you RTFA, you'll see this is aimed at desktops with a GUI, which is somewhere that startup time is very important.

      To quote the article:

      "SystemServices has four major goals:
      1) Provide a full services framework (including handling "boot up")
      2) Integrate well with a desktop interface
      3) Start X, and then allow login ASAP
      4) Allow daemon binaries to directly contribute services rather than requiring each distro/vendor to write shell script wrappers"

      Yes, this is very Windows like, but just because it's Windows like does NOT imply it's a bad thing!

      FreeBSD, for example, has relied on Perl being available in the past. Gentoo relies on Python. Relying on a scripting language to provide extensibility is not a bad thing.

      I'll agree that init works well for servers. I love how DB2 installs itself in the inittab, so init makes sure it's always running. This is a good thing.

      Init does not work as well for desktops. My laptop takes incredibly longer to boot Linux than Windows XP. My iPAQ takes a long time to boot Linux, compared to the startup of WinCE. (Yes, I realize that you don't have to restart Linux very often on the iPAQ, but that's not the point)

  16. Keep It Simple Stupid by yancey · · Score: 3, Insightful

    One of the great strengths of unix-like operating systems and the thing that makes them easy to port from one platform to another is that the core system components are very simple, not based on some relatively huge and complex thing like Python.

    --
    Ouch! The truth hurts!
  17. D-BUS, and NIH by avdi · · Score: 5, Insightful

    So I skimmed through the D-BUS spec and, as I expected, they are simply reinventing CORBA.

    When will Open Source developers figure out that just because the OS community didn't come up with a technology, doesn't mean it has to be re-written with fewer features?

    I gaurantee that whatever aspects of CORBA the D-BUS developers found unnacceptable - complexity, overhead - will be reintroduced into D-BUS by the time it reaches maturity. That's just how these things go - someone decides that Standard X is "cool, but too complicated", and then five years later they realize that their solution has become just as complicated as Standard X because, lo and behold, all that complexity was there for a reason. Real-world solutions never stay simple, because real-world problems aren't simple.

    --

    --
    CPAN rules. - Guido van Rossum
    1. Re:D-BUS, and NIH by jmac880n · · Score: 2, Interesting

      I cannot leave this alone without citing a significant counter-example where a simplification of a complicated system was a tremendous success.

      Unix as a less complex replacement for Multics.

    2. Re:D-BUS, and NIH by Vellmont · · Score: 2, Insightful

      I agree with you, but I don't think complicated is a very descriptive word. Lots of things are complicated, but you don't always need to understand the complicated stuff to do most of what you have to do.

      Ideally a system should follow the 80/20 rule. That is you can do 80% of what most people want to do by only learning 20% of the system. SQL is a good example of this. You can learn only a little bit of SQL and immediatlely put it to use. SQL only gets complicated when you need to do that last 20%.

      In other words, a system can be complicated, but there are different ways to seperate out the complex parts from the simple parts. The goal is to end up with a system that's complicated when it needs to be, and simple at all other times.

      Now, I'll qualify this by saying I don't know anything about CORBA or D-BUS, so I've no idea how this applies to the situation at hand. I just thought it might add something to the discussion.

      --
      AccountKiller
    3. Re:D-BUS, and NIH by be-fan · · Score: 2, Informative

      Reasons why CORBA sucks (mostly from the C++ mapping):

      1) The whole distinction between servants, object references, etc, might be nice in whatever fantasy world the standards makers lived on, but its far too complex. A proper standard (POSIX is an excellent example) should scale. Simple things should be simple, and implementation complexity should scale linearly with problem complexity. Objects are a pretty simple idea. CORBA makes them anything but.

      2) The C++ mapping is completely braindead. I'm someone who finds C++ itself to be rather simple and straightforward, and I still can't always get the parameter passing conventions correct. It also doesn't use the STL. Being released in 1994 is no excuse. We're thankfully leaving the stone-age of C++ behind us, and unless the CORBA C++ mapping is updated, it should be one of those relics we leave bhind.

      3) The standard is full of "gee, wouldn't this be nice" features, while missing some very basic conveniences (offering string-representations of error messages in exceptions).

      --
      A deep unwavering belief is a sure sign you're missing something...
    4. Re:D-BUS, and NIH by Saucepan · · Score: 3, Informative
      I like CORBA itself -- I found it fairly easy to work with, and it has the pleasant property that most of the complex features can be ignored (or at the very least papered over) until you need them for something. When you do dig deeper, you'll find that the interfaces for the sophisticated optional services like messaging and distributed transactions are clean, well designed, and fairly well documented.

      But, I'd hesitate to call it easy to use. The standard C++ language bindings in particular are astonishingly bad:

      • they were originally designed long before C++ had standard string and container types and so use char * (with invisible attributes like the const-ness of a pointer controlling vital behaviour like who is responsible for freeing the object) along with their own unique way of dealing with arrays and iterators
      • early CORBA implementors supported either fast-but-dumb pointers or slower-but-safe reference-counted smart pointers, so when the standard finally caught up it standardized both (typename_ptr and typename_var), with predictably disastrous results (crashes or memory leaks if you mix-n-match them, which may be unavoidable if you use third-party libraries)

      The situation is reported to look better from other languages, and I can personally confirm that the Java bindings are a delight to work with by comparison (of course in Java it's even easier to just use RMI).

      As for the wire-level protocol, I have no complaints about IIOP now that it has readable corbaloc: URLs (the CDR marshalling details are still messy but unless you are writing your own ORB they are taken care of for you). I'm actually a bit surprised that IIOP isn't more widely used on the Internet and in the open source world (outside of GNOME of course) -- it's the distributed computing open standard, it interoperates across languages and OSes, it has numerous open-source implementations, and It Just Works(tm).

      Instead we are getting stuff like web services and SOAP, whose wire format is just as incomprehensible to humans (don't kid yourself that XML is easy to read -- have a look at a fully-decked-out SOAP message some day) while using many times as much bandwidth and memory and taking at least ten times as long to parse. (And I say this even though I currently write SOAP gateways for a living.)

  18. Reinventing the wheel? That's the Linux way!! by 44BSD · · Score: 3, Insightful

    This is a dumb idea.

    It is antithetical to the UNIX design philosophy, and it betrays an ignorance of history.

    IBM tried to "improve" the init sequence in AIX, which was a godawful mess. The concept has not improved over time.

  19. Transparency should be goal #1 by GeoGreg · · Score: 5, Insightful

    If someone comes up with a whizbang new boot system. great. Just make sure that if something goes wrong, or something needs to be changed, it's:

    1. Easy to determine where the problem is.
    2. Easy to fix using minimal tools available in single-user mode (i.e., vi).

    I don't want some horrific equivalent of the Windows Registry lurking in the background. There should be no mysteries about what gets started and when. I'm not a Windows guru, so maybe this stuff is easy to determine in XP or Server 2003, but I've always found plain ol' text files to be much easier to deal with than fancy-dancy databases. Or at least compile the databases from plain ol' text files.

    1. Re:Transparency should be goal #1 by moncyb · · Score: 2, Interesting

      Your complaints seem to be about GNU projects. They do some strange things. Not all of it is incompetence either. Some of it is politics.

      Not only are people recreating the look-and-feel of Windows but the very things that made us dispise Microsoft and Windows in the first place!

      That's why you have to take an active stance in avoiding script kiddie projects like GNOME or KDE. Just say no to crap!

  20. Hmm by stratjakt · · Score: 2, Insightful

    I know it's people perogative to write whatever they feel like writing, but I cant help wishing that desktop linux had some sort of omnipotent boss who could order the dev community around, thusly: "Quit wasting your time on that until cut and paste works, and all the desktop apps look like something other than shit!"

    I mean, thats how OSX and Windows got where they are.

    --
    I don't need no instructions to know how to rock!!!!
  21. Other init alternative by elFarto+the+2nd · · Score: 5, Interesting

    The only init replacement i've seen that seem to have some sense is: http://www.atnf.csiro.au/people/rgooch/linux/boot- scripts/index.html elFarto

    1. Re:Other init alternative by Ann+Elk · · Score: 2, Informative

      Here's one from IBM: Parallelize Linux system services to improve boot speed. It's not so much as "replacement" as an "enhancement" to speed up the boot process. Interestingly, it uses make to manage service dependencies.

  22. ya, and... where is it? by dermusikman · · Score: 2, Interesting

    i first read this article last night on Newsforge and did some cursory searches for the project. i couldn't find anything. has anyone else had any luck?

    the only things i've yet found are blog entries. he seems to be a reliable hacker but of what news is this until there's downloadable source-code? i'm planning on working on a new MUD; i'll be sure to submit that to /. right away!!

    so if you have a link for us, please pass this along. also, like so many others have asked, how closely will this be tied to GNOME? even my desktop system uses WindowMaker ; why should a foundational mother-program rope me into a DE i don't like? or be reliant on the GUI in the first place?!

  23. Wow .. did someone actually read the paper ? by BESTouff · · Score: 5, Insightful
    As always on /. there are loads of uninformed comments just based on the title :)

    I think Seth's idea is a good one. Of course, there are some things to refine: the dependency shouldn't be external (e.g. SystemService knowing the dependancy tree) but dynamic (e.g. GDM sees that its config requires network login, so it asks SystemService to start network), etc.

    But overall rethinking the init is a good thing. Even just opening the debate is a very good thing. The mess of shell scripts is more a giant hack than a well-thought bootstrap system.

  24. Re:Python, the prototype language by LWATCDR · · Score: 4, Insightful

    As an old school programner let me say I do not hate Python. I just do not know it. So far I have found noting about Python that makes me want to take the time to learn it.
    I do tell people just learning to program that it sounds like a good first language.
    For internal programming that requires a GUI I tend to use Java. Netbeans is just too good of an IDDE to give up.
    For non-gui internal programs I tend to use Perl. Why perl over Python? I know Perl.
    For programs that end up in the hands of our customers I use C++.
    I really doubt that Python sucks. I have seen too many really good programs written in it.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  25. Replacing the Aging "Wheel" Device by avdi · · Score: 4, Insightful

    Apparently freedesktop.org has devolved from a desktop standards initiative to a home of pointless wheel-reinvention. Here's a list of the projects listed above, followed by their existing, more mature counterparts:

    Init Replacements: simpleinit, minit, jinit, runit, daemontools, serel. Progeny also has their own system based on Gooch's need/provide architecture.

    D-BUS: CORBA

    HAL: Discover

    --

    --
    CPAN rules. - Guido van Rossum
  26. XP by blunte · · Score: 4, Interesting

    Oh, you mean until you find another OS that can "fake" boot as fast as XP...

    XP has some serious issues in some cases with the way it "optimizes" the boot order. It appears quick, but in a corporate environment that can lead to weird timing problems. That's probably why MS left/added a feature to disallow logins until XP was really booted.

    --
    .sigs are for post^Hers.
  27. Re:Great idea if it reduces startup times by Theatetus · · Score: 4, Informative

    Hmmm... Windows XP gives me a desktop (somewhat) more quickly than Gentoo does, but I have to wait for about 90 seconds to actually do anything or run a program.

    It's a tortoise-and-hare thing; Windows (and lately Gnome) give you eyecandy early on at the cost of having to wait with what looks like a perfectly functional desktop while the rest of your base loads. That's why I use Windowmaker. Once I get to GDM it's rare that it takes more than 5 seconds to have a desktop with nothing stalling on me. YMMV, and this is fairly OT anyways since once I'm at GDM, init's not automatically loading stuff anymore.

    --
    All's true that is mistrusted
  28. Re:Reinventing the wheel? That's the Linux way!! by Baki · · Score: 2, Informative

    Yes this is a horrible perversion and deviation of UNIX.

    Also, the so called disadvantages of init are void. It looks like he does not understand what init is.

    Init is very simple: the kernel calls a program called "init" as soon as the kernel-part of booting is ready.

    The "normal" init (there is a SYSV and a BSD variant, the SYSV variant being somewhat more complex) only reads a config file /etc/inittab to see what further program it should call. For each runlevel there is such a program.

    Usually these are the init.d/rc shell scripts that sequentially carry out a number of initializations. Often there is a kind of master script such as rc2 (for runlevel 2) that calls further scripts in some order (those are usually in /etc/rc2.d/S*). But all this is just "usual" and could be completely modified without throwing away the standard init system.

    If you want, you can configure inittab to call some multithreaded language to carry out some initializations or start background daemons (yes, a UNIX "service" is a daemon, heretic!) in parallel, speeding up the init process.

    You can also simply use shell scripts instead of threads, but use shell background jobs (&) to do some things in parallel and then wait for each of them afterwards (the shell wait command), so you don't even need some multithreading for speeding up your boot process (the difference between multiple processes versus threads in this context is measured in milliseconds, not really a worthwhile advantage when it comes to boot time).

    In short: it is an insane and heretic idea, that can only be bred by evil plans or by ignorance.

  29. simpleinit by Sharkeys-Day · · Score: 5, Informative

    There already is a better init system: simpleinit. I've worked with it on embedded systems, and it rocks.

    It's dependency-based, so you only start up the services you need. Read all about it.

    Dependancies are a big improvement over runlevels, although you could implement runlevels on top of it.

  30. .hoD:eR by forgotmypassword · · Score: 2, Informative

    Python is not GPL

    "Python is absolutely free, even for commercial use (including resale)"

    http://www.python.org/doc/Copyright.html

  31. Init written in Python? Don't think so. by jjackson · · Score: 2, Interesting

    I would agree that the init system in general could use an overhaul, however, the idea of writing a replacement init for "*Linux*" in Python is not going to fly. Maybe a replacement init for Red Hat, Suse, Mandrake, or other large distro.

    Neither of my distros will benefit in the slightest from this sort of system. Coyote Linux and the Wolverine Firewall and VPN Server use a busybox init application. Coyote fits on a 1.44Mb floppy and Wolverine installs in 7.5Mb. This would not be possible if either system's init relied on Python.

    The embedded Linux market will have no use for something that requires a Python interpreter. Not to mention, Bash shell scripting and Python source code are very different animals. Having to learn the basics of shell scripting to reconfigure the way your system boots is a far cry less complex than having to learn Python.

    As an embedded Linux developer, this project gets an emphatic thumbs down (as do most interpreted programming languages, though). They have their place in larger systems, but "Linux" is no such system, it is just a kernel. If he wants to write an init replacement, he should target a given set of distros, not the kernel itself.

  32. DBus project page compromised by jmcneill · · Score: 2, Informative

    Welp, looks like the DBus project page has been compromised -- visiting it contains a link saying 'This file has moved here', the 'here' linking to goatse.cx. Anybody have a mirror of their site?

    1. Re:DBus project page compromised by BobaFett · · Score: 2, Interesting

      They must be checking the Referer because the same link works fine when you come there through the main site.

  33. Re:Thought we would overlook your mistakes? by tigga · · Score: 2, Funny

    Was that Yoda speaking?

  34. Using Make sounds better than python. by aliensexfiend · · Score: 2, Interesting

    "There was an interesting idea posted on slashdotregarding using make to handle the boot process (Parallelize, and dependency handling) The original slashdot post is here."

  35. Been done before by ofgencow · · Score: 4, Informative

    ETLinux replaced init several years ago with an entirely scripted version. Different scripting engine (Tcl instead of Python) and for different reasons (keeping an embedded Linux kernel tiny.)

    Making this happen was that the ETLinux folks ... added Tcl equivalents for some common syscalls and services: sys_dup, sys_exec, sys_fork, sys_kill, sys_nice, sys_pipe, sys_reboot, sys_sync, sys_wait, sys_chmod, sys_umask, sys_mknod, inp, inw, outp, outw, setleds, mount, umount, uudecode, uuencode, time, ifconfig, route, udp. The introduction of these commands allowed the rewrite of the initialization scripts in pure Tcl, avoiding the inclusion of large binary programs.

    More on ETLinux architecture here.

  36. Re:Not Natural by tigga · · Score: 4, Informative
    In this UNIX, God had in his great Divine Scheme begat Emacs and init.

    Oww, gawd!

    Not Emacs, vi!

  37. Response from SystemServices author by nullity · · Score: 4, Insightful

    SystemServices: Hardly wheel re-invention. If you read the linked-to article you'll find that none of the listed "init replacements" address any of my four major goals. They addressed their own goals, which are nice ones I'm sure, but not things that the desktop needs. In fact, the only thing they really add over init that's interesting to me is a dependency system + parallelization. And RH's internal work on init scripts has suggested this results in only small improvements (neighborhood of 30% I believe) in boot time... which is better but not dramatic. Dependency systems are pretty trivial to implement and a dime a dozen, in any case.

    DBus: yeah, its a lot like CORBA. Its even more like KDE's DCOP. In fact, its a lot like DCOP. You could even think of it as a major iteration of DCOP. So look, GNOME has been using CORBA for IPC for several years and its still something people avoid using whenever possible. KDE used CORBA for a while, and even with the comparatively nice CORBA/C++ bindings found KDE devs avoided it when possible. CORBA is a freaking PITA to use for lightweight desktop-style stuff. DCOP was the solution (its a good solution, GNOME should have done this ages ago): make it easy enough to use that developers will actually readily communicate over DCOP. Communication protocols have no inherent value on their own. They acquire value when there's things to talk to. Developers won't use the API unless its simple. You can write very simple comm layers for KDE and GNOME around DBUS. Even if we GNOME folk wanted to use CORBA (we don't), KDE wouldn't, and a requirement for DBus being truly useful is that KDE+GNOME have to be willing to use it. End of story.

    HAL: I'm not really familiar with discover, so I'm not going to shoot my mouth off (much *grin*). From ransacking the web page you linked to, it doesn't look like discover really supports the sort of "central daemon with notification signals" model that we need to provide good hardware support on the desktop side. Without that... its sort of useless to us. It looks a lot like Kudzu, which is a good thing (and trust me, Havoc who proposed HAL in the first place knows about Kudzu, and probably discover) but it simply isn't what those of us who are in the ditches writing this desktop code need.

    Moral of the story: a superficially similar "solution" does not necessarily address the issues that we as desktop developers face. We propose these things because we have concrete problems to solve. Sometimes the problems are not obvious until you try to do something and end up butting into them. We're lazy people, just like anyone, and we don't like :-)

    1. Re:Response from SystemServices author by avdi · · Score: 2, Insightful

      Regarding D-BUS: I've seen nothing so far that explains why D-BUS couldn't have been implemented on top of CORBA. There's no reason for a lightweight desktop-integration bus to specify low-level crap like the protocol used, bit-ordering in packets, etc. There's no need for any coupling at all between passing messages between apps and how those messages are passed. Marshalling, dynamic service repositories, naming services, protocol abstraction, QoS issues - it's all been solved already. Why invent yet another TCP publish-and-subscribe protocol when you can build on one that's already there - and in addition, be able to swap shared-memory for TCP if TCP turns out to be too slow, or choose synchronous semantics when you discover that certain messages really need to have gauranteed delivery. Sure, put an extra-simple facade on it if developers don't like working with IDL; but don't reinvent RPC. It's been done too many times already, and half of the stuff that makes CORBA complicated you're going to wind up recreating by the time you're done anyway.

      --

      --
      CPAN rules. - Guido van Rossum
    2. Re:Response from SystemServices author by avdi · · Score: 2, Insightful

      You list back the services that I listed, and say they aren't needed - and yet when I read the spec, it described some of those very services. Not to mention the many, many TBDs remaining in that spec. This is why I'm encouraging understanding existing technologies - you don't know you've reinvented the wheel until you're aware of what else is out there. And then a year later you read over the existing technology's specs and realize "wow, these guys were dealing with exactly the same issues we had, only they gave them different names. I wish I'd read this back then!"

      And in response to your camera example? I can give a good guess: probably ordinary-priority, asynchronous best-effort semantics. But just because the camera-plugged-in signal just requires asynchronous best-effort semantics doesn't mean some other event won't require different semantics. Sometime later someone may decide that an event needs high-priority delivery. That's the advantage of having a solid messaging infrastructure - you don't have to worry too much about what kind of message passing semantics you'll need down the road, because you know that no matter what they are, you'll be able to specify them and have them taken care of, transparently.

      --

      --
      CPAN rules. - Guido van Rossum
    3. Re:Response from SystemServices author by nullity · · Score: 2, Insightful

      I'm not as knowledgable in this area as the DBus developers, so I can't tell you all their reasons.

      So one thing is that CORBA tends to take a lot of memory, at least relative to DBus and DCOP. A lot of developers will not add a small feature (and lots of lost small features is a big loss) if it means linking with a big library.

      For this technical reason, and probably for other really good ones too, but also probably political/historical... I don't think a CORBA based solution would fly with KDE. A system DBus that daemon / linux platform developers can target to communicate with "desktop land", regardless of what desktop people use, is very important. Both KDE, GNOME et al need to be willing to *use* this bus. It doesn't even have to replace their old system (CORBA + Bonobo for GNOME and DCOP for KDE), though IMO it would be nice if it did.

  38. This is really simple. by Anonymous Coward · · Score: 5, Informative

    Some of you may not have written your own dists, so here is a breif overview of why this is the stupidest thing I have heard in a very long time.

    1) Bootloader straps a kernel
    2) Kernel mounts a filesystem ro, and loads init from it
    3) init forks a single shell
    4) that shell launches everything found in the inittab
    5) that shell then procedes to run your init scripts

    From that shell what you do is up to you.
    In single user {runlevel S/s} you stop at #4, and start from that shell.

    Any other runlevel will be started from that shell. It doesn't matter if your scripts are written in perl, csh, sh, php, tcl or python.
    It doesn't even matter if you write them in a language that you can compile for extra speed.

    99% of your time is in loading the interpreter, and waiting on the daemons themselves.
    sendmail is extremely slow on loadup, so are other apps. Try setting dhcp, and having it time out.
    or RedHat's retarded Kudzu tool.

    Calling those from a faster interpreter, doesn't make them load or run any faster. It never will.

    If you think runlevels aren't important... Try patching a running system sometime.
    -- Sir Ace

    1. Re:This is really simple. by Cid+Highwind · · Score: 2, Informative

      Calling those from a faster interpreter, doesn't make them load or run any faster. It never will

      No, but a slightly smarter init can start them in parallel, so you can be waiting on dhcp, hotplugd, and kudzu all at the same time. That would make things fater.

      If you think runlevels aren't important... Try patching a running system sometime.

      Why bother? Time spent in runlevel 1 is downtime to your clients anyway; from a normal user's perspective, a system in single-user mode might as well be powered off.

      --
      0 1 - just my two bits
    2. Re:This is really simple. by xenocide2 · · Score: 2, Insightful

      And you're completely ignoring the BASIC FOUNDATION of why this is USEFUL: other SERVICES only have to WAIT on those they DEPEND on. Does loading X require a working DHCP lease? God, I hope not! So what happens is, that fundamental property of modern operating systems, "multitasking" switches between services starting in parallel.

      For the record, right now my init system waits for a dhcp lease before making progress. In essence, everything is started up as if it depends on everything before it. In reality, they often don't. Maybe you think that startup screen is nifty, but most people who've seen init booting my desktop think that 1) its slow 2) its crappy. They just might be right.

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

  39. Because it can be done by ultrabot · · Score: 4, Insightful

    This is what is great about Open Source - people can innovate, create new systems, and if they prove to be good, they can be widely deployed. That's how progress happens, and the heart of a developer rejoices on seeing things like this. In the end, superior technology will triumph, and seeing that he is using Python, he is already well on his way :-).

    And as for all of you sticking to the old stuff, because it's good enough: are you sure you are not just getting old? The time I start to whine about progress ("the old way was good enough") will be a sad day indeed. Or perhaps this is the difference between sysadmin-types and programmer-type: sysadmins like to stick to old shell script based system because it's uniquity, while developers see the opportunities of new technologies and have a certain inborn respect for technological superiority.

    Linux will evolve, live with it. If the old system is indeed better, it will be used indefinitely, but unless we try something different, we will never know. Having some distros doing the thing in an alternative way is a good way to hash this out.

    I for one welcome our new freedesktop.org overlords. I'm really liking the direction that Havoc Pennington and other Gnome-related people are taking as far as desktop things go. We need more dynamic & motivated people like them on powerful positions.

    --
    Save your wrists today - switch to Dvorak
    1. Re:Because it can be done by Anonymous Coward · · Score: 4, Informative

      But that doesn't answer the original question -- what exactly is wrong with the current init process that requires a replacement?

      Say you are on an enterprise that uses a DHCP server for the network. Say the DHCP server is down, but people still can boot their desktops and do work with no network connection, so productivity doesn't go to hell while they don't get an IP.

      Now if you're using dhcp clients on your computer, unplug the network wire. Reboot. See it try for minutes to get a dhcp lease before it continues boot. Now think of services that could trigger the same wait.

      Current init: good for servers, not so for desktops.

    2. Re:Because it can be done by shaitand · · Score: 2, Insightful

      old vs new is irrelevant, it's better vs not that matters. "The old way was good enough" is a horrible reason to want the old way back!! There is no such thing as "good enough", just "good enough for now".

    3. Re:Because it can be done by shaitand · · Score: 2, Insightful

      I'm not sure if this IS progress. But is the question really what's wrong with the current system? is that ever the right question? That's the thought process that leads to stagnation, whether or not new systems should be developed isn't really questionable, of course they should. The question is what advantages and disadvantages do they offer compared to the old.

      If the new system is able to rival the configurability and flexiblity of init (and it sounds like it leaves that at the whim of app developers who are likely to throw in those stubs as an afterthought) AND accelerate boot time and desktop time in one system, one which is equally efficient in terms of cpu, memory, and disk storage and reduced number of depencies... I'll go with it.

      Unfortunately it sounds like this won't be that answer, it sounds like he is reducing flexiblity for the sake of usability. It sounds like he's adding dependencies, and offloading the service startup times to be done at a different point (which feels faster but isn't, it's slower with his added dependancies, especially when done in a bloated language like python.) And it looks like added complexity in terms of code which = bugs out the arse and microbloatlike "technology".

      But hey, we can still hope right?

  40. Why this should not be python by ajs · · Score: 4, Insightful

    Ok, so I'm not the best person to say this because anyone who looks for my publishing credits will immediately realize that I'm a "Perl guy" and thus, I must hate Python (I'm not really a Perl guy, and I don't hate Python, but that's beside the point). I'll go on anyway because this is important, and folks who don't do sysadmin for a living may not have had to think about this.

    init itself is so lightweight and small that it rarely, if ever, fails. This is a good thing, since it's init's job to start a ton of very heavy-weight services.

    That said, I see the logic in bloating init with some of the features that are almost always implemented in a distribution built around it. For example, it would be nice to see init perform some service tracking such that it could be told directly to kill a service, and it could do so.

    Keep in mind that every time you increase the size of init, you remove a class of systems that can now no longer use it because of it's footprint. This matters a lot for some kinds of embeded systems that have just enough brains (that is, RAM and installed libraries/software) that it makes sense to have init today.

    You certainly could not achieve this minimal-growth by re-coding init in Python, Java, Perl, Lisp or any other high-level language. That's not a slam against high-level languages, it's a simple fact of life that their flexibility comes with costs.

    As for the shell-script init-scripts, I certainly feel that all of that should be moved out of init's domain. Each application should have a control program (like apachectl) which knows how to start it, stop it, get status, reload configs, etc. That program can be written in C for speed; a high-level, general purpose language for ease of maintenance; or even in shell. But, the point is that that should not be a constraint of init.

    init, might well provide a library and/or command-line tools to make writing those controlers easier and more modular, but I don't think there should be any REQUIREMENT that your program know anything more than the calling conventions of an "init controler". The more constraints you heap on, the less software is going to ship ready to integrate with your init system, and that way lies far too much integration work to create a workable OS (and thus MORE variants between distributions, not less).

    Once you've done all of that, THEN you can think about the high-level glue so that things like a desktop integrate better.

  41. Re:About time by DA-MAN · · Score: 4, Insightful

    Whoa an AC with some insight. Windows 2000 had a single-threaded boot, kind of like Linux. Load things one by one and in order. Win XP came out with a multithreaded boot process, which brings the system up faster. However it only appears to be ready sooner, it takes the same amount of time to get into a usable state.

    --
    Can I get an eye poke?
    Dog House Forum
  42. it's 2003, not 1997 by axxackall · · Score: 2, Insightful
    All systems come with bash. Why not use it? Python is not needed for this.

    I still remember systems where bash scripts did not work as bash was broken or bash accidently was disabled for the user running the scripts. That time (3-5 years ago) there were many flamewars bash-vs-sh. What's happen? Bash is everywhere. Not precisely everywhere, but more systems have bash today.

    I think the evolution of unix-like operating systems (especially Linux ones) is moved far forward enough to begin flamewars python-vs-bash. Yes, Python is not everywhere, but so isn't bash, Python has just a little bit smaller % of system with no Python, but still many of them have it. Especially if it will be required.

    Why Python? Several years ago Bash won a simple sh just b/c it has a little bit more convinient programming extensions. Even with that Bash is still not exactly general programming language and if you try anything complex on it - you know what I mean. Python is much better for scripting complex tasks. Dependency checking is one of reasons to use it. String parsing, regeneration of config files - another ones. With bash you don't have a good luck to do it.

    Evolution of system tools wasn't frozen these years. Get over it. It's time for real tools to come to the scene. If you don't like it - choose an OS more conservative than Linux, for example BSD - sure they will stisk to a simple sh for a couple of more decades. No wonder it's dea... sorry... :)

    Well, thanks to the project like this, and Gentoo as well, in few years someone will point on this flamewar and say: "remember some conservators did not want to use Python? Now it's time for ..." Who knows, will it be Erlang or Haskell? :)

    --

    Less is more !
  43. Better init Replacement by Vagary · · Score: 2, Funny

    So you're saying that the big complicated scheme this story is about could be skipped if the kernel let you play Tetris while it booted?

  44. thumbs down by jmason · · Score: 2, Insightful
    Gotta say, I hate the idea. I've dealt with unusual apps in charge of starting services in the past (AIX had some kind of DCE-based service control daemon) -- and it was a world of hell. Shell scripts, by comparison, are comprehensible, tweakable, and very very easy to deal with. I know -- this sounds very unlikely -- but any system that has to deal with as many settings/dependencies/external hooks etc. as the boot scripts, is going to be that confusing anyway no matter what language it's in!

    But I do like the idea of parallelization of the boot scripts, and starting X a whole lot earlier (like before the daemons are all started); I hacked up the init scripts to do this on my desktop linux machine a few years ago, and on Solaris and SunOS machines before that, and it was great for boot time.

    Richard Gooch's need(8) and provide(8) tools look like a fantastic way to do this simply, comprehensibly, and without rewriting everything in a new language. that's available here, and that page notes that it should be in versions of init in util-linux since 2.10q.

  45. Look at Mac OS X (SystemStarter) by a1291762 · · Score: 2, Informative

    The SystemStarter process that Mac OS X uses is based on the Next init/rc system which is similar in principle to how FreeBSD does it's init/rc system. Since it's part of Darwin it should be available under a BSD license. I'm sure it could be rewritten to use X rather than WindowServer for it's graphics.

    I think that's a more worthwhile replacement for linux's init/rc system IMHO.

    Link

  46. Parallel loader by DarkOx · · Score: 2, Insightful

    A smarter startup process would be good, perhaps a binary one could really save some time over shell scrips(I doubt this, Most boxen these days are so fast even the most complicated bash scripts for init you can imagine take no time to parse and execute). He plans to use python which is still an interperated languge and not much faster then bash for simple stuff. Still why reqire X and GDM and python and app of the month. Why not wirte a nice little C program with a GUI interface to configure it if you must but make sure it can be configured from the command line or config file as well. I don't see what real advantage in going graphical and therfore more fragile in the init process offers. I don't care if your grandmom or Sysadmin if the console messages had like two modes friendly and verbose everone could be happy. Imagine if it was just like,
    Friendly mode:

    Starting Priniting support
    Starting Sound support
    Printing is ready
    Starting Webserver
    Webserver Ready
    Sound support Ready

    Verbose mode:
    Starting lpd with /r /s
    Loading cs46xx module
    Done: Loading cs46xx module no error
    Done:lpd lp ready.

    you get the idea. If init needs replaceing there are lots of ways to do it and make something everyone can use, for all types of systems heavy server through desktop. I usually don't advocate one size fits all solutions but if your going to start writing custom extensions to deamons that call "services"/init to do stuff I want those apps to work on my desktop so I can experiment with them as well as the server in the back room, that means init needs to be compatible. A separte system for desktops is a BAD idea IMHO.

    --
    Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
  47. Mac OS X, NetBSD rc.d, rcNG, and so on by Guy+Harris · · Score: 4, Informative

    As someone else noted (in an article with a link done as text, not as an , and with an extra blank in it), Mac OS X has a possibly-interesting scheme for starting and stopping system services. Here's the section on System Initialization in the Mac OS X online documentation; in particular, look at the Startup Items stuff.

    It's a dependency-based scheme, like at least some of the other proposed system services mechanisms; see the section on adding your own startup items.

    Note also that Boring Old Init isn't itself changed; /etc/rc runs SystemStarter as its last act, and that starts up the system services. SystemStarter can also be used as a command to start, stop, or restart services, so this isn't just a system startup mechanism.

    NetBSD 1.5 and later have a new rc-based system for controlling services; it's also dependency-based. FreeBSD 5.x has rcNG, which is derived from the NetBSD scheme.

    (Note that all of those systems have a BSD-style init, and thus don't have run levels.)

    Those schemes don't address one of Seth's complaints, however - according to his description in his blog, he doesn't like having shell script wrappers doing the configuration, he wants it done in the service's process itself:

    In other news, reshaped SystemServices around the futile, idealistic goal of having daemons contribute the servicesinstead of silly little shell script wrappers in the future. Ever poked through RH's /etc/init.d/ scripts? Its absurd... they do so much stuff in there that should be included in the bloomin' C code. If you need a check for something, just have the program itself do it.... But of course, these programs were designed to be run with lots of magic brittle flags rather than running and situating themselves intelligently.

    (I express no opinion on this one way or the other; if you like or don't like the idea, send bouquets or brickbats to him, not me.)

    Note also that it appears that he is not designing something just for desktops - in particular, he says:

    The boot process: So first the kernel loads itself, and calls ServiceManager (instead of "init"). The ServiceManager starts the DBus service manually,

    and checks to see if it should be doing a graphical bootup. If it should be, it starts the GraphicalLogin service (which of course may have dependencies to start first).

    Now, whether the kernel should start ServiceManager directly, or whether it should continue to run init and have ServiceManager started from an rc file, is another issue; I'm not sure that there's a compelling argument to eliminate init other than to discourage people from continuing to use the current rc script scheme (which might be Seth's motivation for running ServiceManager as process 1 - he might want to discourage rc script tweaking).

    Perhaps one of the reasons why people thought of ServiceManager as being purely for desktop systems is that they thought that, as D-BUS is somewhat associated with freedesktop.

  48. Re:making or faking? by Tom · · Score: 2, Interesting

    Tested that just now.

    Boot time before change: 41 seconds (*)
    after Change: 31 seconds

    That was a change that took about 15 seconds.

    (*) not 30 as I remembered. Well, I've changed some stuff after I last checked.

    --
    Assorted stuff I do sometimes: Lemuria.org
  49. Please don't fuck up init! by swordgeek · · Score: 2, Insightful

    inetd got buggered until it became xinetd. cron was forced to run side-by-side with the abortion known as anacron. In its defense, vim at least can be made to behave like vi, entirely UNLIKE bash, the sh-incompatabile sh replacement.

    To the Linux developers: QUIT BREAKING THINGS from a "unix-like" perspective. If Linux is going to be an entirely unrelated OS, then fine. If it's going to strive to behave similarly, then quit adding features that break expected behaviour, especially for the reason of being 'really cool.'

    --

    "People who do stupid things with hazardous materials often die." -- Jim Davidson on alt.folklore.urban