• rhabarba@feddit.org
    link
    fedilink
    arrow-up
    2
    ·
    21 days ago

    FreeBSD ist durchaus „General Purpose“. Was systemd angeht: Viele Köche verderben den Brei? Eine Zeitlang war dort Lennart Poettering (inzwischen passenderweise bei Microsoft) Ton angebend, also „viele Menschen kennen den Code“ ändert wenig an „der Code ist schlecht“.

    Dsss viele Menschen „den Code sehen“, bedeutet auch noch nicht automatisch bessere Codequalität. Microsoft bezahlt regelmäßig externe Firmen dafür, „den Code zu sehen“ (und Fehler zu melden). Welchen Teil deiner Linuxdistribution hast du dir schon angesehen und verstanden?

    • Aniki@feddit.org
      link
      fedilink
      arrow-up
      1
      ·
      3 days ago

      ja was denkst du dann war der ursprüngliche grund dass linux überhaupt entwickelt wurde wenn die BSDs eh so toll sind?

      • rhabarba@feddit.org
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        3 days ago

        Das hat einen ganz einfachen Grund: 386BSD, das erste komplett freie BSD (also ohne AT&T-lizenzierten “proprietären” Code*) für PCs, daher auch der Name, kam erst im März 1992 in einer ersten Version “raus”. Linus Torvalds hat später selbst zu Protokoll gegeben:

        If 386BSD had been available when I started on Linux, Linux would probably never had happened.

        Mit “gut” hat das also nichts zu tun, nur mit “gratis”. Er hätte einfach nur ein paar Monate warten müssen.

        * Ganz früher waren Unix und BSD ja sozusagen freie Software Freeware und wurden quasi zum Selbstkostenpreis verteilt. Leider fingen die Rechteinhaber von Unix irgendwann an, das für eine dumme Idee zu halten. Schade.

        • Aniki@feddit.org
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          2 days ago

          If 386BSD had been available when I started on Linux, Linux would probably never had happened.

          ich verstehe, das ist ein interessantes Argument. Ich werde darüber nachdenken, versprochen. :D

            • Aniki@feddit.org
              link
              fedilink
              arrow-up
              1
              ·
              2 days ago

              :D

              was ist dein problem mit systemd?

              ich nenne zuerst einmal die vorteile aus meiner sicht, anhand eines vergleichs:

              man mag ja über JavaScript denken was man mag, aber eine sache haben sie gut hingekriegt, und das ist das modul-system (import bzw. statisches/dynamisches verlinken).

              das modulsystem ist so aufgebaut, dass der programmcode beginnt mit

              import stuffA from './fileA.js';
              import stuffB from './stuffB.js';
              
              console.log("all dependencies loaded...");
              
              

              im gegensatz dazu steht das früher genutzte require:

              const stuffA = requre('./fileA.js');
              const stuffB = require('./stuffB.js');
              
              console.log("all dependencies loaded...");
              
              

              Jedoch hat import den Vorteil, dass es eine “Deklaration” ist, kein “Funktionsaufruf”.

              Das heißt, wenn das System startet, analysiert es zuerst alle Importe, und führt diese Parallel aus. Wenn stattdessen funktionsaufrufe genutzt würden, würden diese erst zur Laufzeit starten und seriell ausgeführt werden. Das wäre aber, vor allem bei vielen Abhängigkeiten, deutlich langsamer.

              Jetzt ist es mit systemd so, dass Services parallel gestartet werden können, weil es sich um Deklarationen (in jeweils eigenen .service files handelt). Bei SysVinit handelt es sich meines wissens nach um bash-skripte, die seriell laufen, und damit um einiges langsamer sind. was sagst du zu diesem einwand?

              • rhabarba@feddit.org
                link
                fedilink
                arrow-up
                1
                ·
                edit-2
                2 days ago

                was ist dein problem mit systemd?

                Es löst das falsche Problem.

                Etwas ausführlicher:

                Jetzt ist es mit systemd so, dass Services parallel gestartet werden können, weil es sich um Deklarationen (in jeweils eigenen .service files handelt). Bei SysVinit handelt es sich meines wissens nach um bash-skripte, die seriell laufen, und damit um einiges langsamer sind. was sagst du zu diesem einwand?

                Zunächst einmal Grundsätzliches: System V ist sh, nicht bash. (Nein, die bash ist keine “bessere sh”.) Aber das ist natürlich Erbsenzählerei. Zu dem Einwand sage ich Folgendes:

                1. Ja, System V lädt Scripts seriell. Nun wurde systemd aber insbesondere als vorteilhaft für Server bezeichnet. Wie oft startest du deine Server neu, dass das überhaupt ins Gewicht fällt? (Startest du deine Desktops neu oder reicht dir da der Ruhezustand?)
                2. systemd macht ja wesentlich mehr als nur Servicestart, sonst wäre es vielleicht eine brauchbare Alternative zu anderen Initsystemen. Leider frisst es sich durch das gesamte System und absorbiert zusehends mehr Dienste. Man kann wohl einen Teil davon immer noch optional laden, aber unter Linux (portabel ist systemd ja zum Glück nicht…) verlassen sich immer mehr Anwendungen darauf, dass das ganze Paket da ist. (Einen Teil dieser Optionen will man nicht haben. Warum muss man hartkodierte Google-IPs nutzen? Warum gibt es keine Option für textbasierte Logdateien, die man einfach greppen könnte?)
                3. Je komplexer die Software, desto mehr Sicherheitslücken weist sie auf. Das ist eine allgemeine Beobachtung, die nicht nur für systemd gilt, aber in einem Prozess, der höchste Rechte im System haben muss, will man das am allerwenigsten.
                4. Die “Dienste” bei systemd sind INI-Dateien. Damit haben wir in den 90ern unter Windows arbeiten müssen. Spaß hat das nicht gemacht.
                5. Alternativen, die weit weniger wuchern, gibt es zuhauf, darunter OpenRC (Gentoo, aber portabel) und runit (Void, aber portabel).