Ελεύθερο/ανοικτό λογισμικό και άδειες χρήσης. Μια εισαγωγή

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

Το έργο GNU

Τα πάντα ξεκίνησαν από το έργο GNU. Tο GNU (αναδρομικό ακρωνύμιο για το GNU is not Unix) ανακοινώθηκε επίσημα το 1983, με σκοπό τη δημιουργία ενός ολοκληρωμένου λειτουργικού συστήματος (GNU), τύπου Unix το οποίο θα ήταν ελεύθερο λογισμικό. Άνθρωπος και η ψυχή πίσω από το έργο ήταν (και είναι παρότι έχασε την θέση του) ο Richard Stallman. Το έργο συντονίζει το ίδρυμα Free Software Foundation.

Το αρχικό όραμα ήταν να δημιουργηθεί ένα νέο UNIXlike σύστημα με κώδικα διαθέσιμο σε όλους και χωρίς εμπορικά σήματα και περιορισμούς. Κατά τα τέλη της δεκαετίας του 80 κατέληξε σε ένα λειτουργικό εμπνευσμένο από ακαδημαϊκές αναζητήσεις κάτι μεταξύ του Next και των Lisp Machines. Θα είχε ένα πυρήνα βασισμένο σε τεχνολογία microkernel τον GNU Hurd, γραφικό περιβάλλον NextStep και θα χρησιμοποιούσε το guile (μια παραλλαγή της Lisp) για scripting. Το 1990 είχαν τα βασικά κομμάτια (βασικά εργαλεία, μεταγλωττιστές κλπ) έτοιμα εκτός από τον πυρήνα. Αλλά ένας Φιλανδός φοιτητής ο Λίνους Τόρβαλντς έφτιαξε ένα πυρήνα που τον ονόμασε Linux, χρησιμοποιώντας τις άδειες του ιδρύματος, και πρόσθεσε έτσι το χαμένο κομμάτι. Τα υπόλοιπα είναι ιστορία και όσο για το GNU Hurd ακόμα το περιμένουμε. Αλλά φιλοσοφία του GNU έχει αποτυπωθεί βαθιά μέσα στο DNA των χρηστών Linux.

Ελεύθερο λογισμικό / ανοικτός κώδικας

Για να ορίσουμε τι είναι το «ελεύθερο λογισμικό» θα πρέπει πρώου περέχει η άδεια τα να ορίσουμε τις βασικές ελευθερίες. Αυτές είναι (πηγή μετάφρασης) οι «Τέσσερις Ελευθερίες» που έχουν οι χρήστες του, οι οποίες είναι οι εξής:

  • Η ελευθερία να εκτελέσουν το πρόγραμμα όπως επιθυμούν, για οποιονδήποτε σκοπό (ελευθερία 0).

  • Η ελευθερία να μελετήσουν πώς λειτουργεί το πρόγραμμα και να το αλλάξουν, ώστε να κάνει τις διεργασίες που επιθυμούν (ελευθερία 1). Η πρόσβαση στον πηγαίο κώδικα αποτελεί προϋπόθεση για αυτό.

  • Η ελευθερία να αναδιανέμουν αντίγραφα ώστε να μπορούν να βοηθήσουν άλλους (ελευθερία 2).

  • Η ελευθερία να διανέμουν αντίγραφα των τροποποιημένων εκδόσεών τους σε άλλους (ελευθερία 3). Κάνοντας αυτό μπορούν να δώσουν σε ολόκληρη την κοινότητα την ευκαιρία να επωφεληθεί από τις αλλαγές. Η πρόσβαση στον πηγαίο κώδικα αποτελεί προϋπόθεση για αυτό.

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

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

Ο όρος «ανοιχτός κώδικας» εμφανίστηκε τη δεκαετία του '90, όταν μια ομάδα συμμετεχόντων στο κίνημα ελεύθερου λογισμικού επιθυμούσε την αποσύνδεση από την πολιτική ατζέντα και την ιδεολογία που εμπεριέχεται στον όρο «ελεύθερο λογισμικό» (free software), όπως και την αποφυγή της αμφισημίας της λέξης «free».

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

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

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

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

Άδειες χρήσης

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

Ελεύθερες άδειες

Είναι οι άδειες που έχει βγάλει το ίδρυμα GNU. Αυτές είναι

  • GNU General Public License (GPL2):
    Βγήκε το 1989, και είναι η άδεια που έχει ο πυρήνας του Linux καθώς και πολλά βασικά εργαλεία.

  • GNU General Public License (GPL3):
    Βγήκε το 2005 και προσθέτει επιπλέον ασφάλειες απέναντι σε πατέντες και συμφωνίες σαν αυτή της SuSE/Novel με την Microsoft καθώς και προστασία από κλειδώματα μέσω hardware πχ tivoization. Δεν έχουν περάσει όλοι σε αυτή την άδεια και περιττό να προσθέσω πως οι μεγάλες εταιρείες δεν την αγαπάνε καθόλου.

  • GNU Affero General Public License (AGPL):
    Είναι μια επέκταση της προηγούμενης, βγήκε το 2007 και προσθέτει επιπλέον υποχρεώσεις και περιορισμούς για χρήση σε περιβάλλον server. Υποχρεώνει τους χρήστες μιας τέτοιας άδειας αν κάνουν αλλαγές να τις επιστρέψουν ακόμα και αν δεν κάνεις χρήση τοπικά στον υπολογιστή αλλά μέσω μιας απομακρυσμένης υπηρεσίας.

  • GNU Lesser General Public License (LGPL):
    Είναι μια άδεια για βιβλιοθήκες που επιτρέπει την χρήση τους από εμπορικά προγράμματα ή από προγράμματα που δεν έχουν μια από τις παραπάνω άδειες. Το πρόγραμμα πρέπει να συνδεθεί με την βιβλιοθήκη δυναμικά, ώστε να υπάρχει σαφής διαχωρισμός, και κάθε αλλαγή στην βιβλιοθήκη θα πρέπει να δοθεί πίσω στην κοινότητα. στο πρόγραμμα σου

Αν λοιπόν θέλεις να γράψεις ένα πρόγραμμα και βρεις κάποιες ωραίες βιβλιοθήκες που θέλεις να χρησιμοποιήσεις, θα πρέπει να κοιτάξεις πρώτα προσεκτικά την άδεια χρήσης τους. Αν η άδεια χρήσης είναι [A]GPL θα πρέπει και το πρόγραμμα σου να έχει την ίδια άδεια. Αν είναι LGPL μπορεί να έχει οποιαδήποτε άδεια θέλεις ακόμα και να είναι ένα εμπορικό πρόγραμμα. Να προσθέσω πως η χρήση του gcc και των εργαλείων του GNU δεν επηρεάζει την άδεια του προγράμματος σου.

Η χρήση των ελεύθερων αδειών παρουσιάζει μια μεγάλη πτωτική τάση:

Μια συχνή παρανόηση αφορά το τι είναι ένα πρόγραμμα. Ένα πρόγραμμα είναι GNU αν έχει γραφτεί ή αν έχει παραχωρηθεί στο ίδρυμα GNU. Ένα πρόγραμμα είναι GPL αν έχει μια απο τις παραπάνω άδειες χρήσης. Ο πυρήνας του Linux για παράδειγμα δεν είναι GNU, αλλά GPL.

Ακαδημαϊκές άδειες

Οι άδειες αυτές είναι κατάλληλες για χρήση από την ακαδημία. Δεν βάζουν σχεδόν κανένα περιορισμό στην χρήση του κώδικα. Ο καθένας μπορεί να το πάρει και να τον κάνει ότι θέλει. Οι ποιο κοινές τέτοιες άδειες είναι: Οι διάφορες εκδόσεις της άδειας BSD, η MIT license / X11 license και ή Apache Licence.

Επίσης τέτοιες άδειες είναι η Do What The Fuck You Want To Public License (μπράβο ανατροφή), η Unlicense καθώς και το public domain αν και δεν μπορούν να χαρακτηριστούν ως “ακαδημαϊκές”.

Οι άδειες αυτες είναι ανοικτού κώδικα αλλά δεν είναι ελεύθερο λογισμικό. Η πρακτική διαφορά είναι πως σχεδόν οτιδήποτε έχει πόρτα δικτύου και δεν είναι Linux θα τρέχει κώδικά του BSD. Ο κώδικας για το δίκτυο στα Windows είναι βασισμένος σε κομμάτια του BSD. To ρούτερ σου τρέχει BSου περέχει η άδεια D. Αλλά δεν μπορείς να ζητήσεις τον κώδικα ούτε του ρούτερ ούτε των Windows. Και ότι βελτιώσεις κάνουν δεν είναι υποχρεωμένοι να τον επιστρέψουν πίσω στο BSD. Περιττό να πως πως είναι μια αγαπημένη άδεια για τους κατασκευαστές δικτυακού εξοπλισμού και λογισμικού. Παίρνουν κάτι δωρεάν και δεν είναι υποχρεωμένοι να επιστρέψουν τίποτα.

GNU Διανομές

Υπήρχε πολύ συζήτηση στο παρελθόν για το αν θα έπρεπε να λέμε Linux ή GNU/Linux. Σήμερα τα πράγματα δεν είναι το ίδιο απλά. Τις διανομές Linux μπορούμε να τις κατατάξουμε σε:

  • Καθαρές διανομές GNU : ου περέχει η άδεια
    Αυτές οι διανομές ακολουθούν την φιλοσοφία του GNU :gnu:. Δεν θα βρούμε σε αυτές κλειστούς οδηγούς και firmware blobs η micocode updates. Οπότε η κάρτα γραφικών δεν θα δουλεύει πάντα σωστά καθώς και πολλές κάρτες δικτύου. Και δεν θα βρούμε κλειστό λογισμικό όπως το flash player.

    Μερικές τέτοιες διανομές είναι: gNewSense, Dragora, Trisquel GNU/Linux, Parabola GNU/Linux.

  • Πραγματιστικές διανομές :
    Οι διανομές που η πλειοψηφία χρησιμοποιεί. Θα προτιμήσουν μεν ελεύθερο λογισμικό, αλλά δεν θα διστάσουν να χρησιμοποιήσουν και κλειστά λογισμικά, οδηγούς υλικού, γραμματοσειρές και codecs ήχου. «ανοιχτός κώδικας»

  • Non GNU Linux :
    Είναι διανομές που αποφεύγουν να χρησιμοποιούν λογισμικά από το έργο GNU. Θα χρησιμοποιήσουν το musl αντί της libc, θα κάνουν compile με το llvm/clang αντί για το gcc, τα Heirloom ή το BusyBox αντί για τα εργαλεία του GNU, το runit αντί για το systemd κλπ. Δεν υπάρχουν πολλές και η ποιο γνωστή είναι η Alpine Linux. Αυτές οι διανομές έχουν χρήση σε servers που τρέχουν εικονικές μηχανές ή μέσα σε docker images.

    Μια ενδιαφέρουσα πρόσφατη εξέλιξη είναι η διανομή Serpent OS που είναι η πρώτη διανομή για desktop, που το διαφημίζει ανοιχτά. Μια ενδιαφέρουσα διανομή μόνο για UEFI, χωρίς X11, και χρησιμοποιεί musl/llvm. Φτιαγμένη από τον Ikey Doherty τον δημιουργό της Solus.

Ένα πρακτικό παράδειγμα

Μιας και την στιγμή που γράφετε αυτό, πολλές συζητήσεις είναι σχετικά με τα συστήματα init θα χρησιμοποιήσω κάποια παραδείγματα για να καταλάβουμε στην πράξη τις διαφορές:

  • Καθαρό GNU: Shepherd
    Το GNU Shepherd είναι το init σύστημα του GNU. Είναι το σύστημα που χρησιμοποεί η διανομή guix η διανομή του ιδρύματος. Είναι γραμμένο σε scheme (είπαμε) και έχει ελάχιστη χρήση.

  • GPL: systemd
    To systemd έχει άδεια χρήσης LGPL. Αυτό διασφαλίζει πως θα είναι πάντα ένα πρόγραμμα ελεύθερου λογισμικού και καθένας μας έχει δικαίωμα να πάρει τον κώδικά και να τον τροποποιήσει σύμφωνα με τις ανάγκες του. Απαραίτητος όρος ή επιστροφή των αλλαγών στην κοινότητα. Αν σε κάποιον δεν αρέσει κάποιο κομμάτι του κάνει χρήση των ελευθεριών της άδειας και το φέρνει όπως του αρέσει, εφόσον βέβαια γνωρίζει προγραμματισμό.

    Γιατί LGPL και όχι καθαρή GPL; Η επιλογή αυτή είναι απαραίτητη γιατί ένα κομμάτι του, το libsystemd πρέπει να συνδεθεί εξωτερικά με όποιο πρόγραμμα θέλει να χρησιμοποιήσει στο έπακρο όλες τις δυνατότητες του. Αν δεν ήταν, δεν θα μπορούσε να χρησιμοποιηθεί σε εμπορικά προγράμματα και θα περιόριζε την χρήση του. (Να διορθώσω και μια παρανόηση το libsystemd δεν είναι το systemd είναι απλά μια βιβλιοθήκη που διευκολύνει τον προγραμματιστή και με κανένα τρόπο δεν “μολύνει” κανένα πρόγραμμα).

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

Διαβάστε :

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

15 Likes

από τα καλύτερα άρθρα εδώ μέσα!
ευχαριστώ κ προωθώ!!

5 Likes

Καλη η ιδεα για μια εισαγωγη στον κοσμο του Ελευθερου Λογισμικου - μιας και πολυ συχνα, ακομα και εδω στο φορουμ, υπαρχουν παρανοησεις σχετικα.

Να διορθωσω μονο αυτο το " Το αρχικό όραμα ήταν ένα λειτουργικό εμπνευσμένο από ακαδημαϊκές αναζητήσεις κάτι μεταξύ του Next και των Lisp Machines."

Η αφορμη για το GNU ηταν η απογοητευση του Stallman οταν συνειδητοποιησε οτι δεν μπορουσε να μεταφερει ενα εκτυπωτικο προγραμμα απο ενα συστημα UNIX σε ενα αλλο λογω του copyright του λειτουργικου.

Το αρχικο οραμα λοιπον ηταν να δημιουργηθει ενα νεο UNIXlike συστημα με κωδικα διαθεσιμο σε ολους και χωρις εμπορικα σηματα και περιορισμους. Δεν υπηρχαν τοτε (για το 1982 μιλαμε) ουτε “γραφικα περιβαλλοντα” ουτε “Next” - και η πρωτη προσπαθεια περιελαμβανε τη δημιουργια ενος νεου ελευθερου Bourne shell, δηλαδη του bash.

Αργοτερα, και ενω η προσπαθεια δημιουργιας ολοκληρωμενου λειτουργικου συστηματος μεσω του Mach (εργο GNU/Hurd) απετυχε - ηρθε o Linus - και την συνεχεια την γνωριζουμε ολοι. BTW ουτε ο Mach χαθηκε, φροντισε η (καλη μας) Apple για αυτο.

Επετρεψε μου ομως και ενα σχολιο. Με το “και με κανένα τρόπο δεν “μολύνει” κανένα πρόγραμμα” (σχετικα με το systemd) - συνεχιζεις να σχολιαζεις κατι που ειπωθηκε καπου αλλου στο φορουμ και μαλιστα κατεκρινες τον τροπο που ειπωθηκε. Ετσι μειωνεις την καλη προσπαθεια που κανεις.

4 Likes

Μέσα στα πλαίσια αυτού του περιορισμένου σημειώματος, δεν ήταν δυνατόν να αναλυθεί τίποτα σε βάθος, ούτε η ιστορία του GNU. Έχεις δίκιο ήταν λάθος η χρήση της λέξης “αρχικού”, έτσι ήταν το σχέδιο όπως είχε διαμορφωθεί στα τέλη της δεκαετίας το 1980, που το Next ήταν η καυτή τεχνολογία της εποχής. Τα πρώτα γραφικά GUI βέβαια υπήρχαν από το 1973.

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

4 Likes

Σαφώς και ήταν κάτι που έλειπε!! :+1: :+1: :+1: