cross-posted from: https://programming.dev/post/36342010

Nitro is a tiny process supervisor that also can be used as pid 1 on Linux.

There are four main applications it is designed for:

  • As init for a Linux machine for embedded, desktop or server purposes
  • As init for a Linux initramfs
  • As init for a Linux container (Docker/Podman/LXC/Kubernetes)
  • As unprivileged supervision daemon on POSIX systems

Nitro is configured by a directory of scripts, defaulting to /etc/nitro (or the first command line argument).

  • Zucca@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    16
    ·
    edit-2
    17 hours ago

    I wonder what new does this bring into the table?

    I mean we already have at least these in addition to systemd:

    • OpenRC + openrc-init
    • s6 + s6-rc
    • runit
    • Epoch
    • dinit
    • minit
    • GNU Shepherd
    • finit

    The state being stored in RAM seems like a nifty feature. I like it.

    Very quickly glanced… I think it lacks service supervision and user services. Although user services are missing in many others too. Except it looks like users can run Nitro by themselves (autostart via cron @boot maybe?). Somebody correct me if I’m wrong.

    Anyway, more choices leads to more ideas being implemented. 👍

    • Badabinski@kbin.earth
      link
      fedilink
      arrow-up
      5
      ·
      14 hours ago

      It also lacks any form of dependency management AFAICT. I don’t think there’s any way to say you depend on another service. I’m guessing you can probably order things lexically? But that’s, uh, shitty and bad.

      • Zucca@sopuli.xyz
        link
        fedilink
        English
        arrow-up
        1
        ·
        12 hours ago

        Initial commit on Oct 21, 2023

        If I’d implement a new init system, the dependency system would be one of the first on my TODO list. So… That’s strange. 🤔