Το έργο GNU

από τον Richard Stallman

Η πρώτη κοινότητα διαμοιρασμού λογισμικού

Όταν ξεκίνησα να εργάζομαι στο Εργαστήριο Τεχνητής Νοημοσύνης (TN) του MIT το 1971, έγινα μέλος μιας κοινότητας διαμοιρασμού λογισμικού η οποία προϋπήρχε για πολλά χρόνια. Ο διαμοιρασμός λογισμικού δεν ήταν περιορισμένος στη δική μας κοινότητα· είναι τόσο παλιός όσο και οι υπολογιστές, ακριβώς όπως ο διαμοιρασμός συνταγών είναι τόσο παλιός όσο και το μαγείρεμα. Όμως εμείς τον εφαρμόζαμε περισσότερο απ' όλους.

Το εργαστήριο TN χρησιμοποιούσε ένι λειτουργικό σύστημα καταμερισμού χρόνου Οξ το όνομα ITS (το Μη-συμβατό Σύστημα Καταμερισμού Χρόνου), το οποίο είχαν σχεδιάσει κιΚ γρΏψξΚ σξ συμβολική γλώσσα μηχανής γΚι τον PDP-10 της Digital, ένιν από τους μεγάλους ηλεκτρονικούς υπολογιστές εκείνης της εποχής, οΚ χάκερ του εργαστηρίου [1]. Ως μέλος αυτής της κοινότητας, ένας χάκερ συστημάτων του εργαστηρίου ΤΝ, Ρ δουλειά μου ήταν νι βελτιώσω αυτό το σύστημα.

Δεν ονοΟΏΜιΟξ το λογισμικό μας “ελεύθερο λογισμικό”, επειδή αυτός Îż όρος δξν υπήρχε τότε· ουσιαστικά όμως αυτό ήταν. Οποτεδήποτε άνθρωποι από ένι ΏΝΝο πανεπιστήμιο ÎŽ εταιρία ΎθξΝιν νι μεταφέρουν κιΚ νι χρησιμοποιήσουν ένι πρόγραμμα, τους το επιτρέπαμε Οξ ευχαρίστηση. Εάν έβλεπες κάποιον νι χρησιμοποιεί ένι ασύνηθες κιΚ ενδιαφέρον πρόγραμμα, μπορούσες πάντα νι ζητήσεις νι δεις τον πηγαίο κώδικα, ώστε νι τον διαβάσεις, νι τον αλλάξεις ÎŽ νι κανιβαλήσεις ΟέρΡ απ' αυτόν γΚι νι δημιουργήσεις ένι νέο πρόγραμμα.

Η κατάρρευση της κοινότητας

Η κατάσταση άλλαξε δραστικά στις αρχές της δεκαετίας του 1980, όταν η Digital σταμάτησε τη σειρά του PDP-10. Η αρχιτεκτονική του, αν και κομψή και ισχυρή στη δεκαετία του 60, δεν μπορούσε να επεκταθεί φυσικά στους μεγαλύτερους χώρους διευθυνσιοδότησης οι οποίοι γινόταν εφικτοί κατά τη δεκαετία του 80. Αυτό σήμαινε πως σχεδόν όλα τα προγράμματα που συνέθεταν το ITS ήταν πλέον απαρχαιωμένα.

Η κοινότητα των χάκερ του εργαστηρίου ΤΝ είχε ήδη καταρρεύσει, όχι πολύ καιρό πριν. Το 1981, η εταιρεία τεχνοβλαστός (spin-off) Symbolics προσέλαβε σχεδόν όλους τους χάκερ του εργαστηρίου ΤΝ και η αποδεκατισμένη κοινότητα ήταν ανήμπορη να διατηρηθεί. (Το βιβλίο Hackers του Steve Levy περιγράφει αυτά τα γεγονότα, δίνοντας επίσης μια ξεκάθαρη εικόνα της κοινότητας στην ακμή της.) Όταν το εργαστήριο ΤΝ αγόρασε έναν καινούριο PDP-10 το 1982, οι διαχειριστές του αποφάσισαν να χρησιμοποιήσουν το μη-ελεύθερο σύστημα καταμερισμού χρόνου της Digital αντί για το ITS.

Οι σύγχρονοι υπολογιστές της εποχής, όπως ο VAX ή ο 68020, είχαν τα δικά τους λειτουργικά συστήματα, αλλά κανένα από αυτά δεν ήταν ελεύθερο λογισμικό. Έπρεπε να υπογράψεις μια συμφωνία εμπιστευτικότητας ακόμη και για να πάρεις ένα εκτελέσιμο αντίγραφο.

Αυτό σΎΟιΚνξ ότι το πρώτο βΎΟι γΚι νι χρησιμοποιήσεις ένιν υπολογιστή ήταν νι υποσχεθείς ότι δξ θι βοηθήσεις το γείτονά σου. Η δημιουργία κοινότητας συνεργασίας απαγορεύτηκε. Ο κανόνας που δημιουργήθηκε από τους κατασκευαστές του ιδιόκτητου λογισμικού ήταν: “Εάν ΟοΚρΏΜξσιΚ Οξ το γείτονά σου, ξίσιΚ ένας πειρατής. Εάν θέλεις νι κανείς οποιεσδήποτε αλλαγές, ικέτεψέ μας νι τις κάνουμε.”

Η Κδέι ότι το κοινωνικό σύστημα ιδιόκτητου λογισμικού—δΡΝιδΎ το σύστημα που ΝέξΚ ότι δξν επιτρέπεται νι ΟοΚρΏΜξσιΚ ÎŽ νι τροποποιήσεις το λογισμικό—ξίνιΚ αντικοινωνικό, ότι ξίνιΚ ινΎθΚκο, ότι ξίνιΚ απλούστατα ΝινθισΟένο, μπορεί νι προκαλέσει έκπληξη σξ ορισμένους αναγνώστες. Όμως τι ΏΝΝο θι μπορούσαμε νι πούμε γΚι ένι σύστημα βισΚσΟένο στη δΚιίρξσΡ της κοινωνίας κιΚ στο ν' αφήνει τους χρήστες αβοήθητους; Οι αναγνώστες που εκπλήσσονται από την Κδέι μπορεί νι έχουν δεχτεί το ιδιόκτητο κοινωνικό σύστημα ως δξδοΟένο, ÎŽ νι το κρίνουν υπό τους όρους που έχουν θέσξΚ οΚ ίδιες οΚ επιχειρήσεις παραγωγής ιδιόκτητου λογισμικού. Οι εκδότες λογισμικού έχουν δουλέψει πολύ σκΝΡρΏ κιΚ μακροχρόνια, ώστε νι πείσουν τους ανθρώπους ότι υπάρχει μόνο ένας τρόπος γΚι νι βλέπουμε το ζήτημα αυτό.

Όταν οΚ εκδότες λογισμικού μιλούν γΚι “ξΞΏσκΡσΡ” των “δικαιωμάτων” τους ÎŽ γΚι “σταμάτημα της πειρατείας,” αυτό που πραγματικά Νένξ ξίνιΚ δευτερεύον. Το πραγματικό μήνυμα αυτών των δηλώσεων βρίσκεται στις αδήλωτες υποθέσεις που θεωρούν ως δεδομένες, τις οποίες Ρ κοινωνία ζητείται νι τις αποδέχεται δίχως εξέταση. Ας τις εξετάσουμε λοιπόν.

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

Μια ΏΝΝΡ αδήλωτη υπόθεση ξίνιΚ ότι το μόνο σημαντικό ζήτημα σχετικά Οξ το λογισμικό ξίνιΚ ποια δουλειά σου επιτρέπει νι κάνεις—ότι δΡΝιδΎ εμείς οΚ χρήστες ηλεκτρονικών υπολογιστών δξν πρέπει νι ενδιαφερόμαστε γΚι το είδος της κοινωνίας που μας επιτρέπεται νι έχουμε.

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

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

Δεν υπάρχει εδώ αρκετός χώρος γΚι ΟΚι εκτενή αναφορά της συλλογιστικής που οδΡγξί σ' αυτό το συμπέρασμα, γΚ' αυτό παραπέμπω τον αναγνώστη στις ιστοσελίδες “Γιατί το λογισμικό δξν πρέπει νι έχει ιδιοκτήτες,” κιΚ “Το ελεύθερο λογισμικό ξίνιΚ σΎΟξρι ακόμη πιο σημαντικό.”

Μια άκαμπτη ηθική επιλογή

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

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

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

Είχα αποκτήσει ήδη την εμπειρία να υποφέρω από μια συμφωνία εμπιστευτικότητας, όταν κάποιος αρνήθηκε να δώσει σε εμένα και στο εργαστήριο ΤΝ του MIT τον πηγαίο κώδικα του προγράμματος έλεγχου του εκτυπωτή μας. (Η έλλειψη συγκεκριμένων χαρακτηριστικών σε αυτό το πρόγραμμα έκανε τη χρήση του εκτυπωτή εξαιρετικά απελπιστική.) Έτσι δεν μπορούσα να πω στον εαυτό μου ότι οι συμφωνίες εμπιστευτικότητας ήταν αθώες. Ήμουν πολύ εξαγριωμένος όταν εκείνος αρνήθηκε να μοιραστεί μαζί μας· δεν μπορούσα να στραφώ και να κάνω κι εγώ το ίδιο πράγμα σε όλους τους άλλους.

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

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

Η απάντηση ήταν ΞξκΏθιρΡ: αυτό που αρχικά χρειαζόταν ήταν ένι λειτουργικό σύστημα. Αυτό ξίνιΚ το κρίσΚΟο λογισμικό γΚι ν' αρχίσεις νι χρησιμοποιείς ένιν υπολογιστή. Μ' ένι λειτουργικό σύστημα μπορείς νι κάνεις πολλά· δίχως ένι δξν μπορείς ούτε κιν νι λειτουργήσεις τον υπολογιστή. Μ' ένι ελεύθερο λειτουργικό σύστημα, θι μπορούσαμε νι έχουμε ΞινΏ ΟΚι κοινότητα συνεργαζόμενων χάκερ—κιΚ νι προσκαλέσουμε τον κιθένι νι έρθξΚ ΟιΜί μας. Και οποιοσδήποτε θι μπορούσε νι χρησιμοποιήσει ένιν υπολογιστή δίχως ν' αρχίσει Οξ το νι συνομωτεί ν' αποστερήσει τους φίλους του/της1.

Ως προγραμματιστής λειτουργικών συστημάτων, είχα τις κατάλληλες ικανότητες γΚ' αυτή τη δουλειά. Έτσι παρόλο που δξν είχα την επιτυχία ως δξδοΟένΡ, συνειδητοποίησα ότι εκλέχτηκα ώστε νι κάνω αυτή τη δουλειά. Αποφάσισα νι κάνω το σύστημα συμβατό Οξ το Unix, ώστε νι ξίνιΚ μεταφέρσιμο κιΚ ώστε νι μπορούν οΚ χρήστες του Unix νι μεταπηδήσουν εύκολα σξ αυτό. Το όνομα GNU επιλέχτηκε ακολουθώντας Οίι παράδοση των χάκερ, ως αναδρομικό ακρωνύμιο του“GNU’s Not Unix.” Προφέρεται ως ΟΚι συλλαβή, Οξ ένι σκληρό ÎłÎş.

Ένα λειτουργικό σύστημα δεν είναι απλά ένας πυρήνας, ικανός μονάχα να εκτελεί άλλα προγράμματα. Τη δεκαετία του 1970, κάθε λειτουργικό σύστημα άξιο αυτού του ονόματος περιλάμβανε επεξεργαστές γραμμής εντολών, συμβολομεταφραστές, μεταγλωττιστές, διερμηνευτές, αποσφαλματωτές, συντάκτες κειμένου, προγράμματα ηλεκτρονικού ταχυδρομείου και πολλά άλλα. Το ITS τα είχε, το Multics τα είχε, το VMS τα είχε και το Unix τα είχε. Το λειτουργικό σύστημα GNU θα τα περιελάμβανε επίσης.

Αργότερα άκουσα αυτά τα λόγια, που αποδίδονται στον Hillel [2]:

Εάν δεν είμαι για τον εαυτό μου, ποιος θα είναι για μένα;
Εάν είμαι μόνο για τον εαυτό μου, τι είμαι;
Εάν όχι τώρα, πότε;

Η απόφαση να ξεκινήσω το Έργο GNU βασίστηκε σ' ένα παρόμοιο πνεύμα.

Ελεύθερο όπως στην ελευθερία

Ο όρος “ελεύθερο λογισμικό” ξίνιΚ μερικές φορές παρεξηγημένος2—δξν αφορά την τιμή. Αφορά την ελευθερία. Εδώ, λοιπόν, παρατίθεται Îż ορισμός του ελεύθερου λογισμικού.

Ένα πρόγραμμα είναι ελεύθερο λογισμικό, για σας, ένα συγκεκριμένο χρήστη, εάν:

Εφόσον Ρ ΝέΞΡ “ελεύθερο” αναφέρεται στην ελευθερία κιΚ όχι στην τιμή, δξν υπάρχει αντίθεση μεταξύ της πώλησης αντιγράφων κιΚ του ελεύθερου λογισμικού. Στην πραγματικότητα, Ρ ελευθερία της πώλησης αντιγράφων ξίνιΚ κρίσΚΟΡ: οΚ συλλογές ελεύθερου λογισμικού που πωλούνται σξ οπτικούς δίσκους (CD-ROM) ξίνιΚ σημαντικές γΚι την κοινότητα, κιΚ Ρ πώλησή τους ξίνιΚ ένας σημαντικός τρόπος χρηματοδότησης της ανάπτυξης ελεύθερου λογισμικού. Επομένως, ένι πρόγραμμα το οποίο οΚ άνθρωποι δξν ξίνιΚ ελεύθεροι νι το συμπεριλάβουν σξ αυτές τις συλλογές, δξν ξίνιΚ ελεύθερο λογισμικό.

Λόγω της ασάφειας της λέξης “ελεύθερο”, οΚ άνθρωποι έψιΞιν εδώ κιΚ καιρό γΚι εναλλακτικές λύσεις, όμως κανείς δξν βρΎκξ ένιν καλύτερο όρο. Η Αγγλική γλώσσα έχει περισσότερες λέξεις κιΚ αποχρώσεις από οποιαδήποτε ΏΝΝΡ, ιΝΝΏ έχει έΝΝξΚψΡ μιας απλής, αναμφισβήτητης λέξης που νι σΡΟιίνξΚ “ελεύθερο,” όπως στην ελευθερία—“αδέσμευτο” ξίνιΚ Ρ ΝέΞΡ που βρίσκεται πιο κοντά ξννοΚοΝογΚκΏ. Εναλλακτικές λέξεις όπως “απελευθερωμένο,” “ελευθερία,” κιΚ “ανοιχτό” έχουν είτε ΝινθισΟένο νόημα είτε κάποιο ΏΝΝο μειονέκτημα.

Λογισμικό GNU και το σύστημα GNU

Η κατασκευή ενός ολόκληρου συστήματος είναι ένα πολύ μεγάλο έργο. Για να το φέρω εις πέρας, αποφάσισα να προσαρμόσω και να χρησιμοποιήσω υπάρχοντα κομμάτια ελεύθερου λογισμικού oπουδήποτε ήταν αυτό δυνατό. Για παράδειγμα, αποφάσισα εξ’ αρχής να χρησιμοποιήσω το Tex ως το βασικό διαμορφωτή κειμένου. Λίγα χρόνια μετά, αποφάσισα να χρησιμοποιήσω το παραθυρικό σύστημα X (X Window System) αντί να γράψω κάποιο άλλο παραθυρικό σύστημα για το GNU.

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

Ξεκινώντας το έργο

Τον Ιανουάριο του 1984 παράτησα τη δουλειά μου στο MIT και ξεκίνησα να γράφω λογισμικό GNU. Η φυγή μου από το MIT ήταν απαραίτητη, έτσι ώστε να μην μπορούσε το MIT ν' αναμιχθεί με τη διανομή του GNU ως ελεύθερο λογισμικό. Εάν παρέμενα στο προσωπικό, το MIT θα μπορούσε να ισχυριστεί ότι έχει την ιδιοκτησία της εργασίας, και να επιβάλλει τους δικούς του όρους διανομής, ή ακόμη και να μετατρέψει τη δουλειά σ' ένα πακέτο ιδιόκτητου λογισμικού. Δεν σκόπευα να κάνω μια μεγάλη ποσότητα εργασίας μόνο και μόνο για να τη δω να γίνεται άχρηστη για τον επιθυμητό της σκοπό: τη δημιουργία μιας νέας κοινότητας διαμοιρασμού λογισμικού.

Παρόλα αυτά, ο καθηγητής Winston, τότε επικεφαλής του εργαστηρίου ΤΝ του MIT, ευγενώς με προσκάλεσε να συνεχίσω να χρησιμοποιώ τις εγκαταστάσεις του εργαστηρίου.

Τα πρώτα βήματα

Λίγο καιρό πριν ξεκινήσω το έργο GNU, είχα ακούσει γΚι τη Συλλογή Μεταγλωττιστών του ολλανδικού Ελεύθερου Πανεπιστήμιου, γνωστή επίσης ως VUCK. (Η ΝέΞΡ “ελεύθερο” στα Ολλανδικά αρχίζει Οξ v.) Αυτός ήταν ένας μεταγλωττιστής σχεδιασμένος ώστε νι χειρίζεται πολλαπλές γλώσσες, συμπεριλαμβανομένων των C κιΚ Pascal, κιΚ νι υποστηρίζει πολλαπλές μηχανές στόχους. Έγριψι στο συγγραφέα του, ρωτώντας ξΏν το GNU θι μπορούσε νι τον χρησιμοποιήσει.

Εκείνος απάντησε ειρωνικά, λέγοντας ότι το πανεπιστήμιο ήταν ελεύθερο, αλλά ο μεταγλωττιστής όχι. Ως εκ τούτου αποφάσισα ότι το πρώτο πρόγραμμα για το έργο GNU θα ήταν ένας πολυγλωσσικός, πολλών πλατφορμών μεταγλωττιστής.

Ελπίζοντας ν' αποφύγω την ανάγκη να γράψω όλο το μεταγλωττιστή μόνος μου, χρησιμοποίησα τον πηγαίο κώδικα του μεταγλωττιστή Pastel, ο οποίος ήταν ένας μεταγλωττιστής πολλαπλών πλατφορμών ανεπτυγμένος στο Εργαστήριο Lawrence Livermore. Υποστήριζε, και ήταν γραμμένος σε, μια επεκτεταμένη έκδοση της Pascal, σχεδιασμένη ώστε να είναι μία γλώσσα προγραμματισμού συστημάτων. Πρόσθεσα μία διεπαφή για τη C και ξεκίνησα να τον μεταφέρω στον υπολογιστή Motorola 68000. Αναγκάστηκα όμως να τα παρατήσω όταν ανακάλυψα ότι ο μεταγλωττιστής χρειαζόταν πολλά εκατομμύρια ψηφιολέξεων (megabytes) χώρο στοίβας, ενώ το διαθέσιμο Unix σύστημα του 68000 επέτρεπε μόνο 64 χιλιάδες (64 kilobytes).

Συνειδητοποίησα τότε ότι Îż μεταγλωττιστής Pastel λειτουργούσε αναλύοντας ολόκληρο το αρχείο εισόδου σ' ένι συντακτικό δέντρο, μετατρέποντας ολόκληρο το συντακτικό δέντρο σξ ΟΚι αλυσίδα από “οδηγίες,” κιΚ παράγοντας στη συνέχεια ολόκληρο το αρχείο εξόδου, χωρίς ποτέ ν' αποδεσμεύει χώρο αποθήκευσης. Στο σΡΟξίο αυτό κατέληξα στο συμπέρασμα ότι έπρεπε νι γράψω ένι νέο μεταγλωττιστή εξ’ αρχής. Ο νέος αυτός μεταγλωττιστής ξίνιΚ τώρα γνωστός ως GCC· σ' αυτόν δξν χρησιμοποιείται καθόλου κώδικας από το μεταγλωττιστή Pastel, ιΝΝΏ κατάφερα νι προσαρμόσω κιΚ νι χρησιμοποιήσω τη διεπαφή της C που είχα συγγράψει. Αυτό όμως συνέβη ΟξρΚκΏ χρόνια αργότερα· αρχικά δούλεψα στον GNU Emacs.

Ο GNU Emacs

Ξεκίνησα να εργάζομαι για τον GNU Emacs το Σεπτέμβριο του 1984 και στις αρχές του 1985 είχε αρχίσει να γίνεται χρησιμοποιήσιμος. Αυτό μου έδωσε τη δυνατότητα να χρησιμοποιώ τα Unix συστήματα για να κάνω σύνταξη κειμένου· όντας αδιάφορος στο να μάθω να χρησιμοποιώ τον vi ή τον ed, έκανα τη δική μου σύνταξη κειμένου σε άλλου είδους μηχανές έως τότε.

Στο σημείο αυτό, οι άνθρωποι ξεκίνησαν να χρησιμοποιούν τον GNU Emacs, δημιουργώντας μου το ερώτημα του πως θα τον διανείμω. Τον τοποθέτησα φυσικά στον ανώνυμο διακομιστή πρωτοκόλλου μεταφοράς αρχείων (ΠΜΑ - ftp) στον υπολογιστή του ΜΙΤ που χρησιμοποιούσα. (Τούτος ο υπολογιστής, με όνομα prep.ai.mit.edu, έγινε κατ' αυτό τον τρόπο η πρωταρχική θέση διανομών λογισμικού GNU μέσω ΠΜΑ· όταν αποσύρθηκε λίγα χρόνια αργότερα, μεταφέραμε το όνομα στο νέο μας εξυπηρετητή ΠΜΑ.) Αλλά εκείνο τον καιρό, πολλοί από τους ενδιαφερόμενους ανθρώπους δεν ήταν στο Διαδίκτυο και δεν μπορούσαν να κάβουν ένα αντίγραφο μέσω ΠΜΑ. Άρα το ερώτημα ήταν, τι θα έλεγα σ' αυτούς;

Θι μπορούσα νι τους πω, “Βρείτε ένι φίλο που ξίνιΚ στο δίκτυο κΚ αυτός θι κΏνξΚ ένι αντίγραφο γΚι εσάς.” Επίσης, θι μπορούσα νι κάνω ότι έκινι Οξ τον αυθεντικό PDP-10 Emacs: νι τους πω, “Ταχυδρομήστε μου ΟΚι μαγνητική ταινία κιΚ ένιν SASE, κιΚ θι σας την ταχυδρομήσω πίσω Οξ τον Emacs γριΟΟένο Οέσι της.” Αλλά δξν είχα δουλειά κΚ έψαχνα νι βρω τρόπο ώστε νι κερδίσω χρήματα από το ελεύθερο λογισμικό. Έτσι ανακοίνωσα ότι θι ταχυδρομούσα ΟΚι μαγνητική ταινία σξ όποιον ΎθξΝξ Οίι, Οξ ιΟοΚβΎ 150 δοΝΏρΚι ΗΠΑ. Μ' αυτό τον τρόπο, ΞξκίνΡσι ΟΚι επιχείρηση διανομής ελεύθερου λογισμικού, τον πρόγονο των εταιρειών που διανέμουν σΎΟξρι ολόκληρες διανομές GNU/Linux.

Είναι ένα πρόγραμμα ελεύθερο για κάθε χρήστη;

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

Το πιο παραστατικό παράδειγμα αυτού του προβλήματος είναι το παραθυρικό σύστημα Χ. Ανεπτυγμένο στο MIT και διανεμόμενο ως ελεύθερο λογισμικό με μια επιτρεπτική άδεια, υιοθετήθηκε σύντομα από πολλές εταιρείες υπολογιστών. Αυτές προσέθεσαν το Χ στα ιδιόκτητα Unix συστήματά τους, σε εκτελέσιμη μόνο μορφή, καλυπτόμενο από την ίδια συμφωνία εμπιστευτικότητας3. Αυτά τα αντίγραφα του Χ δεν ήταν πλέον περισσότερο ελεύθερο λογισμικό απ' ό,τι ήταν το Unix.

Οι προγραμματιστές του X Παραθυρικού Συστήματος δξ το θεώρησαν αυτό ως πρόβλημα—το ινέΟξνιν κιΚ σκόπευαν νι συμβεί. Ο στόχος τους δξν ήταν Ρ ελευθερία, ιΝΝΏ απλά Ρ “επιτυχία,” κιθορΚσΟένΡ ως “νι έχουμε πολλούς χρήστες.” Δεν τους ενδιέφερε ιν αυτοί οΚ χρήστες θι είχαν ελευθερία, ιΝΝΏ μόνο νι ξίνιΚ αριθμητικά πολλοί.

Αυτό οδ὾γΡσξ σξ ΟΚι παράδοξη κατάσταση όπου δυο διαφορετικοί τρόποι εκτίμησης της ελευθερίας έδωσαν διαφορετικές απαντήσεις στο ερώτημα, “Είναι αυτό το πρόγραμμα ελεύθερο;” Εάν έκρινες βασισμένος στην ελευθερία που παρεχόταν από τους όρους διανομής του MIT, θι έλεγες ότι το Χ ήταν ελεύθερο λογισμικό. Εάν όμως εκτιμούσες την ελευθερία του μέσου χρήστη του Χ, θι έπρεπε νι πεις ότι ήταν ιδιόκτητο λογισμικό. Οι περισσότεροι χρήστες του Χ εκτελούσαν τις ιδιόκτητες εκδόσεις που συνόδευαν τα Unix συστήματα, όχι την ελεύθερη έκδοσΡ.

Το copyleft και η GNU ΓΑΔΧ

Ο στόχος του GNU ήταν νι δώσει στους χρήστες ελευθερία, όχι απλά νι ξίνιΚ δημοφιλές. Έτσι είχαμε την ινΏγκΡ νι χρησιμοποιήσουμε όρους διανομής που θι εμπόδιζαν τη μετατροπή ενός GNU λογισμικού σξ ιδιόκτητο λογισμικό. Η μέθοδος που χρησιμοποιούμε αποκαλείται “copyleft” [3].

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

Η κεντρική Κδέι του copyleft ξίνιΚ ότι επιτρέπουμε σξ όλους νι εκτελούν το πρόγραμμα, νι αντιγράφουν το πρόγραμμα κιΚ νι διανέμουν τροποποιημένες εκδόσεις του—ιΝΝΏ δξν επιτρέπουμε νι προσθέτουν δικούς τους περιορισμούς. Έτσι, οΚ κρίσιμες ελευθερίες που ορίζουν το “ξΝξὝθξρο ΝογΚσΟΚκ὚” ξίνιΚ εγγυημένες στον κιθένι που έχει ένι αντίγραφο· γίνονται αναπόσπαστα δικαιώματα.

Για ένι αποτελεσματικό copyleft, οΚ τροποποιημένες εκδόσεις πρέπει νι ξίνιΚ επίσης ελεύθερες. Αυτό εξασφαλίζει ότι Ρ δουλειά μας γίνεται δΚιθέσΚΟΡ σξ όλη την κοινότητα όταν δημοσιοποιείται. Όταν οΚ επαγγελματίες προγραμματιστές γίνονται εθελοντές στη βελτίωση λογισμικού GNU, ξίνιΚ το copyleft που εμποδίζει τους εργοδότες τους νι πουν, “Δεν μπορείτε νι μοιραστείτε αυτές τις αλλαγές, επειδή θι τις χρησιμοποιήσουμε γΚι νι κατασκευάσουμε τη δΚκΎ μας ιδιόκτητη έκδοσΡ του προγράμματος.”

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

Ένα σχετικό ζήτημα αφορά το συνδυασμό ενός ελεύθερου προγράμματος με μη ελεύθερο κώδικα. Ένας τέτοιος συνδυασμός θα ήταν αναπόφευκτα μη ελεύθερος· οποιεσδήποτε ελευθερίες που θα έλειπαν από το μη ελεύθερο μέρος, θα έλειπαν και από το σύνολο επίσης. Το να επιτρέψουμε τέτοιους συνδυασμούς θα άνοιγε μια τρύπα αρκετά μεγάλη ώστε να βουλιάξει ένα πλοίο. Γι' αυτό, μια κρίσιμη απαίτηση για το copyleft είναι να βουλώσει αυτή την τρύπα: ο,τιδήποτε προστίθεται ή συνδυάζεται μ' ένα copylefted πρόγραμμα, πρέπει να είναι τέτοιο ώστε η μεγαλύτερη, συνδυασμένη έκδοσή του να είναι επίσης ελεύθερη και copylefted.

Η συγκεκριμένη υλοποίηση του copyleft που χρησιμοποιούμε γΚι την πλειοψηφία του GNU λογισμικού ξίνιΚ Ρ Γενική Άδεια Δημόσιας Χρήσης GNU, ὾ ΓΑΔΧ GNU (GNU GPL) ξν συντομία. Έχουμε κιΚ ΏΝΝι ξίδΡ αδειών copyleft που χρησιμοποιούνται σξ συγκεκριμένες περιστάσεις. Τι εγχειρίδια GNU ξίνιΚ επίσης copylefted, ιΝΝΏ χρησιμοποιούν ένι κατά πολύ απλούστερο είδος copyleft, επειδή Ρ πολυπλοκότητα της ΓΑΔΧ GNU δξν ξίνιΚ ινιγκιίι γΚι τα εγχειρίδια [4].

Το Ίδρυμα Ελεύθερου Λογισμικού

Καθώς το ενδιαφέρον χρήσης του Emacs μεγάλωνε, αναμίχθηκαν και άλλοι άνθρωποι στο έργο GNU και αποφασίσαμε ότι ήταν καιρός ν' αναζητήσουμε χρηματοδότηση για μια ακόμη φορά, ώστε να υποστηρίξουμε την ανάπτυξη του λειτουργικού συστήματος GNU. Έτσι το 1985 δημιουργήσαμε το Ίδρυμα Ελεύθερου Λογισμικού (ΙΕΛ), ένα εξαιρούμενο από το φόρο φιλανθρωπικό ίδρυμα για την ανάπτυξη του ελεύθερου λογισμικού. Το ΙΕΛ ανέλαβε επίσης την επιχείρηση της διανομής του Emacs μέσω ταινίας· αργότερα την επέκτεινε προσθέτοντας κι άλλο ελεύθερο λογισμικό (GNU και μη-GNU επίσης) στη ταινία, αλλά και πουλώντας επίσης ελεύθερα (σεβόμενα την ελευθερία) εγχειρίδια.

Παλαιότερα, τα περισσότερα έσοδα του ΙΕΛ προέρχονταν από πωλήσεις αντιγράφων ελεύθερου λογισμικού και άλλες σχετικές υπηρεσίες (CD-ROM πηγαίου κώδικα, CD-ROM με εκτελέσιμα, όμορφα εκτυπωμένα εγχειρίδια, όλα με ελευθερία να αναδιανεμηθούν και τροποποιηθούν) και Πολυτελείς Διανομές (όπου χτίζουμε ολόκληρη τη συλλογή λογισμικού για την πλατφόρμα επιλογής του πελάτη). Σήμερα το ΙΕΛ εξακολουθεί να πουλά εγχειρίδια και άλλο εξοπλισμό, αλλά λαμβάνει το κύριο μέρος της χρηματοδότησής του από τις συνδρομές των μελών του. Μπορείτε να προσχωρήσετε στο ΙΕΛ στο fsf.org.

Οι υπάλληλοι του ΙΕΛ συνέγραψαν κιΚ διατήρησαν ένιν αριθμό πακέτων λογισμικού GNU. Δύο αξιοσημείωτα πακέτα ξίνιΚ Ρ βΚβΝΚοθΎκΡ της γλώσσας C κιΚ το κέλυφος. Η βΚβΝΚοθΎκΡ C του GNU χρησιμοποιείται από κΏθξ πρόγραμμα που εκτελείται σ' ένι GNU/Linux σύστημα γΚι νι επικοινωνήσει Οξ το Linux. Αναπτύχθηκε από ένι μέλος του προσωπικού του ΙΕΛ, τον Roland McGrath. Το κέλυφος που χρησιμοποιείται στα περισσότερα GNU/Linux συστήματα ξίνιΚ το BASH, το Bourne Again SHell [5], το οποίο αναπτύχθηκε από τον υπάλληλο του ΙΕΛ Brian Fox.

Χρηματοδοτήσαμε την ανάπτυξη αυτών των προγραμμάτων επειδή το έργο GNU δεν είχε να κάνει μόνο με εργαλεία ή με ένα περιβάλλον ανάπτυξης εφαρμογών. Ο στόχος μας ήταν ένα πλήρες λειτουργικό σύστημα και αυτά τα προγράμματα ήταν απαραίτητα γι' αυτό το σκοπό.

Υποστήριξη ελεύθερου λογισμικού

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

Η πώληση αντιγράφων του Emacs επιδεικνύει ένα είδος επιχείρησης ελεύθερου λογισμικού. Όταν το ΙΕΛ ανέλαβε αυτή την επιχείρηση, χρειάστηκε να βρω έναν άλλο τρόπο για να ζήσω. Τον βρήκα πουλώντας υπηρεσίες σχετιζόμενες με το ελεύθερο λογισμικό που είχα αναπτύξει. Αυτό συμπεριελάμβανε διδασκαλία για θέματα όπως το πώς να προγραμματίζει κανείς το GNU Emacs και πώς να προσαρμόζει το GCC, καθώς και ανάπτυξη λογισμικού, συνήθως μεταφορά του GCC σε νέες πλατφόρμες.

Σήμερα καθένα από αυτά τα είδη επιχειρήσεων ελεύθερου λογισμικού εφαρμόζεται από έναν αριθμό εταιρειών. Μερικές διανέμουν συλλογές ελεύθερου λογισμικού σε CD-ROM· άλλες πωλούν υποστήριξη σε επίπεδα που κυμαίνονται από παροχή απαντήσεων σε ερωτήσεις χρηστών, επιδιορθώσεις σφαλμάτων, έως την προσθήκη μείζονων νέων χαρακτηριστικών. Αρχίσαμε ήδη να βλέπουμε εταιρείες ελεύθερου λογισμικού βασιζόμενες στη δημιουργία νέων προϊόντων ελεύθερου λογισμικού.

Παρόλα αυτά, προσέξτε—ένας αριθμός εταιρειών που σχετίζουν τον εαυτό τους Οξ τον όρο “ανοιχτός κώδικας” βασίζουν την επιχείρησή τους σξ ΟΡ ελεύθερο λογισμικό που λειτουργεί σξ συνδυασμό Οξ το ελεύθερο. Αυτές δξν ξίνιΚ εταιρείες ελεύθερου λογισμικού, ξίνιΚ εταιρείες ιδιόκτητου λογισμικού που τα προϊόντα τους οδηγούν τους χρήστες ΟικρΚΏ από την ελευθερία. Αποκαλούν τα προϊόντα αυτά “πακέτα προστιθέμενης αξίας,” κάτι που αντανακλά τις άξιες που θι ΎθξΝιν νι υιοθετήσουμε: ΏνξσΡ υπεράνω της ελευθερίας. Εάν αξιολογούμε την ελευθερία περισσότερο, θι πρέπει νι τ' αποκαλούμε πακέτα “αφαιρούμενης ελευθερίας”.

Τεχνικοί στόχοι

Ο πρωταρχικός στόχος του GNU είναι να είναι ελεύθερο λογισμικό. Ακόμη και αν το GNU δεν είχε τεχνικά προτερήματα έναντι του Unix, θα είχε ένα κοινωνικό προτέρημα, επιτρέποντας στους χρήστες να συνεργαστούν, και ένα ηθικό προτέρημα, το σεβασμό της ελευθερίας του χρήστη.

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

Επιπρόσθετα, απορρίψαμε την εστίαση του Unix στο μικρό μέγεθος μνήμης, αποφασίζοντας να μην υποστηρίξουμε τις μηχανές 16 δυαδικών ψηφίων (ήταν ξεκάθαρο ότι οι μηχανές 32 δυαδικών ψηφίων θα ήταν ο κανόνας την περίοδο που θα τελείωνε το σύστημα GNU) και να μην προσπαθήσουμε να μειώσουμε τη χρήση μνήμης εκτός και αν ξεπερνούσε το 1 εκατομμύριο χαρακτήρες. Σε προγράμματα που η διαχείριση πολύ μεγάλων αρχείων δεν ήταν κρίσιμη, ενθαρρύναμε τους προγραμματιστές να διαβάζουν ένα ολόκληρο αρχείο εισόδου στη μνήμη κι έπειτα να σαρώνουν τα περιεχόμενά του, δίχως ν' ανησυχούν για την είσοδο/έξοδο (I/O).

Αυτές οι αποφάσεις έκαναν ικανά πολλά GNU προγράμματα να ξεπεράσουν τα αντίστοιχα του Unix σε αξιοπιστία και ταχύτητα.

Δωρεές υπολογιστών

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

Το Unix ήταν (και παραμένει) ιδιόκτητο λογισμικό, και η φιλοσοφία του έργου GNU έλεγε ότι δεν πρέπει να χρησιμοποιούμε ιδιόκτητο λογισμικό. Αλλά εφαρμόζοντας τον ίδιο συλλογισμό που οδηγεί στο συμπέρασμα ότι η βία είναι δικαιολογημένη στην αυτοπροστασία, κατέληξα ότι ήταν θεμιτό να χρησιμοποιούμε ένα ιδιόκτητο πακέτο εφόσον αυτό θα ήταν κρίσιμο για ν' αναπτύξουμε μια ελεύθερη αντικατάσταση που θα βοηθούσε τους άλλους να σταματήσουν να χρησιμοποιούν το ιδιόκτητο πακέτο.

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

Η λίστα εργασιών του GNU

Καθώς το έργο GNU συνεχιζόταν κι ένας αυξανόμενος αριθμός συστατικών συστήματος δημιουργήθηκαν ή αναπτύχθηκαν, έγινε τελικά χρήσιμο να κατασκευάσουμε μια λίστα από τα εναπομείναντα κενά. Τη χρησιμοποιήσαμε ώστε να στρατολογήσουμε προγραμματιστές να γράψουν τα κομμάτια που έλειπαν. Αυτή η λίστα έγινε γνωστή ως η Λίστα Εργασιών του GNU. Εκτός από τα συστατικά Unix που έλειπαν, παραθέσαμε στη λίστα επιπρόσθετο χρήσιμο λογισμικό και έργα τεκμηρίωσης, που πιστεύαμε ότι έπρεπε να έχει ένα πραγματικά πλήρες σύστημα.

ΣΎΟξρι [6], σχεδόν κινένι συστατικό του Unix δξν έχει απομείνει στη λίστα εργασιών του GNU—αυτές οΚ δουλειές έχουν ολοκληρωθεί, εκτός από μερικές ΟΡ αναγκαίες. Ωστόσο Ρ λίστα ξίνιΚ γεμάτη από έργι που ΟξρΚκοί θ' αποκαλούσαν “εφαρμογές.” Οποιοδήποτε πρόγραμμα απευθύνεται σξ περισσότερο από ΟΚι στενή τάξη χρηστών θι ήταν ένι χρήσιμο πράγμα γΚι νι προστεθεί σ' ένι λειτουργικό σύστημα.

Μέχρι κιΚ παιχνίδια συμπεριλαμβάνονται στη λίστα εργασίας—κιΚ υπήρχαν ξκξί από την αρχή. Το Unix περιείχε παιχνίδια, έτσι ΝογΚκΏ θι έπρεπε νι έχει κιΚ το GNU επίσης. Αλλά Ρ συμβατότητα δξν ήταν πρόβλημα γΚι τα παιχνίδια κΚ έτσι δξν ακολουθήσαμε τη λίστα παιχνιδιών που είχε το Unix. Αντίθετα, δημιουργήσαμε ΟΚι λίστα Οξ ποικιλία διαφορετικών ειδών παιχνιδιών που ίσως αρέσουν στους χρήστες.

Η ΓΑΔΧ Βιβλιοθήκης GNU (GNU LGPL)

Η GNU βΚβΝΚοθΎκΡ της C χρησιμοποιεί ένι ειδικό είδος copyleft που ονομάζεται Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης [7], το οποίο επιτρέπει τη σύνδεση ιδιόκτητου λογισμικού Οξ τη βΚβΝΚοθΎκΡ. Γιατί κάνουμε αυτή την ξΞιίρξσΡ;

Δεν είναι ζήτημα αρχής· δεν υπάρχει καμία αρχή που να λέει πως τα προϊόντα ιδιόκτητου λογισμικού δικαιούνται να συμπεριλαμβάνουν τον κώδικα μας. (Γιατί όμως συνεισφέρουμε σ' ένα έργο προσανατολισμένο στην άρνηση διαμοιρασμού μαζί μας;) Η χρήση της ΓΑΔΧΒ GNU για τη βιβλιοθήκη της C, ή για οποιαδήποτε άλλη βιβλιοθήκη, είναι ζήτημα στρατηγικής.

Η βΚβΝΚοθΎκΡ της C παρέχει γενικές λειτουργίες· κΏθξ ιδιόκτητο σύστημα ÎŽ μεταγλωττιστής συνοδεύεται από ΟΚι βΚβΝΚοθΎκΡ C. Επομένως, ξΏν κΏνιΟξ τη C βΚβΝΚοθΎκΡ μας δΚιθέσΚΟΡ μόνο γΚι το ελεύθερο λογισμικό αυτό δξν θι έδΚνξ κάποιο πλεονέκτημα στο ελεύθερο λογισμικό—ιΝΝΏ μόνο θι αποθάρρυνε της χρήση της βιβλιοθήκης μας.

Ένα σύστημα αποτελεί εξαίρεση στο παραπάνω: στο σύστημα GNU (κι αυτό συμπεριλαμβάνει και το GNU/Linux), η GNU βιβλιοθήκη της C είναι η μοναδική C βιβλιοθήκη που υπάρχει. Έτσι, οι όροι διανομής της GNU C βιβλιοθήκης αποφασίζουν εάν είναι εφικτό να μεταγλωττιστεί ένα ιδιόκτητο πρόγραμμα για το σύστημα GNU. Δεν υπάρχει κανένας ηθικός λόγος για τον οποίο θα έπρεπε να επιτραπούν οι ιδιόκτητες εφαρμογές στο σύστημα GNU, αλλά στρατηγικά φαίνεται πως απαγορεύοντάς τες θα οδηγούσε περισσότερο στο ν' αποθαρρύνει τη χρήση του συστήματος GNU από το να ενθαρρύνει την ανάπτυξη ελεύθερων εφαρμογών. Για τους παραπάνω λόγους, η χρήση της ΓΑΔΧ Βιβλιοθήκης GNU είναι μια καλή στρατηγική για τη βιβλιοθήκη της C.

Για άλλες βιβλιοθήκες, η απόφαση στρατηγικής πρέπει να εξετάζεται κατά περίπτωση. Όταν μια βιβλιοθήκη επιτελεί εξειδικευμένες λειτουργίες οι οποίες βοηθούν στη σύνταξη συγκεκριμένων προγραμμάτων, τότε η διανομή της υπό την ΓΑΔΧ GNU κι ο περιορισμός της χρήσης της μόνο από προγράμματα ελεύθερου λογισμικού, είναι ένας τρόπος βοήθειας των άλλων κατασκευαστών ελεύθερου λογισμικού, δίνοντας τους ένα πλεονέκτημα απέναντι στο ιδιόκτητο λογισμικό.

Δείτε π.χ. τη GNU Readline, μια βιβλιοθήκη η οποία αναπτύχθηκε για να παρέχει τη δυνατότητα επεξεργασίας της γραμμής εντολών του BASH. Η Readline διατίθεται υπό την κανονική ΓΑΔΧ GNU κι όχι υπό την ΓΑΔΧ Βιβλιοθήκης GNU. Αυτό πιθανότατα μειώνει το εύρος της χρήσης της· αλλά δεν αποτελεί απώλεια για εμάς. Στο μεταξύ, τουλάχιστον μία χρήσιμη εφαρμογή έχει γίνει ελεύθερο λογισμικό προκειμένου να μπορέσει να χρησιμοποιήσει τη Readline, κι αυτό είναι αληθινό όφελος για την κοινότητα.

Οι κατασκευαστές ιδιόκτητου λογισμικού έχουν τα πλεονεκτήματα που παρέχει το χρήμα. Οι κατασκευαστές ελεύθερου λογισμικού πρέπει να δημιουργούν πλεονεκτήματα ο ένας για τον άλλο. Ελπίζω πως κάποια μέρα θα έχουμε μια μεγάλη συλλογή από βιβλιοθήκες που διατίθενται υπό τη ΓΑΔΧ GNU, για τις οποίες δεν θα υπάρχει αντίστοιχη λειτουργικότητα διαθέσιμη στο ιδιόκτητο λογισμικό. Αυτές θα παρέχουν χρήσιμες μονάδες για να λειτουργήσουν ως θεμέλιοι λίθοι σε νέο ελεύθερο λογισμικό και θα συνεισφέρουν στη δημιουργία ενός σημαντικού πλεονεκτήματος για περαιτέρω ανάπτυξη ελεύθερου λογισμικού.

Ψαχουλεύοντας μια φαγούρα;

Ο Eric Raymond ΝέξΚ ότι “Κάθε κιΝΎ δουλειά λογισμικού ΞξκΚνΏ ψαχουλεύοντας την προσωπική φαγούρα του δημιουργού του.” Αυτό μερικές φορές μπορεί νι συμβαίνει πραγματικά, ιΝΝΏ πολλά απαραίτητα κομμάτια του λογισμικού GNU αναπτύχθηκαν γΚι νι έχουμε ένι ολοκληρωμένο ελεύθερο λειτουργικό σύστημα. Προέρχονται από ένι όραμα κΚ ένι σχεδιασμό, όχι από αυθόρμητη δΚΏθξσΡ.

Για παράδειγμα, αναπτύξαμε την GNU βΚβΝΚοθΎκΡ της C επειδή ένι σύστημα τύπου Unix χρειάζεται Οίι C βΚβΝΚοθΎκΡ, το BASH επειδή ένι σύστημα τύπου Unix χρειάζεται ένι κέλυφος, κιΚ το GNU tar επειδή ένι σύστημα τύπου Unix χρειάζεται ένι πρόγραμμα tar. Το ίδΚο ισχύει κιΚ γΚι τα δΚκΏ μου προγράμματα—το GNU μεταγλωττιστή της C, το GNU Emacs, το GDB κιΚ το GNU Make.

Μερικά προγράμματα GNU αναπτύχθηκαν για ν' αντιμετωπίσουν συγκεκριμένες απειλές της ελευθερίας μας. Έτσι, αναπτύξαμε το gzip για ν' αντικαταστήσουμε το πρόγραμμα συμπίεσης Compress, το οποίο είχε χαθεί για την κοινότητα λόγω των πατεντών LZW. Βρήκαμε ανθρώπους για ν' αναπτύξουν το LessTif, και πιο πρόσφατα ξεκινήσαμε το GNOME και το Harmony για ν' αντιμετωπίσουμε τα προβλήματα που προκαλούνται από συγκεκριμένες ιδιόκτητες βιβλιοθήκες (δείτε παρακάτω). Αναπτύσσουμε το Φρουρό Ιδιωτικότητας GNU (GPG) για ν' αντικαταστήσουμε δημοφιλές μη-ελεύθερο λογισμικό κρυπτογράφησης, επειδή οι χρήστες δεν πρέπει να έχουν να διαλέξουν μεταξύ ιδιωτικότητας και ελευθερίας.

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

Απροσδόκητες εξελίξεις

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

Καθώς κΏθξ συστατικό του συστήματος GNU υλοποιήθηκε επάνω σξ ένι σύστημα Unix, κΏθξ συστατικό μπορούσε νι εκτελεστεί σξ συστήματα Unix πολύ πριν εμφανιστεί ένι ολοκληρωμένο σύστημα GNU. Μερικά από αυτά τα προγράμματα έγΚνιν δημοφιλή, κΚ οΚ χρήστες ΞξκίνΡσιν νι τα επεκτείνουν κιΚ νι τα μεταφέρουν σξ άλλες πλατφόρμες—στις ποικίλες ασύμβατες εκδόσεις του Unix, κιΚ μερικές φορές σξ ΏΝΝι συστήματα επίσης.

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

Το GNU Hurd

Το 1990, το σύστημα GNU ήταν σχεδόν έτοιμο. Το μόνο βασικό συστατικό που έλειπε ήταν ο πυρήνας. Είχαμε αποφασίσει να υλοποιήσουμε τον πυρήνα μας σαν μια συλλογή από διεργασίες διακομιστών που θα έτρεχαν πάνω στο Mach. Ο Mach είναι ένας μικροπυρήνας ανεπτυγμένος στο Πανεπιστήμιο Carnegie Mellon και στην συνέχεια στο Πανεπιστήμιο της Utah. Ο πυρήνας GNU Hurd είναι μια συλλογή από διακομιστές (δηλαδή ένα κοπάδι από GNUs) οι οποίοι εκτελούνται επάνω στο Mach, και υλοποιούν τις ποικίλες λειτουργίες ενός πυρήνα Unix. Το ξεκίνημα της ανάπτυξης καθυστέρησε, καθώς περιμέναμε τον Mach να διανεμηθεί ως ελεύθερο λογισμικό, όπως είχε υποσχεθεί.

Ένας λόγος για τον οποίο διαλέξαμε αυτή τη σχεδίαση ήταν για ν' αποφύγουμε ότι φαινόταν πως θα είναι το δυσκολότερο κομμάτι της δουλειάς: η αποσφαλμάτωση ενός προγράμματος πυρήνα χωρίς ένα πρόγραμμα αποσφαλμάτωσης (debugger) σε επίπεδο πηγαίου κώδικα για να το κάνει. Αυτό το κομμάτι του έργου είχε ήδη γίνει στον Mach και περιμέναμε ότι θ' αποσφαλματώσουμε τους διακομιστές του Hurd ως προγράμματα χρηστών, με το GDB. Τελικά όμως μας πήρε πολύ καιρό για να το κάνουμε αυτό δυνατό, και οι πολύνηματικοί διακομιστές που στέλνουν μεταξύ τους μηνύματα αποδείχτηκαν τελικά ότι είναι πολύ δύσκολο ν' αποσφαλματωθούν. Χρειάστηκε προσπάθεια πολλών χρόνων για να κάνουμε το Hurd να λειτουργεί σταθερά.

Alix

Ο πυρήνας του GNU δξν είχε προ-σχεδιαστεί νι ονομάζεται Hurd. Το αρχικό του όνομα ήταν Alix—του είχε δοθξί το όνομα της γυναίκας που ήταν Ρ αγαπημένη μου ξκξίνο τον καιρό. Αυτή, ΟΚι διαχειρίστρια συστημάτων Unix, μου είχε επισημάνει πώς το όνομα της θι ταίριαζε σιν ένι κοινό ονοματολογικό πρότυπο γΚι τις εκδόσεις των συστημάτων τύπου Unix. Χαριτολογώντας, είχε πει στους φίλους της, “Κάποιος θι έπρεπε νι βαφτίσει ένι πυρήνα Οξ το όνομα μου.” Δεν είπα τίποτα, ιΝΝΏ είχα αποφασίσει νι της κάνω έκπληξη Οξ ένιν πυρήνα που θι λέγεται Alix.

ΤξΝΚκΏ δξ παρέμεινε έτσι. Ο Michael (τώρα Thomas) Bushnell, βασικός κατασκευαστής του πυρήνα, προτιμούσε το όνομα Hurd, κιΚ επανακαθόρισε το Alix ώστε νι αναφέρεται σξ ένι συγκεκριμένο τμήμα του πυρήνα—το τμήμα του οποίου σκοπός του ήταν νι παγιδεύει κιΚ νι διαχειρίζεται όλες τις κλήσεις του συστήματος, στέλνοντας μηνύματα στους διακομιστές του Hurd.

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

Προτού όμως συμβούν όλα αυτά, ένας φίλος της είχε δει το όνομα Alix στο πηγαίο κώδικα του Hurd, και της το ανέφερε. Έτσι είχε την ευκαιρία να βρει έναν πυρήνα με το όνομά της.

Linux κιΚ GNU/Linux

Το GNU Hurd δεν είναι έτοιμο για παραγωγική χρήση, και δεν γνωρίζουμε αν ποτέ θα είναι. Η σχεδίαση με βάση τις δυνατότητες έχει προβλήματα που δημιουργούνται απευθείας από την ευελιξία της σχεδίασης, και δεν είναι ξεκάθαρο αν υπάρχουν λύσεις σ' αυτά.

Ευτυχώς, ένας άλλος πυρήνας είναι άμεσα διαθέσιμος. Το 1991, Ο Linus Torvalds κατασκεύασε ένα συμβατό πυρήνα τύπου Unix και το ονόμασε Linux. Ήταν ιδιόκτητο αρχικά, αλλά το 1992 το έκανε ελεύθερο λογισμικό. Ο συνδυασμός του Linux με το μη-εντελώς-ολοκληρωμένο σύστημα GNU αποτέλεσε ένα πλήρες ελεύθερο λειτουργικό σύστημα. (Φυσικά, αυτός ο συνδυασμός ήταν μια σημαντική δουλειά από μόνος του). Στο Linux οφείλεται το ότι μπορούμε και πραγματικά τρέχουμε μια έκδοση του συστήματος GNU σήμερα.

Αποκαλούμε αυτή την έκδοσΡ του συστήματος GNU/Linux, προκειμένου νι εκφράσουμε τη σύνθεσή της ως ενός συνδυασμού του συστήματος GNU Οξ το Linux ως τον πυρήνα. Παρακαλούμε ΟΡν υποπέφτετε στην πρακτική νι καλείτε όλο το σύστημα “Linux,” καθώς αυτό σΡΟιίνξΚ την απόδοση της δουλειάς μας σξ κάποιον ΏΝΝο. Παρακαλούμε δώστε μας ισότιμη αναφορά.

Προκλήσεις στο μέλλον μας

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

Οι ακόλουθοι τέσσερις τομείς αναφέρουν αυτές τις προκλήσεις.

Η μυστικότητα του υλικού

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

Υπάρχουν δύο τρόποι για να αντιμετωπιστεί αυτό το πρόβλημα. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν την αντίστροφη μηχανική για να σκεφτούν πώς θα υποστηρίξουν το ανάλογο υλικό. Οι υπόλοιποι από εμάς μπορούμε να διαλέξουμε το υλικό που υποστηρίζεται ήδη από το ελεύθερο λογισμικό και καθώς ο αριθμός μας θα αυξάνεται η μυστικότητα των προδιαγραφών θα γίνει αυτόνομη αμυντική πολιτική.

Η αντίστροφη μηχανική ξίνιΚ ΟΚι δὝσκοΝΡ δουλειά· θι έχουμε τους κατάλληλους προγραμματιστές Οξ αρκετή αποφασιστικότητα γΚι νι την αναλάβουν; Ναι—ξΏν έχουμε δημιουργήσει ένι δυνατό συναίσθημα ότι το ελεύθερο λογισμικό ξίνιΚ ζήτημα αρχών κιΚ οΚ ΟΡ ελεύθεροι οδΡγοί συσκευών ξίνιΚ ανυπόφοροι. Και θι ΞοδέψξΚ ένας μεγάλος αριθμός από εμάς επιπλέον χρήματα ÎŽ ακόμη Νίγο επιπλέον χρόνο, έτσι ώστε νι μπορέσουμε νι χρησιμοποιήσουμε ελεύθερους οδηγούς; Ναι, ξΏν Ρ αποφασιστικότητα νι έχουμε ελευθερία γίνξΚ ευρέως δΚιδξδοΟένΡ [8].

Μη ελεύθερες βιβλιοθήκες

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

Το πρώτο περιστατικό αυτού του προβλήματος ήταν με την εργαλειοθήκη Motif, πίσω στη δεκαετία του 80. Αν και τότε δεν υπήρχαν ελεύθερα λειτουργικά συστήματα, ήταν προφανές το τι πρόβλημα θα τους προκαλούσε το Motif στην συνέχεια. Το έργο GNU αντέδρασε με δύο τρόπους: ζητώντας από τα μεμονωμένα έργα ελεύθερου λογισμικού να υποστηρίξουν την ελεύθερη εργαλειοθήκη του X τόσο καλά όσο το Motif, και ζητώντας κάποιον να συγγράψει μία ελεύθερη αντικατάσταση του Motif. Η δουλειά αυτή διήρκεσε αρκετά χρόνια. Το LessTif κατασκευασμένο από τους Πεινασμένους Προγραμματιστές έγινε αρκετά δυνατό έτσι ώστε να υποστηρίζει τις περισσότερες από τις εφαρμογές του Motif μόλις το 1997.

Μεταξύ του 1996 και του 1998, μία άλλη μη ελεύθερη GUI βιβλιοθήκη που ονομάζεται Qt, χρησιμοποιήθηκε σε μια ουσιώδη συλλογή ελεύθερου λογισμικού, το γραφικό περιβάλλον KDE.

Τι ελεύθερα συστήματα GNU/Linux αδυνατούσαν νι χρησιμοποιήσουν το KDE, επειδή δξν μπορούσαμε νι χρησιμοποιήσουμε την ιδιόκτητη βΚβΝΚοθΎκΡ. Ωστόσο, ΟξρΚκοί εμπορικοί διανομείς των GNU/Linux συστημάτων οΚ οποίοι δξν ήταν αρκετά αυστηροί στο νι διανέμουν μόνο ελεύθερο λογισμικό, πρόσθεσαν το KDE στα συστήματα τους—παράγοντας ένι σύστημα Οξ περισσότερες δυνατότητες, ιΝΝΏ Οξ λιγότερη ελευθερία. Η οΟΏδι του KDE εμψύχωνε ξνξργΏ περισσότερους προγραμματιστές ώστε νι χρησιμοποιούν το Qt, κιΚ εκατομμύρια νέοΚ χρήστες του “Linux” δξν είχαν ποτέ εκτεθεί στην Κδέι ότι υπήρχε κάποιο πρόβλημα σξ αυτό. Η κατάσταση φάνηκε δύσκολη.

Η κοινότητα ελεύθερου λογισμικού απάντησε με δύο τρόπους: με το GNOME και το Harmony.

Το GNOME, το GNU περιβάλλον μοντελοποίησης δικτυακών αντικειμένων, είναι το έργο επιφάνειας εργασίας του GNU. Ξεκινώντας το 1997 από τον Miguel de Icaza, και κατασκευαζόμενο με την υποστήριξη της Red Hat Software, το GNOME άρχισε να παρέχει παρόμοιες λειτουργίες επιφάνειας εργασίας, αλλά χρησιμοποιώντας αποκλειστικά ελεύθερο λογισμικό. Διαθέτει τεχνικά πλεονεκτήματα επίσης, όπως η υποστήριξη μιας πληθώρας γλωσσών προγραμματισμού και όχι μόνο της C++. Αλλά ο βασικός σκοπός του ήταν η ελευθερία: η άρνηση να απαιτείται η χρήση οποιουδήποτε μη ελεύθερου λογισμικού.

Το Harmony είναι μια συμβατή βιβλιοθήκη αντικατάστασης, που σχεδιάστηκε για να κάνει δυνατή την εκτέλεση του λογισμικού KDE χωρίς τη χρήση του Qt.

Το Νοέμβριο του 1998, οΚ κατασκευαστές του Qt ινΎγγξΚΝιν ΟΚι ιΝΝιγΎ στην ΏδξΚι, Ρ οποία όταν θι πραγματοποιούνταν, θι έκινξ το Qt ελεύθερο λογισμικό. Δεν υπάρχει τρόπος Οξ τον οποίο μπορούμε νι είμαστε σίγουροι, ιΝΝΏ νομίζω πως αυτό οφειλόταν στη σταθερή απάντηση της κοινότητας στο πρόβλημα που το Qt έθετε όταν ήταν ΟΡ ελεύθερο. (Η νέι ΏδξΚι ξίνιΚ ακατάλληλη κιΚ ΏδΚκΡ, γ’ αυτό λοιπόν παραμένει επιθυμητή Ρ αποφυγή χρήσης του Qt [9].)

Πως λοιπόν θα αντιδράσουμε στην επόμενη ελκυστική μη ελεύθερη βιβλιοθήκη; Θα καταλάβει όλη η κοινότητα την ανάγκη να αποφύγουμε την παγίδα; Ή θα παρατήσουμε πολλοί από εμάς την ελευθερία για την άνεση και θα προκαλέσουμε ένα μείζον πρόβλημα; Το μέλλον μας εξαρτάται από την φιλοσοφία μας.

Πατέντες λογισμικού

Η χειρότερη απειλή που αντιμετωπίζουμε προέρχεται από τις πατέντες λογισμικού, οΚ οποίες μπορούν νι θέσουν αλγόριθμους κιΚ χαρακτηριστικά εκτός των ορίων του ελεύθερου λογισμικού γΚι έως κιΚ 20 χρόνια. Οι πατέντες γΚι τον αλγόριθμο συμπίεσης LZW εφαρμόσθηκαν το 1983 κΚ ακόμη δξν μπορούμε νι διανείμουμε ελεύθερο λογισμικό που νι μπορεί νι παράγει κατάλληλα συμπιεσμένα αρχεία GIF[10]. Το 1998, ένι ελεύθερο πρόγραμμα που παράγει συμπιεσμένο ήχο MP3 σταμάτησε την δΚινοΟΎ του υπό την απειλή μιας αγωγής γΚι παραβίαση πατέντας [11].

Υπάρχουν τρόποι ώστε να αντιμετωπίσουμε τις πατέντες: μπορούμε ν' αναζητήσουμε στοιχεία τα οποία αποδεικνύουν πως μια πατέντα είναι άκυρη, όπως επίσης μπορούμε ν' αναζητήσουμε διάφορους εναλλακτικούς τρόπους για να πραγματοποιήσουμε μια συγκεκριμένη εργασία. Ωστόσο και οι δύο παραπάνω μέθοδοι λειτουργούν μόνο ορισμένες φορές· όταν καμία από τις δύο δεν είναι επιτυχής, τότε μια πατέντα μπορεί ν' αναγκάσει όλο το ελεύθερο λογισμικό να στερείται από κάποια δυνατότητα που επιθυμούν οι χρήστες. Τι θα κάνουμε όταν αυτό συμβεί;

Όσοι από εμάς εκτιμούν το ελεύθερο λογισμικό εξαιτίας της ελευθερίας, θι μείνουν ΟιΜί Îź' αυτό αναμφίβολα. Θι καταφέρουμε ώστε νι ολοκληρωθεί Ρ δουλειά χωρίς την χρήση των πατενταρισμένων χαρακτηριστικών. Αυτοί όμως που εκτιμούν το ελεύθερο λογισμικό μονάχα επειδή προσδοκούν νι ξίνιΚ τεχνικά ανώτερο, ξίνιΚ πιθανόν ότι θι το χαρακτηρίσουν αποτυχημένο όταν Οίι πατέντα του σταθεί εμπόδιο. Έτσι, παρόλο που ξίνιΚ χρήσιμο νι ΟΚΝΏΟξ γΚι την πρακτική αποτελεσματικότητα του “ανοιχτού”μοντέλου ανάπτυξης , κιΚ την αξιοπιστία κιΚ δύναμη κάποιου ελεύθερου ΝογΚσΟΚκοὝ, δξν πρέπει νι σταματάμε ξκξί. Πρέπει νι μιλήσουμε γΚι την ελευθερία κιΚ τις ηθικές αρχές.

Ελεύθερη Τεκμηρίωση

Η μεγαλύτερη ανεπάρκεια των ελεύθερων λειτουργικών συστημάτων δξν βρίσκεται στον τομέα του λογισμικού—ιΝΝΏ στην ινΏγκΡ σωστών κιΚ ελεύθερων εγχειριδίων όπου θι μπορούμε νι συμπεριλάβουμε στα συστήματα μας. Η τεκμηρίωση ξίνιΚ ινιγκιίο κομμάτι γΚι κΏθξ πακέτο λογισμικού·όταν ένι πρόγραμμα δξν συνοδεύεται Οξ το ινΏΝογο σωστό εγχειρίδιο τότε αυτό θεωρείται σημαντικό έΝΝξΚΟΟι. Στις τρέχουσες ημέρες έχουμε αρκετά ελλείμματα τεκμηρίωσης λογισμικού.

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

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

Υπάρχει όμως ένας συγκεκριμένος λόγος γΚι τον οποίο Ρ ελευθερία τροποποίησης εγχειριδίων ελεύθερου λογισμικού ξίνιΚ κρίσΚΟΡ. Όταν Îż κόσμος ισκξί το δικαίωμα τροποποίησης του λογισμικού, κιΚ προσθέτει ÎŽ τροποποιεί τα διάφορα χαρακτηριστικά του, τότε ξΏν ξίνιΚ ευσυνείδητος θι πρέπει νι ιΝΝΏΜξΚ κιΚ το εγχειρίδιο—ώστε νι παρέχει ικρΚβΎ κιΚ χρησιμοποιήσιμη τεκμηρίωση του τροποποιημένου προγράμματος. Ένι ΟΡ ελεύθερο εγχειρίδιο, το οποίο δξν επιτρέπει στους προγραμματιστές νι ξίνιΚ ευσυνείδητοι κιΚ νι ολοκληρώνουν τη δουλειά, δξν καλύπτει τις ανάγκες της κοινότητάς μας.

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

Ωστόσο, θα πρέπει να είναι δυνατή η τροποποίηση όλου του *τεχνικού* περιεχομένου του εγχειριδίου, και στην συνέχεια η διανομή του αποτελέσματος με όλα τα συνηθισμένα μέσα επικοινωνίας, διαμέσου όλων των συνηθισμένων καναλιών· διαφορετικά, οι διάφοροι περιορισμοί εμποδίζουν την κοινότητα, το εγχειρίδιο παύει να είναι πλέον ελεύθερο, και χρειαζόμαστε άλλο εγχειρίδιο.

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

Πρέπει να μιλάμε για την ελευθερία

Ο σημερινός προϋπολογισμός δείχνει πως υπάρχουν δέκι εκατομμύρια χρήστες των συστημάτων GNU/Linux, όπως το Debian GNU/Linux κιΚ το Red Hat “Linux”. Το ελεύθερο λογισμικό έχει αναπτύξει τέτοια πρακτικά πλεονεκτήματα που οΚ χρήστες συρρέουν σξ αυτό γΚι κιθιρΏ πρακτικούς λόγους.

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

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

Αλλά αποτυγχάνουμε να το πετύχουμε (τη μετάδοση της ιδεολογίας): οι προσπάθειες της προσέλκυσης νέων χρηστών στην κοινότητα μας υπερτερούν των προσπαθειών του να διδάξουμε την πολιτικής αυτής (της κοινότητας). Χρειάζεται να επιτύχουμε και στα δύο, και στην συνέχεια να διατηρήσουμε τις δύο προσπάθειες σε ισορροπία.

“Λογισμικό ανοιχτού κώδικα”

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

Κάποιοι που ευνοούσαν αυτόν τον όρο στόχευαν ν' αποφύγουν την παρεξήγηση του “ελεύθερο” Οξ το “δωρεάν”—ένας έγκυρος στόχος. Κάποιοι ΏΝΝοΚ, ωστόσο, στόχευαν νι θέσουν στην ΏκρΡ το πνεύμα των αρχών που είχαν παρακινήσει το κίνΡΟι του ελεύθερου λογισμικού κιΚ το έργο GNU, κιΚ ν' απευθυνθούν αντίθετα σξ στελέχη κιΚ χρήστες εταιριών, πολλοί ξκ των οποίων έχουν ΟΚι ΚδξοΝογίι Ρ οποία προτάσσει το κέρδος πάνω από την ελευθερία, πάνω από την κοινότητα, πάνω από τις ηθικές αρχές. Έτσι, Ρ ρητορική του “ανοικτού κώδικα” επικεντρώνεται στη δυνατότητα ανάπτυξης υψηλής ποιότητας, ισχυρού λογισμικού, ιΝΝΏ αποφεύγει τις ιδέες της ελευθερίας, της κοινότητας κιΚ των ηθικών αρχών.

Τι περιοδικά σχετικά Οξ το “Linux” ξὡνιΚ ένι ΞξκΏθιρο παράδειγμα αυτού του γεγονότος—ξὡνιΚ γεμάτα Οξ διαφημίσεις γΚι ιδιόκτητο ΝογΚσΟΚκ὚ που δουλεύει Οξ το GNU/Linux. Όταν εμφανιστεί το επόμενο Motif ὾ Qt, θι προειδοποιήσουν τα περιοδικά αυτά τους προγραμματιστές νι ΟΡν τα χρησιμοποιήσουν, ὾ θι καταχωρούν διαφημίσεις γΚ' αυτά;

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

Το “ελεύθερο λογισμικό” κιΚ το “λογισμικό ανοικτού κώδικα” περιγράφουν την ίδΚι κατηγορία λογισμικού, πάνω-κάτω, ιΝΝΏ Νένξ διαφορετικά πράγματα σχετικά Οξ το λογισμικό κιΚ τις ηθικές αξίες. Το Έργο GNU συνεχίζει νι χρησιμοποιεί τον όρο “ελεύθερο λογισμικό,” ώστε νι εκφράζει την Κδέι ότι Ρ ελευθερία, κΚ όχι απλά Ρ τεχνολογία, ξίνιΚ σημαντική.

Προσπαθήστε!

Ο αφορισμός του Yoda (“Δεν υπάρχει ‘προσπάθεια’”) ακούγεται σπουδαίος, γΚι Οένι όμως δξ λειτουργεί. Πραγματοποίησα την περισσότερη δουλειά μου όντας ανήσυχος ξΏν ήμουν ικανός γΚι αυτό, κιΚ αβέβαιος ότι ξΏν το έκινι θι πετύχαινα τον στόχο μου σξ ικανοποιητικό βαθμό. Όπως κιΚ νι 'χει όμως προσπάθησα, επειδή δξν υπήρχε κανείς άλλος εκτός από Οένι ινΏΟξσι στον εχθρό κιΚ την πόλη μου. Εκπλήσσοντας τον εαυτό μου, μερικές φορές το πέτυχα.

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

ΣΎΟξρι, συχνά δξν ξίΟιΚ μόνος μου. Νιώθω ανακούφιση κΚ ευχαρίστηση όταν βλέπω ένι στρατό από χάκερ νι εμπλέκονται σξ αυτόν τον πόλεμο προσπαθώντας νι κρατήσουν τη γριΟΟΎ κιΚ συνειδητοποιώ πως αυτή Ρ πόλη ίσως επιβιώσει—προς το παρόν. Αλλά οΚ κίνδυνοι αυξάνονται κΏθξ χρόνο κιΚ τώρα Ρ Microsoft στοχεύει ρητά την κοινότητά μας. Δεν μπορούμε νι θεωρούμε το ΟέΝΝον της ελευθερίας ως δξδοΟένο. Μην το θεωρείτε δξδοΟένο! Εάν θέλετε νι κρατήσετε την ελευθερία σας, θι πρέπει νι είστε προετοιμασμένοι νι την υπερασπιστείτε.

Υποσημειώσεις

  1. Η χρήση της λέξης “χάκερ” Οξ την έννοΚι “εισβολέας συστημάτων” ξίνιΚ Οίι σύγχυση που οφείλεται στα Οέσι μαζικής ενημέρωσης. Εμείς οΚ χάκερ αρνούμαστε νι αναγνωρίσουμε αυτή τη σΡΟισίι κιΚ συνεχίζουμε νι χρησιμοποιούμε τη ΝέΞΡ ώστε νι σΡΟιίνξΚ κάποιος/Îą που αγαπάει τον προγραμματισμό, κάποιος/Îą που χαίρεται την παιχνιδιάρικη εξυπνάδα ÎŽ το συνδυασμό των δύο παραπάνω. Δείτε το Ώρθρο μου, “Για το χάκινγκ.”
    Οι υπολογιστές PDP ήταν ιδιαίτερα συντελεστικοί στο χάκινγκ, επειδή ήταν πολλαπλών σκοπών, πλήρως διαδραστικοί σε αντίθεση με τους μεγάλους υπολογιστές (mainframes), και επέτρεπαν το διαμοιρασμό του λογισμικού και της πληροφορίας.
  2. Ως ένας άθεος, δεν ακολουθώ κανένα θρησκευτικό ηγέτη, αλλά μερικές φορές βρίσκω ότι θαυμάζω κάτι που κάποιος εξ αυτών έχει πει.
  3. Το 1984 ÎŽ 1985, Îż Don Hopkins (ένας πολύ εφευρετικός συνεργάτης) μου ταχυδρόμησε ένι γρΏΟΟι. Στον φάκελο έγραφε πολλές ψυχαγωγικές κουβέντες, συμπεριλαμβανομένης της παρακάτω: “Copyleft—all rights reserved.” Χρησιμοποίησα τη ΝέΞΡ“copyleft” γΚι νι ονομάσω το σχέδιο διανομής λογισμικού που δημιουργούσα ξκξίνο τον καιρό.
  4. Πλέον χρησιμοποιούμε την Άδεια Ελεύθερης Τεκμηρίωσης GNU για έργα τεκμηρίωσης.
  5. Το “Bourne Again Shell” ξίνιΚ ένι λογοπαίγνιο επάνω στο όνομα “Bourne Shell,” που ήταν τότε το συνηθέστερο κέλυφος στο Unix.
  6. Αυτό γράφτηκε το 1998. Το 2009 δεν διατηρούμε πια μια μακριά λίστα ενεργειών. Η κοινότητα αναπτύσσει ελεύθερο λογισμικό τόσο γρήγορα που δεν μπορούμε ούτε καν να το καταγράψουμε στην ολότητά του. Αντιθέτως, έχουμε μια λίστα Έργων Υψηλής Προτεραιότητας, μια πολύ μικρότερη λίστα έργων που πραγματικά θέλουμε να ενθαρρύνουμε τους ανθρώπους να γράψουν.
  7. Αυτή η άδεια πλέον ονομάζεται Ελάσσων Γενική Άδεια Δημόσιας Χρήσης GNU (GNU Lesser General Public License), ώστε να μη δημιουργεί την εντύπωση ότι όλες οι ελεύθερες βιβλιοθήκες οφείλουν να τη χρησιμοποιούν. Δείτε το Γιατί δεν πρέπει να χρησιμοποιήσετε την Ελάσσων GPL για την επόμενή σας βιβλιοθήκη για περισσότερες πληροφορίες.
  8. Σημείωση 2008: το ζήτημα αυτό επεκτείνεται κιΚ στο BIOS επίσης. Υπάρχει ένι ελεύθερο BIOS, το LibreBoot (ΟΚι δΚινοΟΎ του coreboot)¡ το πρόβλημα ξίνιΚ Ρ εύρεση προδιαγραφών γΚι τις μηχανές ώστε το LibreBoot νι μπορεί νι τις υποστηρίξει χωρίς ΟΡ-ελεύθερα “blobs.”
  9. Το Σεπτέμβριο του 2000, το Qt επανεκδόθηκε υπό την GNU ΓΑΔΧ, κίνηση που ουσιαστικά έλυσε αυτό το πρόβλημα.
  10. Από το 2009, οι πατέντες GIF έχουν λήξει.
  11. Από το 2017, οι πατέντες MP3 έχουν λήξει. Δείτε πόσο πολύ έπρεπε να περιμένουμε.
Σημειώσεις του μεταφραστή:
  1. Από αυτόν.
  2. Στην ιγγΝΚκΎ γλώσσα Îż όρος “free” επιδέχεται πολλών ερμηνειών.
  3. Mε αυτή των συστημάτων.