Πώς να ξεκινήσετε ένα έργο ανοιχτού κώδικα

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

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

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

Προσδιορίστε τους στόχους

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

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

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

Σχεδίαση

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

Χωρίστε τις εργασίες σε δευτερεύουσες εργασίες. Στην ιδανική περίπτωση, εάν μια εργασία δεν διαρκεί περισσότερο από 3-4 ώρες, είναι σημαντικό να απολαύσετε την εκτέλεση μικρών εργασιών. Αυτό θα βοηθήσει στην αποφυγή της εξάντλησης και της απώλειας κινήτρων.

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

Τεκμηρίωση

Κάθε έργο ανοιχτού κώδικα πρέπει να περιέχει τα εξής:

  • ΔΙΑΒΑΣΤΕ
  • Άδεια ανοιχτού κώδικα
  • Συμβάλλοντας οδηγίες
  • Τσανγκολόγκ

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

Η άδεια εγγυάται ότι άλλοι μπορούν να χρησιμοποιήσουν, να αντιγράψουν και να τροποποιήσουν τον πηγαίο κώδικα του έργου. Πρέπει να προσθέσετε αυτό το αρχείο σε κάθε αποθετήριο με το έργο ανοιχτού κώδικα. Το MIT και το Apache 2.0 GPLv3 είναι οι πιο δημοφιλείς άδειες για έργα ανοιχτού κώδικα. Εάν δεν είστε σίγουροι τι να επιλέξετε, μπορείτε να χρησιμοποιήσετε αυτήν την βολική υπηρεσία.

Το αρχείο ΣΥΜΒΟΛΗΣ θα βοηθήσει άλλους προγραμματιστές να συνεισφέρουν στο έργο. Στα πρώτα βήματα του έργου, δεν είναι απαραίτητο να δώσετε ιδιαίτερη προσοχή σε αυτό το αρχείο. Μπορείτε να χρησιμοποιήσετε το ήδη προετοιμασμένο πρότυπο από άλλο έργο.

Το Changelog περιέχει μια υποστηριζόμενη, χρονολογική σειρά ταξινομημένων σημαντικών αλλαγών για κάθε έκδοση. Όπως και με το αρχείο ΣΥΝΕΧΙΣΗΣ, δεν συμβουλεύω να δώσω ιδιαίτερη προσοχή σε αυτό σε πρώιμο στάδιο.

Εκδόσεις

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

  • X μεγάλη κυκλοφορία
  • Y δευτερεύουσα κυκλοφορία
  • Απελευθέρωση patch Z

Συνεχής ολοκλήρωση / Συνεχής παράδοση

Για αυτόματη εκτέλεση δοκιμών και δημιουργίας, χρησιμοποιώ το Travis CI. Είναι επίσης καλή ιδέα να προσθέσετε σήματα για να εμφανίσετε την επιτυχημένη συναρμολόγηση του build στον οδηγό, τη δοκιμαστική κάλυψη (Codecov) και την τεκμηρίωση (Inch CI).

Μετά από κάθε νέα δέσμευση ή συγχώνευση στο master, έχω αυτόματα μια ανάπτυξη στο Heroku (πολύ βολική ενσωμάτωση με το GitHub). Όλα τα εργαλεία είναι απολύτως δωρεάν για ένα έργο ανοιχτού κώδικα.

Τα λάθη μου

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

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

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