Αυτό που λένε είναι σωστό: οι καλύτερες παρεμβάσεις στο λογισμικό [hacks] ξεκινούν σαν προσωπικές λύσεις στα καθημερινά προβλήματα του προγραμματιστή κι εξαπλώνονται επειδή αυτά γίνονται τυπικά για μεγάλο αριθμό χρηστών. Αυτό μας παραπέμπει στο θέμα του κανόνα (1), που μπορεί να διατυπωθεί με πιο χρήσιμο τρόπο:
18. Για να λύσεις ένα ενδιαφέρον πρόβλημα, βρες ένα πρόβλημα που είναι ενδιαφέρον για σένα.
Αυτό συνέβη με τον Carl Harris και το παλιό popclient, αυτό συνέβη και με μένα και το fetchmail. Αλλά αυτό ήδη το έχουμε καταλάβει. Το ενδιαφέρον σημείο, το σημείο στο οποίο οι ιστορίες του Linux και του fetchmail φαίνεται να απαιτούν να εστιάσουμε επάνω τους, είναι το επόμενο στάδιο-η εξέλιξη του λογισμικού παρουσία μιας μεγάλης και δραστήριας κοινότητας χρηστών και συν-προγραμματιστών.
Στο βιβλίο του "The Mythical Man-Month" ο Fred Brooks παρατηρεί ότι, ο χρόνος του προγραμματιστή δεν είναι ανταλλάξιμος. Η προσθήκη προγραμματιστών σ' ένα καθυστερημένο project λογισμικού το καθυστερεί περισσότερο. Ισχυρίζεται ότι, το κόστος της πολυπλοκότητας και της επικοινωνίας ενός project αυξάνονται γεωμετρικά, ενώ η εργασία που ολοκληρώνεται αυξάνεται αριθμητικά. Αυτή η άποψη έγινε γνωστή σαν "ο Νόμος του Brooks" και αναγνωρίζεται από πολλούς σαν κάτι τελείως πασιφανές. Αλλά αν ο Νόμος του Brooks απέδιδε την όλη εικόνα το Linux θα ήταν αδύνατο να υπάρξει.
Το κλασικό κείμενο "Η Ψυχολογία του Προγραμματισμού με Ηλεκτρονικό Υπολογιστή", του Gerald Weinberg, μας δίνει μια ζωτική διόρθωση της άποψης του Brooks. Στην συζήτησή του για τον "χωρίς εγωισμό" προγραμματισμό ο Weinberg παρατηρεί ότι, σε εργασίες που προγραμματιστές δεν απαιτούν "εδαφικά δικαιώματα" για τον κώδικα τους και ενθαρρύνουν άλλους ανθρώπους να αναζητήσουν bugs και πιθανές βελτιώσεις, η βελτίωση συμβαίνει δραματικά γρηγορότερα από οπουδήποτε αλλού.
Οι επιλογές ορολογίας που έκανε ο Weinberg ίσως εμποδίζουν την ανάλυσή του να κερδίσει την αποδοχή που της αξίζει-κάποιος θα χαμογελούσε στον χαρακτηρισμό των hackers του Internet σαν "χωρίς εγωισμό". Αλλά πιστεύω ότι οι ισχυρισμοί του μοιάζουν σήμερα περισσότερο επιβλητικοί από ποτέ.
Η ιστορία του Unix θα έπρεπε να μας έχει προετοιμάσει για ό,τι μαθαίνουμε απ' το Linux (και για ότι έχω εγώ διαπιστώσει, πειραματικά και σε μικρότερη κλίμακα όταν σκόπιμα αντέγραψα τις μεθόδους του Linus). Ότι, δηλαδή, ενώ η σύνταξη κώδικα παραμένει μια ουσιωδώς μοναχική δραστηριότητα, οι πραγματικά καλές προγραμματιστικές εργασίες προέρχονται όταν χρησιμοποιείται η προσοχή και η διανοητική δύναμη της ομάδας. Ο προγραμματιστής που χρησιμοποιεί το μυαλό του του μόνος ή μόνη σ' ένα κλειστό project θα μείνει πίσω απ' τον προγραμματιστή που ξέρει πώς να δημιουργήσει ένα ανοιχτό, εξελικτικό πλαίσιο στο οποίο ο εντοπισμός των bugs και η επίτευξη βελτιώσεων καταφέρονται από εκατοντάδες ανθρώπων.
Όμως, ο παραδοσιακός κόσμος του Unix εμποδίστηκε στην προσπάθειά του να ωθήσει αυτή την προσέγγιση στην τελική της φάση από πολλούς παράγοντες. Τέτοιοι ήταν οι νομικοί περιορισμοί διαφόρων αδειών χρήσης πνευματικών δικαιωμάτων, επαγγελματικά μυστικά και τα εμπορικά συμφέροντα. Ένας άλλος ήταν ότι το Internet δεν ήταν ακόμη αρκετά καλό.
Πριν από την έλευση του φτηνού Internet υπήρχαν κάποιες γεωγραφικά συμπαγείς ομάδες των οποίων η κουλτούρα ενεθάρρυνε τον "μη εγωιστικό" προγραμματισμό του Weinberg κι ένας προγραμματιστής μπορούσε χωρίς δυσκολία να προσελκύσει πολλούς ικανούς παρατηρητές και προγραμματιστές. Τα Bell Labs, MIT AI Lab, το UC Berkeley έγιναν οίκοι θρυλικών καινοτομιών που είναι ακόμη σε ισχύ.
Το Linux ήταν το πρώτο project που έκανε συνειδητές και επιτυχείς προσπάθειες να αξιοποιηθεί ολόκληρος ο κόσμος σαν η δική του δεξαμενή ταλέντων. Δεν νομίζω ότι είναι σύμπτωση ότι η γόνιμη περίοδος του Linux εμφανίζεται την ίδια περίοδο με εκείνη της γέννησης του Παγκόσμιου Ιστού (World Wide Web-WWW) και ότι το Linux εγκατέλειψε την παιδική του ηλικία κατά την περίοδο 1993-1994 η οποία είδε την απογείωση της βιομηχανίας Παροχέων Υπηρεσιών Internet (ISP) και της έκρηξης του μεγάλου ρεύματος ενδιαφέροντος για το Internet. Ο Linus ήταν ο πρώτος άνθρωπος που έμαθε πώς να παίζει με τους νέους κανόνες που δημιουργούσε το Internet.
Ενώ το φτηνό Internet ήταν μια αναγκαία συνθήκη για την ανάπτυξη του μοντέλου Linux, νομίζω πως από μόνο του δεν ήγαν μια επαρκής συνθήκη. Ένας άλλο ζωτικός παράγοντας ήταν η ανάπτυξη ενός ηγετικού στυλ κι ενός συνόλου συνεργατικών συνηθειών που επέτρεψαν στους προγραμματιστές να προσελκύσουν συν-προγραμματιστές και να αποκομίσουν την μέγιστη ισχύ.
Τι είναι, όμως, αυτό το ηγετικό στυλ και οι συνήθειες; Δεν μπορούν να βασίζονται σε σχέσεις εξουσίας-ακόμη κι αν μπορούσαν, η εξαναγκαστική εξουσία δεν μπορεί να προκαλέσει τα αποτελέσματα που διαπιστώνουμε. Ο Weinberg παραθέτει την αυτοβιογραφία του Πιοτρ Αλεξέιεβιτς Κροπότκιν, Ρώσου αναρχικού του 19ου αιώνα, "Οι αναμνήσεις ενός Επαναστάτη".
"Έχοντας ανατραφεί από μια οικογένεια που είχε στην ιδιοκτησία της δουλοπάροικους ξεκίνησα την ζωή μου, όπως όλοι οι νέοι της εποχής μου, με πίστη μεγάλη στην αναγκαιότητα του να διατάζεις, να μαλώνεις, να τιμωρείς, και όλ' αυτά. Αλλά όταν, αρκετά νωρίς, έπρεπε να λειτουργήσω σοβαρές επιχειρήσεις και να συσχετιστώ με [ελεύθερους] ανθρώπους, και όταν το παραμικρό λάθος μπορούσε να οδηγήσει σε οδυνηρές επιπτώσεις, άρχισα να εκτιμώ την διαφορά μεταξύ της δράσης βάσει των αρχών της εντολής και της πειθαρχίας και της δράσης βάσει της αρχής της κοινής κατανόησης. Οι πρώτες εφαρμόζονται θαυμάσια σε μια στρατιωτική παρέλαση, αλλά δεν αξίζει το παραμικρό στην πραγματική ζωή όπου ο στόχος μπορεί να επιτευχθεί μόνο με τις σκληρή προσπάθεια πολλών συγκλινουσών θελήσεων"
Η "σκληρή προσπάθεια πολλών συγκλινουσών θελήσεων" είναι ακριβώς αυτό που απαιτεί το project του Linux-και η "αρχή της διαταγής" είναι αδύνατον να εφαρμοστεί μεταξύ εθελοντών, μέσα στον αναρχικό παράδεισο που λέγεται Internet. Για να λειτουργήσουν και συναγωνιστούν αποτελεσματικά, οι προγραμματιστές που θέλουν να ηγηθούν ενός συνεργατικού project πρέπει να μάθουν να στρατολογούν και να ενεργοποιούν αποτελεσματικές ομάδες προγραμματιστών με τον τρόπο που προτείνει η "αρχή της κατανόησης" του Κροπότκιν. Πρέπει να μάθουν να χρησιμοποιούν τον Νόμο του Linus.
Νωρίτερα αναφέρθηκα στο "φαινόμενο των Δελφών" ως μια πιθανή εξήγηση του Νόμου του Linus. Υπάρχουν, όμως, κι άλλες εξηγήσεις όπως οι ισχυρές αναλογίες των προσαρμόσιμων συστημάτων στην βιολογία και την οικονομία. Ο κόσμος του Linux συμπεριφέρεται από πολλές απόψεις σαν μια ελεύθερη αγορά ή ένα οικοσύστημα, σαν ένα σύνολο εγωιστικών δυνάμεων που προσπαθούν να μεγιστοποιήσουν την ωφέλεια η οποία, στην διαδικασία, δημιουργεί μια αυτό-διορθωτική αυθόρμητη τάξη περισσότερο περίτεχνη και αποτελεσματική από κάθε τέτοια που μπορεί να καταφέρει οποιοδήποτε ποσότητα κεντρικού σχεδιασμού. Μετά, σ' αυτό το σημείο πρέπει να αναζητήσουμε την "αρχή της κατανόησης".
Η "ωφέλιμη λειτουργία" που προσπαθούν να μεγιστοποιήσουν οι προγραμματιστές Linux δεν είναι οικονομική αλλά μια απροσδιόριστη ικανοποίηση του εγώ και της φήμης τους μεταξύ των άλλων προγραμματιστών. (Κάποιος μπορεί να ονομάσει το κίνητρό τους "αλτρουιστικό", αλλά θα αγνοεί ότι ο αλτρουισμός είναι ο ίδιος είναι μια μορφή ικανοποίησης του εγώ των αλτρουιστών). Η εθελοντική κουλτούρα που λειτουργεί μ' αυτό τον τρόπο στην πραγματικότητα είναι συνηθισμένη. Μια άλλη κουλτούρα, στην οποία συμμετείχα κι εγώ, είναι οι οπαδοί της επιστημονικής φαντασίας που, αντίθετα με τους προγραμματιστές αναγνωρίζει "τον μπαμπούλα του εγώ" (τον εμπλουτισμό της φήμης κάποιου μεταξύ άλλων οπαδών) σαν το βασικό κίνητρο πίσω απ' την εθελοντική δραστηριότητα.
Έχοντας με επιτυχία βάλει τον εαυτό του στη θέση του φύλακα του project κατά το οποίο η ανάπτυξη του λογισμικού γίνεται από άλλους και καλλιεργώντας το ενδιαφέρον για το project μέχρις ότου αυτό έγινε αυτοσυντηρούμενο, ο Linus επέδειξε μια οξυδερκή αντίληψη της "αρχής της κοινής κατανόησης" του Κροπότκιν. Αυτή η ημι-οικονομική όψη του κόσμου του Linux μας αναγκάζει να εξετάσουμε πώς εφαρμόζεται αυτή η κατανόηση.
Μπορούμε να δούμε τις μεθόδους του Linus σαν ένα τρόπο σύνδεσης του εγωισμού του ξεχωριστού προγραμματιστή όσο το δυνατόν πιο στενής με δύσκολους στόχους, που μπορούν να επιτευχθούν μόνο με παρατεταμένη συνεργασία. Με το project του fetchmail απέδειξα (μολονότι σε μικρότερη κλίμακα) ότι αυτή η μέθοδος μπορεί να επαναληφθεί με καλά αποτελέσματα. Ίσως τα κατάφερα λίγο πιο συνειδητά και συστηματικά από εκείνον.
Πολλοί άνθρωποι (ιδιαίτερα εκείνοι που πολιτικά δυσπιστούν ενώπιον της ελεύθερης αγοράς) θα περίμεναν από μια κουλτούρα αυτό- διευθυνόμενων ατόμων να είναι κερματισμένη, τοπική, άχρηστη, περιττή κι εχθρική. Αυτές οι προσδοκίες, όμως, ακυρώνονται από την εκπληκτική ποικιλία, ποιότητα και βάθος της τεκμηρίωσης του Linux, για να αναφέρω ένα παράδειγμα. Οι προγραμματιστές απεχθάνονται την τεκμηρίωση. Πώς, τότε, οι προγραμματιστές του Linux παράγουν τόση πολύ; Προφανώς, η ελεύθερη αγορά στο Linux δουλεύει παρέχοντας καλή, διαφορετική συμπεριφορά από εκείνη των μαζικά χρηματοδοτούμενων εργαστηρίων παραγωγής τεκμηρίωσης των εμπορικών λογισμικών προϊόντων.
Τόσο το project του πυρήνα του fetchmail όσο και του Linux δείχνουν ότι, ανταμείβοντας κατάλληλα τους προγραμματιστές ένας καλός προγραμματιστής/συντονιστής μπορεί να χρησιμοποιήσει το Internet για να εκμεταλλευτεί τα οφέλη όταν έχει πολλούς προγραμματιστές χωρίς, ταυτόχρονα, να καταστρέφεται το project μέσα σε μια χαοτική ανακατωσούρα. Έτσι, στον Νόμο Brooks αντιπροτείνω το εξής:
19. Με τον όρο ο συντονιστής προγραμματιστής να έχει ένα μέσον τουλάχιστον τόσο καλό όσο το Internet και γνωρίζοντας πώς να ηγηθεί χωρίς καταπίεση, πολλά μυαλά αναπόφευκτα γίνονται καλύτερα από ένα.
Πιστεύω ότι, το μέλλον του λογισμικού ανοιχτού κώδικα ανήκει όλο και περισσότερο στους ανθρώπους που ξέρουν πώς να παίξουν το παιχνίδι του Linus, σε ανθρώπους που αφήνουν πίσω τους το καθεδρικό στυλ κι αγκαλιάζουν το στυλ παζαριού. Μ' αυτό δεν εννοούμε ότι η άποψη και η ευφυία του καθενός δεν έχουν σημασία. Αλλά μάλλον ότι, η αιχμή του λογισμικού ανοιχτού κώδικα θα ανήκει σε ανθρώπους που ξεκινούν απ' την ατομική άποψη κι ευφυία και μετά τις ενισχύουν με την αποτελεσματική δημιουργία εθελοντικών ομάδων κοινού ενδιαφέροντος.
Και ίσως όχι μόνο το μέλλον του λογισμικού ανοιχτού κώδικα. Κανένας προγραμματιστής κλειστού κώδικα μπορεί να συγκεντρώσει όλα αυτά τα ταλέντα που η κοινότητα του Linux μπορεί να απασχολήσει για την επίλυση κάποιου προβλήματος. Πολλοί λίγοι μπορούν να αντεπεξέλθουν στο οικονομικό έξοδο πρόσληψης το πολύ διακοσίων ανθρώπων, όσων συνεισέφεραν στο fetchmail!
Ίσως, στο τέλος, η κουλτούρα του ανοιχτού κώδικα θριαμβεύσει όχι επειδή η συνεργασία είναι ηθικώς ορθή ή η "φραγή" του λογισμικού είναι ηθικώς λανθασμένη (υποθέτω ότι θα συμφωνείτε με το τελευταίο), αλλά απλά επειδή ο κόσμος του κλειστού κώδικα δεν μπορεί να κερδίσει έναν εξελικτικό αγώνα με τις κοινότητες ανοιχτού κώδικα, πολύ περισσότερο κι έμπειρο χρόνο για την επίλυση ενός προβλήματος.