Εδώ και λίγες μέρες έβαλα στόχο να δω γιατί το
systemd
έχει προκαλέσει τόσο θόρυβο και αν είναι τόσο κακό όσο λένε. Σε άρθρα εδώ παρουσιάζω ότι καλό ή κακό βρίσκω χωρίς φανατισμούς και ιδεοληψίες. Να προσθέσω πως δεν είμαι κάποιος ειδικός για να έχει κάποιο μεγάλο βάρος η γνώμη μου, που μπορεί να είναι λάθος.Δείτε τα άρθρα για το
systemd
, καθώς και άλλες γνώμες (αν υπάρξουν), ακολουθώντας το tag: Νήματα με ετικέτες systemd.
Αλλά πρέπει για να είναι δίκαιος κάποιος να δει και να εναλλακτικά συστήματα που υπάρχουν. Υπάρχουν μικρές ομάδες και διανομές που προσπαθούν να παρουσιάσουν κάτι διαφορετικό. Σε αυτό το σύντομο σχόλιο α παρουσιάσω τι ανακάλυψα και θα πω πως να το κάνεις σωστά. Κάτσε και ποιος είσαι εσύ που θα πεις τι είναι το σωστό; Σωστή παρατήρηση. Επαναδιατυπώνω: Πώς να το κάνεις σωστά για να πείσεις εμένα.
Και εγώ είμαι κάποιος που θέλει να πειστεί. Ω ναι θέλω! Είχα πειστεί μάλιστα. Όταν μπήκε στην διανομή μου το systemd
είχα προετοιμαστεί για μαύρες μέρες που όμως πότε δεν ήρθαν. Κάθε φορά που έβλεπα αναβάθμιση του systemd
, έτρεμε το φυλλοκάρδι μου και ήμουν έτοιμος να βρω το σύστημα διαλυμένο Οι μέλισσες ποτέ δεν ήρθαν.
Κοιτάζω στο github και το systemd
έχει 1266 ανοικτά issues. Κοιτάζω το cinnamon
και έχει 631, το nemo
239. To cinnamon
ο αριθμός το αδικεί. Φταίει που πριν ένα χρόνο έσβησαν μαζικά πολλά ανενεργά :P Θα κρίνω το λογισμικό μόνο από αυτό; Είναι το 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
Αλλά είχαμε πάντα ελευθερία επιλογών στο 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:
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new “features”.
- 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.
- 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.
- 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
δουλεύει μια χαρά στο τερματικό κάτι που δεν μπορώ να πω για τα δυο πρώτα. Εσάς ποια είναι η γνώμη σας;