aboutsummaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-03-25 01:00:00 +0100
committerDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-03-25 01:00:00 +0100
commit8216cedecbe10e623484c9219080a04934f78bd0 (patch)
treea41809a83f8310101249623fc13e6abb0dace1ed /README
parent1b3b98135eefe7cf03a379be1d5ebf13369dcfa5 (diff)
Add README file
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'README')
-rw-r--r--README68
1 files changed, 68 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..b9b9528
--- /dev/null
+++ b/README
@@ -0,0 +1,68 @@
+
+ This directory contains the source code for a tiny init devised for
+ the Pygos system.
+
+ The main goal of this project is to create a simple framework for:
+ - system boot up and initialization
+ - service supervision
+
+ With the additional aims of having something that:
+ - simply works
+ - is easy to understand
+ - is easy to configure and maintain
+
+
+ The init process is intended to run on top of Linux and makes use of some
+ Linux specific features (e.g. signalfd), but if sufficient interest exists,
+ it should still be possible to make it run on some BSDs or whatever else.
+
+ The init system tries to mimic the concept of unit files from systemd as
+ those were considered to be a good design choice.
+
+ Right now, the system is in a "basically works" proof of concept stage and
+ needs some more work to become usable.
+
+ There are plans for *maybe* *eventually* adding support for Linux name
+ spaces, seccomp filters and cgroups as needed in the medium future.
+
+
+ There are already a bunch of similar projects out there that have been
+ considered for use in the Pygos system. The reason for starting a new
+ one was mainly dissatisfaction with the existing ones. Other Projects
+ that have been considered include:
+
+ - systemd
+ Contains a lot of good ideas, but it is HUGE. It has tons of
+ dependencies. It implements tons of things that it simply shouldn't.
+ It has a horrid, "modern", python based, hipster build system.
+ It's simply too damn large and complex.
+
+ - SystemV init
+ A bad combination of unnecessary complexity where it isn't needed and a
+ complete lack of abstraction where it would be needed. Shell script
+ copy and paste madness. There are reasons people started developing
+ alternatives (other than "hurr-durr-parallel-boots").
+
+ - upstart
+ Seems nice overall, but needlessly big and complex for the intended
+ use case in Pygos. Would have needlessly added D-Bus to the system.
+
+ - OpenRC
+ Was already integrated into Pygos. Things turned out to be broken.
+ Upstream developers did not accept fixes (after ignoring them for weeks
+ and preferring typo fixes instead). Complaints from other people who
+ tried to contribute fixes were observed on Github. Complaints from
+ package maintainers about deteriorating code quality were observed
+ on the official IRC channel. Documentation is non-existent.
+
+ - daemontools and similar (runnit, s6, minit, ...)
+ The sixties are over. And even code from that era is more readable. The
+ source code for those projects should better be tossed out the window and
+ rewritten from scratch. If you are a first semester CS student and you
+ hand something like this in as a homework, the best you might get is a
+ well deserved slap on the back of your head.
+
+ - busybox init
+ Nice and simple. Probably the best fit if the rest of your user space is
+ busybox as well.
+