Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
138
content/articles/01/03_free-software.md
Κανονικό αρχείο
138
content/articles/01/03_free-software.md
Κανονικό αρχείο
|
@ -0,0 +1,138 @@
|
|||
+++
|
||||
title = 'Περί ελεύθερου (τζάμπα) λογισμικού.'
|
||||
date = '1997-01-01T00:00:00Z'
|
||||
description = ''
|
||||
author = 'Παναγιώτης Βρυώνης'
|
||||
issue = ['Magaz 01']
|
||||
issue_weight = 3
|
||||
+++
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
*Αφού εφυγα από την συνάντηση που είχαμε με τους υπόλοιπους linux-άδες, πηγα να συναντήσω την κοπέλα μου. Εντάξει, είχα αργήσει, αλλά αυτό που δεν μπορουσε να
|
||||
καταλάβει είναι γιατί κάποιος θα μπορούσε να διαθέτει τόσο μεγάλο μέρος του χρόνου του χωρίς να πληρώνεται. Όταν μαλιστα της εξηγησα ότι δεν είμαι μόνο εγώ ο
|
||||
\"τρελός\" αλλά οτι υπάρχουν εκατομύρια άλλοι (μάλλον πιο τρελαμένοι) τότε το μυστήριο έγινε μεγαλύτερο\...*
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Θυμάμαι και τις δικές μου πρώτες σκέψεις όταν βρέθηκα στον κόσμο του linux. Γιατί όλοι αυτοί οι άνθρωποι να προσφέρουν πόρους για να δημιουργηθεί κάτι το οποίο
|
||||
δεν θα τους αποφέρει οικονομικά οφέλη; Ακόμη και αν αυτό γίνεται, πώς είναι δυνατό κάτι τόσο πολύπλοκο όσο ένα ολόκληρο λειτουργικό σύστημα να δημιουργηθεί από
|
||||
εκατοντάδες ή χιλιάδες hackers που ο καθένας βάζει ένα λιθαράκι; Και για να πάω ένα βήμα παρακάτω, πως είναι δυνατόν το αποτέλεσμα αυτό να είναι ίδιας ποιότητας
|
||||
και σταθερότητας με το αποτέλεσμα μιας καλά οργανωμένης και στελεχωμένης ομάδας ειδικών που πληρώνεται πλουσιοπάροχα από μία εταιρεία;
|
||||
|
||||
**1. Τι κερδίζει ο προγραμματιστής;**
|
||||
---------------------------------------------------------------------
|
||||
|
||||
**2. Πώς μπορεί το αποτέλεσμα να είναι ποιοτικό;**
|
||||
----------------------------------------------------------------------------------
|
||||
|
||||
**3. Επιγραμματικά**
|
||||
----------------------------------------------------
|
||||
|
||||
|
||||
### [1. Τι κερδίζει ο προγραμματιστής;]{#s1}
|
||||
|
||||
Ας πάρουμε τα πράγματα με την σειρά και ας προσπαθήσουμε να ρίξουμε λίγο φώς στο \"γιατί\". Αν και δεν είναι δυνατό να προσδιορίσουμε τα ακριβή κίνητρα του κάθε
|
||||
προγραμματιστή που χωρίς να πληρώνεται κάθεται και συνεισφέρει σε μία ομάδα τον χρόνο του, τις ικανότητές του, τις γνώσεις του καθώς και το μηχάνημά του (εκεί
|
||||
δουλεύει), μπορούμε να σκιαγραφήσουμε κάποια από αυτά.
|
||||
|
||||
Είναι δεδομένο ότι όποιος ασχολείται με τον προγραμματισμό χωρίς να πληρώνεται το κάνει γιατί του αρέσει. Είναι το χόμπι του. Όπως κάποιος άλλος μπορεί να
|
||||
διέθετε όλο το Σαββατοκύριακό του για να φτιάξει μία βιβλιοθήκη στο δωμάτιό του ή ακόμη περισσότερο, θα πήγαινε να βοηθήσει ένα φίλο του που μαστορεύει και
|
||||
ζήτησε την βοήθειά του, έτσι και ο προγραμματιστής μας, διαθέτει τον χρόνο του για να γράψει ένα driver ή μία εφαρμογούλα ή να προσφέρει βελτιώσεις στην
|
||||
εφαρμογή που έγραψε κάποιος άλλος, ή ακόμη και να γράψει τα εγχειρίδια μίας εφαρμογής.
|
||||
|
||||
Βλέποντας τα πράγματα από την παραπάνω οπτική γωνία, μπορεί κανείς να καταλάβει ότι και μόνο η ικανοποίηση της ενασχόλησης με κάτι το οποίο θεωρούμε ενδιαφέρον
|
||||
είναι μια ουσιαστική ανταμοιβή. Υπάρχει όμως και μία ακόμη σημαντικότερη κατά την γνώμη μου: η δόξα και η αναγνώριση. Ένα καλό πρόγραμμα σημαίνει για τον ή τους
|
||||
δημιουργούς του αναγνώριση από ένα σωρό κόσμο (που στον χώρο του linux κατά κανόνα είναι και γνώστες του αντικειμένου). Μπορεί να μην δέχεται ο προγραμματιστής
|
||||
λεφτά για τις υπηρεσίες του, γίνεται όμως αποδέκτης αυτού που οι περισσότεροι θα ψάξουν να αγοράσουν με τα λευτά που κερδίζουν από την δουλειά τους: αναγνώριση.
|
||||
(Δεν είμαι εναντίον της αγοράς εργασίας, μην με παρεξηγήσετε, σκεφθείτε όμως σε μία καταναλωτική κοινωνία με ποιό βασικό κριτήριο ξοδεύουμε το μεγαλύτερο μέρος
|
||||
των χρημάτων μας.) Άλλωστε, η αναγνώριση και η φήμη μπορεί στο μέλλον να σας προσφέρουν μία πολύ καλη δουλειά\...
|
||||
|
||||
Δεν πρέπει να παραγνωρίσουμε και ένα ακόμη παράγοντα που οδηγεί κάποιον στο να γράψει (ή να συνεισφέρει ιδέες και κώδικα σε κάποιους που γράφουν) προγράμματα:
|
||||
την επίλυση ενός προβλήματος που αντιμετωπίζει ο ίδιος.
|
||||
|
||||
Ας πούμε για παράδειγμα ότι χρησιμοποιείτε ένα απλό διευθυνσιογράφο που βρήκατε χωρίς χρέωση στο Internet. Όλα καλά, αλλά θα σας βόλευε πάρα πολύ να μπορείτε να
|
||||
τυπώνετε καρτέλες με τις διευθύνσεις για να τις κολλάτε σε φακέλους. Επειδή όμως έχετε το σαράκι του προγραμματισμού κοιτάτε τον πηγαίο κώδικα (source code) και
|
||||
κάνετε μερικές προσθήκες που σαν αποτέλεσμα έχουν την ζητούμενη δυνατότητα. Από το σημείο αυτό κι έπειτα έχετε δύο επιλογές.
|
||||
|
||||
Η μία είναι να κρατήσετε τις αλλαγές για τον εαυτό σας θεωρώντας οτι είναι άδικο να επωφεληθεί κάποιος άλλος από τον δικό σας κόπο (αν και εσείς χρησιμοποιείτε
|
||||
το πρόγραμμα που προσφέρει κάποιος δωρεάν).
|
||||
|
||||
Η άλλη επιλογή είναι να στείλετε τις αλλαγές στον δημιουργό του προγράμματος. Αν αυτός θεωρεί ότι πρέπει να ενσωματωθούν στο πρόγραμμα του, θα το κάνει στην
|
||||
επόμενη έκδοση. Στην έκδοση αυτή θα δείτε και το όνομά σας ανάμεσα σε αυτούς που βοήθησαν και ίσως μετά από αρκετό καιρό να διαβάσετε σε ένα περιοδικό ότι το
|
||||
πρόγραμμα αυτό έχει εξελιχθεί σε ένα από τα πιο δυνατά προγράμματα της κατηγορίας του!
|
||||
|
||||
Εσείς τί θα επιλέγατε;
|
||||
|
||||
Οι λόγοι που ανέφερα μέχρι στιγμής δεν είναι βέβαια οι μοναδικοί. Σε αυτούς μπορούμε να συμπεριλάβουμε τον πειραματισμό με αντικείμενα που ένας συγκεκριμένος
|
||||
προγραμματιστής να μην έχει την δυνατότητα να ασχοληθεί στην εργασία του, την ανάπτυξη λογισμικού από μη κερδοσκοπικούς οργανισμούς και/ή πανεπιστήμια καθώς και
|
||||
τις περιπτώσεις που ένα πρόγραμμα ξεκιναέι σαν εμπορικό αλλά οι δημιουργοί/χρηματοδότες του χάνουν το ενδιαφέρον τους σε αυτό και αντί να το θάψουν το δίνουν
|
||||
στο ευρύ κοινό να κάνει ότι νομίζει καλύτερο με αυτό.
|
||||
|
||||
|
||||
### [2. Πώς μπορεί το αποτέλεσμα να είναι ποιοτικό;]{#s2}
|
||||
|
||||
Ας εξετάσουμε τώρα το ερώτημα πώς μπορεί ένα τόσο μεγάλο 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 ( [σε μια συνέντευξή
|
||||
του.](http://students.ceid.upatras.gr/~keramida/linux/doc/linus.html)) *\"Όταν μιλάμε για λογισμικό προτιμώ σαφώς το ελεύθερο λογισμικό γιατί πολύ σπάνια έχω
|
||||
δεί ένα πρόγραμμα που να δουλεύει αρκετά καλά για τις ανάγκες μου και το να έχεις τον πηγαίο κώδικα μπορεί να σε γλιτώσει.\"*
|
||||
|
||||
Ένα άλλο θέμα είναι η ταχύτητα με την οποία αναπτύσεται μία εφαρμογή. Ειδικά στα εμπορικά προγράμματα, είναι δεδομένο ότι η επιτυχία ενός προγράμματος μπορεί να
|
||||
κριθεί από το αν βγήκε στην διανομή έγκαιρα, που σημαίνει ότι η ταχύτητα με την οποία το πρόγραμμα θα αναπτυχθεί είναι κρίσιμος παράγοντας. Στην περίπτωση του
|
||||
ελεύθερου λογισμικού (GPL) οι προγραμματιστές έχουν ένα ακόμη πλεονέκτημα: μπορούν να χρησιμοποιήσουν κώδικα που είναν γράψει άλλοι! Όπως λένε, οι καλοί
|
||||
προγραμματιστές ξέρουν τί να γράψουν, οι μεγάλοι προγραμματιστές ξέρουν τί να ξαναγράψουν (και να ξανα χρησιμοποιήσουν).
|
||||
|
||||
Η ελεύθερη πρόσβαση στον πηγαίο κώδικα, η εύκολη και άμμεση επικοινωνία με τους προγραμματιστές καθώς και το κλίμα αλληλοβοήθειας που επικρατεί στον χώρο του
|
||||
ελέυθερου λογισμικού επιτρέπουν και οδηγούν πολλούς από τους χρήστες να γράψουν εγχειρίδια χρήσης και άλλα βοηθητικά κείμενα σχετικά με το πρόγραμμα. Όποιος
|
||||
έχει αμφιβολία για αυτό, ας ρίξει μία ματιά στο <http://sunsite.unc.edu/LDP> για να δει το πλήθος και ποιότητα των κειμένων σχετικά με την χρήση και εγκατάσταση
|
||||
του Linux.
|
||||
|
||||
Ο κώδικας που γράφεται στο πλαίσιο του ελεύθερου λογισμικού είναι κατά μέσο όρο πολύ υψηλών προδιαγραφών. Ο λόγος είναι ότι οι προγραμματιστές χρειάζονται (αφού
|
||||
συνήθως θέλουν να καλύψουν κάποια δικιά τους ανάγκη) και αγαπούν τον κώδικα που γράφουν (κάτι που δεν ισχύει πάντα στην περίπτωση εμπορικού κώδικα που γράφεται
|
||||
γιατί πρέπει να καλύψει την ανάγκη κάποιου πελάτη).
|
||||
|
||||
Τέλος, καθώς ο χώρος αλλάζει, κάποιοι θα χρειαστούν μία νέα δυνατότητα που ή θα ζητήσουν από τους προγραμματιστές που αρχικά ανέπτυξαν την εφαρμογή ή θα την
|
||||
προσθέσουν μόνοι τους, άν γνωρίζουν προγραμματισμό. Ανακοινώσεις της μορφής *\"Ο τάδε πρότεινε αυτή την δυνατότητα, υπάρχει κάποιος που ενδιαφέρεται να την
|
||||
υλοποιήσει\"* είναι πολύ συχνές σε χώρους που αναπτύσεται ελεύθερο λογισμικό. Το πρόγραμμα θα συνεχίσει να εξελίσεται και να προσαρμόζεται όσο οι
|
||||
χρήστες-προγραμματιστές του το θεωρούν χρήσιμο. Ακόμη και αν ο αρχικός προγραμματιστής κάποια στιγμή αποφασίσει να αποτραβηχθεί, πολύ συχνά θα το \"υιοθετήσει\"
|
||||
|
||||
### [3. Επιγραμματικά]{#s3}
|
||||
|
||||
Προσπάθησα μέσα από αυτό το άρθρο να εξηγήσω πώς δουλεύει ο κόσμος του ελεύθερου λογισμικού, ένας κόσμος που σε εμάς που έχουμε μάθει να λειτουργούμε με τους
|
||||
κανόνες της αγοράς μπορεί να φαίνεται παράλογος.
|
||||
|
||||
Άν ενδιαφέρεστε να μάθετε περισσότερα, επισκευθείτε τις διευθύνσεις:
|
||||
|
||||
- <http://www.fsf.org/>
|
||||
- και <http://www.kde.org/food/food.html>
|
||||
|
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα