Thursday, May 5, 2011

My first opensource journey - Greek Version


Πριν από λίγο καιρό, χωρίς να υπάρχει ιδιαίτερος λόγος, μάλλον για να ικανοποιήσω τις ασταμάτητες ανησυχίες μου για νέες ασχολίες και ενδιαφέροντα, αποφάσισα να συνεισφέρω σε ένα open-source project, αναπτύσσοντας αρχικά ένα μικρό plugin (υποσύστημα). Η αλήθεια είναι ότι δεν το πολυ-σκέφτηκα, ούτε ήξερα τι θα συναντούσα στην πορεία. Σήμερα, έχοντας ολοκληρώσει την πρώτη έκδοσή του, νιώθω ότι τελείωσα ένα μικρό ταξίδι, σε έναν διαφορετικό κόσμο ανάπτυξης λογισμικού από αυτόν που ήξερα, και με αυτό το post θέλω να μοιραστώ τις εμπειρίες μου. Πριν από αυτό, ωστόσο, κρίνω σκόπιμο να περιγράψω με λίγα λόγια το ίδιο το plugin.

Εδώ και πάνω από ένα χρόνο χρησιμοποιώ το ( κατά την ταπεινή μου άποψη ) απόλυτο εργαλείο ποιότητας λογισμικού που ακούει στο όνομα Sonar. Τι είναι αυτό που κάνει το Sonar τόσο τέλειο και καταπληκτικό; Μα, οι δυνατότητες που δίνει σε μία ομάδα λογισμικού να παρακολουθεί την ποιότητα ενός project υπό ανάπτυξη/συντήρηση με κάθε λεπτομέρεια. Οι άξονες στους οποιούς κινείται είναι οι εξής 7: Σχεδίαση και Αρχιτεκτονική, Διπλός Κώδικας, Unit Tests, Πολυπλοκότητα, Πιθανές ατέλειες λογισμικού, Σχόλια και τέλος Κανόνες Κωδικά. Η συνεργασία του με άλλα δημοφιλή συστήματα, όπως το Maven ως βuild σύστημα, και το Jenkins για συνεχή ολοκλήρωση, αυξάνουν κατακόρυφα τις δυνατότητές του. Βέβαια, για να είμαστε ειλικρινείς, για να επωφεληθεί μία ομάδα λογισμικού από το Sonar, δεν αρκεί να καταγράφει την ποιότητα του κώδικα, αλλά κυρίως να ενεργεί συνεχώς προς την κατεύθυνση της βελτίωσής της. Το plugin, λοιπόν, που ανέπτυξα για το Sonar, παρέχει ολοκλήρωση (Integration) με το Google Calendar, που αποτελεί μέρος της σουιτάς εφαρμογών που παρέχει δωρεαν η Google. Κάθε φορά που το Sonar ολοκληρώνει την ανάλυση ποιότητας ενός project, τότε το plugin αναλαμβάνει δράση και δημιουργεί ένα event στο Google Calendar που έχει ορίσει ο χειριστής.

Τι συνάντησα λοιπόν από την πρώτη ημέρα που ξεκίνησα την ανάπτυξη μέχρι σήμερα;
Καταρχάς βρήκα ένα πολύ οργανωμένο περιβάλλον/κοινότητα το οποίο παρέχει εργαλεία για τη γρήγορη ανάπτυξη υποσυστημάτων, τον έλεγχο αυτών, τη δοκιμαστική τους χρήση από άλλους developers (SNAPSHOT release) και την οριστική τους διάθεση στους χιλιάδες χρήστες του Sonar. Οι developers, είναι πάντα πρόθυμοι να συνεισφέρουν με τις γνώσεις, τις απόψεις και τα σχόλιά τους είτε αυτά είναι θετικά είτε αρνητικά. Υπάρχουν κανόνες και διαδικασίες που τηρούνται πιστά από όλους. Από το πως θα αναπτύσσεται ο κώδικας, το documentation, οι διαδικασίες αυτοματοποιημένου build και ποιότητας (eat your own food) μέχρι πόσα space πρέπει να έχουν τα XML αρχεία που περιγράφουν το υποσύστημα. Σε κάθε μου βήμα σχεδόν υπήρχε ένας developer που με διόρθωνε. Ομολογώ ότι μετά από δεκαπέντε χρόνια εμπειρίας(;;) στην ανάπτυξη λογισμικού ένιωθα σα φοιτητής που έγραφα το πρώτο μου Hello World παράδειγμα!!! Ακόμα και το πως/πότε ένα plugin θεωρείται έτοιμο για release καθορίζεται από μία διαδικασία ψηφοφορίας ανάμεσα στους ενεργούς developers/contributors του project. Όλα τόσο διαφορετικά από αυτά που είχα συνηθίσει ή μάθει μέχρι τώρα και τόσο συναρπαστικά για κάποιο που θέλει να δουλεύει με οργάνωση και τυποποίηση.


Τι έμαθα - Πως επέκτεινα τις γνώσεις μου τεχνικά;
Έμαθα πως αξιοποιείται το Maven στην ολότητά του. Έμαθα νέα χαρακτηριστικά στην πράξη και πως αυτά εξυπηρετούν συγκεκριμένους σκοπούς κατά τη διάρκεια ανάπτυξης ενός (υπο)συστήματος.
Μελέτησα ένα ζωντανό παράδειγμα modular συστήματος χωρίς τη χρήση άλλων δυσκίνητων τεχνολογιών όπως το OSGI. Άλλωστε το χρησιμοποίησα για να αναπτύξω το plugin!!
Γνώρισα το νέο google-api-client και πιο συγκεκριμένα το κομμάτι που χρειάζεται για την επεξεργασία δεδομένων στο google calendar. Ένα εντελώς διαφορετικό API και μία προσέγγιση που μονο ... η Google θα μπορούσε να έχει!!
Συμμετείχα σε μία κοινότητα από developers με διαφορετικές εξειδικεύσεις και γνώσεις, οι οποίοι όμως όλοι σέβονται ο ένας τον άλλον και ανταλλάσσουν απόψεις χωρίς ενδοιασμούς και μισαλλοδοξία.

Τα συναισθήματά μου
Αρχικά ενθουσιασμός, στη συνέχεια προβληματισμός μέχρι να καταλάβω τα δύο συστήματα και τα API τους (Sonar/Google Calendar). Με την ολοκλήρωση μιας πρώτης έκδοσης, άρχισαν οι παρατηρήσεις. Απογοήτευση αλλά συνάμα μεγαλύτερη επιμονή για το τελικό αποτέλεσμα. Νέες προσπάθειες για ποιοτικότερη εργασία, προσαρμοσμένη στους προβλεπόμενους κανόνες και διαδικασίες. Η πρώτη έκδοση είναι έτοιμη. Άγχος για τη ψηφοφορία. Θα εγκριθεί το plugin από την κοινότητα ή όχι. Θα μπορέσω να νιώσω τόσο υπερήφανος ξανά όσο όταν ολκλήρωνα τις ασκήσεις στα εργαστήρια της σχολής; Ακόμα δε ξέρω... σε λίγες ημέρες όμως θα το γνωρίζω ... 

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

0 comments:

Post a Comment