Περί ελεύθερου (τζάμπα) λογισμικ

Συζήτηση γύρω από θέματα λογισμικού
Post Reply
trv
486
Posts: 291
Joined: Mon Mar 12, 2007 2:47 pm
PWMN Wind Node ID: 0

Περί ελεύθερου (τζάμπα) λογισμικ

Post by trv »

Το κείμενο ειναι απο το πρώτο τεύχος του Magaz, και ανήκει στον vrypan.
Κυκλοφόρησε πρώτη φορά πριν απο περίπου 10 (!) χρόνια.

-------------------------------------------------------------------------------

Αφού εφυγα από την συνάντηση που είχαμε με τους υπόλοιπους linux-άδες, πηγα να συναντήσω την κοπέλα μου. Εντάξει, είχα αργήσει, αλλά αυτό που δεν μπορουσε να καταλάβει είναι γιατί κάποιος θα μπορούσε να διαθέτει τόσο μεγάλο μέρος του χρόνου του χωρίς να πληρώνεται. Όταν μαλιστα της εξηγησα ότι δεν είμαι μόνο εγώ ο "τρελός" αλλά οτι υπάρχουν εκατομύρια άλλοι (μάλλον πιο τρελαμένοι) τότε το μυστήριο έγινε μεγαλύτερο...

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

1. Τι κερδίζει ο προγραμματιστής;

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

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

Βλέποντας τα πράγματα από την παραπάνω οπτική γωνία, μπορεί κανείς να καταλάβει ότι και μόνο η ικανοποίηση της ενασχόλησης με κάτι το οποίο θεωρούμε ενδιαφέρον είναι μια ουσιαστική ανταμοιβή. Υπάρχει όμως και μία ακόμη σημαντικότερη κατά την γνώμη μου: η δόξα και η αναγνώριση. Ένα καλό πρόγραμμα σημαίνει για τον ή τους δημιουργούς του αναγνώριση από ένα σωρό κόσμο (που στον χώρο του linux κατά κανόνα είναι και γνώστες του αντικειμένου). Μπορεί να μην δέχεται ο προγραμματιστής λεφτά για τις υπηρεσίες του, γίνεται όμως αποδέκτης αυτού που οι περισσότεροι θα ψάξουν να αγοράσουν με τα λευτά που κερδίζουν από την δουλειά τους: αναγνώριση. (Δεν είμαι εναντίον της αγοράς εργασίας, μην με παρεξηγήσετε, σκεφθείτε όμως σε μία καταναλωτική κοινωνία με ποιό βασικό κριτήριο ξοδεύουμε το μεγαλύτερο μέρος των χρημάτων μας.) Άλλωστε, η αναγνώριση και η φήμη μπορεί στο μέλλον να σας προσφέρουν μία πολύ καλη δουλειά...

Δεν πρέπει να παραγνωρίσουμε και ένα ακόμη παράγοντα που οδηγεί κάποιον στο να γράψει (ή να συνεισφέρει ιδέες και κώδικα σε κάποιους που γράφουν) προγράμματα: την επίλυση ενός προβλήματος που αντιμετωπίζει ο ίδιος.

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

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

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

Εσείς τί θα επιλέγατε;

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

2. Πώς μπορεί το αποτέλεσμα να είναι ποιοτικό;

Ας εξετάσουμε τώρα το ερώτημα πώς μπορεί ένα τόσο μεγάλο project όπως ένα λειτουργικό σύστημα να αναπτυχθεί τζάμπα και μάλιστα το αποτέλεσμα να είναι ποιοτικό.

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

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

Ο περισσότερος κόσμος θεωρεί ότι για να γίνει ένα καλό πρόγραμμα χρειάζεται κάποιος, ή έστω μία μικρή ομάδα, που θα είναι αρκετά ευφυής για να συλλάβει την αρχική ιδέα και να την υλοποιήσει χωρίς λάθη. Αυτή η αντίληψη όμως απέχει πολύ από την πραγματικότητα. Μερικοί από τους λόγους;
  • Ένα καλό πρόγραμμα έχει ανάγκη από χρήστες και μόνο αυτοί μπορούν να προσδιορίσουν με ακρίβεια τις ανάγκες τους.
  • Όταν μιλάμε για μεγάλα προγράμματα, δεν είναι δυνατό η υλοποίηση να γίνει χωρίς λάθη (bugs), είτε στην λογική (στον αλγόριθμο) είτε στην συγραφή του προγράμματος. Λυπηρό ίσως, αλλά ΔΕΝ ΥΠΑΡΧΕΙ ΤΕΛΕΙΟ ΠΡΟΓΡΑΜΜΑ !!!
  • Ένα καλό πρόγραμμα πρέπει να συνοδεύεται από κατατοπιστικά εγχειρίδια που θα βοηθήσουν τους χρήστες του.
  • Πρέπει να μπορεί να προσαρμόζεται με νέες εκδόσεις στα δεδομένα που επικρατούν στον χώρο και τα οποία αλλάζουν κάθε τόσο.
Η αντιμετώπιση όλων των παραπάνω στον χώρο του Linux, με την βοήθεια του GPL είναι πραγματικά εντυπωσιακή.

Η πολιτική του ελεύθερου λογισμικού και της αναγνώρισης όσων βοηθούν με τον ένα ή τον άλλο τρόπο κάνουν πολλούς από τους χρήστες να αισθάνονται ότι είναι και μέρος της ομάδας ανάπτυξης του προγράμματος. Έτσι διασφαλίζεται μία συνεχής ροή παρατηρήσεων, εντοπισμού λαθών τροποποιήσεων και ιδεών προς τους προγραμματιστές. Τα bugs εντοπίζονται πολύ γρήγορα και συχνά η αναφορά για αυτά συνοδεύεται και από τον προσδιορισμό του κοματιού του πηγαίου κώδικα που είναι ελλατωματικός καθώς και από την προτεινόμενη διόρθωση (βλέπετε ο πηγαίος κώδικας δεν είναι επτασφράγιστο μυστικό όπως στην περίπτωση των εμπορικών προγραμμάτων!). Όπως λέει και ο Eric S. Raymond στο άρθρο του The Cathedral and the Bazzar http://www.kde.org/food/cathedral/cathedral-paper.html, "Δοθέντων αρκετών ματιών, όλα τα bugs είναι ρηχά". Το παράδειγμα του Linux είναι αρκετό για να πείσει και τον πιο δύσπιστο: Θεωρείται από τα πιο σταθερά λειτουργικά συστήματα!

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

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

Η ελεύθερη πρόσβαση στον πηγαίο κώδικα, η εύκολη και άμμεση επικοινωνία με τους προγραμματιστές καθώς και το κλίμα αλληλοβοήθειας που επικρατεί στον χώρο του ελέυθερου λογισμικού επιτρέπουν και οδηγούν πολλούς από τους χρήστες να γράψουν εγχειρίδια χρήσης και άλλα βοηθητικά κείμενα σχετικά με το πρόγραμμα. Όποιος έχει αμφιβολία για αυτό, ας ρίξει μία ματιά στο http://sunsite.unc.edu/LDP για να δει το πλήθος και ποιότητα των κειμένων σχετικά με την χρήση και εγκατάσταση του Linux.

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

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

3. Επιγραμματικά

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

Άν ενδιαφέρεστε να μάθετε περισσότερα, επισκευθείτε τις διευθύνσεις:

Post Reply