Τι είναι το Ελεύθερο Λογισμικό/Λογισμικό Ανοιχτού Κώδικα;

Ενδεχομένως να προκαλεί έκπληξη το γεγονός ότι η λειτουργία της αγοράς λογισμικού με τη σημερινή της μορφή, η οποία βασίζεται στην έννοια των πακέτων λογισμικού σε μορφή συσκευασίας τα οποία ο χρήστης μπορεί να αγοράζει, έχει καθιερωθεί σχετικά πρόσφατα. Αρχικά, το λογισμικό ήταν άμεσα συνδεδεμένο με το υλικό του κατασκευαστή. Εξαιτίας της πολυπλοκότητας και του κόστους ανάπτυξης (καθώς και της σχετικά περιορισμένης ισχύος που διέθεταν οι πρώτοι υπολογιστές), των επιχειρηματικών μοντέλων των κατασκευαστών (μοντέλα που βασίζονταν στην πώληση του υλικού), καθώς και άλλων παραγόντων, οι χρήστες ελεύθερα διαμοιράζονταν τον πηγαίο κώδικα των εφαρμογών με συνεργατικό τρόπο, κάτι που οδήγησε στη δημιουργία ομάδων χρηστών, όπως η SHARE (Society to Help Avoid Redundant Efforts), η οποία ιδρύθηκε το 1955 και επικεντρώθηκε σε συστήματα IBM και η DECUS (Digital Equipment Computer User Society), οι οποίες εξακολουθούν να είναι ενεργές. Επίσης, σύνηθες φαινόμενο ήταν ο διαμοιρασμός κώδικα μέσω ακαδημαϊκών περιοδικών, όπως η δημοφιλής στήλη “Algorithms” του περιοδικού “Communications of the ACM”.

Με την αποσύνδεση του υλικού από το λογισμικό, στις αρχές της δεκαετίας του 1970, εμφανίστηκαν στην αγορά τα πρώτα προϊόντα λογισμικού με τη μορφή “πακέτου”. Η εμφάνιση των πρώτων προσωπικών υπολογιστών (Aplle II, IBM PC και αρκετών άλλων) οδήγησε στη δημιουργία της αγοράς λογισμικού σε μορφή συσκευασίας, η οποία αποτελεί μέχρι και σήμερα ένα πολύ σημαντικό τμήμα της συνολικής αγοράς στο χώρο της πληροφορικής. Ωστόσο, αξίζει να σημειωθεί ότι αυτού του είδους η αγορά αντιπροσωπεύει μόνο το 25% του συνολικού κύκλου εργασιών της αγοράς λογισμικού, καθώς το υπόλοιπο μέρος της αγοράς καλύπτεται από λογισμικά που δημιουργούνται για την ικανοποίηση εξειδικευμένων αναγκών [OECD 02].

Ο Richard Stallman και το FSF εισήγαγαν τον όρο “ελεύθερο λογισμικό” (free software). Αργότερα, ο οργανισμός “Open Source Initiative” πρότεινε τον όρο “λογισμικό ανοιχτού κώδικα” (open source software), πιθανότατα προκειμένου να αποφευχθεί η παρερμηνεία του αγγλικού όρου “free”, ο οποίος χρησιμοποιήθηκε από τον FSF για την απόδοση της έννοιας της ελευθερίας. Ο όρος “libre” χρησιμοποιήθηκε και αυτός για την απόδοση της έννοιας της ελευθερίας και χρησιμοποιήθηκε κυρίως στην Ευρώπη. Ο όρος “ΕΛ/ΛΑΚ” εισήχθη από τον Rishab Gosh στο πλαίσιο ενός προγράμματος που χρηματοδοτούταν από την Ευρωπαϊκή Ένωση με την ονομασία “Ελεύθερο Λογισμικό/Λογισμικό Ανοιχτού Κώδικα: έρευνα και μελέτη” και έχει καθιερωθεί ευρέως από το 2002. Στην έκθεση αυτή θα χρησιμοποιούμε τον όρο ΕΛ/ΛΑΚ.

Ο Richard Stallman, συνεχίζοντας την παράδοση που δημιουργήθηκε από ακαδημαϊκά ινστιτούτα όπως το ΜΙΤ, ίδρυσε το 1983 το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation, FSF), προκειμένου να βρεθεί ένας τρόπος διατήρησης της ελευθερίας των χρηστών να μελετούν, να κατανοούν και να τροποποιούν το λογισμικό, μέσα στο πλαίσιο του πνεύματος που διέπει την κοινότητα των hackers και αφορά την απρόσκοπτη διάχυση των πληροφοριών. Στόχος του FSF ήταν η δημιουργία μιας ολοκληρωμένης νέας υλοποίησης του λειτουργικού συστήματος UNIX, το οποίο την τότε εποχή αποτελούσε σημαντικό σημείο αναφοράς για τις περισσότερες μεγάλες επιχειρήσεις και τα ερευνητικά κέντρα. Έτσι, ο Stallman και αρκετοί άλλοι προγραμματιστές δημιούργησαν ένα πλήρες περιβάλλον ανάπτυξης και εκτέλεσης, από το οποίο στα τέλη της δεκαετίας του 1980 έλειπε μόνο ο πυρήνας (το κεντρικό τμήμα ενός λειτουργικού συστήματος). Το κενό αυτό καλύφτηκε σύντομα, το 1991, από δύο διαφορετικές ομάδες: η ομάδα της οποίας επικεφαλής ήταν ο Linus Torvalds ανέπτυξε τον πυρήνα του Linux, ενώ η ομάδα των William και Lynne Jolitz δημοσίευσαν σειρά άρθρων στο περιοδικό “Dr. Dobbs” περιγράφοντας τον τρόπο με τον οποίο μπορούσε κανείς να μεταφέρει το BSD Unix σε PCs αρχιτεκτονικής i386, δημιουργώντας με τον τρόπο αυτό τη βάση για ένα ολοκληρωμένο, ελεύθερο λειτουργικό σύστημα για σύγχρονους προσωπικούς υπολογιστές [DB 00].

Το FSF δίνει μεγάλη έμφαση στις παρακάτω “τέσσερις ελευθερίες”:

  • Ελευθερία εκτέλεσης του προγράμματος για οποιονδήποτε σκοπό (ελευθερία 0)
  • Ελευθερία μελέτης του τρόπου λειτουργίας του προγράμματος και προσαρμογής του στις ανάγκες του χρήστη (ελευθερία 1). Απαραίτητη προϋπόθεση για την ικανοποίηση της παραπάνω ελευθερίας είναι η πρόσβαση στον ανοιχτό κώδικα
  • Ελευθερία αναδιανομής αντιγράφων (ελευθερία 2)
  • Ελευθερία βελτίωσης του προγράμματος και κοινοποίησης των βελτιώσεων αυτών στο κοινό, έτσι ώστε να επωφεληθεί από αυτό ολόκληρη η κοινότητα (ελευθερία 3). Απαραίτητη προϋπόθεση για την ικανοποίηση της παραπάνω ελευθερίας είναι η πρόσβαση στον ανοιχτό κώδικα

Για το λόγο αυτό, το FSF δημιούργησε σύνολο “αδειών χρήσης ελεύθερου λογισμικού” και μεταξύ αυτών την GPL (General Public License) και την LGPL (Lesser General Public License) οι οποίες είναι οι πιο ευρέως χρησιμοποιημένες, τόσο σε ό,τι αφορά το πλήθος των έργων που τις έχουν υιοθετήσει όσο και όσον αφορά το πλήθος των γραμμών κώδικα που αυτές καλύπτουν.

Δυστυχώς, σε πολλές περιπτώσεις ο όρος “ελεύθερο λογισμικό” συχνά ερμηνεύεται ως “δωρεάν λογισμικό”. Το γεγονός αυτό οδήγησε το FSF να λανσάρει το σύνθημα “ελεύθερο με την έννοια της ελευθερίας του λόγου (free speech) και όχι με την έννοια της δωρεάν μπύρας (free beer)”. Η κοινότητα του ελεύθερου λογισμικού προχώρησε με γοργό ρυθμό στη δημιουργία ολοκληρωμένων περιβαλλόντων χρηστών, όπως το GNOME και το KDE, καθώς και στη σχεδίαση του εμπορικού σήματος του “ανοιχτού κώδικα”. Ο ορισμός του Ανοιχτού Κώδικα βασίζεται σε ένα παρόμοιο σύνολο συνθηκών:

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

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

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

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

Καμία διάκριση εναντίον ατόμων ή ομάδων ατόμων Η άδεια χρήσης δεν πρέπει περιλαμβάνει διακρίσεις εναντίον ατόμων ή ομάδων ατόμων.

Καμία διάκριση εναντίον κάποιων τομέων δραστηριοποίησης Η άδεια χρήσης δεν πρέπει να περιορίζει κανέναν από τη χρησιμοποίηση του προγράμματος σε κάποιο συγκεκριμένο πεδίο δραστηριοποίησης. Για παράδειγμα, δεν μπορεί να περιορίζει τη χρήση του προγράμματος για την εξυπηρέτηση των αναγκών μιας επιχείρησης ή μιας ερευνητικής ομάδας που εξετάζει ζητήματα γενετικής.

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

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

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

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

Και οι δύο ομάδες διατηρούν λίστα αδειών χρήσης οι οποίες συμφωνούν είτε με τους όρους του Ορισμού του Ελεύθερου Λογισμικού είτε με τις προϋποθέσεις χρήσης του όρου “ανοιχτό λογισμικό”. Για την ακρίβεια, υπάρχουν περισσότερες από 50 άδειες χρήσης “ανοιχτού λογισμικού” ή “ελεύθερου λογισμικού”, αλλά ευτυχώς μπορούν να κατηγοριοποιηθούν με πολύ εύκολο τρόπο [Sun 06, UU 05] σε αυτές που:

  • “παρέχουν αναγνώριση”: επιτρέπεται η χρήση, η τροποποίηση και η αναδιανομή, όμως στην περίπτωση που το πρόγραμμα αναδιανέμεται πρέπει να αναγνωριστεί η προσφορά του αρχικού συγγραφέα. Σχετικά παραδείγματα είναι: η BSD license και η Apache license v2.
  • “παρέχουν διορθώσεις”: επιτρέπεται η χρήση, η τροποποίηση και η αναδιανομή, όμως στην περίπτωση που το πρόγραμμα αναδιανέμεται όλες οι αλλαγές του πηγαίου κώδικα πρέπει να αποσταλούν στον αρχικό συγγραφέα. Σχετικά παραδείγματα είναι: οι άδειες χρήσης τύπου Mozilla (Mozilla Public License)
  • “παρέχουν τα πάντα”: επιτρέπεται η χρήση, η τροποποίηση και η αναδιανομή, όμως στην περίπτωση της αναδιανομής πρέπει ο πηγαίος κώδικας οποιουδήποτε παραγόμενου προϊόντος να είναι διαθέσιμος. Σχετικό παράδειγμα είναι η GPL.

Όταν υπάρχει συνδυασμός και αναδιανομή κώδικα που προέρχεται από διαφορετικές εφαρμογές, τότε το ζήτημα της συμβατότητας των αδειών χρήσης αποκτά ιδιαίτερη αξία. Ένας ιδιαίτερα λεπτομερής πίνακας που περιλαμβάνει τη συμβατότητα των αδειών χρήσης σε σχέση με την GPL (συμπεριλαμβανομένης και της πρόσφατης έκδοσης GPLv3) είναι διαθέσιμος στο [Fed 07]. Σε κάθε περίπτωση, οποτεδήποτε εκδίδεται ή διανέμεται κάποιο προϊόν, συνιστάται να ζητήσει κανείς τη νομική συμβουλή κάποιου νομικού, ο οποίος εξειδικεύεται σε ζητήματα αδειών χρήσης ΕΛ/ΛΑΚ και πνευματικής ιδιοκτησίας (παρόμοια νομική συμβουλή χρειάζεται και στην περίπτωση έκδοσης εμπορικού λογισμικού).

Το ΕΛ/ΛΑΚ ως μοντέλο ανάπτυξης

Ο ορισμός του ΕΛ/ΛΑΚ καλύπτει εκτεταμένα τα ζητήματα που αφορούν την άδεια χρήσης του λογισμικού, ενώ συγχρόνως το γεγονός ότι ο κώδικας των εφαρμογών είναι ανοιχτός προσφέρει τη δυνατότητα διενέργειας κοινών προσπαθειών ανάπτυξης κώδικα από διαφορετικές ομάδες ατόμων, λειτουργώντας με παρόμοιο τρόπο με τις ομάδες χρηστών της δεκαετίας του 1960. Μέσα σε αυτό το πλαίσιο, ο Eric Raymond εισήγαγε στο άρθρο του “Ο καθεδρικός και το παζάρι” (The cathedral and the bazaar) την έννοια της διαμοιραζόμενης ανάπτυξης κώδικα, όπου παρομοιάζει το μοντέλο ανάπτυξης στο οποίο κάθε προγραμματιστής είναι ελεύθερος να επιλέξει με ποιο τμήμα του κώδικα επιθυμεί να ασχοληθεί με ένα “παζάρι” και το συγκρίνει με το μοντέλο ανάπτυξης ενός “καθεδρικού ναού”, που διαθέτει σαφώς πιο αυστηρούς και δομημένους κανόνες.

Στην πραγματικότητα, εφαρμογές που αναπτύσσονται με συνεργατικό τρόπο έχουν την τάση να εκτελούνται ακολουθώντας ταυτόχρονα και τις δύο παραπάνω προσεγγίσεις. Για παράδειγμα, τα περισσότερα λογισμικά διαθέτουν κάποιου είδους δομή, ενώ άλλα λογισμικά διαθέτουν απόλυτα αυστηρή δομή (π.χ. εφαρμογές που χρησιμοποιούν κώδικα ΕΛ/ΛΑΚ σε πιστοποιημένο περιβάλλον, όπως συστήματα ασφαλείας). Το πιο σημαντικό θέμα που ανακύπτει από το άρθρο του Raymond είναι το γεγονός ότι τόσο η συγγραφή κώδικα όσο και άλλες επικουρικές εργασίες, όπως η διόρθωση των προγραμματιστικών σφαλμάτων και η παραγωγή εγγράφων τεκμηρίωσης μπορούν να υλοποιηθούν από μια μεγάλη κοινότητα ατόμων, δημιουργώντας κατά κάποιον τρόπο “εικονικές επιχειρήσεις λογισμικού” οι οποίες εθελοντικά παρέχουν εργασία και πόρους. Αυτό, επίσης, βοηθά και στη δημιουργία μιας μεγάλης κοινότητας εξειδικευμένων χρηστών, οι οποίοι με τη σειρά τους μπορούν να συνεισφέρουν με διάφορους τρόπους [VH 03, VH 05].

Όταν μια τέτοιου είδους συνεργασία λαμβάνει χώρα, δεν είναι απαραίτητο να γίνεται μόνο σε επίπεδο συγγραφής κώδικα, όπως για παράδειγμα αναφέρει το [Jul 06]: “Το 2000, πενήντα εξωτερικοί συνεργάτες της εφαρμογής Open Cascade προσέφεραν βοήθεια με διάφορους τρόπους: μετέφεραν το λογισμικό σε άλλα συστήματα (IRIX 64 bits, Alpha OSF), διόρθωσαν προγραμματιστικά σφάλματα, μετέφρασαν το εγχειρίδιο χρήσης στην ισπανική γλώσσα κτλ. Σήμερα υπάρχουν περισσότεροι από εβδομήντα ενεργοί συνεργάτες που προσφέρουν τις υπηρεσίες τους και ο στόχος είναι ο αριθμός αυτός να ανέλθει σε εκατό. Αυτή η συνεισφορά είναι ιδιαίτερα σημαντική. Οι δημιουργοί του Open Cascade εκτιμούν ότι αυτή αντιπροσωπεύει το 20% της συνολικής αξίας του λογισμικού.”

Μια παρόμοια άποψη παρουσιάζεται και στο [Sei 06], όπου ένας από τους επικεφαλής του έργου KDE1 παρουσιάζει τα διαφορετικά πεδία τα οποία συνθέτουν το περιβάλλον KDE(1):

  • Γραφικό περιβάλλον
  • Έγγραφα τεκμηρίωσης
  • Αλληλεπίδραση ανθρώπου-υπολογιστή
  • Εμπορική εκμετάλλευση
  • Διασφάλιση ποιότητας
  • Ανάπτυξη λογισμικού
  • Μετάφραση

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

Άλλο ένα παράδειγμα παρουσιάζεται στο [Mue 07] όπου παρουσιάζεται μια καταγραφή των συμμετεχόντων σε διάφορα τμήματα του έργου OpenOffice.org:

1.jpg

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

Αυτού του είδους η συνεργασία μπορεί να επιτευχθεί ακόμα και μεταξύ ανταγωνιστικών επιχειρήσεων. Για παράδειγμα, πιθανά προβλήματα ασφαλείας που εντοπίζει κάποιος προμηθευτής διανομής Linux κοινοποιούνται και σε όλους τους διαφορετικούς ανταγωνιστικούς προμηθευτές άλλων διανομών. Για παράδειγμα, ο Michael Cox της RedHat (μιας ευρέως διαδεδομένης διανομής Linux) ανέλυσε τα στατιστικά αποτελέσματα δύο ετών αντιμετώπισης συμβάντων και διαπίστωσε ότι το μεγαλύτερο μέρος των πληροφοριών προερχόταν από άλλους διανομείς ΕΛ/ΛΑΚ [Cox 07].

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

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

 
ellak/τι_είναι_το_ελλακ.txt (817 views) · Τελευταία τροποποίηση: 2014/04/03 17:26
 
Recent changes RSS feed Creative Commons License Donate Valid XHTML 1.0 Valid CSS Driven by DokuWiki