This is (wh)YInit – Unix init system developed in Python.
Q:
What's the point of developing an init system using hi-level language that additionally requires VM (an overhead)? Init systems, after all, should be light and responsive pieces of software.
A:
Let's use Cython!
Python is a flexible object-oriented language, great for expressing complexity – that Init System must deal with.
Currently, init systems go beyond simply being a launch platform. Tasks such as job scheduling, monitoring, log handling, reporting, remote control, and system integration are essential, regardless of whether the environment is a container or a bare-metal system.
Python - and inherently Cython provides a vast diversity of modules that can be used to build:
- web control panel
- hardware support of hardware such as mini-displays and keypards (via GPIO - on boards such as Raspberry Pi)
- communication protocols for system integrations (via e.g. MQTT)
The goal is to develop a modern, feature-rich, and user-friendly init system for Unix that integrates with both bare-metal and containerized environments.
'YInit' goes beyond the scope of a key Init System functinality that is: 'start/stop & monitor' services.
It provides the following functinalities:
For all setyups (bare-metal & container VMs):
- Periodic tasks – Provides cron functionality.
- Web-configurator & REST API – Administrative module for managing configuration over web/api.
- MQTT and mDNS – 'YInit' advertises it's IP using mDNS and provides MQTT for monitoring.
For bare-metal setups: 2. Time – Ensures OS runs with a correct time.
-
Network – Ensures applications are capable of communication (necessary also for a time synchronization).
-
SSD trimming – Ensure partitions located on flash storage are mounted with a TRIM option, and/or periodic trims are enabled.
-
Hardware support – GPIO support to provide: display and keypad interface (for a selected hardware).
Planned 'yInit' feature:
- Parallel boot – boot services in parallel (if no dependency bound).