Αυτή η μετάφραση μπορεί να μην αντανακλά τις αλλαγές που έγιναν από τις 2017-06-16 στο Αγγλικό πρωτότυπο.

Καλό θα ήταν να ρίξετε μια ματιά σε εκείνες τις αλλαγές. Παρακαλούμε δείτε το Μεταφράσεις ΔΙΑΒΑΣΕΜΕ για να βρείτε πως μπορείτε να βοηθήσετε να ενημερωθεί αυτή η μετάφραση.

Το έργο GNU

από τον Richard Stallman

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

Γιατί είναι ακόμη πιο σημαντικό από ποτέ να επιμένουμε ώστε το λογισμικό που χρησιμοποιούμε να είναι ελεύθερο.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δεν υπάρχει εδώ αρκετός χώρος για μια εκτενή αναφορά της συλλογιστικής που οδηγεί σ' αυτό το συμπέρασμα, γι' αυτό παραπέμπω τον αναγνώστη στις ιστοσελίδες http://www.gnu.org/philosophy/why-free.html και http://www.gnu.org/philosophy/free-software-even-more-important.html.

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

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

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

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

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

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

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

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

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

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

Αργότερα άκουσα αυτά τα λόγια, που αποδίδονται στον Hillel (1):

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

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

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

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

Ο όρος “ελεύθερο λογισμικό” είναι μερικές φορές παρεξηγημένος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 GPL

Ο στόχος του GNU ήταν να δώσει στους χρήστες ελευθερία, όχι να είναι απλά δημοφιλές. Έτσι είχαμε την ανάγκη να χρησιμοποιήσουμε όρους διανομής που θα εμπόδιζαν τη μετατροπή ενός GNU λογισμικού σε ιδιόκτησιακό λογισμικό. Η μέθοδος που χρησιμοποιούμε αποκαλείται “copyleft”.(1)

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

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

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

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

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

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

(1) Το 1984 ή 1985, ο Don Hopkins (ένας πολύ εφευρετικός συνεργάτης) μου ταχυδρόμησε ένα γράμμα. Στον φάκελο έγραφε πολλές ψυχαγωγικές κουβέντες, συμπεριλαμβανομένης της παρακάτω: “Copyleft—all rights reserved.” Χρησιμοποίησα τη λέξη“copyleft” για να ονομάσω το σχέδιο διανομής λογισμικού που δημιουργούσα εκείνο τον καιρό.

(2) Πλέον χρησιμοποιούμε την Άδεια Ελεύθερης Τεκμηρίωσης GNU για έργα τεκμηρίωσης.

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

Καθώς το ενδιαφέρον χρήσης του Emacs μεγάλωνε, αναμίχθηκαν και άλλοι άνθρωποι στο έργο 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(1), το οποίο αναπτύχθηκε από τον υπάλληλο του ΙΕΛ Brian Fox.

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

(1) Το “Bourne Again Shell” είναι ένα λογοπαίγνιο επάνω στο “Bourne Shell”, που ήταν τότε το συνηθέστερο κέλυφος στο Unix.

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

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

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

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

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

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

Ο πρωταρχικός στόχος του 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 που έλειπαν, παραθέσαμε στη λίστα επιπρόσθετο χρήσιμο λογισμικό και έργα τεκμηρίωσης, που πιστεύαμε ότι έπρεπε να έχει ένα πραγματικά πλήρες σύστημα.

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

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

(1) Αυτό γράφτηκε το 1998. Το 2009 δεν διατηρούμε πια μια μακριά λίστα ενεργειών. Η κοινότητα αναπτύσσει ελεύθερο λογισμικό τόσο γρήγορα που δεν μπορούμε ούτε καν να το καταγράψουμε στην ολότητά του. Αντιθέτως, έχουμε μια λίστα Έργων Υψηλής Προτεραιότητας, μια πολύ μικρότερη λίστα έργων που πραγματικά θέλουμε να ενθαρρύνουμε τους ανθρώπους να γράψουν.

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

Η GNU βιβλιοθήκη της C χρησιμοποιεί ένα ειδικό είδος copyleft που ονομάζεται Γενική Άδεια Δημόσιας Χρήσης Βιβλιοθήκης(1), το οποίο επιτρέπει τη σύνδεση ιδιοκτησιακού λογισμικού με τη βιβλιοθήκη. Γιατί κάνουμε αυτή την εξαίρεση;

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

(1) Αυτή η άδεια πλέον ονομάζεται Ελάσσων Γενική Άδεια Δημόσιας Χρήσης GNU (GNU Lesser General Public License), ώστε να μη δημιουργεί την εντύπωση ότι όλες οι ελεύθερες βιβλιοθήκες οφείλουν να τη χρησιμοποιούν. Δείτε το Γιατί δεν πρέπει να χρησιμοποιήσετε την Ελάσσων GPL για την επόμενή σας βιβλιοθήκη για περισσότερες πληροφορίες.

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

Ο 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 θα πρέπει να υποστηρίξουν. Σήμερα, έχουμε ολοκληρωμένα ελεύθερα συστήματα, δεν είναι όμως βέβαιο πως θα συνεχίζουμε να τα έχουμε εάν δεν είμαστε σε θέση να υποστηρίξουμε τους μελλοντικούς υπολογιστές.

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

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

(Σημείωση 2008: το ζήτημα αυτό επεκτείνεται και στο BIOS επίσης. Υπάρχει ένα ελεύθερο BIOS, το LibreBoot (μια διανομή του coreboot)· το πρόβλημα είναι η εύρεση προδιαγραφών για τις μηχανές ώστε το LibreBoot να μπορεί να τις υποστηρίξει χωρίς μη-ελεύθερα “blobs”.)

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

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

Το πρώτο περιστατικό αυτού του προβλήματος ήταν με την εργαλειοθήκη 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).

[Υποσημείωση: τον Σεπτέμβριο του 2000, το Qt εκδόθηκε υπό την GNU ΓΑΔΧ, κίνηση που ουσιαστικά έλυσε αυτό το πρόβλημα.]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Σημειώσεις του μεταφραστή:
  1. Από αυτόν.
  2. Στην αγγλική γλώσσα ο όρος “free” επιδέχεται πολλών ερμηνειών.
  3. Mε αυτή των συστημάτων.