All Projects → Daniel-Abrecht → fuck_systemd

Daniel-Abrecht / fuck_systemd

Licence: MIT license
A library to bring the joys of non-systemd users to systemd users

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to fuck systemd

system-76-keyboards
Rainbow / CPU monitor for system76 colored keyboards
Stars: ✭ 37 (+94.74%)
Mutual labels:  systemd
systemdlint
Systemd Linter
Stars: ✭ 16 (-15.79%)
Mutual labels:  systemd
wimpy.deploy
Ansible role to automate immutable infrastructure scheduling one docker container on one EC2 instance
Stars: ✭ 21 (+10.53%)
Mutual labels:  systemd
wsl-systemd
A script that spawns a namespace with systemd as PID1, and allows you to spawn interactive sessions or exec commands inside it
Stars: ✭ 37 (+94.74%)
Mutual labels:  systemd
cya
Easy to use snapshot and restore utility for any Linux (Unix) OS and filesystem powered by BASH
Stars: ✭ 73 (+284.21%)
Mutual labels:  systemd
dotfiles
🏡 Personal dotfiles configuration
Stars: ✭ 73 (+284.21%)
Mutual labels:  systemd
InitWare
The InitWare Suite of Middleware allows you to manage services and system resources as logical entities called units. Its main component is a service management ("init") system.
Stars: ✭ 164 (+763.16%)
Mutual labels:  systemd
sysz
An fzf terminal UI for systemctl
Stars: ✭ 1,258 (+6521.05%)
Mutual labels:  systemd
sysdweb
Control systemd services through Web or REST API
Stars: ✭ 65 (+242.11%)
Mutual labels:  systemd
node-systemd-journald
Native bindings to journald
Stars: ✭ 26 (+36.84%)
Mutual labels:  systemd
parca-agent
eBPF based always-on profiler auto-discovering targets in Kubernetes and systemd, zero code changes or restarts needed!
Stars: ✭ 250 (+1215.79%)
Mutual labels:  systemd
deploy
No description or website provided.
Stars: ✭ 23 (+21.05%)
Mutual labels:  systemd
erlang-systemd
systemd utilities for Erlang applications
Stars: ✭ 140 (+636.84%)
Mutual labels:  systemd
dppm
An easy way to install and manage server applications
Stars: ✭ 107 (+463.16%)
Mutual labels:  systemd
go-systemd-time
📅 Go implementation of systemd relative time adjustments
Stars: ✭ 21 (+10.53%)
Mutual labels:  systemd
lua-systemd
Systemd bindings for Lua
Stars: ✭ 33 (+73.68%)
Mutual labels:  systemd
subsystemctl
Utility to run systemd in WSL2 with a Linux namespace
Stars: ✭ 313 (+1547.37%)
Mutual labels:  systemd
gentoo-project-gnome-without-systemd
GNOME Without Systemd
Stars: ✭ 89 (+368.42%)
Mutual labels:  systemd
service-systemd
Setup a node.js app as systemd service.
Stars: ✭ 35 (+84.21%)
Mutual labels:  systemd
systemd-formula
No description or website provided.
Stars: ✭ 24 (+26.32%)
Mutual labels:  systemd

fuck_systemd

What's the problem?

They don't need to use it, but they can if they want to

Surely it is always a good thing to have more options, but to use systemd isn't. Too many different things have been merged into systemd, too many things depend on it. Take libsystemd0 for example, the same library contains, among other things, functions to notify systemd about service state changes (sd_notify), and functions to log messages using journalctl (sd_journal_send). Those are some completely unrelated things which belong into different libraries, so they can be replaced easily. Not to mention, there is a standardized logging function interface available using syslog which is implemented by a lot of logging libraries, and sd_notify is totally useless if all services are written in a somewhat stable way. And no, a service must be able to handle when another service is temporarily unavailable, that's nothing a service manager should do, that would only make services unstable.

libsystemd0 is a noop without systemd, it won't break or do anything without it

It does break things. I mean, what do you expect to happens when you just remove any functionality from a library? It's even worse than returning errors, because it just silently fails. Look at the sd_journal_* functions for example. It replaces syslog which causes any logging service to become incompatible with applications using this useless new API. Of course, they don't put this functionality in a distinct library, and they don't fallback to syslog if systemd is unavailable. In other words: If an application uses sd_journal_* functions for logging, it won't log anything on systems without systemd!

libsystemd0 doesn't depend on systemd, so it's fine

No, it isn't. Just because it doesn't depend on it yet doesn't mean it won't in the future. Honestly there are worse things than libsystemd0. Look at systemd-udevd for example, udev is a core linux service for populating /dev/ and reacting to device changes. Why the hell was it merged into systemd!?! Sure, we got that into control, with devtempfs, eudev and vdev, we have an escape plan for this. But this is just the tip of the iceberg. Did you notice that openssh-server in debian stretch depends on systemd? How could that happen? Over the new systemd-logind dependency of course! PAM isn't good enough anymore I guess? And that's just one example, I haven't even mentioned things like tors' dependencies yet...

There is systemd-shim to substitute systemd, no problem

I don't care, if I don't want systemd, I don't want that shim too. And have you even looked at the package in debian jessie a little bit closer? You can't compile it without systemd! It's a build dependency. I'm scared, I have no Idea how many things may need systemd only to be built, and I haven't noticed yet? Also, what is systemd suddenly decides to drop systemd-shim, surely nobody uses anything else than systemd? I can't take that risk!

But there is no good alternative to systemd anyways, only the ugly sysvinit

There are a lot of other really good init systems, which a much smaller and clearer defined scope than systemd. There are openrc, runit, shepard, upstart, s6, etc. They are all very different, with different goals. Some do some service supervision, some don't. Some use scripts, some don't. And they all get their job done reliably, and often even faster than systemd, even when it comes to sysvinit. Sure sysvinit has it's downsides, but it works well and deterministically. And I can almost hear people screaming that systemd is deterministic too, and that may be true from a theoretical standpoint, but in practice starting services asynchronously will always hide some forgotten dependencies, which will skrew up a system only occasionally. If that's determinism for you, you have a very different definition of determinism than I have. And by the way, have you seen the diagram about systemd bugs? As of the time of this writing, the number of open systemd issues always increased, and this is not accounting for issues closed as "won't fix".

But enough of this, I don't have time to complain about systemd forever.

What is this all about?

When everything depends on systemd, it's really annoying, if not impossible, to remove all systemd dependencies from programs. I mean, I appreciate when a program offers an option to build it without systemd, but it's annoying to do so nonetheless. This is where this library comes into play. An library or application can link against this library without changing any of it's code and will refuse to start the application on a systemd system unless configured otherwise. The systemd user can then experience the pain to recompile the application without fuck-systemd that so many non-systemd users know so well from systemd.

How to build

Just install gcc and run make. Just take the fuck_systemd.o file and add it to the linker step of your program or library. There is also a fuck_systemd-evil.o, which does more evil things than just refusing to start the program on systemd systems, so maybe don't use that one if you aren't evil.

Just keep in mind...

You don't need to use it, but you can if you want to.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].