• BaroqueInMind@lemmy.one
    link
    fedilink
    arrow-up
    198
    ·
    8 months ago

    Someone please convince me why I should hate systemd because I still don’t understand why all the hate exists.

    • Lmaydev@programming.dev
      link
      fedilink
      arrow-up
      123
      ·
      8 months ago

      The idea as far as I can tell is that it’s responsible for too many things and gives a massive point of failure.

      • rmuk@feddit.uk
        link
        fedilink
        English
        arrow-up
        207
        ·
        8 months ago

        Man, wait until these people hear about the filesystem and kernel.

          • psud@lemmy.world
            link
            fedilink
            arrow-up
            14
            ·
            8 months ago

            The Linux kernel (the part that gives Linux the name) is antithetical to Linux philosophy? I could understand it being contrary to GNU philosophy

        • qjkxbmwvz@startrek.website
          link
          fedilink
          arrow-up
          21
          ·
          8 months ago

          In some ways I think the filesystem is philosophically the exact opposite of systemd — I can boot my system with an ext4 root, with a btrfs /home…or vice versa. Or add some ZFS, or whatever. The filesystem is (with the exception of some special backup schemes) largely independent of the rest of the system, despite being of core importance.

          On the other hand, I can’t change my init system (i.e., systemd) without serious, serious work.

      • ricecake@sh.itjust.works
        link
        fedilink
        arrow-up
        69
        ·
        8 months ago

        It’s also “infectious” software. The way systemd positions itself on the system, it can make it more difficult for software to be written in an agnostic way. This isn’t all software, and is often more of a complaint by lower level software, like desktop environments.
        https://catfox.life/2024/01/05/systemd-through-the-eyes-of-a-musl-distribution-maintainer/ This isn’t a terrible summary of some of the aspects of it.

        Another aspect is that when it was first developed, the lead on the project was exceptionally hostile to anyone who didn’t immediately agree that systemd definitely should take over most of the system, often criticizing people who pointed out bugs or questionable design decisions as being afraid of change or relics of the past.
        It’s more of a social reason, but if people feel like the developer of a tool they’re forced to use doesn’t even respect their concerns, they’re going to start rejecting the tool.

          • ricecake@sh.itjust.works
            link
            fedilink
            arrow-up
            37
            ·
            8 months ago

            It’s that it also decided to take over log management, event management, networking, DNS resolution, etc, etc.

            If it were just an init system that would be perfectly portable. People were able to write software that way with sysv for years.

            It’s that in order to do certain low level tasks on a systemd system, you need to integrate with systemd, not just “be started by it”. Now if a distro wants that piece of software, it needs to use systemd, and other pieces of software that want to be on that distro need to implement integration with systemd.

            A dependency isn’t infectious, but a dependency you can’t easily swap out is, particularly if it’s positioned near the base of a dependency tree.

            Almost all of my software can run on x86 or arm without any issues beyond changing compiler targets. It’s closer to how it’s tricky to port software between Mac and Linux, or Linux and BSD. Targeting one platform entails significant, potentially prohibitive, effort to support another, despite them all being ostensibly compatible unix like systems.

            • Vilian@lemmy.ca
              link
              fedilink
              arrow-up
              7
              ·
              edit-2
              8 months ago

              log management, event management, networking, DNS resolution

              and this is a bad thing? the distro can choose to not use it, but because every systemd distro uses it, it’s a 1000x easier to implement it without needing to put a fuck tons of if-else’s for every distro

              • ricecake@sh.itjust.works
                link
                fedilink
                arrow-up
                14
                ·
                8 months ago

                No, not everyone thinks it’s a bad thing. It is, however, infectious, which is a reason some people don’t like it.

                Knowing why people dislike something isn’t the same as thinking it’s the worst thing ever, and liking something doesn’t mean you can’t acknowledge it’s defects.

                I think it’s a net benefit, but that it would be better if they had limited the scope of the project a bit, rather than trying to put everything in the unit system.

                • Vilian@lemmy.ca
                  link
                  fedilink
                  arrow-up
                  4
                  ·
                  8 months ago

                  and what’s the problem?, it’s not like everything is in the same binary or it’s a monstrosity that can’t be used without using every single feature, it’s a project that just has different programs under the same project name, because no one wanted todo theoe programs

            • nick@midwest.social
              link
              fedilink
              arrow-up
              3
              ·
              8 months ago

              Bro I’m with you on this but the systemd bots will just keep arguing with and downvoting you. Don’t bother.

            • radiant_bloom@lemm.ee
              link
              fedilink
              arrow-up
              2
              ·
              8 months ago

              That’s why I personally try very hard to only rely on POSIX stuff, even when it’s massively inconvenient. The only thing I haven’t gotten around to replacing yet is GNU make.

          • Björn Tantau@swg-empire.de
            link
            fedilink
            arrow-up
            19
            ·
            8 months ago

            I think the init system is the best part of systemd. It is sooo easy to use. You don’t have to write the same complicated shell script for your software like everyone else. You just give systemd the path to your executable and that’s basically it. It does the rest and you don’t have to worry about PID files or forking the actual software. Systemd basically runs it like you did while developing it.

            I think what people don’t like are all the other parts of systemd that seem to be tightly coupled. I don’t know if it is even possible to run just the systemd init without any other systemd package.

            The last time I got angry at systemd was when resolvd did some DNS shit I did not approve of.

            • hisbaan@lemm.ee
              link
              fedilink
              arrow-up
              3
              ·
              8 months ago

              I may be wrong but I believe that all of the systemd programs are decoupled. You can run the systemd init system without any resolved or networkd. They just happen to be used by default on a lot of distros.

          • Deckweiss@lemmy.world
            link
            fedilink
            arrow-up
            6
            ·
            edit-2
            8 months ago

            I expect it to not run a stop job for 90 seconds by default every time I want to quickly shut down my laptop. /s

            • snake_case_lover@lemmy.world
              link
              fedilink
              arrow-up
              13
              ·
              8 months ago

              it doesn’t run a job it waits for your jobs to end. You can set the default want time. Its the same thing on windows that asks programs to close before shutting down. If a critical application got stuck systemd has nothing to do with it

              • Deckweiss@lemmy.world
                link
                fedilink
                arrow-up
                6
                ·
                edit-2
                8 months ago

                I know what it is. But it literally says “A stop job is running” and since english is not my first language, I had no good idea how to better express the technicalities of it in a short sentence.

                As for it having nothing to do with systemd:

                I am dual booting arch and artix, because I am currently in the middle of transitioning. I have the exact same packages on both installs (+ some extra openrc packages on artix).

                • About 30% of the shutdowns on arch do the stop job thing. It happens randomly without any changes being done by me between the sessions.

                • 0% of the shutdowns on artix take more than 5 seconds.

                I know that I can configure it. But why is 90 seconds a default? It is utterly unreasonable. You cite windows doing it, but compare it instead to mac, which has extremely fast powerups and shutdowns.

                And back to the technicalities, openrc doesn’t say “a stop job is running”, so who runs the stop job if not systemd?

                • MartianSands@sh.itjust.works
                  link
                  fedilink
                  arrow-up
                  8
                  ·
                  8 months ago

                  The question you should be asking is what’s wrong with that job which is causing it to run for long enough that the timeout has to kill it.

                  Systemd isn’t the problem here, all it’s doing is making it easy to find out what process is slowing down your shutdown, and making sure it doesn’t stall forever

        • Vilian@lemmy.ca
          link
          fedilink
          arrow-up
          3
          ·
          8 months ago

          the develope receive a fuck ton of hate too, and he keep the project going, against every one unix-way haters

          • ricecake@sh.itjust.works
            link
            fedilink
            arrow-up
            6
            ·
            8 months ago

            Well, I don’t give him too much credit for that given that it was his day job, not some passion project.

            Most of the hate towards him was because he took an abrasive stance against anyone who disagreed with him, or pointed out bugs.

      • Pacmanlives@lemmy.world
        link
        fedilink
        arrow-up
        8
        ·
        8 months ago

        Indeed, the Unix philosophy was do one thing and do it well. ls just list directory’s and files it’s not a network manager too. Systemd crams a lot of extra shit into an init.d/rc.

        I still prefer the old system-v/openRC setup or BSD’s setup. It’s simple does 1 job and does it well. But I can work with systemd just fine in creating scripts these days and it does have some nice features like user startup scripts baked into it and podman integrates very nicely with it.

    • ImplyingImplications@lemmy.ca
      link
      fedilink
      arrow-up
      58
      ·
      8 months ago

      My understanding is that some people are die hards to the software philosophy of “do one thing really well”. systemd at the very least does many different things. These people would prefer to chain a bunch of smaller programs together to replicate the same functionality of systemd since every program in the chain fits the philosophy of “does one thing really well”.

      • ramble81@lemm.ee
        link
        fedilink
        arrow-up
        51
        ·
        8 months ago

        For me it’s 3 things

        • Do one thing and do it well
        • Everything is a file in Linux
        • human readable logs

        Systemd breaks all three of though by being monolithic and binary. It actually makes you have to jump through more hoops to do things in certain cases. I understand it’s a mindset shift but it really starts making it feel more like Windows with how it works and the registry and event log.

    • Peasley@lemmy.world
      link
      fedilink
      arrow-up
      15
      ·
      8 months ago

      I don’t hate systemd. However:

      Units and service files are confusing, and the documentation could be a lot better.

      That said, when systemd came out the traditional init stack was largely abandoned. Thanks to systemd (and the hatred of it) there are now a couple of traditional-style init systems in active development.

    • qjkxbmwvz@startrek.website
      link
      fedilink
      arrow-up
      12
      ·
      8 months ago

      I don’t hate it now, though I did when it first came out, as it borked my system on several occasions. I’m still not a fan, but it works so eh.

      One borkage was that the behavior of fstab changed, so if there was e.g. a USB drive in fstab which was not connected at startup, the system would refuse to boot without some (previously not required) flags in fstab. This is not a big deal for a personal laptop, but for my headless server, was a real pain. The systemd behavior is arguably the right one, but it broke systems in the process. Which is somewhat antithetical to, say, Linus Torvalds’ approach to kernel development (“do not break user space”).

      It also changed the default behavior of halt — now, it changed it to the “correct” behavior, but again…it broke/adversely affected existing usage patterns, even if it was ultimately in the right.

      In addition to all of this, binary logs are very un-UNIXy, and the monolithic/do-everything model feels more like Windows than *NIX.

    • StarDreamer
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      8 months ago

      systemd tries to unify a Wild West situation where everyone, their crazy uncle, and their shotgun-dual-wielding Grandma has a different set of boot-time scripts. Instead of custom 200-line shell scripts now you have a standard simple syntax that takes 5 minutes to learn.

      Downside is now certain complicated stuff that was 1 line need multiple files worth of workarounds to work. Additionally, any custom scripts need to be rewritten as a systemd service (assuming you don’t use the compat mode).

      People are angry that it’s not the same as before and they need to rewrite any custom tweaks they have. It’s like learning to drive manual for years, wonder why the heck there is a need for auto, then realizing nobody is producing manual cars anymore.

      • Dran@lemmy.world
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        8 months ago

        There is also the argument that it’s more complicated under the hood and harder to troubleshoot, particularly because of it’s inherent parallelism and dependency-tree design, whereas initv was inherently serial. It was much more straightforward to pick the order in which services started and shut down on an initv system.

        For example, say I write a service and I want it to always be the first service stopped during a shutdown, and I want all other services to wait for it to stop before shutting down. That was trivial to do on an initv system, it’s basically impossible on systemd.

        For those wondering, yes I did run into this situation. My solution was clobbering the shutdown, poweroff, and restart binaries with scripts earlier in path search that stop my service, verify that they’re stopped, and then hook back to systemd to do the power event.

        • Suzune@ani.social
          link
          fedilink
          arrow-up
          2
          ·
          8 months ago

          I had numerous situations where systemd didn’t let me abort a hanging service startup during boot or stop during shutdown.

          So what do I do now, systemd? Wait till infinity??

          That never happened while using other init systems. Because they simply fail properly (“sorry I did my best to stop this, I needed a SIGKILL finally”). Or simply let me log in: “sorry, some services failed to start and now it’s a huge mess, but at least you can log in and fix it.”.

    • rambling_lunatic@sh.itjust.works
      link
      fedilink
      arrow-up
      3
      ·
      8 months ago

      Ever seen a log file be a binary file, not text?

      Ever seen an init system that was also cron?

      Do you want to be forced to use a specific init system in order to use udev?

      Then SystemD is for you!

    • unalivejoy@lemm.ee
      link
      fedilink
      English
      arrow-up
      1
      ·
      8 months ago

      I always thought it was because it was Linux only and wasn’t usable on FreeBSD.

  • BaumGeist@lemmy.ml
    link
    fedilink
    arrow-up
    190
    ·
    8 months ago

    “I am a new linux user. After 15 minutes of research on google, I found a few forum posts and some niche websites that said SystemD was bad, so I took it as gospel. Now my system doesn’t work as simply as it did with installer defaults? How do I make everything Just Work™ after removing any OS components I don’t understand the need for?”

      • ILikeBoobies@lemmy.ca
        link
        fedilink
        arrow-up
        39
        ·
        edit-2
        8 months ago

        He is less technically inclined

        He read a prompt asking if he wanted to remove his system and said yes

        Then complained about it

          • mexicancartel@lemmy.dbzer0.com
            link
            fedilink
            English
            arrow-up
            16
            ·
            8 months ago

            Its partial fault on all sides that added up.

            Ubuntu shipped with that issue for some time and fixed it after some time.

            Pop os iso on the download page contained it.

            The package came from ubuntu but this issue was not visible since up to date pop os does not have this issue. Only the version in iso. So Pop os too made some mistake.

            Linus tried to install steam. The installer does not allow removing necessary packages. He tried to install anyway ignoring all warnings, in cli.

            It says if you are so sure, type “Yes, Do as I say!” with all cases and punctuation correct. Why would you be required to type a very specific phrase to install steam? Its a clear warning for confirmation. He too makes mistake by ignoring all warnings.

            Not to blame anyone but all of them did partial mistake that added up

  • Kazumara@discuss.tchncs.de
    link
    fedilink
    arrow-up
    95
    ·
    8 months ago

    He uninstalled systemd, now his computer is not doing systemd things anymore by his retelling. Seems like it worked fine. Yet he asks for a solution of a problem. Maybe he needs to state the problem.

      • SirQuackTheDuck@lemmy.world
        link
        fedilink
        arrow-up
        52
        ·
        8 months ago

        Nah, more like deleting explorer.exe.

        There’s isn’t really a Windows equivalent for this, as Windows doesn’t give you control on this level.

        It’d be as if you could delete services.msc but also the runner behind it.

        • dubyakay@lemmy.ca
          link
          fedilink
          arrow-up
          13
          ·
          8 months ago

          I did delete explorer.exe on an earlier iteration of Windows (possibly 98SE). I’ve just restored it with Windows Commander (now TCMD).

      • Kazumara@discuss.tchncs.de
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        8 months ago

        But system32 contains the NT kernel as well, so that’s worse. Uninstalling your init system on a Linux distro still leaves you with single user mode. You could probably reinstall an init system from there.

      • areyouevenreal@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        8 months ago

        On Debian you can actually change init systems. Don’t know how hard it is and you are probably meant to install a new one after removing systemd, but it is possible at least.

    • MonkderDritte@feddit.de
      link
      fedilink
      arrow-up
      6
      ·
      edit-2
      8 months ago

      I mean, it can work out if he installs an alternative init & rc and a wifi-manager first. And then recreates initrd. Maybe needs to migrate some dns stuff too.

  • k110111@feddit.de
    link
    fedilink
    arrow-up
    46
    ·
    8 months ago

    Lol this reminds me of a time when I had KDE desktop environment installed on vanilla ubuntu. I thought I didn’t really need ubuntu’s default desktop environment and decided to ‘purge’ it. I quickly realized my f up when it deleted so many packages and ui started to act weird, I copied the shell’s output to a file just incase, and sure enough I couldn’t login with ui on next reboot. I was somehow able to login to shell and with some awk magic I was able to parse the text file to get all the packages I deleted and lo and behold everything worked just fine. Linux let’s you f’up your OS but it also let’s you fix it, it’s just a skill issue.

  • DrM@feddit.de
    link
    fedilink
    arrow-up
    37
    ·
    8 months ago

    I updated my sources.list to something non-existing at some point and run sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove once and it also basically uninstalled everything. But that didn’t even matter, I popped in a recovery disk and could reinstall everything. Pretty great to be able to do all that with Linux, fuck everything up in an instant but after a few hours everything is back again

    • Tibi@discuss.tchncs.de
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago

      Well you could have saved those hours if you were on one of those restrictive OSs. I mean why would anyone even wanna do that? /s

  • woodgen@lemm.ee
    link
    fedilink
    arrow-up
    34
    ·
    8 months ago

    How the fuck is login and “the command line” still working? Maybe they did not reboot.

    • ozymandias117@lemmy.world
      link
      fedilink
      English
      arrow-up
      12
      ·
      8 months ago

      I was curious too, so I tried it in a virtual machine

      It half installed sysvinit, systemd failed to get fully removed, and apt gave up due to too many post-install errors

      The reboot threw me into an init that asked for me to specify the runlevel (since there wasn’t anything in init.d)

      I guess they didn’t understand the difference between that question and a logged in shell

      My guess before trying it was that they somehow got stuck in Grub’s shell

            • ozymandias117@lemmy.world
              link
              fedilink
              English
              arrow-up
              1
              ·
              8 months ago

              (As the tester above) It is a broken state

              It failed to install the initscripts package because apt bailed out

              apt —fix-broken install got you a little closer, but the screenshot didn’t say they tried that

              My bet is this worked when systemd was first introduced, but since there’s not much use for it now, and sysvinit is deprecated, it just doesn’t accidentally work anymore

                • ozymandias117@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  8 months ago

                  You can’t - it’s just asking what runlevel to launch, and there are no files for any runlevel

                  You’d need to add init=/bin/sh through grub at that point

    • lessthanluigi@lemmy.world
      link
      fedilink
      arrow-up
      44
      ·
      edit-2
      8 months ago

      Devuan GNU+Linux is a fork of Debian without systemd that allows users to reclaim control over their system by avoiding unnecessary entanglements and ensuring Init Freedom.

      Gotta love this linux rhetoric, man! It’s so out there.

        • Suzune@ani.social
          link
          fedilink
          arrow-up
          1
          ·
          8 months ago

          You don’t want it until something fails. SystemD often doesn’t let you log in to fix it. It just shows a “infinitely bouncing asterisk” and hopes it will magically get better.