Linux
Tο Linux αποτελεί το πιο διαδεδομένο Ελεύθερο Λογισμικό/ Λογισμικό Ανοιχτού-Κώδικα στον κόσμο και αποτελεί εναλλακτική λύση, τόσο σε χρήστες Windows, όσο και Mac OS. Για την ακρίβεια όποιος από εσάς έχει κινητό που τρέχει Android, ήδη χρησιμοποιεί Linux καθημερινά. Η ιστορία μας ξεκινάει στο όχι και τόσο μακρινό 1964, με τις εταιρίες General Electric, AT&T (Bell Labs) και το πανεπιστήμιο MIT να ξεκινούν για το τολμηρό πόνημα που άκουγε στο όνομα Multics (Multiplexed Information and Computing Service). Πρόκειται για ένα πρώιμο κλειστού-κώδικα λειτουργικό σύστημα, η φιλοσοφία του οποίου αποτέλεσε άμεσα και έμμεσα τον ακρογωνιαίο λίθο σε κάθε μετέπειτα προσπάθεια δημιουργίας λειτουργικών συστημάτων (από το Linux, μέχρι το DOS και τα Windows). Κανείς όμως δεν γνώριζε πως πέντε μόλις χρόνια μετά, το φιλόδοξο αυτό project θα είχε κιόλας αποτύχει.
Το έτος 1969, η πολυπλοκότητα του όλου εγχειρήματος έδειχνε να αυξάνεται εκθετικά τώρα περισσότερο από ποτέ. Η Bell Labs ακολουθεί τον δρόμο που χάραξε το MIT και αποφασίζει να αποσυρθεί, αφήνοντας μόνο τη General Electric ως πνευματικό δικαιούχο να προσπαθεί δίχως επιτυχία να ολοκληρώσει το project. Τότε ήταν που ο Kenneth Lane Thompson (Ken) μαζί με τον Dennis MacAlistair Ritchie (dmr) -εκ της AT&T- άδραξαν την ευκαιρία, πατώντας στη δυσκολία περάτωσης που αντιμετώπιζε η G.E. Οι δυο τους, ζήτησαν την άδεια να ασχοληθούν με τη δημιουργία μιας απλουστευμένης έκδοσης του Multics για μη-εμπορική χρήση (διασφαλίζοντας τοιουτοτρόπως πως κάτι τέτοιο δεν θα επηρέαζε τις πωλήσεις του πρώτου όταν και αν αυτό θα ήταν σε θέση να διατεθεί στην αγορά). Ύστερα από έναν χρόνο και τη δημιουργία της γλώσσας προγραμματισμού “C”, έδωσαν πνοή στο έργο τους, που δεν ήταν άλλο από το λειτουργικό σύστημα UNIX (Uniplexed Information and Computing Service). Ένα σύστημα με την φιλοσοφία MPM (Minimal, Portable, Modular) κατά την οποία δομήθηκε αργότερα το πρότυπο POSIX (Portable Operating System Interface), τις οδηγίες του οποίου ακολουθούν όλα τα σημερινά λειτουργικά συστήματα.
Ένα έτος μετά και αφού η εξέλιξη του Multics φάνταζε μάταιη, η ΑΤ&Τ αποφασίζει να αδειοδοτήσει την εμπορική χρήση του σε τρίτους, τόσο επιχειρησιακά όσο και ακαδημαϊκά (IBM, Microsoft και Sun Microsystems ήταν λίγοι από τους πελάτες της). Παράλληλα η Honeywell εξαγοράζει το τμήμα υπολογιστών της General Electric μαζί με το project αλλά αυτή η ιστορία είναι εκτός του εύρους του παρόντος άρθρου.
Λίγα χρόνια αργότερα, το 1977 η ερευνητική ομάδα του Πανεπιστημίου της Καλιφόρνια, Berkeley (CSRG) έχοντας στην κατοχής της μια ακαδημαϊκή άδεια του UNIX -καθώς και ένα βιβλίο που εμπεριείχε τον πηγαίο-κώδικα του για λόγους εκμάθησης- αντέγραψε το λειτουργικό και με κάποιες αλλαγές εξέδωσε τη δική του διανομή κάτω από το όνομα BSD (Berkeley Software Distribution). Αυτό είχε ως αποτέλεσμα η AT&T να μηνύσει το πανεπιστήμιο και κατ’ επέκταση να μειώσει δραματικά την ανάπτυξη της διανομής. Η ιδέα του ελεύθερου λογισμικού και του λογισμικού ανοιχτού-κώδικα είχε μόλις γεννηθεί.
Δεν ήταν άλλος παρά ο Richard Matthew Stallman (rms), προγραμματιστής του MIT, που ανακοίνωσε μέσο του Usenet το 1983 το όραμα του, που άκουγε στο όνομα GNU (αναδρομικό ακρώνυμο για το: Gnu is Not UNIX). Συντάσσοντας το μανιφέστο του, αρίθμησε τις τέσσερεις αρχές ενός λογισμικού ανοιχτού-κώδικα που το κάνουν να διαφέρει από το μέχρι πρότινος κλειστού-κώδικα μοντέλο. Ο χρήστης είχε τη δυνατότητα να το χρησιμοποιήσει για όποιο σκοπό ήθελε [1], να μελετήσει τον κώδικα και να τον τροποποιήσει [2], να το διανέμει ελεύθερα [3] και να τροποποιεί και να αναδιανέμει δημόσια ακόμη και τις τροποποιημένες εκδοχές άλλων [4]. Τη νομιμοποίηση αυτών ήρθε να επισφραγίσει με τη δημιουργία του Free Software Foundation και του GNU Public License (GPL) που επέτρεπε στη αρχική μορφή του λογισμικού και σε όλα τα παράγωγα του κώδικα της να παραμένουν ελεύθερα για δημόσια χρήση.
Το GNU τα είχε όλα: βασικά βοηθητικά προγράμματα, εκτενείς βιβλιοθήκες και ένα ορμαθό εργαλείων (βλ. Bash Shell, GNU Compiler κ.α.) που μόλις έβγαιναν από το στάδιο της beta έκδοσης και έμελλε να εδραιωθούν για πολλά χρόνια στην κατηγορία τους. Αλλά στερούταν το σημαντικότερο, έναν πυρήνα -τη βάση δηλαδή του λειτουργικού συστήματος η οποία είναι υπεύθυνη για οτιδήποτε συμβαίνει στο σύστημα, ένας δίαυλος επικοινωνίας και μετάφρασης που ενώνει το software με το hardware στο πιο χαμηλό επίπεδο. Η λύση ήταν μονόδρομος εκείνη την εποχή κι έτσι ξεκίνησε η κατασκευή του GNU Hurd Kernel, μια δημιουργία όμως που αποδείχτηκε πλήρως προβληματική και ζημιοφόρα τόσο για την ομάδα ανάπτυξης όσο για το ίδιο το GNU.
Δεν ήταν μέχρι το 1991 όπου ένας φοιτητής υπολογιστών του πανεπιστημίου του Ελσίνκι -ετών 21-, μέσο του Usenet έγραψε το ακόλουθο: “Γεια σε όλους εκεί έξω που χρησιμοποιούν mini-UNIX. Ξεκίνησα να φτιάχνω ένα (ελεύθερο) λειτουργικό σύστημα (σαν χόμπι, δεν θα είναι τίποτα μεγάλο ή επαγγελματικό όπως το gnu) για 386(486) ΑΤ κλώνους. Το ξεκίνησα από τον Απρίλιο και κοντεύει πλέον να ολοκληρωθεί. Θα ήθελα μερικές γνώμες γύρω από τα πράγματα που συμπαθεί/αντιπαθεί ο κόσμος στο mini-UNIX, καθότι το λειτουργικό μου σύστημα τείνει να του μοιάζει κάπως (έχει για παράδειγμα μεταξύ άλλων το ίδιο σχεδιάγραμμα όσον αφορά τη σχεδίαση του συστήματος αρχείων (για πρακτικούς λόγους φυσικά). Μόλις μετέτρεψα/μετέφερα το bash(1.08) και το gcc(1.40) και πραγματικά δείχνουν να λειτουργούν. Ελέω αυτών λογικά θα έχω κάτι απτό εντός ολίγων μηνών και γι’ αυτό θα ήθελα να ξέρω τι χαρακτηριστικά θα ήθελε ο περισσότερος κόσμος να δει. Κάθε πρόταση είναι δεκτή, αλλά δεν εγγυώμαι πως θα τις προσθέσω όλες.
Y.Γ Για όσους αναρωτιούνται, όχι δεν περιέχει καθόλου κώδικα που να σχετίζεται με το minι-UNIX άλλωστε φέρει ένα σύστημα αρχείων πολλών νημάτων. ΔΕΝ μπορεί να χρησιμοποιηθεί σε άλλα συστήματα (μιας και χρησιμοποιεί τον τρόπο εναλλαγής διεργασιών του 386), και πιθανών ποτέ να μην υποστηρίξει τίποτα άλλο πέρα από σκληρούς δίσκους AT, μιας και μόνο αυτά έχω στην κατοχή μου :-(.”
Τον επόμενο χρόνο ο Linux Kernel του Linus Torvalds εκδίδεται υπό την άδεια GPL και τα πρώτα ανεξάρτητα λειτουργικά συστήματα μπαίνουν στη φάση της παραγωγής. Λίγο αργότερα και με πάνω από εκατό πλέον άτομα δυναμικό να εργάζονται στην προσαρμογή του πυρήνα Linux στο περιβάλλον του GNU, τα λειτουργικά Slackware και Debian έκαναν τα πρώτα τους “βρεφικά” βήματα. Εφαρμόζοντας και καθιερώνοντας παράλληλα τον όρο GNU/ Linux Distribution. Ο όρος απευθυνόταν σε ένα λειτουργικό σύστημα που απαρτιζόταν από τα εξής: τον πυρήνα Linux, τα εργαλεία, τα βοηθητικά προγράμματα και τις βιβλιοθήκες του GNU, κάποιο πρόσθετο λογισμικό, τα εγχειρίδια χρήσης και λειτουργίας αυτού, ένα παραθυρικό σύστημα και ένα περιβάλλον επιφάνειας εργασίας. Βάσει των τεσσάρων κανόνων που δομούν ένα ΕΛ/ΛΑΚ ο καθένας είχε τη δυνατότητα να διαλέξει για παράδειγμα ένα διαφορετικό σύνολο εκ των κατηγοριών και να αναδιανέμει το τελικό λειτουργικό όπως αυτός επιθυμούσε (βλ. Ubuntu GNU/Linux Distro, Fedora GNU/Linux Distro, OpenSUSE GNU/Linux Distro, κ.α).
Από το 1994 όπου και ο πυρήνας βγήκε από τη φάση του beta και πέρασε στην έκδοση 1.0, έχει σήμερα αισίως φτάσει την έκδοση 4.11.2. Σε αντίθεση με άλλα λειτουργικά όπως τα Windows της Microsoft ή το Mac OS της Apple που δομούνται εντός των ορίων της εταιρίας, το GNU/Linux δεν γνωρίζει όρια, φτιάχνεται συλλογικά, από διαφορετικούς ανθρώπους, διαφορετικές εταιρίες, διαφορετικές αγορές και ηπείρους. Από το 2005, 10.000 προγραμματιστές, από 1.000 διαφορετικές εταιρίες συνείσφεραν περίπου 20 εκατομμύρια γραμμές κώδικα, κερδίζοντας τον τίτλο του μεγαλύτερου project στην ιστορία των υπολογιστών που αναπτύχθηκε συλλογικά.
Μια νέα έκδοση του πυρήνα Linux κυκλοφορεί κάθε δύο με τρεις μήνες. Αυτό γίνεται δυνατό μέσο της διαδικασίας συνεισφοράς, όπου ο καθένας, ακόμη κι εσύ, μπορεί να συνδράμει. Κατά τη διαδικασία αυτή οι προγραμματιστές κάνουν αλλαγές που διορθώνουν, προσθέτουν ή αφαιρούν κάποιο χαρακτηριστικό (βλ. Φτιάχνουν κάποιοι πρόβλημα, προσθέτουν υποστήριξη για έναν νέο επεξεργαστή ή κάρτα γραφικών, ή βελτιώνουν τη γενικότερη απόδοση) και αποθηκεύουν την κάθε αλλαγή σε ένα ξεχωριστό αρχείο patch. Έπειτα ανεβάζουν αυτά τα αρχεία στο GitHub, τον cloud αποθηκευτικό χώρο όπου φιλοξενείται ο κώδικας του Linux και ενός ορμαθού ακόμη ανοιχτών και μη εφαρμογών. Εκεί κάποιος προγραμματιστής με μεγαλύτερη εμπειρία τα αποδέχεται ή τα απορρίπτει.
Σε δεύτερο χρόνο μετά την αποδοχή τους γίνεται εκτεταμένη αξιολόγηση από κάποιον συντηρητή ο οποίος δίνει το δεύτερο «ΟΚ». Όσα patch πέρασαν και τις δύο εκτιμήσεις πάνε στον Linus Torvalds, ο οποίος αποτελεί την τελική αρχή. Τα patch που περνούν επιτυχώς όλη τη διαδικασία βρίσκουν τον δρόμο τους για την επόμενη έκδοση. Αυτό σημαίνει ότι περίπου 10.000 patches ενσωματώνονται σε κάθε νέα έκδοση.
“Αν για παράδειγμα γίνει κοινή η ύπαρξη κάποιου exploit του λειτουργικού ή των προγραμμάτων του, χάρη στον ανοιχτό κώδικα όπου ο καθένας έχει πρόσβαση, θα πάρει μόλις κάποια λεπτά για να βρεθεί όχι μόνο το πρόβλημα αλλά και τη λύση του. Λίγα λεπτά αργότερα θα υπάρχει ήδη διαθέσιμη η επίλυση ως update. Αυτό έρχεται σε αντίθεση με άλλα λειτουργικά κλειστού κώδικα όπου το πρόβλημα τις περισσότερες φορές λύνεται αφού έχει επηρεάσει πρώτα κάποιες χιλιάδες συστήματα ή και σε κάποιες περιπτώσεις καθόλου.”