Ώστε θέλεις να αντικαταστήσεις το init system; Κάνε το σωστά

Εδώ και λίγες μέρες έβαλα στόχο να δω γιατί το systemd έχει προκαλέσει τόσο θόρυβο και αν είναι τόσο κακό όσο λένε. Σε άρθρα εδώ παρουσιάζω ότι καλό ή κακό βρίσκω χωρίς φανατισμούς και ιδεοληψίες. Να προσθέσω πως δεν είμαι κάποιος ειδικός για να έχει κάποιο μεγάλο βάρος η γνώμη μου, που μπορεί να είναι λάθος.

Δείτε τα άρθρα για το systemd, καθώς και άλλες γνώμες (αν υπάρξουν), ακολουθώντας το tag: https://linux-user.gr/tag/systemd.

Αλλά πρέπει για να είναι δίκαιος κάποιος να δει και να εναλλακτικά συστήματα που υπάρχουν. Υπάρχουν μικρές ομάδες και διανομές που προσπαθούν να παρουσιάσουν κάτι διαφορετικό. Σε αυτό το σύντομο σχόλιο α παρουσιάσω τι ανακάλυψα και θα πω πως να το κάνεις σωστά. Κάτσε και ποιος είσαι εσύ που θα πεις τι είναι το σωστό; Σωστή παρατήρηση. Επαναδιατυπώνω: Πώς να το κάνεις σωστά για να πείσεις εμένα.

Και εγώ είμαι κάποιος που θέλει να πειστεί. Ω ναι θέλω! Είχα πειστεί μάλιστα. Όταν μπήκε στην διανομή μου το systemd είχα προετοιμαστεί για μαύρες μέρες που όμως πότε δεν ήρθαν. Κάθε φορά που έβλεπα αναβάθμιση του systemd, έτρεμε το φυλλοκάρδι μου και ήμουν έτοιμος να βρω το σύστημα διαλυμένο :stuck_out_tongue: Οι μέλισσες ποτέ δεν ήρθαν.

Κοιτάζω στο github και το systemd έχει 1266 ανοικτά issues. Κοιτάζω το cinnamon και έχει 631, το nemo 239. To cinnamon ο αριθμός το αδικεί. Φταίει που πριν ένα χρόνο έσβησαν μαζικά πολλά ανενεργά :stuck_out_tongue: Θα κρίνω το λογισμικό μόνο από αυτό; Είναι το cinnamon και το systmed άχρηστα; Όχι θα πρέπει να υπολογίσω και άλλους παράγοντες. Τα issues είναι ένα από αυτά. Το πλήθος των λαθών σε ένα πρόγραμμα είναι συνάρτηση α. Της ηλικίας του, β. Του πλήθους των ανθρώπων που το χρησιμοποιούν, γ. Το εύρος των εργασιών που κάνει και δ. προφανώς και της ικανότητας των προγραμματιστών, του σχεδιασμού και της προγραμματιστικής μεθοδολογίας.

Οπότε μην μου λες σαν επιχείρημα πως κάποιο init τρέχει μια χαρά στο σύστημα του ατόμου που το αναπτύσσει για 10 χρόνια. Θα ήταν για τα μπάζα αν δεν ήταν έτσι. Μόλις αρχίσει να το χρησιμοποιεί πολύς κόσμος, μόλις αρχίσει να το πάει στα όρια του, μόλις αρχίσει να κάνει τρελά πράγματα που δεν το περιμένεις, τότε θα αποδειχθεί. Μέχρι τότε είναι απλά μια ένδειξη.

Απομόνωσε τους φωνακλάδες
Αυτή είναι και η πρώτη και η καλύτερη συμβουλή. Όχι μόνο δεν κάνουν καλό στην υπόθεση, αλλά κάνουν ζημία και στον στόχο σου, αλλά και το Linux γενικότερα. Το να λες άσχημα λόγια για άλλες διανομές, ή να παραπληροφορείς, δεν κάνει σε κανένα καλό. Επικεντρώσου στο να δείξεις το τι κάνεις καλύτερα. Ούτε το να κάνεις μπάχαλο το Debian, να αναγκάζει ανθρώπους να παραιτηθούν μπας και ηρεμήσουν ή με απειλές κατά της ζωής (κάπου ένα έλεος δηλαδή) κάνεις κάποιο καλό είτε στην υπόθεση σου, είτε στο ελεύθερο λογισμικό γενικότερα.

Ο κώδικάς είναι το 10% της δουλείας
Δεν αρκεί να φτιάξεις το καλύτερο σύστημα. Θα πρέπει να κάνεις και άλλους να το χρησιμοποιήσουν. Πήγαινε σε συνέδρια και κάνε ομιλίες, οι μπύρες και η συζήτηση πάνω σε αυτές είναι η καλύτερη διπλωματία. Γράψε υλικό για όλα τα επίπεδα που να εξηγεί τι κάνεις, γιατί επέλεξες μια λύση και όχι μια άλλη και ποια τα πλεονεκτήματα. Βοήθησε τους προγραμματιστές με υλικό και με ευγενικά pull requests. Βοήθησε με να βρω υλικό να αποφασίσω και όχι να το ψάχνω με τα κιάλια.

Το systemd έχει κάνει αυτή την δουλεία καλά και έπεισε. Έλυσε υπαρκτά προβλήματα, χωρίς προβλήματα συμβατότητας και με ευκολία ενσωμάτωσης. Δεν φταίει η Redhat. Αυτή συνεχίζει να αναπτύσσει εναλλακτικά του dbus. Γιατί να το κάνει εφόσον έχει άλλη ατζέντα; Και γιατί να την ακολουθήσει η SuSE και η Cannonical αν είναι έτσι; Μήπως απλά γιατί είναι η καλύτερη γενική λύση;

Χρησιμοποίησε τα σωστά επιχειρήματα
Όχι δεν φταίει η συνωμοσία του Gnome. Αυτό θέλει κάποια πράγματα και βρήκε αυτό που το εξυπηρετεί καλύτερα. Το ίδιο θα πράξει και το kde αργά η γρήγορα προς όφελος όλων. Φτιάξε μια άλλη λύση που να τους καλύπτει. Κάνε για αυτούς την δουλεία της αλλαγής. Και όχι τον να βγάζεις έξω κομμάτια του systemd, και να τρέχεις το Gnome δεν κάνεις το σύστημα σου systemd-free, δεν μειώνεις τον κώδικά και δεν παρέχεις μια εναλλακτική λύση. Απλά αποδεικνύεις πως το systemd δεν είναι τόσο μονολιθικό όπως λες.

Περί του init-feedom
Αυτό είναι ένα τσιτάτο, ένα καλό θα πρέπει να ομολογήσω. Όλοι μας θέλουμε επιλογές, και οι διανομές χωρίς systemd δείχνουν πως δεν το στερεί κανείς. Τώρα θα πρέπει να κάνουν την δυσκολότερη δουλεία να μας δείξουν γιατί είναι καλύτερες. Με τα σωστά επιχειρήματα. Ας δούμε ένα λάθος

Ναι κάτι που τρέχει ++Services θα ξεκινήσει πολύ ποιο γρήγορα από κάτι που τρέχει μόλις 5 :stuck_out_tongue:

Αλλά είχαμε πάντα ελευθερία επιλογών στο Linux; Τα πράγματα έχουν αρχίσει να αλλάζουν μόλις πριν λίγα χρόνια, αλλά μέχρι πριν λίγο καιρό:

  • Είχαμε μόνο μια σοβαρή και ελεύθερη υλοποίηση του X11. Η μετάβαση απο το xfree στο x11.org έγινε σε μια νύχτα. Σήμερα έχουμε δυο επιλογές και σύντομα μόνο μια το wayland (Εντάξει τυπικά είναι πρωτόκολλο αυτό).
  • Είχαμε μόνο ένα compiler τον gcc. Σήμερα έχουμε και το llvm
  • Είχαμε μόνο μια σοβαρή σουίτα γραφείου. Εναλλακτικά όπως το abiword και το koffice πάντα υπήρχαν, αλλά δεν ήταν ανταγωνιστικά, και σήμερα έχουμε και κάποια εμπορικά.
  • Είχαμε ένα web browser τον firefox. Οι λύσεις σήμερα είναι περισσότερες, αλλά μην αναφέρεις τον konquerror ή το lynx.
  • Έχουμε ακόμα και σήμερα, μόνο μια λύση για τους εκτυπωτές το cups. Και δεν μου αρέσει
  • Έχουμε ακόμα και σήμερα, μόνο μια υλοποίηση του SMB με το samba
  • Έχουμε ακόμα και σήμερα, μόνο μια υλοποίηση για scanning.

Για το runit
Αρκετά με το κήρυγμα, ας εξετάσουμε κάποιες λύσεις. Μέσα στο ψάξιμο και για να είμαι δίκαιος πρέπει να τις κοιτάξω και αυτές. Το runit δεν προσπάθησε αρκετά. Που είναι μια παρουσίαση του σε κάποιο συνέδριο; Δεν βρήκα καμία με μια πρώτη ματιά. Ας μπούμε στην σελίδα του θα μας πληροφορήσει πως

One of the runit project’s principles is to keep the code size small. As of version 1.0.0 of runit , the runit.c source contains 330 lines of code; the runsvdir.c source is 274 lines of code, the runsv.c source 509. This minimizes the possibility of bugs introduced by programmer’s fault, and makes it more easy for security related people to proofread the source code.

(Μετάφραση: Δεν κάνουμε πολλά και τα αφήνουμε το βάρος σε αυτούς που φτιάχνουν τις διανομές και τα services). Δεν βρήκα κάποια τεχνική πληροφορία του πως το κάνει, πόσο ποιο εύκολο είναι να έχω την ασφάλεια του systemd και τα πλεονεκτήματα του. Κοίταξα τον κώδικα του και βρήκα πως έχει να ανανεωθεί από το 2014! Με ποια λογική λοιπόν κάποιοι το προτείνουν μια σύγχρονη εναλλακτική λύση;

Για το s6
Έδώ τα πράγματα είναι κάπως καλύτερα. Στην σελίδα που λέει πως είναι καλύτερο έχει απλά μια αναφορά στο systemd. Για να βρω τεχνικές αιτιάσεις θα πρέπει να πάω σε emails και σε σχόλια χαμένα σε φόρουμ. Ναι αλλά ο χρόνος μου είναι πολύτιμος. Δείχνει να έχει κάποιες καλές ιδέες, αλλά όπως είπα παραπάνω αυτό δεν αρκεί. Θα πρέπει να κάνουν καλύτερη δουλεία στην παρουσίαση του. Μακάρι να το δουν σοβαρά και να το κάνουν, γιατί κανέναν δεν θα χαλάσει αν υπάρξει κάποια καλύτερη εναλλακτική.

Το πρόβλημα δεν είναι το λογισμικό, το πρόβλημα είναι οι άνθρωποι
Το πρόβλημα είναι η αλληλεπίδραση μεταξύ αυτών των δυο, γιατί είναι κομμάτι του ίδιου συστήματος. Και κάποιες φορές το χειρότερο είναι καλύτερο (the worst is better). Είμαι άδικος απέναντι στις εναλλακτικές λύσεις; Ναι είμαι. Γιατί δεν μου δημιούργησαν καμία διάθεση να κοιτάξω αυτές τις λύσεις παραπέρα. Αλλά τα αυτιά μου είναι ανοικτά σε κάθε καλό επιχείρημα, και πάντα πρόθυμος να αλλάξω γνώμη. Το απέδειξα αυτό με το systemd. Αλλά δεν είμαι ούτε ανεμοδούρας ούτε κονφορμιστής. Κάνε μια καλή παρουσίαση, ανέξου τον διάλογο, παρουσίασε καλά επιχειρήματα και θα σε ακούσω. Ο χώρος εδώ είναι ανοικτός για κάθε πολιτισμένο διάλογο.

Χρειαζόμαστε τα εναλλακτικά συστήματα: Ναι θα το πως καθαρά να μην υπάρξουν παρεξηγήσεις. Οι δουλεία που κάνουν όσοι φτιάχνουν εναλλακτικές διανομές και init είναι πού σημαντική και πολύτιμη. Το επόμενο σύστημα που θα αντικαταστήσει το systemd θα έχει μάθει από τον σχεδιασμό του και από τα λάθη του - πάντα την πρώτη φορά σε κάτι καινοτόμο κάνεις λάθη - και θα ωφεληθούμε όλοι. Ο ανταγωνισμός αν υπάρχει κάνει καλό. Αλλά να υπάρχει αυτός και να μην είναι μόνο θόρυβος.

Και κάθε τι έχει μια χρήση. Μέσα σε ένα docker container για παράδειγμα έχει μεγάλα πλεονεκτήματα κάτι ελαφρύ όπως το runit.

Για την φιλοσοφία του UNIX
Μία έγκυρη κριτική απέναντι στο systemd είναι πως δεν ακολουθεί την φιλοσοφία του UNIX του Make each program do one thing well.. Ας την δούμε αυτή, όπως είχε διατυπωθεί το 1978:

  1. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new “features”.
  2. Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.
  3. Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them.
  4. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you’ve finished using them.

Αν έχει νόημα μια φιλοσοφία, που όμως μας πήγε τόσο μακρυά, ας εξετάσουμε κατά πόσον το systemd την παραβιάσει. Υπογράμμισα κάποια σημεία. Θεωρώ που το systemd την ακολουθεί πλήρως, με μόνη εξαίρεση το σημείο 2. Αλλά αυτό είχε νόημα μόνο σε περιβάλλον τερματικού. Οι υπολογιστές δεν είναι ίδιοι με το 1978 και τα γραφικά περιβάλλοντα και το web, θέλουν άλλες λύσεις. Αν την παραβιάζει το systemd την παραβιάζει και το XML και το json πολυ περισσότερο και ας είναι σε μορφή κειμένου. Το binary log του systemd δουλεύει μια χαρά στο τερματικό κάτι που δεν μπορώ να πω για τα δυο πρώτα. Εσάς ποια είναι η γνώμη σας;

Διαβάστε

5 Likes

Ενταξει, sorry για το «θορυβο», αλλά ειπα να το γραψω…

πολυ σκλαβιά βρε παιδια… :grin: :grin: :grin:

_ _ - - _ _ - - _ _ - - _ _

Τωρα στα σοβαρα.

Αν και δεν εχεις αδικο να το βλεπεις ετσι, φαινεται πως τελικα πιο πολυ μετραει το μαρκετιγκ, αν κρινω απο αυτο που εγραψες παραπανω, παρα κατι άλλο. Γενικοτερα η κατασταση στα δικα μου ματια (που δεν εχουν τεχνικη γνωση), δειχνει να ειναι προβληματικη. Απο τη μια υπαρχει μια τεχνολογια (το systemd) που δειχνει να ειναι αρκετα ολοκληρωμενη και συγχρονη θα ελεγα (αν καταλαβα καλα τα αρθρα που εγραψες), αλλά που ουτε αυτοι που την καλοβλεπουν δεν την χρησιμοποιουν συμφωνα με τις δυνατοτητες της (ειπαμε για αυτους που τους αρεσει αυτη η τεχνολογια), γιατι «κανείς» δεν ξερει τοσα πολλα για αυτη (και ας υπαρχει χρόνια) ωστε να προχωρησει σε υλοποιησεις, και απο την άλλη, υπαρχουν εναλλακτικες για τις οποιες ειναι γνωστα ακόμα λιγοτερα πραματα. Και αυτο ειναι μονο ενα απο τα προβληματακια που μπορει να βρει κανεις… Βεβαια να ριξεις φως στην κατασταση αυτη πας, αλλά το τι πρεπει να «δει» ο μεσος χρητης απο ολο αυτο, ειναι ενα μπερδεμα. Πολυ φοβαμαι οτι για κατι που ειναι πανω απο το μεσο χρηστη, θα ερθει η στιγμη που θα του πουνε, «ας προσεχες τι διαλεγες»…

Όπως λέει και ένα γνωστό ποίημα του Ελύτη

Απέναντι σε αυτό η πρόταση να πας για μπίρες και να δώσεις μια ομιλία σε ένα συνέδριο και να γράψεις μερικά άρθρα ακούγετε καλύτερα. Δεν ακούγετε;

Αχ αυτή η κινδυνολογία για πρόγραμμα με άδεια LGPL μιλάμε. Ας δούμε το παρελθόν. Μόλις το xfree86 πήγε να κάνει κολπάκια με το X11, την επόμενη όλες οι διανομές βάλανε το xorg. Μόλις η Oracle πήγε να κάνει κολπάκια με το OpenOffice περάσαμε στο LibreOffice. Η όλη ιστορία είναι μια κλάσική περίπτωση FUD. Παλια το έκανε η Microsoft απέναντι στο Linux. Τώρα που δεν το κάνει δεν μπορούμε χωρίς αυτό και το κάνουμε αναγκαστικά εμείς μόνοι μας :slight_smile:

Όχι δεν είναι θέμα marketing. Είναι θέμα ανθρώπινης συμπεριφοράς και στο ότι δεν είμαστε όσο ορθολογιστές πιστεύουμε ότι είμαστε. Μελέτησε το https://wiki.c2.com αν ποτέ βρεις χρόνο. Αξίζει τον κόπο.

Και δεν είναι θέμα καμίας άγνοιας. Οι διαχειριστές συστημάτων αυτά τα ξέρουν πολύ καλά χρόνια τώρα. Εμείς οι απλοί χρήστες δεν τα ξέρουμε (και ούτε χρειάζεται) και ούτε και τα καταλαβαίνουμε. Σε κάποια από τα άρθρα προσπάθησα να είμαι όσο ποιο απλός μπορούσα, αλλά πόσοι θα κάτσουν να τα διαβάσουν και να τα καταλάβουν σε βάθος; Συνήθως κερδίζει όποιος δώσει μια απλή απάντηση, γιατί όλοι μας θέλουμε να ζούμε σε ένα ξεκάθαρο κόσμο. Αν δε δώσεις και ένα εχθρό φανταστικό ή μη ακόμα καλύτερα. Μόνο που ο κόσμος εκεί έξω είναι πάντα ποιο πολύπλοκος, μη γραμμικός και αναλογικός. Ο Μανιχαϊσμός είναι όμως πάντα μια ποιο βολική έκδοση της πραγματικότητας.

Γιατί δεν έχουμε καθαρές διανομές με systemd; Όχι γιατί δεν το καταλαβαίνουν όσοι φτιάχνουν διανομές, αλλά για πολλούς άλλους λόγους. Ένας από αυτούς είναι οι φωνακλάδες. Αλλά υπάρχουν και άλλοι: Γιατί τα πάντα προχωράνε αργά, γιατί κάθε τεχνολογία θέλει να ωριμάσει, γιατί πολλά προγράμματα περιμένουν να βρουν κάποιες υπηρεσίες και θέλουν χρόνο να αλλάξουν, γιατί πρέπει να έχεις συμβατότητες με το παρελθόν, γιατί πρέπει να διαβάσουμε και κανείς δεν έχει τέτοια διάθεση … Αλλά κάποια στιγμή το πιθανότερο είναι πως θα γίνει.

1 Like

κινδυνολογια; fud;
Με εξεπληξαν αυτα (πιο πολυ το fud). Αλλά τωρα που ξαναδιαβαζω τι εγραψα, ναι, θα μπορουσε καποιος να το παρει ετσι, δεδομενου οτι το θεμα περι systemd και εναλλακτικα init ειναι φορτισμενο και κυκλοφορουν προδιαθεσεις. Ας το παρω αλλιως λοιπον. Ολο αυτο το μπερδεμα (σε μενα μπερδεμα φαινεται) μπορει να προκαλεσει εξελιξεις που θα μας πανε μπροστα. Εγω παντως το χρησιμοποιω το systemd και στο rasbian και (λιγο) στο bunsenlabs γιατι δε χρησιμοποιω μονο την mx (καθοτι δεν τα παω καλα με το μανιχαϊσμό). Ομως το τι θα γινει, πιο πολυ αποτελεσμα μαρκετιγκ (εξακολουθει να) μου φαινεται, παρα πόση μπυρας :slight_smile:

1 Like

Μια ερωτηση.

Για αυτους που απλα δεν πινουν το koolaid και απλα δεν το θελουν για τον οποιοδηποτε λογο… γιατι δεν υπαρχει δηνατοτητα επιλογης;

Γιατι ολες οι διανομες εχουν systemd εκτως απο 3 - 4 και ο μονος τροπος να μην το χρησιμοποιησεις ειναι να αλλαξεις διανομη;

Μπορεις να αλλαξεις DE (απο KDE μπορεις να πας σε LXQt ή LXDE ή ΜΑΤΕ), να αλλαξεις keyboard Input method, να αλλαξεις drivers (πχ απο κλειστους της Nvidia στους ανοιχτους του Nouveau) γιατι να μην υπαρχει ενας τροπος απλος με πακετο η οτιδηποτε μιας και τεχνικως υπαρχει τροπος (το αποδειξε το Devuan το MX και αλλες διανομες);

Παρεπιπτοντως (και σωστα η οχι) πιστευω οτι το sysvinit ηταν και ειναι συντηρησιμο. Αρκει να δει καποιος το changelog στο πακετο του Debian (που ακομα και στο 10 υπαρχει σαν sysvinit-core το οποιο δεν το εχω δοκιμασει να δω τι ακριβως βγαζει και τι ακριβως αντικαθηστα) υπαρχουν αλλαγες απο το 2014 μεχρι και σημερα. Και παρολο που ολοι που πινουν το koolaid λενε ειναι απαρχαιομενο και αλλα ωραια και ομορφα… ειμαι σιγουρος οτι τα ιδια λεγαν και για το Wayland και το Xorg/X11 και ακομα εδω ειναι και το εχουμε. Το Wayland ακομα να το αντικαταστησει και το X11/Xorg μια χαρα δουλευει. Απλα δεν θελανε να κανουν το refactoring (κατα την δικια μου αποψη) και ξεκινησανε απο την αρχη… Νομιζω το λενε… Not Invented Here Syndrome :slight_smile: Οπως επησεις λενε oti μπορεις να μαθεις σε εναν γεροσκυλο καινουργια κολπα (για να μην τα λεω ολα αγγλιστη :slight_smile: ). Αρκει να υπηρχαν οι προγραμματιστες για να του τα δειξουν :slight_smile:

Υπάρχει μια απλή απάντηση: Γιατί το systemd με ένα εύκολο τρόπο αντικαθιστά το παλιό σύστημα και ταυτόχρονα παρέχει λύσεις σε χρόνια προβλήματα. Γιατί απορρίπτουμε την πιθανότητα να είναι απλά γαμάτο; Διάβασε το

για να δεις ένα από τα πολλά που διαφέρει. Συν τα χαρακτηριστικά ασφάλειας συν το πολύ καλό σύστημα logging συν τον ενιαίο τρόπο διαχείρισης, συν την καλύτερη διαχείριση. To socket activation το ότι δεν θέλεις να έχεις κάποιον supervisor, και το κερασάκι στην τούρτα η γρήγορη εκκίνηση. Ένα ενναλακτικό τι έχει να προσφέρει; Πέραν του ότι δεν είναι systemd; Ρωτώ και ξαναρωτώ και απάντηση δεν παίρνω.

Ας δούμε ένα πολύ απλό παράδειγμα για μια πολύ απλή υπηρεσία την rsyslog. Πρώτα με το SySV. Θέλω να προσπαθήσεις να το διαβάσεις και να δεις τι θα καταλάβεις.

xed /etc/init.d/rsyslog
#! /bin/sh
### BEGIN INIT INFO
# Provides:          rsyslog
# Required-Start:    $remote_fs $time
# Required-Stop:     umountnfs $time[Unit]
# X-Stop-After:      sendsigs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: enhanced syslogd
# Description:       Rsyslog is an enhanced multi-threaded syslogd.
#                    It is quite compatible to stock sysklogd and can be 
#                    used as a drop-in replacement.
### END INIT INFO

#
# Author: Michael Biebl <biebl@debian.org>
#

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="enhanced syslogd"
NAME=rsyslog

RSYSLOGD=rsyslogd
DAEMON=/usr/sbin/rsyslogd
PIDFILE=/run/rsyslogd.pid

SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Define LSB log_* functions.
. /lib/lsb/init-functions

do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   other if daemon could not be started or a failure occured
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $RSYSLOGD_OPTIONS
}

do_stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   other if daemon could not be stopped or a failure occurredKeith Packard
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
}

#[Unit]
# Tell rsyslogd to close all open files
#
do_rotate() {
	start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --exec $DAEMON
}

create_xconsole() {
	XCONSOLE=/dev/xconsole
	if [ "$(uname -s)" != "Linux" ]; then
		XCONSOLE=/run/xconsole
		ln -sf $XCONSOLE /dev/xconsole
	fi
	if [ ! -e $XCONSOLE ]; then
		mknod -m 640 $XCONSOLE p
		chown root:adm $XCONSOLE
		[ -x /sbin/restorecon ] && /sbin/restorecon $XCONSOLE
	fi
}

sendsigs_omit() {
	OMITDIR=/run/sendsigs.omit.d
	mkdir -p $OMITDIR
	ln -sf $PIDFILE $OMITDIR/rsyslog
}

case "$1" in
  start)
	log_daemon_msg "Starting $DESC" "$RSYSLOGD"
	create_xconsole
	do_start
	case "$?" in
		0) sendsigs_omit
		   log_end_msg 0 ;;
		1) log_progress_msg "already started"
		   log_end_msg 0 ;;
		*) log_end_msg 1 ;;
	esac

	;;
  stop)
	log_daemon_msg "Stopping $DESC" "$RSYSLOGD"
	do_stop
	case "$?" in
		0) log_end_msg 0 ;;
		1) log_progress_msg "already stopped"
		   log_end_msg 0 ;;
		*) log_end_msg 1 ;;
	esac

	;;
  rotate)
	log_daemon_msg "Closing open files" "$RSYSLOGD"
	do_rotate
	log_end_msg $?
	;;[Unit]
  restart|force-reload)
	$0 stop
	$0 start
	;;
  try-restart)
	$0 status >/dev/null 2>&1 && $0 restart
	;;
  status)
	status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $?
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|rotate|restart|force-reload|try-restart|status}" >&2
	exit 3
	;;
esac

:

Ναι όλα αυτά συν κάτι μαγικά comments στην αρχή. Και θα πρέπει να κάνεις τις εξαρτήσεις με το χέρι, και κάθε τι που θα το χρειαστεί θα πρέπει να περιμένει. Και για να κρατήσει τον κώδικα μικρό θα καλέσει την start-stop-daemon. Και θα πρέπει να στήσω επίσης ένα logrotate καθώς και κάποιο supervisror σε ένα επαγγελματικό σύστημα. Δες την προσπάθεια που καταβάλει ο συγγραφέας στο να ξεκινήσει η διαδικασία σε ένα σχετικά ασφαλές περιβάλλον ορίζοντας το $PATH.

Ας δούμε τώρα το αντίστοιχο σε systemd. Προσπάθησε να το διαβάσεις και να το καταλάβεις

cat /lib/systemd/system/rsyslog.service
[Unit]
Description=System Logging Service
Requires=syslog.socket
Documentation=man:rsyslogd(8)
Documentation=https://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n -iNONE
StandardOutput=null
Restart=on-failure

# Increase the default a bit in order to allow many simultaneous
# files to be monitored, we might need a lot of fds.
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target
Alias=syslog.service

Και αυτό ήταν. Και θα τρέξει σε ένα ασφαλές περιβάλλον που μπορώ να το ρυθμίσω και να το κάνω ποιο ασφαλές, και θα ξεκινήσει αυτόματα αν συμβεί κάτι κακό. Πήγα να δω το αντίστοιχο unit στο Clear Linux και είπα τι κάνεις; Αφού δεν το έχει και δεν το χρειάζετε. Και αν μια καινούργια υπηρεσία αγνοήσει το sysvinit και υποστηρίξει το systemd τότε και ο εσωτερικός της κώδικας θα είναι πολύ απλούστερος.

Το sysvinit ήταν και είναι συντηρίσιμο γιατί ε δεν κάνει και τίποτα. Φορτώνει την δουλεία σε όλους τους άλλους. Αν έπρεπε να συντηρήσεις μια διανομή πιο από τα παραπάνω θα επέλεγες; Και γιατί να επιλέξεις να συντηρείς και το πρώτο, την στιγμή που δεν παρέχει κανένα όφελος και είναι χειρότερο; Αν κάποιος είναι μαζοχιστής ας το κάνει. Αλλά έναν χρήστη σε τι ακριβώς τον νοιάζει τι σύστημα init χρησιμοποιεί; Πράγματα κοντά στον kernel ειναι ποιο πολύ λειτουργικό παρά εφαρμογές και δεν αλλάζουν τόσο εύκολα. Κάποια στιγμή βγήκε το udev που πήρε τον έλεγχο όλων των συσκευών. Ευτυχώς κανένας σήμερα δεν θυμάται τι είχαμε στο παρελθόν, και κανένας δεν θέτει θέμα device-manager free.

Τώρα αν κάποιος θέλει για τον οποιοδήποτε λόγο ελευθερία επιλογής στο init και να υποστηρίξει όλα τα πιθανά init μπορεί να το κάνει. Δεν τον εμποδίζει κανείς. Δεν ξέρω αν υπάρχει έστω και μια διανομή να το κάνει, αλλά μπορεί να κάνω λάθος.

Για το X11 δεν θα σε υποβάλω στην ταλαιπωρία να διαβάσεις ένα πρόγραμμα 2-3 σελίδων για να φτιάξεις ένα απλό τετράγωνο κουτί που να γράφει Hello World για να δεις πόσο απαρχαιωμένο είναι. Δες καλύτερα την ιστορία του απο τον άνθρωπο, τον Keith Packard, που το έκανε να “δουλεύει” όπως το χρησιμοποιούμε σήμερα. Και το χρησιμοποιούμε απλά σαν ένα προβολέα εικόνων. Όσο για την ασφάλεια του Χ11 ας μην ανοίξω το στόμα μου καλύτερα :grin:.

Που έχει χαθεί η ελευθερία μας να στήσουμε τον font-server της επιλογής μας; (Τους θυμάται κανένας αυτούς;) Ποια συνωμοσία μας ανάγκασε να χρησιμοποιούμε όλοι HarfBuzz, fontconfig, freetype, pango και cairo ; (Για το τελευταίο τουλάχιστον έχουμε και το skia).

Ο Keith Packard ειναι ο ορισμός του γερόλυκου, αλλά μάλλον θα διαφωνήσει μαζί σου :innocent:

Το ότι μια χαρά είχαμε τα κάρα στο παρελθόν, και μια χαρά κάναμε την δουλεία μας, δεν είναι λόγος να μείνουμε σε αυτά, ειδικά αν οι δρόμοι έχουν αλλάξει. Δεν είναι πλέον χωμάτινοι αλλά αυτοκινητόδρομοι ταχείας κυκλοφορίας. Κάπως έτσι έχουν αλλάξει και οι υπολογιστές.

Για να υπάρξει δυνατότητα επιλογής, πρέπει κάποιος να κάνει τον κόπο να δημιουργήσει και να συντηρεί την επιλογή. Κάποιοι προγραμματιστές έκριναν ότι είναι ασύμφορο να συντηρούν 2-3-5 inits ταυτόχρονα. Δικός τους είναι ο κόπος και έχουν το δικαίωμα να επιλέξουν πού θα επικεντρωθούν. Οι προγραμματιστές γενικότερα δεν υπάρχουν για να δημιουργούν επιλογές για τους χρήστες.

Υπάρχουν διανομές χωρίς το systemd. Αυτή είναι μια επιλογή. Υπάρχουν διανομές που υποστηρίζουν πολλαπλά inits. Αυτή είναι μια ακόμα επιλογή. Το να επιθυμούμε όμως οι προγραμματιστές της Χ διανομής που μας αρέσει να υποστηρίξουν ένα άλλο init είναι απαίτηση και ως χρήστες δεν έχουμε κανένα τέτοιο δικαίωμα.

Η αποψή σου είναι λανθασμένη, πιθανότατα γιατί δε γνωρίζεις ότι πολλοί από τους προγραμματιστές του Wayland είναι πρώην του Χorg και μάλιστα στο παρελθόν έχουν αναφερθεί στις αδυναμίες (τεχνικές και ασφάλειας) του Xorg (δηλαδή της δικής τους δουλειάς, που σίγουρα τη γνωρίζουν καλύτερα από εμάς).

Πιθανότατα, επίσης, δε γνωρίζεις πόσο τραγική ήταν παλιότερα η κατάσταση με τις προηγούμενες υλοποιήσεις του Xorg και το XFree86. Μιλάμε για μια τεχνολογία 30+ ετών. Refactoring σε τέτοιο “δεινόσαυρο” θα ήταν τιτάνιο έργο δεκαετιών και ορισμένα επιμέρους στοιχεία απλά δε γίνεται να βελτιωθούν.

1 Like

Συγνωμη εκ των προτερων για το “σεντονι” (ξερω οτι ισως φαινομαι φλυαρος για καποιους) απλα ειναι κατι που δεν ξερω πως αλλιως να το εκφρασω…

Για να δουμε. SystemD, OpenRC, Runit, Sysvinit. 4 inits μεχρι τωρα. Και η δικια μου γνωμη ειναι λαθος. Οκ μεσα. Ειμαι λαθος. Τοτε γιατι υπαρχουν αυτα τα πακετα εν ετει 2020 στο Debian 10? Ετσι για εντυπωσιασμο; Χμμ, Και αν θυμαμαι καλα μιλαμε για επιλογη. Τι ακριβως επιλογη υπαρχει ΑΝ ολα τα Desktops εχουν dependencies μονο στο SystemD; Και εδω ειμαι λαθος; Οκ και παλι μεσα. Δικος τους και ο χρονος. Ναι ειναι εθελοντες. Αλλα εθελοντες για ενα project παγκοσμιων διαστασεων που ειτε θελου ειτε δεν θελουν θα χρησιμοποιηθουν απο χρηστες. Δεν πρεπει να υπαρχει επιλογη για αυτους; Αν οχι γιατι προσπαθουμε να πεισουμε κοσμο και κοσμακι να χρησιμοποιησει το GNU/Linux και τις διανομες τους; Αν ειναι μια επιλογη μη εμφανισιμη στους χρηστες ας την κανουμε εμφανης. Ας τους δοσουμε ενα λογο να διαλεξουν κατι αλλο ή να κανουν next next next. Δεν προσπαθω να πεισω κανεναν να μην χρησιμοποιησει το SystemD. Απλα δεν συμφωνω στο να μην υπαρχει αυτη η επιλογη εστω και αν δεν προτιματε. Στο Debian, μπορεις αν θες να διαλεξεις να βαλεις GNOME3 ή KDE, ή οποιο αλλο DE θες… να βαλεις ή να μην βαλεις web server, SSH server, CUPS server κλπ κλπ. Γιατι οχι μια απλη επιλογη στο tasksel; Ποση προσπαθεια θελει αυτο;

Και οι προγραμματιστες δεν ειναι χρηστες; Ολοι μιλαμε οτι ο χρονος ειναι χρημα… και η ευκολια σημερα ειναι η πιο λιωμενη καραμελα απο ολους εμας που θελουμε το GNU/Linux να γινει mainstream. Ξαφνικα τωρα την ξεχασαμε γιατι οι προγραμματιστες δεν δημιουργουν λυσεις για απλους χρηστες; Και τοτε γιατι το SystemD μας μπηκε στην μυτη; Συμφωνα με τον @Asfodelus λυνει προβληματα μακροχρονια… και τα αλλα Inits; τι κανουν το ιδιο δεν κανουν με την δικια τους προσεγγιση; Δεν αξιζουν να υπαρχουν σαν επιλογη για οσους απο μας θελουν κατι διαφορετικο; Δεν ξερω αν μιλαω κινεζικα… απλα καθαρα ελληνικα μιλαω (αν και ανορθογραφα…). Εφοσων υπαρχουν αυτα τα πακετα και ολη η τεχνικη δουλεια υπαρχει εχει γινει ειναι documented και υπαρχουν λυσεις και για συντηρηση αλλα και για εξεληξη… γιατι χρειαζομαστε διαφορετικες διανομες… και γιατι οι προγραμματιστες του SystemD δεν εχουν βαλει εναν τροπο ετσι ωστε να πουνε… ρε παιδια… ενταξει δεν γουσταρει ολος ο κοσμος το SystemD… αντι να λεμε… ε και; ας τους βαλουμε και αυτους στους υπολογισμους μας… ας τους δοσουμε ενα τροπο να δουλευουν με αλλα init συστηματα… με τον ιδιο τροπο που δουλευουν αρκετα υποσυστηματα στις διανομες… τοσο δυσκολο στην συντηρηση ειναι να υπαρχει κατι τετοιο στο SystemD; Ειμαι τοσο λαθος στο σκεπτικο μου; Πρεπει να υπαρχει απο αντιδραση το Devuan γιατι δεν μπορουσε το Debian να συντηρησει το systemd-shim? με τοσες αρχιτεκτονικες που υποστηρηζει και ενα πακετο που θα εκανε την αλλαγη μια χαρα οπως και στο Debian 8 δεν μπορουσαν να συντηρησουν;

Υπαρχει software σε mainframes γραμμενο σε FORTRAN που δουλευει ακομα. Μην τρελαινομαστε. Επηδει ειναι δυσκολο να συντηρηθει κατι δεν σημαινει οτι θα το πεταξουμε 30+ χρονια πειρας σε κατι που δουλευει για να φτιαξουμε κατι αλλο εξ αρχης… και αν δεν κανω λαθος (και διορθωσε με αν οντως ειμαι σε λαθος τροχια) το Wayland δεν ξεκινησε σαν πραγματικος αντικαταστατης του Xorg και μετα εγινε απλα ενας compositor (τουλαχιστον τα πακετα του Debian τον περιγραφουν σαν “wayland compositor infrastructure”); Τι ακριβως λυσεις δινει ενας compositor σε ζητηματα ασφαλειας του X11/Xorg (χωρις καμια παρεξηγηση απλα δεν εχω εμβαθυνει τις γνωσεις μου στο θεμα αυτο).

Δεν μιλαω για ελευθερια… αλλα για επιλογες. Τα συγκεκριμενα μπορουν να χρησιμοποιηθουν (αν δεν κανω λαθος) σαν dependencies σε διαφορα προγραμματα και δεν θα ριξουν το συστημα κατω… οποτε δεν υπαρχει θεμα… Οπως μπορουμε να εχουμε GTK+2, GTK+3, QT5 και παλι ολα σε ενα συστημα χωρις να τρωει φλασια το εν λογω συστημα. Και παλι υπαρχει συνεργασια. Το init οπως και τα desktop sessions ειναι μονο ενα την φορα. Σε παλια συστηματα που δεν χρειαζεται και τοσο πολυ το γρηγορο boot και τα υπολοιπα features του SystemD θα μπορουσε να μπει ενα SysVInit ή ενα OpenRC ή ενα runit για ποιο απλο συστημα. Δεν ειναι τυχαιο που το MX τρεχει μια χαρα και σε παλια συστηματα αλλα και σε καινουργια. Υπαρχει use case για αλλα Init και δεν ειναι δηνατον η λυση μας αντι να ειναι ενα παραπανω κλικ στην εγκατασταση να λεμε παντα στους χρηστες… αλλαξε διανομη γιατι δεν γινεται αλλιως. Ειναι παραλογο.

Ευχαριστως να τον συναντουσα και ειμαι σηγουρος οτι μεσα απο τις διαφωνιες μας θα μαθω παρα πολλα.

Οχι ολοι. Δεν εχουμε ολοι Ryzen 9 με 32GB RAM και Vega καρτες με 8GB VRAM. Δεν ειναι ολοι οι υπολογιστες ιδιοι και δεν εχουμε ολοι τα χρηματα για τελευταιου τυπου υπολογιστες. Ας ειμαστε ρεαλιστες. Τo GNU/Linux πρεπει να τρεχει σε μεγαλη γκαμα απο μηχανιματα και με το SystemD το μοναδικο init δεν ειναι παντα ευκολο παρολες τις ευκολιες που παρεχει.

Ναι; Υπάρχει κάποιο λινκ που το δηλώνει; Μια έρευνα, μελέτη, κάτι;

Όπως ειπώθηκε, ο προγραμματιστής έχει να σκεφτεί πώς θα διασφαλίσει το πρόγραμμά του να δουλεύει σωστά σε πολλές εναλλακτικές περιβάλλοντος.
Λόγω έλλειψης χρόνου, κόβει κάποιες εναλλακτικές.

Π.χ. αν ο χρήστης είναι τυφλός, πρέπει να δημιουργήσω interface για τυφλούς, με braille, speakers etc.
Αντ’ αυτού, γράφω μια γραμμή στο Readme ότι η εφαρμογή δεν καλύπτει τυφλούς χρήστες και τέλος.
Φυσικά, το παράδειγμα είναι τεχνικό.
Είναι ρατσισμός; Ε τότε, όπως απαντούν οι πάσα ένες προγραμματιστές, γράψε μόνος σου… :laughing:

Τις τελευταίες μέρες έχω κάνει μια προσπάθεια να εξηγήσω κάποια πράγματα, ώστε να καταλάβουμε τις επιλογές που έγιναν, και να μπορέσει να γίνει κουβέντα επί μιας πρακτικής βάσης και όχι αναμασώντας τα ίδια και τα ίδια. Να ξεκαθαρίσω πως όταν μιλάω για αυτοκινητόδρομο μιλάω για ένα ταπεινό Raspberry Pi :raspberry: και όταν μιλάω για χωματόδρομο για κάποιο VAX αξίας μερικών εκατομμυρίων δραχμών τις εποχής.

Όλη η λύση στα προβλήματα σου είναι απλή. Δεν σου αρέσει η υπάρχουσα κατάστασ;η; Φτιάξε την δική σου διανομή και κάνε την όπως σου αρέσει. Δεν ξέρεις να το κάνεις; Μάζεψε ανθρώπους και κανονίστε να πληρώνετε σε 30-40 προγραμματιστές μισθό με κάποιο σύστημα δωρεών και δώστε τους τις προδιαγραφές.

Κάποιες φορές το πορτοφόλι κανονίζει :P Αν το κάνεις μια θερμή παράκληση: Πες τους να φτιάξουν και ένα εναλλακτικό font rendering stack. Έχουμε μόνο ένα και δεν υπάρχει ελευθερία επιλογής. Και το fontconfig χρησιμοποιεί κάτι απαίσια αρχεία XML. Αυτήν την έλλειψη επιλογής την βρίσκω ποιο ενοχλητική. Και κάτι καλύτερο από το samba και το cups γιατί ούτε εκεί έχουμε επιλογές. Πιστεύω θα έπιαναν έτσι καλύτερο τόπο τα λεφτά. Αλλά ας μην κάνω κουμάντο στο πορτοφόλι των άλλων, (ή στον χρόνο τους αν η ομάδα το γράφει μόνη της), αν και είναι τόσο εύκολο.

Η κάθε κριτική πρέπει να γίνετε με γνώση. Το wayland για παράδειγμα δεν υπάρχει. Είναι απλά μια προδιαγραφή για ένα compositor. Αν κοιτάξεις τα σχετικά πακέτα θα βρεις α. κάτι αρχεία XML που περιγράφουν ένα πρωτόκολλο, και β. κάποια προγράμματα που μεταφράζουν αυτό το πρωτόκολλο σε C header files. Ναι ακριβώς αυτό είναι και τίποτε άλλο. Το wayland δεν αντικαθιστά κανένα X11, ο compositor που υλοποιεί το πρωτόκολλο, όπως πχ το kwin στο KDE το αντικαθιστά. Και άλλα κομμάτια όπως πχ η διαχείριση των συσκευών HID έχει πάει στον πυρήνα και στο xinput. Κυρίως αυτό, αλλά και ένα πλήθος άλλων τεχνολογιών είτε στον πυρήνα, είτε στο systemd είτε στο dbus με το polkit παρέχει το process isolation.

Δεν είναι κακό που ρωτάς, είναι ένας τρόπος να αποκτήσεις άποψη ρωτώντας πολλούς. Προβληματικό όμως είναι, επέτρεψε μου να το πω, να σχηματίζεις απόλυτες απόψεις, χωρίς πρώτα να έχεις τις απαντήσεις γιατί κάποιο λογισμικό ή μια διανομή επέλεξε την μια λύση και όχι την άλλη. Όσο για τα εναλλακτικά init έχουν τον ρόλο τους. Σε embedded συστήματα, μέσα σε docker containers κλπ. Κάποιες φορές και αυτά είναι περιττά και μπορείς να τα αντικαταστήσεις με ένα απλό bash script. Κάποιες άλλες ακόμα και το ίδιο το λειτουργικό είναι περιττό και κάνεις δουλεία με ένα unikernel. Στην τεχνολογία τίποτα δεν είναι άσπρο/μαύρο. Αλλά αν περιορίσουμε την συζήτηση σε ένα desktop ή σε ένα server μηχάνημα οι επιλογές είναι περιορισμένες. Και εδώ θα ξαναρωτήσω για δέκατη(?) φορά: Ποιο τεχνικό πλεονέκτημα έχει ένα εναλλακτικό init system απέναντι στο systemd και γιατί να το προτιμήσω.

Όσο για τις τεχνολογίες που θα χρησιμοποιούμε αυτές θα αλλάζουν συνεχώς και κάθε φορά θα επιλέγουμε την μη χειρότερη λύση. Κάποιες φορές μια τεχνολογία θα είναι τόσο αξιοπρεπής και θα αντικαταστήσει τις προηγούμενες και δεν θα έχουμε επιλογή, κάποιες φορές δεν θα είναι τόσο εύκολο να διαλέξουμε για όλες τις περιπτώσεις και κάποιες άλλες φορές (βλέπε γραφικά περιβάλλοντα και διανομές) δεν θα θέλουμε καν να διαλέξουμε. Και η ιστορία θα συνεχιστεί. Μέχρι η cannonical να ξαναπροσπαθήσει με το ulaunch2 :cold_face: :cold_face: :cold_face: :cold_face:

Θα προσπαθήσω να απαντήσω στα κυριότερα σημεία του σχολίου σου αλλά να ξέρεις ότι γράφεται «systemd», γιατί ακολουθεί τη λογική της ονοματοδοσίας των daemons, και όχι «SystemD»

Υπάρχουν γιατί το Debian θέλει να είναι «The Universal Operating System» και διαθέτει κάποιες χιλιάδες συνεισφέροντες και συντηρητές, εντούτοις η υποστήριξη για αυτά τα inits δεν είναι ισόποση αλλά υποστηρίζεται επίσημα μόνο το systemd, και μάλιστα έπειτα από δύο διαφορετικές ψηφοφορίες. Μπορείς να διαβάσεις την τελευταία σχετική πρόταση που ψηφίστηκε από τις 8 συνολικά που προτάθηκαν.

Αυτό είναι θέμα των DE αλλά, επί του παρόντος, δεν έχουν όλα dependencies μόνο στο systemd. Υπάρχουν όμως και άλλα συστατικά τα οποία παλιότερα είχαν «επιλογές» αλλά πλέον δεν έχουν. Αυτό έγινε (ενδεικτικά) γιατί η λύση που επικράτησε προσφέρει καλύτερη λειτουργικότητα, είναι πιο σύγχρονη ή διαθέτει σοβαρή υποστήριξη.

Οι επιλογές θα υπάρχουν αν υφίσταται σοβαρός λόγος και αν μπορούν να υποστηριχτούν κατάλληλα. Όχι απλά για να λέμε ότι έχουμε επιλογές.

Όχι, δεν «πρέπει», γιατί οι προγραμματιστές δεν πληρώνονται από τους χρήστες και το ΕΛ/ΛΑΚ δεν είναι εμπορικό προϊόν ώστε να προκύπτει η ανάγκη ικανοποίησης των πελατών. Αν θέλει ο εκάστοτε προγραμματιστής, μπορεί να παρέχει εναλλακτικές. Αν δε θέλει, πάλι μπορεί να το κάνει. Αν πάλι κάποιος τρίτος επιθυμεί να υπάρχει μια πρόσθετη επιλογή, μπορεί να ακολουθήσει έναν από τους τρόπους που ανέφερε ο Talos.

Δεν ξέρω ποιοι είστε «όλοι εσείς» αλλά σίγουρα διαφέρετε από «όλους εμάς» που δε θέλουμε αυτά που ανέφερες και, βεβαίως, κανένας προγραμματιστής δεν είναι υποχρεωμένος να λάβει υπόψη του είτε εσάς είτε εμάς. Όποιος επιθυμεί κάτι άλλο είτε το υλοποιεί μόνος του είτε βρίσκει κάποιον που είναι πρόθυμος να το υλοποιήσει. Έτσι λειτουργεί το ΕΛ/ΛΑΚ.

Γιατί στην πραγματικότητα οι λύσεις για συντήρηση και εξέλιξη δεν υπάρχουν αλλά το έργο έχει πάψει να αναπτύσσεται σοβαρά, γιατί μπορεί να υπάρχουν αλλά κανένας να μην ενδιαφέρεται να ασχοληθεί με αυτές τις τεχνολογίες, γιατί η εκάστοτε τεχνολογία μπορεί να είναι πιο πολύπλοκη και λιγότερο λειτουργική από την επικρατούσα εναλλακτική, γιατί οι προγραμματιστές ορισμένων διανομών δεν επιθυμούν να προσθέσουν στους εαυτούς τους φόρτο εργασίας για την υποστήριξη πολλαπλών inits (ενδεικτικές απαντήσεις).

Για τον ίδιο λόγο που οι προγραμματιστές του GTK+, για παράδειγμα, δεν έχουν κάνει καμία ενέργεια ώστε οι σχετικές γραφικές εφαρμογές να έχουν καλή εμφάνιση σε όλα τα DE: δεν τους αφορά και δεν τους ενδιαφέρει.

Βεβαίως υπάρχει αλλά καλύπτει απλά ένα niche και δεν αποτελεί κύριο συστατικό των διανομών. Επίσης, μερικές φορές είναι προτιμότερο να ξεκινήσεις κάτι από το μηδέν παρά να αναλώσεις χρόνο και προσπάθεια σε κάτι άλλο που δε θα μπορέσει ποτέ να γίνει όπως επιθυμείς. Η πείρα δεν πετιέται. Αντίθετα, προγραμματιστές προσπαθούν να φτιάξουν κάτι άλλο, που δε θα έχει τις ίδιες αδυναμίες με άλλη τεχνολογία που έφτιαξαν οι ίδιοι άνθρωποι.

Το Wayland δεν είναι compositor αλλά πρωτόκολλο για compositors, όμως η ερώτησή σου έχει βάση και θα σου απαντήσω με δύο διαφορετικά παραδείγματα:

  1. Πρόβλημα ασφάλειας του Xorg που αποκαταστάθηκε: για δεκαετίες, ολόκληρος ο Xorg έτρεχε στο σύστημα με δικαιώματα root. Αυτό σημαίνει πως οποιαδήποτε ενέργεια στο γραφικό περιβάλλον είχε δυνητικά αυξημένα δικαιώματα. Απασχολούσε τους χρήστες; Όχι, γιατί «απλά δούλευε» και επιπλέον απολάμβαναν την «ευκολία» του να ανοίγουν τον κειμενογράφο π.χ. με δικαιώματα υπερχρήστη. Ελπίζω όμως να κατανοείς γιατί είναι σοβαρό πρόβλημα ασφάλειας η εκτέλεση του stack γραφικών ως υπερχρήστης.

    Πώς αποκαταστάθηκε: από τη μία, δημιουργήθηκε η δυνατότητα να τρέχει ο Xorg χωρίς να απαιτούνται δικαιώματα υπερχρήστη και από την άλλη αξιοποιήσαμε τις δυνατότητες του polkit και πλέον, αν θέλουμε για παράδειγμα να προσαρμόσουμε το αρχείο /usr/share/doc/document.txt, δε θα ανοίγουμε ολόκληρο τον κειμενογράφο μας ως υπερχρήστες -δημιουργώντας μια μεγάλη επιφάνεια δυνητικών επιθέσεων- αλλά θα κάνουμε τις αλλαγές μας με τα περιορισμένα δικαιώματα του χρήστη μας και μόνο η διαδικασία αποθήκευσης του προσαρμοσμένου αρχείου θα γίνεται με δικαιώματα υπερχρήστη.

    Συνοψίζοντας, χρειάστηκε συνδυασμός δύο διαφορετικών τεχνολογιών και η αντίστοιχη δουλειά για να λυθεί ένα πρόβλημα δεκαετιών.

  2. Πρόβλημα ασφάλειας του Xorg που δε μπορεί να αποκατασταθεί ικανοποιητικά στον ίδιο τον Xorg: έστω ότι τρέχεις δύο γραφικές εφαρμογές και η μία είναι κακόβουλη. Επειδή δεν υφίσταται απομόνωση, αυτή μπορεί όχι μόνο να γνωρίζει και να καταγράφει επακριβώς τι κάνει η άλλη, η αθώα, εφαρμογή σου αλλά και να επηρεάσει τη λειτουργία της.

Μάλλον μπερδεύτηκες σαν κανονικός χρήστης θα γίνει.

Ας το πούμε κάπως διαφορετικά. Στο παρελθόν κάποια πράγματα θα έπρεπε να τρέξουν με δικαιώματα υπερχήστη. Κάθε γνωστή υπηρεσία συστήματος ξεκινούσε σαν υπερχρήστης, έκανε ότι έπρεπε να κάνει σαν υπερχρήστης και στην συνέχεια εθελοντικά άφηνε τα δικαιώματα και έτρεχε σαν κανονικός χρήστης. Αυτό και επιπλέον κώδικα ήθελε και την επιφάνεια επίθεσης αύξανε, και τα λάθη είναι αναπόφευκτα.

Με το systemd μια υπηρεσία σαν τον apache θα ξεκινήσει σαν κανονικός χρήστης. Θα πάρει την πόρτα 80 έτοιμη και δεν θα θέλει επιπλέον αρμοδιότητες μόνο για αυτό τον λόγο. Επιπλέον το apache απαιτεί ελάχιστα πράγματα από τον πυρήνα. Να διαβάζει αρχεία και να στέλνει/παίρνει δεδομένα από το δίκτυο κατά κύριο λόγο. Και με μια απλή γραμμούλα σε ένα unit καταφέρνεις να μπορεί να κάνει μόνο αυτά και να μην την αφήνει να κάνει ο πυρήνας οτιδήποτε άλλο.

Καταλαβαίνεις ελπίζω τα πλεονεκτήματα και γιατί τα παραδοσιακά init δεν είναι λύση. Λιγότερος κώδικας, χρήση των ιδιαίτερων μηχανισμών που έχει ο πυρήνας του Linux και μεγαλύτερη ασφάλεια.

Όχι, δε μπερδεύτηκα. Στο συγκεκριμένο παράδειγμα με τον κειμενογράφο, ο απλός χρήστης δεν έχει, προφανώς, δικαίωμα εγγραφής στον φάκελο /usr/share/doc. Οπότε η επεξεργασία θα γίνει με τα δικαιώματα του χρήστη αλλά, αν επιλέξουμε αποθήκευση, θα μας ζητηθεί κωδικός γιατί ενεργοποιείται το δικαίωμα εγγραφής του υπερχρήστη.

Το δικό σου παράδειγμα με τον Apache ισχύει αλλά είναι διαφορετική περίπτωση (δεν υφίσταται σε αυτό γραφική διεπαφή που να τρέχει με αυξημένα δικαιώματα).

Εννοείται ότι γνωρίζω τα πλεονεκτήματα του systemd και δεν υποστήριξα ποτέ ότι τα παραδοσιακά inits είναι λύση. Το αντίθετο υποστηρίζω.

1 Like

Μεταφέρω κάποια συμπεράσματα μιας ιδιωτικής συζήτησης που είχα πριν λίγες μέρες:

Αν λοιπόν βγει ένα εναλλακτικό σύστημα init που είναι καλύτερο στα σημεία, θα αντικαταστήσει το systemd. Η δική μου θέση ήταν πως αυτό δεν είναι καν απαραίτητο, αρκεί η ομάδα που θα το προωθήσει να κάνει σωστή δουλεία στην παρουσίαση του, και αποφύγει την ταύτιση της με τους διάφορους “ευαγγελιστές”. Οι τελευταίοι έχουν κάνει τόσο πολύ θόρυβο που ακόμα και αν είναι, όχι καλύτερο, αλλά μόλις στο 80% των δυνατοτήτων του, πολλές διανομές θα πιεστούν και θα το υιοθετήσουν.

Αλλά μετά η κουβέντα ήρθε στο

Και στον νομπελίστα Herbert A. Simon. Η πικρή αλήθεια είναι πως δεν διαλέγουμε πάντα ορθολογικά το καλύτερο.

Ας μιλήσουμε για κάτι άλλο. Ας μιλήσουμε για το git. Αυτό βγήκε το 2005 και ήταν τόσο καλύτερο που ξεχάσαμε σύντομα τα cvs και svn που πριν χρησιμοποιούσαμε. Η αγορά του github από την Microsoft έγινε το 2018, όταν είχε γίνει η μετάβαση. Αν είχε γίνει νωρίτερα, πιστεύω θα είχαμε κινήματα για version-control-freedon και git-free. Και κόσμος θα έλεγε πως τίποτα κακό δεν έχει το cvs.

Αλλά είναι το git το καλύτερο του είδους του; Μετά που βγήκε κόσμος άρχισε να γράφει εναλλακτικά dvcs. Μερικά από αυτά είναι το Darcs, το GNU arch, το Fossil, το BitKeeper και βέβαια το Mercurial. Και κάποια από αυτά ήταν καλύτερα. Αλλά το git ήταν “αρκετά καλό” παρότι έχει τα προβληματάκια του, κάθε IDE το υποστήριζε από το κουτί και υπήρχε το github.

Αν επέλεγες κάτι άλλο η αναλογία μόχθου/απολαβών δεν άξιζε τον κόπο. Για να αξίζει τον κόπο θα έπρεπε η εναλλακτική πρόταση να απείχε τόσο όσο το git από τα προηγούμενα ή έστω να παρέχει αρκετά ώστε να αξίζει τον κόπο. Εκείνη την εποχή μου άρεσε το Mercurial αλλά είχα μπλεχτεί με το rails όπου ήταν όλοι στο github. Η απόφαση πάρθηκε από άλλους για μένα και σήμερα είμαι ικανοποιημένος με το git.

Στο τέλος το git νίκησε. Όχι γιατί ήταν καλύτερο, αλλά γιατί ήταν αρκετά ποιο καλό από τις προηγούμενες λύσεις.

Οπότε, αν θεωρητικά κάποια στιγμή, προκύψει κάτι καλύτερο (ή έστω ότι υπάρχει αυτό σήμερα και είναι καλύτερο ή χειρότερο κατά 20%) τι πιστεύετε πως θα συμβεί σε βάθος χρόνου; Θα γίνει η μετάβαση ή όχι;

2 Likes

Όλα για εμένα είναι σχετικά. Τι θα πει καλύτερο και χειρότερο. Πρώτα πρέπει να ορίσουμε αυτό. Ας πούμε εγώ δεν μπορώ να δω στην πράξη διάφορες στα init systems πέρα από τις προφανείς (ταχύτητα, μέγεθος, κ.λ.π). Είναι όμως δεδομένο πως μπορεί να υπάρχει κάτι καλύτερο και ομως το systemd να μην αντικατασταθεί. Το γιατί είναι πολυπαραγοντικό. Εδώ το Linux σε πολλούς (αν όχι όλους) τομείς είναι καλύτερο από windows και δεν έχει καν ένα 10% στην παγκόσμια αγορά. Προσωπικά σε αυτήν την κόντρα συντάσσομαι με την ελευθερία σκέψης και πράξης. Οποίο είναι να κυριαρχήσει, να το κάνει με θεμιτά μέσα. Πάνω από όλα να μην πεθάνουν εναλλακτικές.

2 Likes

Δεδομένο; Ωραία γράψτε για αυτό τεκμηριωμένα.

Έχει γραφεί μια σειρά άρθρων στο παρόν forum γιατί ο αθρογράφος τους θεωρεί καλό το systemd. Στα σχόλια προσδοκάται ο γόνιμος αντίλογος. Αν οι πολέμιοι του systemd θεωρούν καλή πρακτική να γράφονται για να απαντήσουν και στη συνέχεια να διαγράφονται (μαζί με την απάντηση τους) αυτό είναι κρίμα για τις διανομές που εκπροσωπούνται από αυτά τα inits.

Σε αυτό με βρίσκεις απόλυτα σύμφωνο.

1 Like

σε αυτό το τελευταίο κρύβεται η σκέψη μου… το τελευταίο που θα έπρεπε να μας απασχολεί είναι τι system init έχουμε… Μάλλον θα έπρεπε να μας απασχολεί αλλά όχι να γίνεται ο κακός χαμός…

3 Likes