Skip to content

ioniodi/sitegr

Repository files navigation

Διαδικασία συνεισφοράς σε αυτό το έργο

  • Η ιστοσελίδα αυτή βασίζεται σε τεχνολογίες jekyll-remote-theme, git-submodule τις οποίες θα πρέπει να μελετήσετε και να αποκτήσετε δεξιότητες με τα παραδείγματα που θα βρείτε εκεί. Αναλυτική τεκμηριώση για αυτήν την ιστοσελίδα θα βρείτε στο wiki, ενώ στα παρακάτω σημεία γίνεται μια σύντομη περιγραφή.

  • Για κάθε ένα από τα παραδοτέα της εργασίας (όπως τα ορίζει η σελίδα του μαθήματος σας) θα πρέπει να ανοίγετε ένα νέο θέμα και μετά την έγκριση του να δημιουργείτε ένα αίτημα ενσωμάτωσης, το οποίο θα πρέπει να αναφέρεται ρητά στο θέμα με την ένδειξη closes #IssueNo. Στο θέμα και στο αίτημα ενσωμάτωσης θα πρέπει να προτείνετε τους κατάλληλους αξιολογητές ανάμεσα στους συναδέλφους σας που δουλεύουν παρόμοια θέματα-αιτήματα πρόσφατα και με προσοχή ώστε να μην είναι πάντα ίδιοι και έχουν πολύ βάρος. Επίσης είναι δική σας ευθύνη να μιλάτε (στην πλατφόρμα εδώ) μαζί τους για διευκρυνίσεις.

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

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

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

  • Για το 1ο παραδοτέο αρκεί να κάνετε μια μικρή προσθήκη ή αλλαγή, όπως μια νέα ανακοίνωση, ένα νέο μάθημα, μια αλλαγή βαθμίδας καθηγητή, μια αλλαγή περιγραφής ή βιβλίων μαθήματος. Το 1ο παραδοτέο δεν στοχεύει στην ποσότητα του περιεχομένου που θα στείλετε, αλλά στην ποιότητα του περιεχομένου και κυρίως στην εκμάθηση του συστήματος και της διαδικασίας συνεισφοράς, έτσι ώστε να μπορέσετε να κάνετε μια δυσκολότερη-προγραμματιστική συνεισφορά από το 2ο παραδοτέο και μετά. Επομένως δεν πρέπει να στείλετε πολλές αλλαγές επειδή βρήκατε πολλά λάθη, αρκεί να στείλετε μια μικρή αλλαγή, προσθήκη, διόρθωση.

  • Για τα προχωρημένα παραδοτέα, από το 2ο και μετά, το ιδανικό είναι να ανοίξετε ένα δικό σας νέο θέμα για κάτι που αξίζει να προστεθεί, αλλά, αν δεν υπάρχουν δικές σας ιδέες, μπορείτε να δείτε (ορφανές) ιδέες στο ιστορικό, σε κάθε περίπτωση τα θέματα-αιτήματα θα πρέπει να είναι μεγαλύτερης δυσκολίας από την απλή προσθήκη περιεχομένου και να περιλαμβάνουν αλλαγές σε layouts, includes, ή/και προσθήκη νέων plug-ins, καθώς και αλλαγές στο στυλ που είναι σε ξεχωριστό αποθετήριο.

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

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

Τεκμηρίωση αποθετηρίου περιεχομένου και θέματος-στυλ

  • Το αποθετήριο του περιεχομένου εδώ συνοδεύεται από αναλυτική τεκμηρίωση την οποία θα πρέπει να μελετήσετε ανάλογα με το είδος της συνεισφοράς που κάνετε (π.χ., αρχιτεκτονική, διαδικασία, κατηγορία περιεχομένου). Τα περισσότερα αρχεία βασίζονται στην τεχνολογία markdown με front-matter σε YAML, τα οποία θεωρούνται γνωστά ή είναι εύκολο να μελετήσετε την πολύ σύντομη τεκμηρίωση τους.

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

  • Το στυλ μορφοποίησης της ιστοσελίδας βασίζεται στο minimalmistakes, το οποίο βασίζεται στο σύστημα κατασκευής στατικών ιστοσελίδων jekyll και βρίσκεται στο αποθετήριο minimal-ionio, το οποίο ενεργοποιείται με την τεχνολογία jekyll-remote-theme. Το αποθετήριο αυτό βασίζεται σε προηγούμενο έργο, όπου θα βρείτε το σχετικό ιστορικό.

  • Η συνεισφορά απλού περιεχομένου μπορεί να γίνει σε μεγάλο βαθμό με την διεπαφή της ιστοσελίδας, αφού πρώτα δημιουργήσετε στην γραμμή εντολών το all_collections submodule. Για το 2ο παραδοτέο και για την ευκολότερη χρήση της γραμμής εντολών συστήνουμε ένα λειτουργικό τύπου linux και τα εργαλεία rbenv, bundler τα οποία βοηθάνε αντίστοιχα στην διαχείριση των εκδόσεων των ruby, libraries, μέσω των ρυθμίσεων που φαίνονται στα αρχεία .ruby-version, Gemfile. Η χρήση windows χωρίς αυτά τα εργαλεία μπορεί να βγάλει σφάλματα που θα είναι δύσκολο να εντοπίσετε.

  • Το αποθετήριο εδώ περιέχει μόνο το περιεχόμενο της ιστοσελίδας, ενώ στο αποθετήριο του στυλ μορφοποίησης (με την τεχνολογία jekyll remote theme) θα βρείτε τον κώδικα που μετατρέπει τα δεδομένα σε ιστοσελίδα για τον τελικο χρήστη. Η κατανόηση της αλληλεπίδρασης των παραπάνω τεχνολογιών είναι απαραίτητη κυρίως για τα δύσκολα θέματα, στα οποία το ζητούμενο είναι η συνεισφορά και στα δύο αποθετήρια (δεδομένα-κώδικας). Η κατανόηση και η δεξιότητες χρήσης αυτών των τεχνολογιών είναι κυρίως δική σας ευθύνη γιατί σε καμία περίπτωση δεν θεωρούμε αυτές τις τεχνολογίες κάτι ιδανικό που αξίζει μελέτη-διδασκαλία, απλά είναι κάτι βολικό για να αναπτύξουμε γνώσεις και δεξιότητες σε άλλα θέματα (π.χ., συνεργασία, ανάπτυξη λογισμικού με εκδόσεις κώδικα, οπτικοποίηση με στυλ μορφοποίησης, κτλ)

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

Βαθμολόγηση

  • Για την βαθμολόγηση, ανάλογα με το μαθήμα, θα πρέπει να γίνουν δύο ή περισσότερα πετυχημένα αιτήματα ενσωμάτωσης και ο βαθμός εξαρτάται από το επίπεδο δυσκολίας των αιτημάτων ενσωμάτωσης. Για παράδειγμα, η συνεισφορά σε δεδομένα (5-6) είναι περισσότερο για ζέσταμα και κατανόηση της λειτουργίας, τα πραγματικά ζητούμενα συνήθως απαιτούν την επεξεργασία αρχείων που περιέχουν στυλ-δομή (_layouts _includes) καθώς και κώδικα liquid (7), ενώ τα πιο δύσκολα επεκτείνουν το αρχικό θέμα με νέες λειτουργίες. Για την άριστη βαθμολόγηση (8+) θα πρέπει να γίνει ανάληψη πρωτοβουλίας, αποσφαλμάτωση, συγγραφή-συντήρηση της τεκμηρίωσης, καθώς και σημαντική επέκταση της λειτουργικότητας του συστήματος.

  • Για την βαθμολόγηση του 2ου+ παραδοτέου αξιολογούμε βαθμό δυσκολίας και κυρίως την συμβατότητα με το πνεύμα του έργου. Είναι σχετικά εύκολο να γίνουν δύσκολες τεχνικές προσθήκες, οι οποίες όμως δεν ταιριάζουν με το πνεύμα του έργου και τελικά δεν γίνονται δεκτές. Για παράδειγμα, οι περισσότερες προσθήκες θα πρέπει να γίνουν στο αρχικό θέμα και όχι στο αντίγραφο του που διατηρούμε στο minimal-ionio, οπότε αυτές οι αλλαγές δεν είναι συμβατές και δεν γίνονται δεκτές ακόμη και αν είναι άρτιες τεχνικά.

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

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

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

Σχετική βιβλιογραφία

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

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


  • Η εργασία αυτή παρέχει με εισαγωγικό και εύκολο τρόπο σημαντικές γνώσεις και δεξιότητες στην συνεργασία πολλών ατόμων πάνω σε πηγαίο κώδικα για τον μετασχηματισμό μεταξύ διαφορετικών μορφών πληροφορίας. Για τον σκοπό αυτό χρησιμοποιούμε μια ανεπίσημη εκδοχή της ιστοσελίδας του τμήματος, η οποία είναι οικεία σε όλους και ταυτόχρονα έχει πολύ μικρές απαιτήσεις σε προγραμματισμό, αφού ο σκοπός της εργασίας σχετίζεται περισσότερο με την οπτικοποίηση της πληροφορίας, την συνεργασία, και την τεχνολογία λογισμικού. Αρχικά γίνεται κατανόηση του μηχανισμού των submodules στα οποία βρίσκονται τα δεδομένα. Στην συνέχεια, με το πρώτο παραδοτέο γίνεται κατανόηση του μηχανισμού συνεργασίας πολλών χρηστών χωρίς συγκρούσεις μέσω των issues pull requests.