Γιατί να συνεισφέρετε στον ανοιχτό κώδικα;
Η συνεισφορά σε λογισμικό ανοικτού κώδικα μπορεί να είναι ένας ικανοποιητικός τρόπος για να μάθετε, να διδάξετε και να αποκτήσετε εμπειρία σε σχεδόν οποιαδήποτε δεξιότητα μπορείτε να φανταστείτε.
Γιατί οι άνθρωποι συνεισφέρουν στον ανοικτό κώδικα; Πολλοί λόγοι!
Βελτιώνουν το λογισμικό στο οποίο βασίζονται
Πολλοί συνεισφέροντες σε λογισμικό ανοικτού κώδικα ξεκινούν ως χρήστες του λογισμικού στο οποίο συνεισφέρουν. Όταν βρίσκετε ένα σφάλμα σε ένα λογισμικό ανοικτού κώδικα που χρησιμοποιείτε, ίσως θελήσετε να κοιτάξετε τον πηγαίο κώδικα για να δείτε αν μπορείτε να το διορθώσετε μόνοι σας. Αν είναι έτσι, τότε η συνεισφορά του διορθωτικού είναι ο καλύτερος τρόπος για να διασφαλίσετε ότι οι φίλοι σας (και εσείς οι ίδιοι όταν κάνετε ενημέρωση στην επόμενη έκδοση) θα μπορέσουν να επωφεληθούν από αυτό.
Βελτιώστε τις υπάρχουσες δεξιότητες
Είτε πρόκειται για προγραμματισμό, είτε για σχεδιασμό διεπαφής χρήστη, είτε για γραφιστική, είτε για συγγραφή, είτε για οργάνωση, αν ψάχνετε για εξάσκηση, υπάρχει μια εργασία για εσάς σε ένα έργο ανοιχτού κώδικα.
Γνωρίστε ανθρώπους που ενδιαφέρονται για παρόμοια πράγματα
Τα έργα ανοιχτού κώδικα με θερμές, φιλόξενες κοινότητες κρατούν τους ανθρώπους να επιστρέφουν για χρόνια. Πολλοί άνθρωποι δημιουργούν φιλίες ζωής μέσα από τη συμμετοχή τους στον ανοιχτό κώδικα, είτε πρόκειται για συναντήσεις σε συνέδρια είτε για διαδικτυακές συζητήσεις αργά το βράδυ για μπουρίτος.
Βρείτε μέντορες και διδάξτε άλλους
Η συνεργασία με άλλους σε ένα κοινό έργο σημαίνει ότι θα πρέπει να εξηγείτε πώς κάνετε τα πράγματα, καθώς και να ζητάτε βοήθεια από άλλους ανθρώπους. Οι πράξεις μάθησης και διδασκαλίας μπορεί να είναι μια ικανοποιητική δραστηριότητα για όλους τους εμπλεκόμενους.
Δημιουργήστε δημόσια αντικείμενα που σας βοηθούν να αναπτύξετε τη φήμη σας (και την καριέρα σας)
Εξ ορισμού, όλη η εργασία σας με ανοιχτό κώδικα είναι δημόσια, πράγμα που σημαίνει ότι έχετε δωρεάν παραδείγματα για να τα πάρετε οπουδήποτε ως επίδειξη του τι μπορείτε να κάνετε.
Μάθετε δεξιότητες ανθρώπινου δυναμικού
Ο ανοικτός κώδικας προσφέρει ευκαιρίες για να εξασκήσετε ηγετικές και διοικητικές δεξιότητες, όπως η επίλυση συγκρούσεων, η οργάνωση ομάδων ανθρώπων και η ιεράρχηση προτεραιοτήτων εργασίας.
Είναι ενδυναμωτικό να μπορείς να κάνεις αλλαγές, ακόμη και μικρές
Δεν χρειάζεται να γίνετε ισόβιος συνεργάτης για να απολαύσετε τη συμμετοχή σας στον ανοικτό κώδικα. Έχετε δει ποτέ ένα τυπογραφικό λάθος σε έναν ιστότοπο και ευχηθήκατε κάποιος να το διορθώσει; Σε ένα έργο ανοιχτού κώδικα, μπορείτε να κάνετε ακριβώς αυτό. Ο ανοικτός κώδικας βοηθά τους ανθρώπους να αισθάνονται ότι έχουν εξουσία στη ζωή τους και στο πώς βιώνουν τον κόσμο, και αυτό από μόνο του είναι ευχάριστο.
Τι σημαίνει να συνεισφέρετε
Αν είστε νέος συνεισφέρων σε έργα ανοικτού κώδικα, η διαδικασία μπορεί να είναι εκφοβιστική. Πώς μπορείτε να βρείτε το κατάλληλο έργο; Τι γίνεται αν δεν ξέρετε να προγραμματίζετε; Τι γίνεται αν κάτι πάει στραβά;
Μην ανησυχείτε! Υπάρχουν διάφοροι τρόποι για να συμμετάσχετε σε ένα έργο ανοικτού κώδικα και μερικές συμβουλές θα σας βοηθήσουν να αξιοποιήσετε στο έπακρο την εμπειρία σας.
Δεν χρειάζεται να συνεισφέρετε κώδικα
Μια κοινή παρανόηση σχετικά με τη συνεισφορά σε έργα ανοικτού κώδικα είναι ότι πρέπει να συνεισφέρετε κώδικα. Στην πραγματικότητα, είναι συχνά τα άλλα μέρη ενός έργου που παραμελούνται ή παραβλέπονται περισσότερο. Θα κάνετε στο έργο μια τεράστια χάρη προσφέροντας να συνεισφέρετε με τέτοιου είδους συνεισφορές!
Σας αρέσει να προγραμματίζετε εκδηλώσεις;
- Οργανώστε εργαστήρια ή συναντήσεις για το έργο, όπως έκανε ο @fzamperin για το NodeSchool
- Διοργανώνετε το συνέδριο του έργου (αν έχουν)
- Βοηθήστε τα μέλη της κοινότητας να βρουν τα κατάλληλα συνέδρια και να υποβάλουν προτάσεις για ομιλία
Σας αρέσει να σχεδιάζετε;
- Να αναδιαρθρώνετε τις διατάξεις για να βελτιώσετε τη χρηστικότητα του έργου
- Διεξαγωγή έρευνας χρηστών για την αναδιοργάνωση και βελτίωση της πλοήγησης ή των μενού του έργου, όπως προτείνει το Drupal
- Να συντάσσετε έναν οδηγό στυλ για να βοηθήσετε το έργο να έχει έναν συνεπή οπτικό σχεδιασμό
- Δημιουργήστε τέχνη για μπλουζάκια ή ένα νέο λογότυπο, όπως έκαναν οι συντελεστές του hapi.js
Σας αρέσει να γράφετε;
- Γράφετε και βελτιώνετε την τεκμηρίωση του έργου
- Επιμεληθείτε έναν φάκελο με παραδείγματα που δείχνουν πώς χρησιμοποιείται το έργο
- Ξεκινήστε ένα ενημερωτικό δελτίο για το έργο, ή επιμεληθείτε τα σημαντικότερα σημεία από τη λίστα αλληλογραφίας
- Γράφετε εκπαιδευτικά προγράμματα για το έργο, όπως έκαναν οι συντελεστές του PyPA
- Γράψτε μια μετάφραση για την τεκμηρίωση του έργου
Σας αρέσει η οργάνωση;
- Συνδέστε τα διπλά θέματα και προτείνετε νέες ετικέτες θεμάτων, για να διατηρήσετε τα πράγματα οργανωμένα
- Ψάξτε τα ανοιχτά θέματα και προτείνετε το κλείσιμο των παλιών, όπως έκανε ο @nzakas για το ESLint
- Να κάνετε διευκρινιστικές ερωτήσεις σε πρόσφατα ανοιχτά θέματα για να προχωρήσει η συζήτηση.
Σας αρέσει να γράφετε κώδικα;
- Βρείτε ένα ανοιχτό θέμα για να ασχοληθείτε, όπως έκανε ο @dianjin για το Leaflet
- Ρωτήστε αν μπορείτε να βοηθήσετε στη συγγραφή ενός νέου χαρακτηριστικού.
- Αυτοματοποιήστε την εγκατάσταση του έργου
- Βελτιώστε τα εργαλεία και τις δοκιμές
Σας αρέσει να βοηθάτε τους ανθρώπους;
- Απαντήστε σε ερωτήσεις σχετικά με το έργο π.χ. στο Stack Overflow (όπως αυτό το παράδειγμα Postgres) ή στο Reddit.
- Απαντάτε σε ερωτήσεις για ανθρώπους σε ανοιχτά θέματα
- Βοηθήστε να συντονίσετε τους πίνακες συζητήσεων ή τα κανάλια συζήτησης
Σας αρέσει να βοηθάτε άλλους να προγραμματίζουν;
- Αναθεωρείτε τον κώδικα σε υποβολές άλλων ανθρώπων
- Γράφετε σεμινάρια για το πώς μπορεί να χρησιμοποιηθεί ένα έργο
- Προσφερθείτε να γίνετε μέντορας ενός άλλου συνεισφέροντα, όπως έκανε ο @ereichert για τον @bronzdoc στο Rust
Δεν χρειάζεται να εργάζεστε μόνο σε έργα λογισμικού!
Αν και ο όρος “ανοικτός κώδικας” αναφέρεται συχνά στο λογισμικό, μπορείτε να συνεργαστείτε σχεδόν σε οτιδήποτε. * Απαντήστε σε ερωτήσεις σχετικά με το έργο π.χ. στο Stack Overflow (όπως αυτό το παράδειγμα Postgres) ή στο Reddit.
Για παράδειγμα:
- @sindresorhus επιμελείται μια λίστα με “φοβερές” λίστες
- Ο @h5bp διατηρεί μια λίστα με πιθανές ερωτήσεις συνέντευξης για υποψήφιους front-end προγραμματιστές
- Ο @stuartlynn και η @nicole-a-tesla δημιούργησαν μια συλλογή με διασκεδαστικά στοιχεία για τους πιθήκους
Ακόμα και αν είστε προγραμματιστής λογισμικού, η εργασία σε ένα έργο τεκμηρίωσης μπορεί να σας βοηθήσει να ξεκινήσετε στον ανοιχτό κώδικα. Είναι συχνά λιγότερο τρομακτικό να εργάζεστε σε έργα που δεν περιλαμβάνουν κώδικα, και η διαδικασία της συνεργασίας θα ενισχύσει την αυτοπεποίθηση και την εμπειρία σας.
Προσανατολισμός σε ένα νέο έργο
Για οτιδήποτε περισσότερο από μια διόρθωση τυπογραφικού λάθους, η συνεισφορά στον ανοιχτό κώδικα είναι σαν να πηγαίνεις σε μια ομάδα αγνώστων σε ένα πάρτι. Αν αρχίσετε να μιλάτε για λάμα, ενώ αυτοί ήταν βαθιά χωμένοι σε μια συζήτηση για χρυσόψαρα, μάλλον θα σας κοιτάξουν λίγο περίεργα.
Πριν πέσετε στα τυφλά με τις δικές σας προτάσεις, ξεκινήστε μαθαίνοντας πώς να διαβάζετε το δωμάτιο. Με αυτόν τον τρόπο αυξάνονται οι πιθανότητες να προσέξουν και να ακούσουν τις ιδέες σας.
Ανατομία ενός έργου ανοικτού κώδικα
Κάθε κοινότητα ανοικτού κώδικα είναι διαφορετική.
Το να περάσετε χρόνια σε ένα έργο ανοιχτού κώδικα σημαίνει ότι έχετε γνωρίσει ένα έργο ανοιχτού κώδικα. Αν μετακινηθείτε σε ένα άλλο έργο, μπορεί να διαπιστώσετε ότι το λεξιλόγιο, οι κανόνες και οι τρόποι επικοινωνίας είναι εντελώς διαφορετικοί.
Τούτου λεχθέντος, πολλά έργα ανοικτού κώδικα ακολουθούν μια παρόμοια οργανωτική δομή. Η κατανόηση των διαφορετικών ρόλων της κοινότητας και της συνολικής διαδικασίας θα σας βοηθήσει να προσανατολιστείτε γρήγορα σε οποιοδήποτε νέο έργο.
Ένα τυπικό έργο ανοικτού κώδικα έχει τους ακόλουθους τύπους ανθρώπων:
- Συγγραφέας: Το άτομο/τα άτομα ή ο οργανισμός που δημιούργησε το έργο
- Δικαιούχος: Το άτομο/α που έχει/ουν τη διοικητική κυριότητα του οργανισμού ή του αποθετηρίου (δεν είναι πάντα το ίδιο με τον αρχικό συγγραφέα)
- Διαχειριστές: Συντελεστές που είναι υπεύθυνοι για την προώθηση του οράματος και τη διαχείριση των οργανωτικών πτυχών του έργου (μπορεί επίσης να είναι συγγραφείς ή ιδιοκτήτες του έργου).
- Συντελεστές: Όλοι όσοι έχουν συνεισφέρει κάτι στο έργο
- Μέλη της κοινότητας: Άνθρωποι που χρησιμοποιούν το έργο. Μπορεί να συμμετέχουν ενεργά σε συζητήσεις ή να εκφράζουν τη γνώμη τους για την κατεύθυνση του έργου
Τα μεγαλύτερα έργα μπορεί επίσης να έχουν υποεπιτροπές ή ομάδες εργασίας που επικεντρώνονται σε διαφορετικά καθήκοντα, όπως η δημιουργία εργαλείων, η ταξινόμηση, ο συντονισμός της κοινότητας και η διοργάνωση εκδηλώσεων. Αναζητήστε στον ιστότοπο ενός έργου μια σελίδα “ομάδας” ή στο αποθετήριο για την τεκμηρίωση διακυβέρνησης, για να βρείτε αυτές τις πληροφορίες.
Ένα έργο διαθέτει επίσης τεκμηρίωση. Αυτά τα αρχεία συνήθως παρατίθενται στο κορυφαίο επίπεδο ενός αποθετηρίου.
- LICENSE: Εξ ορισμού, κάθε έργο ανοικτού κώδικα πρέπει να έχει μια άδεια ανοικτού κώδικα. Εάν το έργο δεν έχει άδεια χρήσης, δεν είναι ανοικτού κώδικα.
- README: Το README είναι το εγχειρίδιο οδηγιών που καλωσορίζει τα νέα μέλη της κοινότητας στο έργο. Εξηγεί γιατί το έργο είναι χρήσιμο και πώς να ξεκινήσετε.
- CONTRIBUTING: Ενώ τα README βοηθούν τους ανθρώπους να χρησιμοποιήσουν το έργο, τα έγγραφα συνεισφοράς βοηθούν τους ανθρώπους να εισφέρουν στο έργο. Εξηγεί τι είδους συνεισφορές χρειάζονται και πώς λειτουργεί η διαδικασία. Αν και δεν έχει κάθε έργο ένα αρχείο CONTRIBUTING, η παρουσία του σηματοδοτεί ότι το έργο είναι φιλόξενο για συνεισφορά.
- CODE_OF_CONDUCT: Ο κώδικας δεοντολογίας θέτει βασικούς κανόνες για τη συμπεριφορά των συμμετεχόντων που σχετίζονται και βοηθά στη διευκόλυνση ενός φιλικού, φιλόξενου περιβάλλοντος. Αν και δεν έχει κάθε έργο ένα αρχείο CODE_OF_CONDUCT, η παρουσία του σηματοδοτεί ότι πρόκειται για ένα φιλόξενο έργο στο οποίο μπορείτε να συνεισφέρετε.
- Άλλη τεκμηρίωση: Ενδέχεται να υπάρχει πρόσθετη τεκμηρίωση, όπως σεμινάρια, οδηγίες χρήσης ή πολιτικές διακυβέρνησης, ειδικά σε μεγαλύτερα έργα.
Τέλος, τα έργα ανοικτού κώδικα χρησιμοποιούν τα ακόλουθα εργαλεία για την οργάνωση της συζήτησης. Η ανάγνωση των αρχείων θα σας δώσει μια καλή εικόνα για το πώς σκέφτεται και λειτουργεί η κοινότητα.
- Issue tracker: Όπου οι άνθρωποι συζητούν θέματα που σχετίζονται με το έργο.
- Pull requests: Όπου οι άνθρωποι συζητούν και αναθεωρούν τις αλλαγές που βρίσκονται σε εξέλιξη.
- Φόρουμ συζητήσεων ή λίστες αλληλογραφίας: Ορισμένα έργα μπορεί να χρησιμοποιούν αυτά τα κανάλια για θέματα συζήτησης (για παράδειγμα, “Πώς μπορώ να…“ ή “Τι πιστεύετε για…“ αντί για αναφορές σφαλμάτων ή αιτήσεις για χαρακτηριστικά). Άλλα χρησιμοποιούν τον ανιχνευτή ζητημάτων για όλες τις συζητήσεις.
- Σύγχρονο κανάλι συνομιλίας: Ορισμένα έργα χρησιμοποιούν κανάλια συνομιλίας (όπως το Slack ή το IRC) για περιστασιακή συζήτηση, συνεργασία και γρήγορες ανταλλαγές.
Βρίσκοντας ένα έργο για να συνεισφέρετε
Τώρα που έχετε καταλάβει πώς λειτουργούν τα έργα ανοικτού κώδικα, ήρθε η ώρα να βρείτε ένα έργο για να συνεισφέρετε!
Αν δεν έχετε συνεισφέρει ποτέ στο παρελθόν σε έργα ανοικτού κώδικα, ακολουθήστε τη συμβουλή του προέδρου των ΗΠΑ Τζον Φ. Κένεντι, ο οποίος είπε κάποτε: _“Μη ρωτάτε τι μπορεί να κάνει η χώρα σας για εσάς - ρωτήστε τι μπορείτε να κάνετε εσείς για τη χώρα σας”.
Η συνεισφορά στον ανοικτό κώδικα γίνεται σε όλα τα επίπεδα, σε όλα τα έργα. Δεν χρειάζεται να σκεφτείτε υπερβολικά ποια ακριβώς θα είναι η πρώτη σας συνεισφορά ή πώς θα φαίνεται.
Αντ’ αυτού, ξεκινήστε σκεπτόμενοι τα έργα που ήδη χρησιμοποιείτε ή θέλετε να χρησιμοποιήσετε. Τα έργα στα οποία θα συνεισφέρετε ενεργά είναι αυτά στα οποία θα βρίσκεστε να επιστρέφετε.
Μέσα σε αυτά τα έργα, όποτε πιάνετε τον εαυτό σας να σκέφτεται ότι κάτι θα μπορούσε να είναι καλύτερο ή διαφορετικό, ακολουθήστε το ένστικτό σας.
Ο ανοιχτός κώδικας δεν είναι μια αποκλειστική λέσχη- φτιάχνεται από ανθρώπους σαν εσάς. Ο “ανοικτός κώδικας” είναι απλώς ένας φανταχτερός όρος για να αντιμετωπίζεις τα προβλήματα του κόσμου ως επιλύσιμα.
Μπορεί να σκανάρετε ένα README και να βρείτε έναν σπασμένο σύνδεσμο ή ένα τυπογραφικό λάθος. Ή είστε νέος χρήστης και παρατηρήσατε ότι κάτι είναι σπασμένο ή ένα θέμα που πιστεύετε ότι θα έπρεπε πραγματικά να υπάρχει στην τεκμηρίωση. Αντί να το αγνοήσετε και να προχωρήσετε ή να ζητήσετε από κάποιον άλλο να το διορθώσει, δείτε αν μπορείτε να βοηθήσετε με τη συμμετοχή σας. Αυτό είναι το νόημα του ανοιχτού κώδικα!
Το 28% των περιστασιακών συνεισφορών στον ανοικτό κώδικα είναι τεκμηρίωση, όπως διόρθωση τυπογραφικών λαθών, αναδιαμόρφωση ή συγγραφή μετάφρασης.
Αν ψάχνετε για υπάρχοντα θέματα που μπορείτε να διορθώσετε, κάθε έργο ανοιχτού κώδικα έχει μια σελίδα /contribute
που επισημαίνει θέματα φιλικά προς τους αρχάριους με τα οποία μπορείτε να ξεκινήσετε. Πλοηγηθείτε στην κεντρική σελίδα του αποθετηρίου στο GitHub και προσθέστε /contribute
στο τέλος της διεύθυνσης URL (για παράδειγμα https://github.com/facebook/react/contribute
).
Μπορείτε επίσης να χρησιμοποιήσετε έναν από τους παρακάτω πόρους για να σας βοηθήσει να ανακαλύψετε και να συνεισφέρετε σε νέα έργα:
- GitHub Explore
- Open Source Friday
- First Timers Only
- CodeTriage
- 24 Pull Requests
- Up For Grabs
- First Contributions
- SourceSort
Μια λίστα ελέγχου πριν συνεισφέρετε
Όταν έχετε βρει ένα έργο στο οποίο θα θέλατε να συνεισφέρετε, κάντε ένα γρήγορο έλεγχο για να βεβαιωθείτε ότι το έργο είναι κατάλληλο για να δέχεται συνεισφορές. Διαφορετικά, η σκληρή δουλειά σας μπορεί να μην βρει ποτέ ανταπόκριση.
Ακολουθεί ένας εύχρηστος κατάλογος ελέγχου για να αξιολογήσετε αν ένα έργο είναι κατάλληλο για νέους συνεισφέροντες.
Meets the definition of open source
Το έργο δέχεται ενεργά συνεισφορές
Κοιτάξτε τη δραστηριότητα των δεσμεύσεων στον κύριο κλάδο. Στο GitHub, μπορείτε να δείτε αυτές τις πληροφορίες στην αρχική σελίδα ενός αποθετηρίου.
Στη συνέχεια, εξετάστε τα ζητήματα του πρότζεκτ.
Τώρα κάντε το ίδιο για τις αιτήσεις έλξης του έργου.
Το έργο είναι φιλόξενο
Ένα έργο που είναι φιλικό και φιλόξενο σηματοδοτεί ότι θα είναι δεκτικό σε νέους συνεισφέροντες.
Πώς να υποβάλετε μια συνεισφορά
Βρήκατε ένα έργο που σας αρέσει και είστε έτοιμοι να συνεισφέρετε. Επιτέλους! Εδώ θα δείτε πώς θα στείλετε τη συνεισφορά σας με τον σωστό τρόπο.
Αποτελεσματική επικοινωνία
Είτε συνεισφέρετε μια φορά είτε προσπαθείτε να ενταχθείτε σε μια κοινότητα, η συνεργασία με άλλους είναι μια από τις σημαντικότερες δεξιότητες που θα αναπτύξετε στον ανοιχτό κώδικα.
Προτού ανοίξετε ένα θέμα ή ένα pull request ή κάνετε μια ερώτηση στη συνομιλία, έχετε υπόψη σας αυτά τα σημεία για να βοηθήσετε τις ιδέες σας να περάσουν αποτελεσματικά.
Δώστε πλαίσιο. Βοηθήστε τους άλλους να ενημερωθούν γρήγορα. Αν αντιμετωπίζετε ένα σφάλμα, εξηγήστε τι προσπαθείτε να κάνετε και πώς να το αναπαράγετε. Αν προτείνετε μια νέα ιδέα, εξηγήστε γιατί πιστεύετε ότι θα ήταν χρήσιμη για το έργο (όχι μόνο για εσάς!).
😇 “Το Χ δεν συμβαίνει όταν κάνω το Υ”
😢 “Το X είναι χαλασμένο! Σε παρακαλώ, διόρθωσέ το.”
Κάντε την έρευνα σας εκ των προτέρων. Δεν πειράζει να μην ξέρετε πράγματα, αλλά δείξτε ότι προσπαθήσατε. Πριν ζητήσετε βοήθεια, φροντίστε να ελέγξετε το README ενός έργου, την τεκμηρίωση, τα θέματα (ανοικτά ή κλειστά), τη λίστα αλληλογραφίας και να ψάξετε στο διαδίκτυο για μια απάντηση. Οι άνθρωποι θα το εκτιμήσουν όταν δείχνετε ότι προσπαθείτε να μάθετε.
😇 “Δεν είμαι σίγουρος πώς να υλοποιήσω το X. Έλεγξα τα έγγραφα βοήθειας και δεν βρήκα καμία αναφορά.”
😢 “Πώς μπορώ να κάνω το X;”
Κρατήστε τα αιτήματα σύντομα και άμεσα. Όπως και με την αποστολή ενός email, κάθε συνεισφορά, όσο απλή ή χρήσιμη κι αν είναι, απαιτεί την εξέταση κάποιου άλλου. Πολλά έργα έχουν περισσότερα εισερχόμενα αιτήματα από άτομα που είναι διαθέσιμα να βοηθήσουν. Να είστε συνοπτικοί. Θα αυξήσετε την πιθανότητα να μπορέσει κάποιος να σας βοηθήσει.
😇 “Θα ήθελα να γράψω ένα tutorial για API.”
😢 “Οδηγούσα στον αυτοκινητόδρομο τις προάλλες και σταμάτησα για βενζίνη, και τότε μου ήρθε αυτή η καταπληκτική ιδέα για κάτι που πρέπει να κάνουμε, αλλά πριν σας το εξηγήσω, επιτρέψτε μου να σας δείξω…“
Κρατήστε όλη την επικοινωνία δημόσια. Αν και είναι δελεαστικό, μην επικοινωνείτε με τους συντηρητές ιδιωτικά, εκτός αν πρέπει να μοιραστείτε ευαίσθητες πληροφορίες (όπως ένα ζήτημα ασφάλειας ή μια σοβαρή παραβίαση συμπεριφοράς). Όταν κρατάτε τη συζήτηση δημόσια, περισσότεροι άνθρωποι μπορούν να μάθουν και να επωφεληθούν από την ανταλλαγή σας. Οι συζητήσεις μπορούν να είναι, από μόνες τους, συνεισφορές.
😇 (ως σχόλιο) “@-maintainer Γεια σας! Πώς θα πρέπει να προχωρήσουμε σε αυτή τη δημοσιότητα;”
😢 (ως email) “Γεια σου, συγγνώμη που σε ενοχλώ μέσω email, αλλά αναρωτιόμουν αν είχες την ευκαιρία να αναθεωρήσεις το PR μου”
Δεν πειράζει να κάνετε ερωτήσεις (αλλά να είστε υπομονετικοί!). Όλοι ήταν νέοι στο έργο κάποια στιγμή, και ακόμη και οι έμπειροι συνεισφέροντες πρέπει να ενημερωθούν όταν βλέπουν ένα νέο έργο. Με την ίδια λογική, ακόμη και οι μακροχρόνιοι συντηρητές δεν είναι πάντα εξοικειωμένοι με κάθε μέρος του έργου. Δείξτε τους την ίδια υπομονή που θα θέλατε να δείξουν και αυτοί σε εσάς.
😇 “Ευχαριστώ που εξετάσατε αυτό το σφάλμα. Ακολούθησα τις προτάσεις σας. Εδώ είναι η έξοδος.”
😢 “Γιατί δεν μπορείτε να διορθώσετε το πρόβλημά μου; Αυτό δεν είναι το έργο σας;”
Σεβαστείτε τις αποφάσεις της κοινότητας. Οι ιδέες σας μπορεί να διαφέρουν από τις προτεραιότητες ή το όραμα της κοινότητας. Μπορεί να προσφέρουν ανατροφοδότηση ή να αποφασίσουν να μην ακολουθήσουν την ιδέα σας. Ενώ θα πρέπει να συζητάτε και να αναζητάτε συμβιβασμούς, οι συντηρητές πρέπει να ζουν με την απόφασή σας περισσότερο από ό,τι εσείς. Αν διαφωνείτε με την κατεύθυνσή τους, μπορείτε πάντα να δουλέψετε πάνω στο δικό σας fork ή να ξεκινήσετε το δικό σας έργο.
😇 “Απογοητεύομαι που δεν μπορείτε να υποστηρίξετε την περίπτωση χρήσης μου, αλλά όπως εξηγήσατε επηρεάζει μόνο ένα μικρό μέρος των χρηστών, καταλαβαίνω γιατί. Ευχαριστώ που με ακούσατε.”
😢 “Γιατί δεν υποστηρίζετε την περίπτωση χρήσης μου; Αυτό είναι απαράδεκτο!”
Πάνω απ’ όλα, κρατήστε το κομψό. Ο ανοικτός κώδικας αποτελείται από συνεργάτες από όλο τον κόσμο. Τα συμφραζόμενα χάνονται μεταξύ γλωσσών, πολιτισμών, γεωγραφικών περιοχών και ζωνών ώρας. Επιπλέον, η γραπτή επικοινωνία δυσκολεύει τη μετάδοση του τόνου ή της διάθεσης. Υποθέστε καλές προθέσεις σε αυτές τις συζητήσεις. Δεν πειράζει να απορρίψετε ευγενικά μια ιδέα, να ζητήσετε περισσότερα συμφραζόμενα ή να διευκρινίσετε περαιτέρω τη θέση σας. Απλά προσπαθήστε να αφήσετε το διαδίκτυο σε ένα καλύτερο μέρος από αυτό που βρήκατε.
Συγκέντρωση περιεχομένου
Πριν κάνετε οτιδήποτε, κάντε έναν γρήγορο έλεγχο για να βεβαιωθείτε ότι η ιδέα σας δεν έχει συζητηθεί αλλού. Ξεφυλλίστε το README του έργου, τα θέματα (ανοικτά και κλειστά), τη λίστα αλληλογραφίας και το Stack Overflow. Δεν χρειάζεται να ξοδέψετε ώρες για να ψάξετε τα πάντα, αλλά μια γρήγορη αναζήτηση για μερικούς όρους-κλειδιά θα σας βοηθήσει πολύ.
Αν δεν μπορείτε να βρείτε την ιδέα σας αλλού, είστε έτοιμοι να κάνετε μια κίνηση. Αν το έργο βρίσκεται στο GitHub, πιθανότατα θα επικοινωνήσετε ανοίγοντας ένα ζήτημα ή ένα pull request:
- Τα θέματα είναι σαν να ξεκινάτε μια συζήτηση ή μια συζήτηση
- Αιτήματα μετακίνησης είναι για την έναρξη της εργασίας πάνω σε μια λύση
- Για ελαφριά επικοινωνία, όπως μια διευκρινιστική ερώτηση ή μια ερώτηση για το πώς να κάνετε, δοκιμάστε να ρωτήσετε στο Stack Overflow, στο IRC, στο Slack ή σε άλλα κανάλια συνομιλίας, αν το έργο διαθέτει τέτοιο κανάλι.
Πριν ανοίξετε ένα θέμα ή ένα αίτημα έλξης, ελέγξτε τα έγγραφα συνεισφοράς του έργου (συνήθως ένα αρχείο που ονομάζεται ΣΥΝΔΡΟΜΗ ή στο README), για να δείτε αν πρέπει να συμπεριλάβετε κάτι συγκεκριμένο. Για παράδειγμα, μπορεί να σας ζητούν να ακολουθήσετε ένα πρότυπο ή να απαιτείται η χρήση δοκιμών.
Αν θέλετε να κάνετε μια ουσιαστική συνεισφορά, ανοίξτε ένα θέμα για να ρωτήσετε πριν εργαστείτε πάνω σε αυτό. Είναι χρήσιμο να παρακολουθείτε το έργο για λίγο (στο GitHub, μπορείτε να κάνετε κλικ στο “Watch” για να ενημερώνεστε για όλες τις συζητήσεις), και να γνωρίσετε τα μέλη της κοινότητας, πριν κάνετε εργασία που μπορεί να μην γίνει αποδεκτή.
Άνοιγμα ενός θέματος
Συνήθως πρέπει να ανοίγετε ένα θέμα στις ακόλουθες περιπτώσεις:
- Αναφέρετε ένα σφάλμα που δεν μπορείτε να λύσετε μόνοι σας
- Συζητήστε ένα θέμα ή μια ιδέα υψηλού επιπέδου (για παράδειγμα, κοινότητα, όραμα ή πολιτικές)
- Προτείνετε ένα νέο χαρακτηριστικό ή μια άλλη ιδέα έργου
Συμβουλές για την επικοινωνία σχετικά με θέματα:
- Αν δείτε ένα ανοιχτό ζήτημα που θέλετε να αντιμετωπίσετε, σχολιάστε το ζήτημα για να ενημερώσετε τους άλλους ότι ασχολείστε με αυτό. Με αυτόν τον τρόπο, οι άνθρωποι είναι λιγότερο πιθανό να αντιγράψουν τη δουλειά σας.
- Αν ένα θέμα έχει ανοίξει πριν από καιρό, είναι πιθανό να αντιμετωπίζεται κάπου αλλού ή να έχει ήδη επιλυθεί, οπότε σχολιάστε για να ζητήσετε επιβεβαίωση πριν ξεκινήσετε την εργασία.
- Αν ανοίξατε ένα θέμα, αλλά βρήκατε την απάντηση αργότερα μόνοι σας, σχολιάστε το θέμα για να ενημερώσετε τους άλλους και, στη συνέχεια, κλείστε το θέμα. Ακόμα και η τεκμηρίωση αυτού του αποτελέσματος αποτελεί συμβολή στο έργο.
Άνοιγμα ενός αιτήματος αλλαγής κειμένου
Συνήθως θα πρέπει να ανοίγετε ένα pull request στις ακόλουθες περιπτώσεις:
- Υποβολή ασήμαντων διορθώσεων (για παράδειγμα, ένα τυπογραφικό λάθος, ένας σπασμένος σύνδεσμος ή ένα προφανές σφάλμα)
- Ξεκινήστε να εργάζεστε σε μια συνεισφορά που σας έχει ήδη ζητηθεί, ή που έχετε ήδη συζητήσει, σε ένα θέμα
Ένα pull request δεν χρειάζεται να αντιπροσωπεύει ολοκληρωμένη εργασία. Συνήθως είναι καλύτερο να ανοίξετε ένα pull request νωρίς, ώστε οι άλλοι να μπορούν να παρακολουθήσουν ή να δώσουν ανατροφοδότηση σχετικά με την πρόοδό σας. Απλά σημειώστε το ως “WIP” (Work in Progress) στη γραμμή θέματος. Μπορείτε πάντα να προσθέσετε περισσότερα commits αργότερα.
Αν το έργο βρίσκεται στο GitHub, δείτε πώς μπορείτε να υποβάλετε ένα pull request:
- Κάντε fork το πρότζεκτ και κλωνοποιήστε το τοπικά. Συνδέστε το τοπικό σας με το αρχικό “upstream” αποθετήριο προσθέτοντάς το ως απομακρυσμένο. Τραβήξτε συχνά αλλαγές από το “upstream” ώστε να παραμένετε ενημερωμένοι, ώστε όταν υποβάλετε το pull request σας, οι συγκρούσεις συγχώνευσης να είναι λιγότερο πιθανές. (Δείτε πιο λεπτομερείς οδηγίες εδώ.)
- Δημιουργήστε έναν κλάδο για τις επεξεργασίες σας.
- Αναφέρετε οποιαδήποτε σχετικά θέματα ή υποστηρικτική τεκμηρίωση στο PR σας (για παράδειγμα, “Κλείνει το #37.”)
- Περιλάβετε στιγμιότυπα οθόνης του πριν και του μετά αν οι αλλαγές σας περιλαμβάνουν διαφορές στην HTML/CSS. Σύρετε και αφήστε τις εικόνες στο σώμα του αιτήματος έλξης σας.
- Δοκιμάστε τις αλλαγές σας! Ελέγξτε τις αλλαγές σας με τυχόν υπάρχουσες δοκιμές, αν υπάρχουν, και δημιουργήστε νέες, όταν χρειάζεται. Είτε υπάρχουν δοκιμές είτε όχι, βεβαιωθείτε ότι οι αλλαγές σας δεν καταστρέφουν το υπάρχον έργο.
- Συνεισφέρετε στο ύφος του έργου στο μέτρο των δυνατοτήτων σας. Αυτό μπορεί να σημαίνει ότι χρησιμοποιείτε εσοχές, άνω και κάτω τελεία ή σχόλια διαφορετικά από ό,τι θα κάνατε στο δικό σας αποθετήριο, αλλά διευκολύνει τον συντηρητή να συγχωνεύσει, άλλους να καταλάβουν και να συντηρήσουν στο μέλλον.
Αν αυτό είναι το πρώτο σας pull request, ελέγξτε το Make a Pull Request, το οποίο δημιούργησε ο @kentcdodds ως ένα βίντεο με οδηγίες. Μπορείτε επίσης να εξασκηθείτε στο να κάνετε ένα pull request στο αποθετήριο First Contributions, που δημιουργήθηκε από τον @Roshanjossey.
Τι συμβαίνει μετά την υποβολή μιας συνεισφοράς
Τα καταφέρατε! Συγχαρητήρια που γίνατε συνεργάτης ανοιχτού κώδικα. Ελπίζουμε να είναι η πρώτη από τις πολλές.
Αφού υποβάλετε μια συνεισφορά, θα συμβεί ένα από τα ακόλουθα:
😭 Δεν λαμβάνετε απάντηση.
Ελπίζουμε ότι ελέγξατε το έργο για σημάδια δραστηριότητας πριν κάνετε μια συνεισφορά. Ακόμα και σε ένα ενεργό έργο, ωστόσο, είναι πιθανό η συνεισφορά σας να μην λάβει απάντηση.
Αν δεν έχετε λάβει απάντηση για πάνω από μια εβδομάδα, είναι δίκαιο να απαντήσετε ευγενικά στο ίδιο θέμα, ζητώντας από κάποιον να το αξιολογήσει. Αν γνωρίζετε το όνομα του κατάλληλου ατόμου που θα αξιολογήσει τη συνεισφορά σας, μπορείτε να τον @-αναφέρετε στο ίδιο θέμα.
Μην απευθυνθείτε σε αυτό το άτομο ιδιωτικά- να θυμάστε ότι η δημόσια επικοινωνία είναι ζωτικής σημασίας για τα έργα ανοικτού κώδικα.
Αν κάνετε ένα ευγενικό χτύπημα και παρόλα αυτά κανείς δεν απαντήσει, είναι πιθανό ότι κανείς δεν θα απαντήσει, ποτέ. Δεν είναι ωραίο συναίσθημα, αλλά μην το αφήσετε να σας αποθαρρύνει. Έχει συμβεί σε όλους! Υπάρχουν πολλοί πιθανοί λόγοι για τους οποίους δεν πήρατε απάντηση, συμπεριλαμβανομένων προσωπικών περιστάσεων που μπορεί να είναι εκτός του ελέγχου σας. Προσπαθήστε να βρείτε ένα άλλο έργο ή έναν άλλο τρόπο να συνεισφέρετε. Αν μη τι άλλο, αυτός είναι ένας καλός λόγος για να μην επενδύσετε πολύ χρόνο στην πραγματοποίηση μιας συνεισφοράς πριν τα άλλα μέλη της κοινότητας ασχοληθούν και ανταποκριθούν.
🚧 Κάποιος ζητά αλλαγές στη συνεισφορά σας.
Είναι σύνηθες να σας ζητηθεί να κάνετε αλλαγές στη συνεισφορά σας, είτε πρόκειται για ανατροφοδότηση σχετικά με το εύρος της ιδέας σας, είτε για αλλαγές στον κώδικά σας.
Όταν κάποιος ζητάει αλλαγές, ανταποκριθείτε. Έχουν αφιερώσει χρόνο για να εξετάσουν τη συνεισφορά σας. Το να ανοίγετε ένα PR και να φεύγετε είναι κακή συμπεριφορά. Αν δεν ξέρετε πώς να κάνετε αλλαγές, ερευνήστε το πρόβλημα και, στη συνέχεια, ζητήστε βοήθεια αν τη χρειάζεστε.
Αν δεν έχετε πια χρόνο να ασχοληθείτε με το θέμα (για παράδειγμα, αν η συζήτηση διαρκεί μήνες και οι συνθήκες έχουν αλλάξει), ενημερώστε τον συντηρητή ώστε να μην περιμένει απάντηση. Κάποιος άλλος μπορεί να είναι στην ευχάριστη θέση να αναλάβει.
👎 Η συνεισφορά σας δεν γίνεται αποδεκτή.
Η συνεισφορά σας μπορεί να γίνει αποδεκτή ή να μην γίνει αποδεκτή τελικά. Ελπίζω να μην έχετε ήδη αφιερώσει πολλή δουλειά σε αυτήν. Αν δεν είστε σίγουροι γιατί δεν έγινε αποδεκτή, είναι απολύτως λογικό να ζητήσετε από τον συντηρητή ανατροφοδότηση και διευκρινίσεις. Τελικά, όμως, θα πρέπει να σεβαστείτε ότι αυτή είναι η απόφασή τους. Μην διαφωνήσετε ή γίνετε εχθρικοί. Είστε πάντα ευπρόσδεκτοι να διακλαδώσετε και να δουλέψετε στη δική σας έκδοση αν διαφωνείτε!
🎉 Η συνεισφορά σας γίνεται αποδεκτή.
Ζήτω! Κάνατε με επιτυχία μια συνεισφορά σε ανοιχτό κώδικα!
Τα καταφέρατε!
Είτε μόλις κάνατε την πρώτη σας συνεισφορά σε ανοιχτό κώδικα, είτε ψάχνετε για νέους τρόπους συνεισφοράς, ελπίζουμε να εμπνευστείτε για να αναλάβετε δράση. Ακόμα και αν η συνεισφορά σας δεν έγινε αποδεκτή, μην ξεχνάτε να λέτε ευχαριστώ όταν ένας συντηρητής κατέβαλε προσπάθεια για να σας βοηθήσει. Ο ανοιχτός κώδικας δημιουργείται από ανθρώπους σαν εσάς: ένα θέμα, ένα αίτημα διανομής, ένα σχόλιο ή ένα “κόλλα-πέντε” κάθε φορά.