Η κατάσταση του Gentoo
Συγγραφέας του άρθρου είναι ο Donnie Berkholz. Μπορείτε να βρείτε το αρχικό κείμενο εδώ.
Έχουν περάσει τρία χρόνια από την τελευταία φορά που το LWN έγραψε για το Gentoo Linux, οπότε το να κοιτάξουμε τις δραστηριότητες του Gentoo από τότε φαίνεται ιδανικό. Ας αρχίσουμε με μια επανασύστηση του Gentoo. Το Gentoo είναι μια source-based διανομή που διαφέρει από τις κοινές binary διανομές γιατί τα πακέτα της γίνονται μεταγλώττιση στα μηχανήματά σας κι όχι στην υποδομή της διανομής. Οι source-based διανομές επιτρέπουν πολύ μεγαλύτερη παραμετροποίηση από ότι είναι δυνατό στις binary διανομές γιατί όχι μόνο μπορείς να ελέγχεις ποια πακέτα εγκαθιστάς, αλλά επίσης ποια χαρακτηριστικά του κάθε πακέτου θα ενεργοποιήσεις (και κατά συνέπεια ποιες εξαρτήσεις θα τραβηχτούν).
Αυτό οδηγεί σε σημαντικά πλεονεκτήματα για έναν αριθμό περιπτώσεων χρήσης, αν και το Gentoo δεν είναι κατάλληλο για τον καθένα. Για παράδειγμα, το Gentoo είναι καταπληκτικό για σταθμούς εργασίας προγραμματιστών επειδή έχεις μια αλυσίδα εργαλείων που δουλεύει αποδεδειγμένα και όλα τα πακέτα για ανάπτυξη λογισμικού (headers κτλ) από την αρχή, όπως επίσης και καλή υποστήριξη για να χτίζεις live πακέτα κατευθείαν από Git/Subversion/CVS/κτλ. Επίσης ξεχωρίζει για την χρήση του σε embedded ή άλλες minimal configurations, συστήματα που χρειάζονται και την κάθε παραμικρή σταγόνα σε επιδόσεις (μιας και μπορείς να ρυθμίσεις τις σημαίες μεταγλώττισης για κάθε πακέτο), και σε άλλες χρήσεις που χρειάζονται σημαντική προσαρμογή. Επιπρόσθετα, η φιλοσοφία του Gentoo «μάθε σε κάποιον πως να ψαρεύει» το κάνει άριστη διανομή για να μάθει κάποιος περισσότερα για το πως δουλεύει το Linux‧ ακόμα και η διαδικασία εγκατάστασης γίνεται χειροκίνητα, ακολουθώντας ένα εκτενές εγχειρίδιο χρήσης που εξηγεί την όλη διαδικασία.
Από τα μέσα του 2008, το Gentoo έχει κάνει έναν αριθμό βελτιώσεων στην μορφή των πακέτων και στο πλάνο των εκδόσεων, και η κοινότητα των developers του κατά βάση έχει μείνει σταθερή τόσο στον αριθμό αλλά και στον κώδικα που γίνεται commit. Δεν έχουν υπάρξει κάποιες δραστικές αλλαγές, μα σε ένα ώριμο project με περίπου 175 ενεργούς developers και γύρω στους 375 σποραδικούς contributors, η απόλυτη αδράνεια δεν είναι κάτι που περιμένεις. Ας ρίξουμε μια ματιά στο που βρίσκεται σήμερα το Gentoo, μερικές από τις μεγαλύτερες αλλαγές τα τελευταία χρόνια, και ποια προβλήματα φαίνεται να έχει ακόμα.
Το Gentoo σε αριθμούς
Ο καλύτερος τρόπος για να πάρει κάποιος μια ιδέα για το επίπεδο στο οποίο βρίσκεται η κοινότητα των developers και ο κώδικας του Gentoo σήμερα, είναι να κοιτάξει τα νούμερα αντί να βασιστεί σε μια υποκειμενική γνώμη. Το Ohloh παρέχει τέτοια στατιστικά, οπότε θα βασιστούμε σε αυτό για την συγκεκριμένη ανάλυση. Μια συνολική εικόνα για τις γραμμές κώδικα του Gentoo από την δημιουργία του πάνω από μια δεκαετία πριν μέχρι σήμερα φαίνεται στο γράφημα πιο κάτω.
Αυτό που γίνεται άμεσα αντιληπτό είναι η συνεχής αύξηση την περίοδο 2002-2005, μια κατακόρυφη αύξηση το 2006, και μια ακόμα σταθερή αύξηση από το 2007 και μετά. Θα εστιάσουμε στα πρόσφατα έτη σε αυτό το άρθρο, μιας και το LWN έχει ήδη αναλύσει την προηγούμενη ιστορία του Gentoo. Υπάρχουν δύο κύρια χαρακτηριστικά που χρήζουν παρατήρησης στο γράφημα. Πρώτον, η κλίση κατά την περίοδο 2002-2005 είναι πολύ υψηλότερη από ότι του 2007-2011. Όλος ο θόρυβος γύρω από το Gentoo εκείνη την περίοδο συσχετίζεται άμεσα με τον μεγαλύτερο ρυθμό ανάπτυξης, ενώ σήμερα ο ρυθμός ανάπτυξης είναι σχετικά πιο αργός. Δεύτερον, από το 2007 μέχρι το 2011, η κλίση φαίνεται να μειώνεται. Η φαινομενική αύξηση προς το τέλος πρέπει να είναι αποτέλεσμα της καταγραφής των πρόσθετων repositories στο Ohloh κι όχι από μια ξαφνική αύξηση στην συγγραφή κώδικα. Το codebase του Gentoo μεγαλώνει πιο αργά, κάτι που υποδηλώνει μείωση του μεγέθους της κοινότητας ή της παραγωγικότητας. Τώρα, ας ρίξουμε μια ματιά στους πόσους contributors έχει το Gentoo, και πόσο άλλαξε αυτό με τον χρόνο (Παρατήρηση: Το Ohloh θεωρεί contributors τα άτομα που έχουν κάνει commit μέσα σε μια περίοδο 30 ημερών), το οποίο φαίνεται στο γράφημα παρακάτω.
.
Τώρα που ρίξαμε μια ματιά στην υγεία του project σε σχέση με τον κώδικα και τους contributors, θα εξετάσουμε πιο αναλυτικά τις συγκεκριμένες βελτιώσεις που έχει κάνει το project. Μιας και είναι διανομή, δεν προκαλεί καμία έκπληξη ότι αυτές οι βελτιώσεις κυρίως αφορούν το packaging.
Ενημερώσεις στον ebuild τύπο πακέτων
Για να καταλάβεις το μεγαλύτερο μέρος της προόδου του Gentoo τα τελευταία χρόνια, θα χρειαστείς μια βασική κατανόηση των πακέτων του Gentoo — τα λεγόμενα ebuilds. Είναι στην ουσία σενάρια bash (bash scripts) με κάποιες βοηθητικές συναρτήσεις και μια βασική μορφή κληρονομικότητας. Τα ebuilds χτίζουν τα πακέτα περνώντας βήμα βήμα από μια σειρά από συναρτήσεις bash που λέγονται φάσεις (phases). Κάθε φάση αντιστοιχεί σε ένα εννοιολογικό βήμα όπως την αποσυμπίεση ενός tarball, την προσθήκη μιας βελτίωσης στον κώδικα, τη ρύθμιση, τη μεταγλώττιση, ή την εγκατάσταση. Η κύρια διαφορά από τα πακέτα RPM ή deb που χρησιμοποιούνται στις διανομές εκτελέσιμων είναι ότι τα ebuilds πρέπει να επιτρέψουν την ευελιξία στο πως θα ρυθμίσεις, χτίσεις, και εγκαταστήσεις συγκεκριμένα χαρακτηριστικά.
Η μορφή πακέτων του Gentoo, το ebuild, περιέχει ρητά την έκδοσή της για να επιτρέπει βελτιώσεις στη μορφή της χρησιμοποιώντας ένα Ebuild API (EAPI). Αντίθετα με τις περισσότερες διανομές, αυτές οι βελτιώσεις συμβαίνουν στο Gentoo σε σχετικά συχνά χρονικά διαστήματα: περίπου μια φορά το χρόνο υπάρχει ένα νέο EAPI. Στα τέλη του 2008, το τότε συμβούλιο ενέκρινε το EAPI=2 που περιείχε μια σημαντική σειρά αλλαγών στη μορφή των ebuilds, την οποία θα εξηγήσω με μερικά σημαντικά παραδείγματα.
Πρώτον, πρόσθεση προκαθορισμένες υλοποιήσεις για τις φάσεις του ebuild. Παλαιότερα, έπρεπε να ξαναγράψουμε όλο τον προκαθορισμένο (default) κώδικα για μια φάση αν απαιτούνταν μια οποιαδήποτε αλλαγή. Για παράδειγμα, για να εγκαταστήσουμε ένα ακόμη αρχείο τεκμηρίωσης θα έπρεπε να ξαναγράψουμε τον προκαθορισμένο κώδικα που τρέχει το make install με μια σειρά από ορίσματα ειδικά στο Gentoo‧ τώρα, μπορούμε εναλλακτικά να καλέσουμε μια συνάρτηση με το όνομα default να τρέξει αυτό τον κώδικα, και μετά να εγκαταστήσουμε τα αρχεία.
Δεύτερον, το EAPI=2 πρόσφερε καλύτερο έλεγχο πάνω σε διάφορα βήματα της διαδικασίας του χτισίματος. Πρόσθεσε δύο νέες φάσεις ειδικά για την προετοιμασία του αποσυμπιεσμένου κώδικα για ένα χτίσιμο (πχ. το πέρασμα μπαλωμάτων) και της ρύθμισης του κώδικα (τρέχοντας το configure ή το αντίστοιχό του). Αυτό επέτρεψε μικρότερα, ebuilds που συντηρούνται πιο εύκολα καθώς ο περισσότερος κώδικας που έχει σχέση με την αποσυμπίεση και το χτίσιμο μπορεί καταφύγει στις προεπιλεγμένες υλοποιήσεις. Το τελευταίο σημαντικό χαρακτηριστικό του EAPI=2 είναι η δυνατότητα να απαιτούνται συγκεκριμένα χαρακτηριστικά να είναι ενεργοποιημένα στις εξαρτήσεις (γνωστή και ως USE εξαρτήσεις). Οι σημαίες USE του Gentoo συνήθως αντιστοιχούν στο --enable-foo σε ένα σενάριο ρύθμισης (configure script) ή στο αντίστοιχο του, και τα πακέτα ψηλότερα στην στοίβα συνήθως χρειάζονται αυτά που είναι χαμηλότερα να έχουν χτιστεί με ή χωρίς συγκεκριμένα χαρακτηριστικά.
Η επόμενη μεγάλη βελτίωση στο packaging ήταν το EAPI=4, που ήρθε με έναν αριθμό αλλαγών, και θα υπογραμμίσω μερικές από τις πιο σημαντικές. Πρώτον προστέθηκε μια νέα, πολύ αρχική φάση με το όνομα pkg_pretend που κάνει ελέγχους κατά την διάρκεια του ελέγχου εξαρτήσεων. Αυτό επιτρέπει στους developers να κάνουν συγκεκριμένους ελέγχους πριν ξεκινήσει η διαδικασία χτισίματος, ώστε ένα εκτεταμένο χτίσιμο από πολλά πακέτα να μην «πεθαίνει» στη μέση επειδή οι σωστές επιλογές στον πυρήνα δεν είναι ενεργοποιημένες, για παράδειγμα.
Δεύτερον, το EAPI=4 βελτίωσε το χειρισμό σφαλμάτων αναγκάζοντας όλα τα εργαλεία των ebuild να «πεθάνουν» σε περίπτωση αποτυχίας ως προεπιλογή. Αυτό κάνει μικρότερο τον κώδικα για το χειρισμό σφαλμάτων γιατί συνήθως η αποτυχία εκτέλεσης οποιασδήποτε εντολής του ebuild κατά την διάρκεια χτισίματος θα πρέπει να έχει ως αποτέλεσμα την αποτυχία χτισίματος όλου του πακέτου. Τρίτον, τα ebuilds μπορούν να υποδεικνύουν αν υπάρχουν αλληλεξαρτήσεις ανάμεσα στα διαφορετικά χαρακτηριστικά που εξαρτώνται σε άλλα χαρατηριστικά μέσα στο ίδιο πακέτο‧ για να ενεργοποιήσεις το Y, πρέπει επίσης να ενεργοποιήσεις το X. Μια νέα μεταβλητή η REQUIRED_USE επέτρεψε στους developers να ορίσουν εξαρτήσεις και επίσης να υποδείξουν αλληλοσυγκρουόμενα χαρακτηριστκά.
Που πήγαν οι ενημερώσεις ασφαλείας;
Αν παρακολουθείτε το Gentoo, μπορεί να έχετε παρατηρήσει την εμφανή έλλειψη ανακοινώσεων που να αφορούν ενημερώσεις ασφαλείας (γνωστές και ως GLSA) από τον Ιανουάριο αυτού του χρόνου, και σποραδικές ανακοινώσεις από τα τέλη του 2009. Αυτό δεν σημαίνει πως δεν γίνονται ενημερώσεις ασφαλείας‧ οι συντηρητές των πακέτων, οι οποίοι αποτελούν την πλειοψηφία των προγραμματιστών του Gentoo, συνεχίζουν να προσθέτουν με γρήγορους ρυθμούς μπαλώματα και νέες εκδόσεις με διορθώσεις ασφαλείας. Σημαίνει ωστόσο ότι η ομάδα ασφαλείας έχει σοβαρές ελλείψεις προσωπικού και δεν μπορεί να αντεπεξέλθει στον ρυθμό που εμφανίζονται κενά ασφαλείας στο λογισμικό μιας ολόκληρης διανομής. Ένας σημαντικός αριθμός ατόμων που ενδιαφέρονται έντονα για ενημερώσεις ασφαλείας συντηρούν εξυπηρετητές, και συχνά πληρώνονται γι’ αυτό. Αν επιθυμούν GLSA, ίσως θα μπορούσαν να συνεισφέρουν στην δημιουργία τους‧ μια μέτρια προσπάθεια από αρκετούς τέτοιους ανθρώπους θα μπορούσε να επαναφέρει στην ζωή τις ανακοινώσεις ασφαλείας.
Αλλαγές στην στρατηγική εκδόσεων του Gentoo
Το Gentoo ακολουθεί ένα μοντέλο κυλιόμενης διανομής (rolling-release), με συνεχείς ενημερώσεις σε μεμονωμένα πακέτα να εμφανίζονται κάθε ώρα, 24 ώρες την ημέρα. Παλιότερα, έβγαζε εκδόσεις κάθε μισό χρόνο παίρνοντας στιγμιότυπα της βάσης δεδομένων των πακέτων, εκτελώντας πολλούς ελέγχους διασφάλισης ποιότητας σε αυτά, και δημιουργούσε LiveCDs — μια διαδικασία που απαιτούσε μεγάλη χειρωνακτική προσπάθεια. Έπειτα το Gentoo άλλαξε σε μια στρατηγική «κυλιόμενης διανομής» για τις εκδόσεις του δημιουργώντας εβδομαδιαία αυτοματοποιημένα πακέτα αντί για επίσημες εκδόσεις. Αυτό ήταν μια μεγάλη νίκη σε ότι αφορά την μείωση της απαιτούμενης προσπάθειας των προγραμματιστών αλλά είχε ως αποτέλεσμα μια απροσδόκητη απώλεια δημοσίων σχέσεων του Gentoo.
Συνδυαζόμενη με την τρέχουσα έλλειψη εβδομαδιαίων ή μηνιαίων ενημερωτικών δελτίων, το Gentoo έχει σχεδόν εξαφανιστεί από τις ειδησεογραφικές ιστοσελίδων. Αποδεικνύεται ότι οι επίσημες εκδόσεις δημιουργούν άρθρα νέων‧ αν δεν υπάρχει ένας σημαντικό λόγος για να γράψουν για κάποιο project ανοικτού κώδικα, όπως μια ανακοίνωση νέας έκδοσης, οι ειδησεογραφικές ιστοσελίδες συχνά απλά το αγνοούν. Γι’ αυτό τον λόγο, καθώς και λόγω της απαίτησης των χρηστών για LiveDVDs με πλήρη χαρακτηριστικά και όμορφα γραφικά, το Gentoo άρχισε ξανά να παράγει εκδόσεις DVD, με την πιο πρόσφατη να είναι η 11.2 του Αυγούστου.
Τι κάνει ένα project υγιές;
Το Gentoo φαίνεται να έχει θέσει τις βασικές πτυχές σωστά: κώδικας και κοινότητα. Όμως όλα τα περιφερειακά συστατικά που είναι απαραίτητα σε ένα project ανοιχτού κώδικα που ακμάζει, τουλάχιστον για ένα αυτού του μεγέθους, έχουν λείψει τα τελευταία χρόνια. Οι συνεισφέροντες του εβδομαδιαίου ενημερωτικού δελτίου έχουν εξαφανιστεί (αρχικά μηνιαίο, έπειτα σε παύση)‧ η προηγουμένως βραβευμένη τεκμηρίωση του Gentoo έχει αρχίσει να γίνεται ξεπερασμένη εξαιτίας της έλλειψης συνεισφερόντων στην τεκμηρίωση για να την ενημερώσουν με τις πρόσφατες αλλαγές‧ και το ίδιο ισχύει και για τους υπεύθυνους εκδόσεων και την ομάδα ασφαλείας.
Σημαντικές πολύχρονες πρωτοβουλίες όπως η μεταφορά σε Git και ο επανασχεδιασμός της ιστοσελίδας έχουν σε μεγάλο βαθμό μείνει στάσιμες, ξανά επειδή οι άνθρωποι που συμμετέχουν δεν έχουν αρκετό χρόνο για να δουλέψουν σε αυτές. Παρόλο που κάποια από αυτά τα θέματα έχουν βελτιωθεί τελευταία (πραγματικές εκδόσεις ξανά, ο Sven Vermeulen η πρώην κεφαλή της τεκμηρίωσης μόλις επέστρεψε στο Gentoo), για άλλα παραμένει ανοικτό το ερώτημα. Φαίνεται πως η σμίκρυνση της κοινότητας των προγραμματιστών έχει επηρεάσει ορισμένους από τους πιο σημαντικούς συνεισφέροντες, έχοντας ως αποτέλεσμα ένα σημαντικό πλήγμα στην διανομή από το οποίο ακόμη προσπαθεί να συνέλθει.
Ποιο είναι το μέλλον του Gentoo;
Κατ’ αρχάς, το αναμενόμενο είναι το εξής: το Gentoo θα συνεχίσει να βελτιώνει τον τύπο των ebuild με νέα EAPIs. Το Google Summer of Code μας φέρνει νέο αίμα στο project - κάθε χρόνο 15 μαθητές κατά μέσο όρο γίνονται Gentoo developers. Η δουλειά συνεχίζεται ανελλιπώς με στόχο την ενσωμάτωση νέων τεχνολογιών όπως το systemd, αν και δεν είναι ξεκάθαρο στην παρούσα φάση αν θα αντικαταστήσει το αυτοσχέδιο σύστημα init του Gentoo (OpenRC) ή αν θα αποτελεί ακόμη μια επιλογή. Το Gentoo αφορά το να παρέχεται η δυνατότητα της επιλογής οπουδήποτε αυτό έχει βάση αντί να επιβάλλει τις δικές του επιλογές στους χρήστες του, έτσι η ίδια ιδέα της επιλογής ανάμεσα σε εναλλακτικές λύσεις εφαρμόζεται επίσης και στο GNOME 3 αυτό του KDE, και αν κάποιος ενσωματώσει το Unity στο Gentoo, τότε θα αποτελεί κι αυτό μια ακόμα επιλογή.
Όπως συμβαίνει δυστυχώς συχνά σε project ανοιχτού κώδικα, η πρόοδος είναι αργή κάποιες φορές λόγω έλλειψης χρόνου των εθελοντών, ειδικά σε ό,τι αφορά μεγάλα ή περίπλοκα θέματα. Μερικά από αυτά συνεχίζουν να υφίστανται χρόνια τώρα, όπως η μετάβαση του κυρίως αποθετηρίου του Gentoo από CVS σε Git, κάτι το οποίο είναι ένα εξίσου μεγάλο και περίπλοκο ζήτημα. Μέχρι σήμερα υπάρχουν δείγματα μετατροπών (όπως αυτό που χρησιμοποιεί το Ohloh για στατιστικά) και έχει δημιουργηθεί και ένα scheme σε συνεργασία με τους upstream developers του Git για μεμονωμένη υπογραφή κάθε commit για ακόμα μεγαλύτερη ασφάλεια. Όποιος ενδιαφέρεται να ενημερωθεί (ή ακόμα καλύτερα να βοηθήσει) για τη δουλειά που γίνεται σχετικά με τη μετάβαση σε Git, υπάρχει το tracker bug και η mailing list.
Ένα άλλο ερώτημα που έχει τεθεί εδώ και καιρό και το οποίο συνεχώς συζητείται αλλά σπάνια επεξεργάζεται είναι το πρόβλημα με την οργανωτική δομή του Gentoo. Το τρέχον μοντέλο είναι ένα επταμελές συμβούλιο το οποίο τίθεται σε επανεκλογή κάθε χρόνο. Επιπρόσθετα, υπάρχει ένας αφιλοκερδής οργανισμός ο οποίος ελέγχει τα οικονομικά, τα σήματα και δικαιώματα του gentoo, καθώς επίσης και τους εξυπηρετητές του, με το δικό του ανεξάρτητο διοικητικό συμβούλιο. Το μοντέλο του συμβουλίου το οποίο ορίζει καθολικά δικαιώματα στα μέλη του (σε αντίθεση με το μοντέλο μελών που είναι υπεύθυνα για συγκεκριμένους τομείς) σημαίνει πως καμία αλλαγή δε μπορεί να γίνει σε οποιοδήποτε κύριο θέμα του gentoo, χωρίς την πλειοψηφία των επτά μελών, κάτι που μπορεί να διαρκέσει μήνες. Ένας αριθμός από ιδέες έχει κυκλοφορήσει, όπως για παράδειγμα η συρρίκνωση του συμβουλίου, η επιστροφή στο προηγούμενο μοντέλο ενός «καλού δικτάτορα» ή ο ορισμός των έμπιστων ατόμων του συμβουλίου ως ένα επιχειρηματικό συμβούλιο το οποίο θα μπορούσε να διορίσει έναν αρχηγό του εγχειρήματος, κάτι παρόμοιο με έναν CEO. Ο στόχος θα πρέπει να είναι οποιοσδήποτε επιτρέπει στο Gentoo να κάνει γρηγορότερα πρόοδο‧ η καθαρά υποκειμενική μου γνώμη είναι ότι τα έργα ανοιχτού λογισμικού υπάρχουν ώστε να ικανοποιούν έναν σκοπό και θα πρέπει να συγκεντρωθούν σε αυτό, παρά να προσπαθούν να γίνουν μία δημοκρατική κυβέρνηση όπου όλοι είναι ίσοι.
Το μεγαλύτερο πρόβλημα του Gentoo ωστόσο, συνοψίζεται σε ένα βασικό θέμα: δεν ασχολούνται πολλοί άνθρωποι με θέματα του Gentoo εκτός του προγραμματισμού του, ίσως επειδή είναι παρεξηγημένα — την ασφάλειά του, τον τρόπο με τον οποίο θα γίνεται η διανομή του, τα newsletters και την τεκμηρίωσή του, για να ονομάσουμε μερικά. Εάν το Gentoo μπορεί να συγκεντρωθεί στο να βρει και να διατηρήσει εθελοντές σ' αυτούς τους τομείς, εφαρμόζοντας ίσως αυτά που έχει μάθει από τη συμμετοχή του στο Google Summer of Code, ίσως να μπορούσε να μεγαλώσει η φήμη του και η δημοτικότητά του. Έτσι, θα μπορούσε επίσης να κάνει τους εθελοντές του να αναζωογονήσουν αυτό το έργο ανοιχτού λογισμικού το οποίο έχει καταντήσει τρόπον τινά υποτονικό.
- Εισέλθετε στο σύστημα ή εγγραφείτε για να υποβάλετε σχόλια
