Why is systemd shit? I've read a lot of arguments on both sides, but I still don't really follow them.
I believe the logic goes something like this: In order for the software to remain free as in freedom(You are free to know what the program does, modify what it does and distriubute your new version), you have to be able to look at the code and know what it's doing. Therefore each piece of software and its code should be kept concise and simple and essentially serve one purpose, enabling any individual with the know-how to check out the code and determine if the software is doing anything they don't want it to do. Linux distros are generally built in this way. The kernel(Linux), the window manager, the web browser, the compilers(gnu) etc are all separate pieces of software made by separate groups and the code for each is available to anyone who wants it, unlike say, Windows where everything is a part of Windows by default and everything is made by Microsoft and you cannot look at the code.
Systemd has evolved to the point where it manages most of your distro's essential services like network connections and it has gotten so big and complicated it's difficult for a single individual or even group of individuals to take a look at the code and make sure it isn't doing anything untoward, such as, say, creating a backdoor for the NSA. This goes against the traditional Linux/Open Source/GNU philosophy.
On the flipside, systemd does so much that the average end user has to do a lot less fucking around to make their computer work. I can remember using Ubuntu back in the early 2000s, for example, and even though it was aimed at novices, there were often things that just didn't work and I'd have to scour the internet looking for a way to get my wireless connection working. That's something I don't really have to do today thanks to systemd managing things like network connections.
Today, most distros are totally dependent on systemd and many pieces of open source software rely on it, causing more controversy because it gives its developers a disproportionate amount of control over the open source community. What if say, the systemd developers decided that the developer of another piece of open source software which relies on systemd is problematic, and thus they purposely break compatibility? Who would stop them? Traditionally you'd just fork the software in that situation, but systemd is so big now, you'd need a whole team of people to do that.
Someone who knows more can correct or add, but I think I have the major points in there.