ioarvanit

Does the goat chew taramas? Does the cat spin on yogurt?

Άδειες ελεύθερου λογισμικού

αφήστε ένα σχόλιο

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

Για να θεωρηθεί μια άδεια λογισμικού ως ελεύθερη (free software license), θα πρέπει να δίνει στους αποδέκτες-χρήστες του λογισμικού, όλες τις ελευθερίες αναδιανομής και τροποποίησης, οι οποίες εξ ορισμού περιορίζονται από τους νόμους περί πνευματικής ιδιοκτησίας (copyright legislation). Το Ίδρυμα Ελεύθερου Λογισμικού (Free Software Foundation) σχηματικά αναφέρει τέσσερις ελευθερίες λογισμικού:

  • Freedom 0: Η ελευθερία να εκτελέσεις το πρόγραμμα για οποιονδήποτε σκοπό.
  • Freedom 1: Η ελευθερία να διαβάσεις ή να τροποποιήσεις τον πηγαίο κώδικα του προγράμματος (και κατά συνέπεια και το ίδιο το πρόγραμμα) για ιδιωτική χρήση.
  • Freedom 2: Η ελευθερία να αντιγράψεις το αρχικό πρόγραμμα και να το δώσεις σε κάποιον τρίτο.
  • Freedom 3: Η ελευθερία να μπορείς να δημοσιοποιείς τροποποιημένες και βελτιωμένες εκδόσεις του προγράμματος σε τρίτα άτομα.

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

Ελεύθερο vs Ανοιχτό λογισμικό

Αρκετά συχνά, θέλοντας να αναφερθούμε σε λογισμικά που είναι ελεύθερα, χρησιμοποιούμε τους όρους ελεύθερο λογισμικό και ανοιχτό λογισμικό ή λογισμικό ανοιχτού κώδικα ως ταυτόσημους. Σήμερα υπάρχουν δυο κύριοι οργανισμοί οι οποίοι ασχολούνται με αυτήν την κατηγορία λογισμικού και με τις διάφορες άδειες χρήσης που υπάρχουν για αυτό. Από την μία υπάρχει το Ίδρυμα Ελεύθερου Λογισμικού (FSF-Free Software Foundation) το οποίο χρησιμοποιεί και προωθεί τον όρο ελεύθερο λογισμικό (free software), ενώ η Πρωτοβουλία Ανοιχτού Λογισμικού (OSI-Open Source Initiative), χρησιμοποιεί τον όρο λογισμικό ανοιχτού κώδικα (open source software).

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

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

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

Αντίθετα το FSF ορίζει ελεύθερο το λογισμικό

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

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

Κατηγορίες αδειών ελεύθερου λογισμικού

Σύμφωνα με την φιλοσοφία του FSF, οι άδειες ελεύθερου λογισμικού ανήκουν σε τρεις κύριες κατηγορίες, με βάση την δυνατότητά τους να διασφαλίζουν την συνεχή ελευθερία του λογισμικού. Έτσι έχουμε το κατοχυρωμένο λογισμικό (Copyleft), το μη κατοχυρωμένο (non-copyleft) το οποίο καλύπτεται από περισσότερο “επιτρεπτικές” άδειες (permissive), ενώ τέλος υπάρχει το λογισμικό κοινής ιδιοκτησίας (public domain).

Άδειες κατοχυρωμένου λογισμικού (Copyleft)

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

copyleft symbol

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

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

Άδειες μη κατοχυρωμένου λογισμικού. (non copyleft – permissive)

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

Οι άδειες ελεύθερου λογισμικού δεν ανήκουν αυστηρά σε μία από τις δυο κατηγορίες (Copyleft και non copyleft). Στην ουσία οι δυο αυτές κατηγορίες αποτελούν δυο πόλους, ανάμεσα στους οποίους τοποθετούνται οι άδειες. Έτσι υπάρχουν άδειες που είναι περισσότερο ή λιγότερο  ισχυρές copyleft και αντίστοιχα λιγότερο ή περισσότερο “επιτρεπτικές” (permissive).

Χαρακτηριστικά παραδείγματα περισσότερο επιτρεπτικών αδειών αποτελούν η άδεια BSD και MIT, οι οποίες επιτρέπουν στους χρήστες που τροποποιούν το λογισμικό να διανέμουν αν επιθυμούν μόνο τον εκτελέσιμο κώδικα. Αντίθετα οι άδειες GNU-LGPL είναι λιγότερο επιτρεπτικές, αλλά όχι ισχυρές copyleft όπως οι GNU-GPL, καθώς επιτρέπουν μόνο σε μέρη του παράγωγου λογισμικού, που μπορούν να θεωρηθούν αυτόνομα από το αρχικό, να αδειοδοτηθούν με διαφορετικό τρόπο.

Λογισμικό κοινής ιδιοκτησίας (public domain software)

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

Αναφορές:

Από τον ioarvanit

Αυγούστου 11th, 2010 στις 4:20 μμ

Δημοσιευμένο στο Ελεύθερο λογισμικό

Tagged with , , ,

print και echo στην php

αφήστε ένα σχόλιο

Η ερώτηση ήρθε από κάποιον μαθητή μου που ασχολείται με την php.
Ποια η διαφορά της echo με την print;
Και εκείνη την στιγμή γεννήθηκε και σε μένα το ίδιο ερώτημα (η αλήθεια είναι ότι με προβλημάτισε γιατί δεν είχε γεννηθεί και σε μένα πιο νωρίς). Οπότε υποσχέθηκα στον μαθητή να το ερευνήσω για να μπορέσω να του απαντήσω. Ξεκίνησα από λοιπόν από το manual της PHP σύμφωνα με το οποίο…

οι βασικές ομοιότητες της print με την echo είναι πως

  • Και οι δυο κάνουν την ίδια δουλειά όσον αφορά την εμφάνιση στην οθόνη,
  • και οι δυο αν και μπορούν να συνταχθούν σαν συναρτήσεις (functions), στην ουσία είναι language constructs, για αυτό κιόλας δεν είναι είναι απαραίτητες οι παρενθέσεις στην σύνταξή τους

//Η print με την χρήση παρενθέσεων
print("Ένα δυο τρία ο, τό'ριξα στο σορολόπ");
//Η print χωρίς την χρήση παρενθέσεων
print "Ένα δυο τρία ο, τό'ριξα στο σορολόπ";
//Παρόμοια και με την echo και οι δυο επόμενες εντολές είναι σωστές
echo("Δευτέρα κάτι έχω την Τρίτη δεν αντέχω");
echo "Δευτέρα κάτι έχω την Τρίτη δεν αντέχω";

Και ποιες είναι οι διαφορές τους;

  • Η βασική διαφορά τους είναι ότι η print επιστρέφει μια τιμή (τον αριθμό 1) ενώ αντίθετα η echo δεν επιστρέφει τίποτα (void).
  • Η print ΔΕΝ μπορεί να εμφανίσει πολλαπλές παραμέτρους με την χρήση κόμματος όπως η echo.

echo 'Στάσου ', 'μύγδαλα'; //Εμφάνιση δυο αλφαριθμητικών χωρισμένων με κόμμα
print 'Στάσου ', 'μύγδαλα'; //Θα βγάλει μήνυμα λάθους unexpected ','....

  • Η print μπορεί να κληθεί ως συνάρτηση στις συντομευμένες εκφράσεις ελέγχου ενώ η echo δεν μπορεί.

$money<=0?print "Δεν έχεις λεφτά":print "Σου περισσεύουν λίγα ακόμα"; //Σωστή εντολή
$money<=0?echo "Δεν έχεις λεφτά" : echo "Σου περισσεύουν λίγα ακόμα";//Parse error: syntax error, unexpected T_ECHO in ...
echo $money<=0 ? "Δεν έχεις λεφτά" : "Σου περισσεύουν λίγα ακόμα"; //Σωστή χρήση της echo

Υπάρχει διαφορά στην ταχύτητα;

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

Θεωρητικά θα περίμενε κανείς πως η echo, αφού δεν επιστρέφει τιμή όπως η print, να είναι λίγο πιο γρήγορη στην εκτέλεσή της. Και όμως δοκιμές (benchmark test) στις οποίες συγκρίθηκαν οι δυο εντολές (εκτύπωση χιλιάδων αλφαριθμητικών) δείχνουν αντιφατικά αποτελέσματα (κάποιες φορές είναι πιο γρήγορη η echo και άλλες η print http://pastie.org/523020). Σε κάθε περίπτωση οι διαφορές στην ταχύτητα εκτύπωσης είναι τόσο μικρές που θεωρούνται αμελητέες.
Βέβαια εκτός από την ταχύτητα εκτέλεσης υπάρχει και η ταχύτητα πληκτρολόγησης του προγράμματος, όπου εκεί υπερτερεί η echo με έναν λιγότερο χαρακτήρα από την print.

Συμπερασματικά ποια να χρησιμοποιώ;

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

Αναφορές:

Από τον ioarvanit

Αυγούστου 2nd, 2010 στις 1:39 μμ

Δημοσιευμένο στο Προγραμματισμός

Tagged with , ,

Πως λειτουργεί το σύγχρονο τραπεζικό σύστημα

αφήστε ένα σχόλιο

Ένα εξαιρετικά διαφωτιστικό βίντεο για το πως λειτουργεί το σύγχρονο τραπεζικό σύστημα και ποια είναι η αληθινή πηγή των χρημάτων.  Ευχαριστούμε το ΚΕΠΙΚ για την αλίευση και μετάφραση του βίντεο!


MySpace Direkt

Από τον ioarvanit

Αυγούστου 1st, 2010 στις 7:09 μμ

Δημοσιευμένο στο Γενικά

Tagged with

Θέματα πανελληνίων ΑΕΠΠ 2010

αφήστε ένα σχόλιο

Algorithmic criteria

By ioarvanit | View this Toon at ToonDoo | Create your own Toon

Από τον ioarvanit

Αυγούστου 1st, 2010 στις 11:41 πμ

Η ανάγκη για εκπαιδευτική αλλαγή με οδηγό την δημιουργικότητα

αφήστε ένα σχόλιο

Μια από τις πιο απολαυστικές ομιλίες που έχουν γίνει στο TED. Ο Σερ Κεν Ρόμπινσον αναφέρεται στην ανθρώπινη δημιουργικότητα, η οποία θα πρέπει να αποτελέσει το βασικό κριτήριο για την μεγάλη επανάσταση-ανατροπή που χρειάζονται τα εκπαιδευτικά συστήματα.


YouTube Direkt

Από τον ioarvanit

Αυγούστου 1st, 2010 στις 12:42 πμ