Συνεισφέροντας στο FreeBSD

Jordan Hubbard

Κυριάκος Κεντρωτής

Νομική Σημείωση

Το FreeBSD είναι ένα κατοχυρωμένο εμπορικό σύμβολο του FreeBSD Foundation.

Οι λέξεις IEEE, POSIX, και 802 είναι κατοχυρωμένα εμπορικά σύμβολα του Institute of Electrical and Electronics Engineers, Inc. στις Ηνωμένες Πολιτείες.

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

Περίληψη

Αυτό το άρθρο περιγράφει διάφορους τρόπους με τους οποίους μπορεί ένα άτομο ή μια οργάνωση να συνεισφέρει στο FreeBSD.


Θέλετε να συμβάλλετε στο FreeBSD λοιπόν; Αυτό είναι υπέροχο! Το FreeBSD βασίζεται στη συνεισφορά των χρηστών για να επιβιώσει ως έργο. Οι συνεισφορές σας δεν είναι απλώς καλοδεχούμενες, αλλά είναι ουσιαστικές προκειμένου το FreeBSD να συνεχίσει να αναπτύσσεται.

Δεν είναι ανάγκη να είστε προγραμματιστής ή φίλος με την κεντρική ομάδα του FreeBSD για να γίνει η συνεισφορά σας αποδεκτή. Το FreeBSD αναπτύσσεται από ένα μεγάλο αριθμό ανθρώπων από όλο τον κόσμο. Στην ομάδα ανάπτυξης υπάρχουν άτομα διαφόρων ηλικιών ή γνωστικών αντικειμένων. Οι εργασίες οι οποίες πρέπει να γίνουν είναι αρκετές όμως. Πολλές φορές είναι περισσότερες από ότι μπορούν να κάνουν οι άνθρωποι που είναι διαθέσιμοι στην ομάδα του FreeBSD. Γι αυτό είναι πάντοτε καλοδεχούμενη κάθε βοήθεια.

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

Μας ενδιαφέρει επίσης και κάθε επικοινωνία με εμπορικούς οργανισμούς, εφόσον δραστηριοποιούνται σε κάποιο χώρο σχετικό με το FreeBSD. Χρειάζεστε μια ειδική επέκταση για να δουλέψει το προϊόν σας; Θα μας βρείτε δεκτικούς στα αιτήματα σας· ειδικά όταν είναι ρεαλιστικά. Δουλεύετε πάνω σε ένα προϊόν βασισμένο στο FreeBSD; Παρακαλούμε ενημερώστε μας. Μπορεί να συνεργαστούμε με κάποιο τρόπο χρήσιμο και στις δύο πλευρές. Ο κόσμος του ελεύθερου λογισμικού έχει ενδιαφέρουσες επιπτώσεις σε πολλές υπάρχουσες θεωρίες σχετικά με την ανάπτυξη, την πώληση και τη συντήρηση του λογισμικού. Αξίζει, αν όχι να ασχοληθείτε μαζί του, τουλάχιστον να έχετε υπόψη σας πως λειτουργεί.

1. Τι χρειάζεται

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

1.1. Εργασίες που δε χρειάζονται προγραμματιστές

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

  1. Διαβάστε τη λίστα συχνών ερωτήσεων (FAQ) και το Εγχειρίδιο του FreeBSD. Αν κάτι δεν εξηγείται σωστά, περιέχει ξεπερασμένες πληροφορίες ή είναι εντελώς λάθος, ειδοποιήστε μας. Ακόμα καλύτερα, στείλτε μας μια διόρθωση (η SGML δεν είναι δύσκολη στην εκμάθηση, αλλά πάντα δεχόμαστε και διορθώσεις σε μορφή απλού κειμένου ASCII).

  2. Βοηθήστε στη μετάφραση της τεκμηρίωσης του FreeBSD στη μητρική σας γλώσσα. Αν υπάρχει ήδη τεκμηρίωση στη γλώσσα σας, μπορείτε να βοηθήσετε στη μετάφραση επιπρόσθετων κειμένων ή να επιβεβαιώνετε ότι η μετάφραση είναι ενημερωμένη. Πρώτα, κοιτάξτε στις απαντημένες ερωτήσεις σχετικά με τις μεταφράσεις στο Βασικό Οδηγό για την Τεκμηρίωση του FreeBSD. Το να στείλετε μία μετάφραση δεν σας καθιστά υπεύθυνο να μεταφράσετε όλη την τεκμηρίωση του FreeBSD. Ως εθελοντής μπορείτε να μεταφράσετε όσα κείμενα θέλετε ή μπορείτε· όσο πολλά, μεγάλα, μικρά ή λίγα είναι αυτά. Μόλις αρχίσει κάποιος τη μετάφραση της τεκμηρίωσης του FreeBSD σε μια γλώσσα, σχεδόν αμέσως αρχίσουν να συνεισφέρουν κι άλλοι στην προσπάθεια. Αν έχετε το χρόνο ή την ενέργεια να μεταφράσετε μόνο ένα μέρος της τεκμηρίωσης, παρακαλούμε μεταφράστε τις οδηγίες εγκατάστασης.

  3. Να διαβάζετε περιστασιακά (ή καθημερινά) τις ηλεκτρονική λίστα γενικών ερωτήσεων του FreeBSD και news:comp.unix.bsd.freebsd.misc. Το να μοιράζεστε την εμπειρία σας και να βοηθάτε ανθρώπους να λύσουν τα προβλήματά τους μπορεί να είναι ιδιαίτερα ικανοποιητικό. Μερικές φορές μπορεί να μάθετε και κάτι νέο μέσα από αυτή τη διαδικασία! Επίσης αυτές οι συζητήσεις μπορεί να σας δώσουν ιδέες για καινούρια ενδιαφέροντα πράγματα με τα οποία μπορείτε να ασχοληθείτε.

1.2. Εργασίες για προγραμματιστές

Στις περισσότερες από τις εργασίες που αναφέρονται εδώ χρειάζεται είτε σημαντική επένδυση χρόνου ή μία σε βάθος γνώση του πυρήνα του FreeBSD ή και τα δύο. Υπάρχουν επίσης πολλές εργασίες οι οποίες είναι ταυτόχρονα χρήσιμες και αρκετά εύκολες ακόμη και για κάποιον "hacker του σαββατοκύριακου".

  1. Αν τρέχετε FreeBSD-CURRENT και έχετε γρήγορη σύνδεση στο Internet, υπάρχει ένας εξυπηρετητής στο current.FreeBSD.org που "χτίζει" μια πλήρη έκδοση κάθε μέρα. Προσπαθήστε να εγκαταστήσετε την τελευταία έκδοση από εκεί και κάντε αναφορά για οποιοδήποτε πρόβλημα συναντήσετε κατά τη διάρκεια της εγκατάστασης ή μετά από αυτήν.

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

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

  4. Βοηθήστε μας να ξεχωρίσουμε το λογισμικό από εξωτερικές ομάδες και να μετακινήσουμε τέτοια προγράμματα στον κατάλογο src/contrib του πηγαίου κώδικα.

  5. Σιγουρευτείτε ότι τα προγράμματα του src/contrib έχουν ενημερωθεί στις τελευταίες διαθέσιμες εκδόσεις.

  6. Μεταγλωττίστε τον πηγαίο κώδικα (ή ένα μέρος του κώδικα) με επιπλέον ειδοποιήσεις πιθανών λαθών (compiler warnings) και διορθώστε ότι λάθη βρείτε.

  7. Διορθώστε τις προειδοποιήσεις λάθους (warnings) για τα ports τα οποία χρησιμοποιούν μη αποδεκτές κλήσεις, όπως η συνάρτηση gets(), ή συμπεριλαμβάνουν παλιά αρχεία include, όπως το malloc.h.

  8. Αν έχετε συνεισφέρει αλλαγές για κάποια ports και χρειάστηκαν αλλαγές για να δουλέψει το αντίστοιχο λογισμικό σωστά σε FreeBSD, στείλτε τις αλλαγές σας στους αρχικούς δημιουργούς του λογισμικού (αυτό θα κάνει τη ζωή σας ευκολότερη όταν θα κυκλοφορήσουν τη νέα έκδοση).

  9. Προσπαθείστε να βρείτε αντίγραφα από επίσημα πρότυπα όπως το POSIX®. Μπορείτε να βρείτε συνδέσμους σχετικά με αυτά τα πρότυπα στην ιστοσελίδα FreeBSD C99 & POSIX Standards Conformance Project. Συγκρίνετε την συμπεριφορά του FreeBSD με την απαιτούμενη από τα πρότυπα. Αν η συμπεριφορά διαφέρει, ιδιαίτερα σε λεπτά ή δυσδιάκριτα σημεία των προδιαγραφών, στείλτε μια αναφορά προβλήματος σχετικά με αυτό. Αν είναι δυνατόν σκεφτείτε ένα τρόπο να διορθώσετε το πρόβλημα και συμπεριλάβετε το patch στην αναφορά σας. Αν θεωρείται ότι τα πρότυπα είναι λανθασμένα, θέστε ερώτημα στον οργανισμό του προτύπου να εξετάσει το θέμα.

  10. Μπορείτε ακόμη να προτείνετε επιπλέον εργασίες για αυτή τη λίστα!

1.3. Εργασία Μέσω της Βάσης Αναφορών Προβλημάτων (PR database)

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

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

1.4. Διαλέξτε κάποιο αντικείμενο από την σελίδα με τις "ιδέες".

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

2. Πως μπορείτε να συνεισφέρετε

Οι συνεισφορές στο σύστημα κατατάσσονται γενικά σε μια από τις ακόλουθες 5 κατηγορίες:

2.1. Αναφορές προβλήματος και γενικές επεξηγηματικές παρατηρήσεις-σχόλια

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

Αν βρείτε κάποιο bug ή αν έχετε κάνει κάποια συγκεκριμένη αλλαγή, παρακαλούμε κάντε αναφορά χρησιμοποιώντας το πρόγραμμα send-pr(1) ή την αντίστοιχη ιστοσελίδα. Προσπαθήστε να συμπληρώσετε όλα τα πεδία της αναφοράς. Αν οι αλλαγές που κάνατε δεν ξεπερνούν τα 65KB σε μέγεθος, συμπεριλάβετε τις αλλαγές σας απευθείας στην αναφορά. Αν οι αλλαγές είναι κατάλληλες για εφαρμογή στον πηγαίο κώδικα, προσθέστε την ετικέτα [PATCH] στην περίληψη της αναφοράς. Όταν συμπεριλαμβάνετε patches, μη χρησιμοποιείτε αντιγραφή-και-επικόλληση, διότι η αντιγραφή και επικόλληση μετατρέπει συχνά τους στηλοθέτες (TAB) σε κενά και αχρηστεύει το patch. Αν τα patches είναι πολύ μεγαλύτερα από 20KB, δοκιμάστε να τα συμπιέσετε (π.χ. με το gzip(1) ή το bzip2(1)) και χρησιμοποιήστε το εργαλείο uuencode(1) για να εισάγετε τη συμπιεσμένη μορφή στην αναφορά σας.

Μετά της υποβολή μιας αναφοράς θα λάβετε επιβεβαίωση παράλληλα με έναν αριθμό αναφοράς. Κρατήστε τον αριθμό ώστε να μπορείτε να μας ενημερώνετε με πληροφορίες σχετικά με το πρόβλημα στέλνοντας mail στο bug-followup@FreeBSD.org. Χρησιμοποιήστε τον αριθμό της αναφοράς σας στο θέμα του μηνύματος, π.χ. "Re: kern/3377". Επιπρόσθετες πληροφορίες για οποιοδήποτε αναφορά προβλήματος θα πρέπει να υποβάλλονται με τον παραπάνω τρόπο.

Εάν δε λάβετε επιβεβαίωση εγκαίρως (3 μέρες ως μια βδομάδα, ανάλογα με τη αξιοπιστία του email) ή για κάποιο λόγο αδυνατείτε να χρησιμοποιήσετε την εντολή send-pr(1), μπορείτε να απευθυνθείτε σε κάποιον προκειμένου να την αρχειοθετήσει για εσάς στέλνοντας mail στη ηλεκτρονική λίστα αναφορών προβλημάτων του FreeBSD.

Δείτε επίσης αυτό το άρθρο σχετικά με το πώς να γράφετε καλές αναφορές προβλημάτων.

2.2. Αλλαγές στην τεκμηρίωση

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

2.3. Αλλαγές στον Πηγαίο Κώδικα

Μία προσθήκη ή αλλαγή στον υπάρχοντα κώδικα είναι κατά κάποιο τρόπο περίτεχνη υπόθεση και εξαρτάται αρκετά από τον βαθμό της ενημέρωσης που έχετε με την τρέχουσα κατάσταση της ανάπτυξης του FreeBSD. Υπάρχει μια ειδική συνεχώς αναπτυσσόμενη έκδοση του FreeBSD γνωστή ως "FreeBSD-CURRENT" η οποία είναι διαθέσιμη με διάφορους τρόπους για την ευκολία των προγραμματιστών που δραστηριοποιούνται ενεργά στην ανάπτυξη του συστήματος. Δείτε το Εγχειρίδιο του FreeBSD για περισσότερες πληροφορίες σχετικά με το που θα βρείτε και πώς μπορείτε να χρησιμοποιήσετε το FreeBSD-CURRENT.

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

Αφού εξασφαλίσετε κάπως ένα σχετικά ενημερωμένο αντίγραφο του πηγαίου κώδικα ως βάση για τις αλλαγές σας, το επόμενο βήμα είναι να δημιουργήσετε diffs για αποστολή στην ομάδα ανάπτυξης του FreeBSD. Αυτό γίνεται με την εντολή diff(1).

Το προτιμώμενο format του diff(1) για την υποβολή patches είναι η ενοποιημένη μορφή εξόδου (unified diff), που δημιουργείται από την εντολή diff -u. Μια μικρή εξαίρεση είναι τα τα patches που αλλάζουν μεγάλα κομμάτια κώδικα, ουσιαστικά αντικαθιστώντας τα σχεδόν με μια καινούρια έκδοση. Για τέτοιες αλλαγές μπορεί να είναι πιο ευανάγνωστη η μορφή εξόδου που δημιουργείται από την εντολή diff -c.

Για παράδειγμα το:

% diff -c παλιό_αρχείο νέο_αρχείο

ή το

% diff -c -r παλιός_κατάλογος νέος_κατάλογος

θα δημιουργήσει ένα σετ από context diffs για τον κώδικα του συγκεκριμένου αρχείου ή της ιεραρχίας καταλόγων.

Ομοίως το,

% diff -u παλιό_αρχείο νέο_αρχείο

ή το

% diff -u -r παλιός_κατάλογος νέος_κατάλογος

θα κάνει το ίδιο, αλλά θα παράγει diff ενοποιημένη μορφή.

Δείτε τη βοήθεια του εργαλείου diff(1) για περισσότερες λεπτομέρειες.

Από τη στιγμή που έχετε κάποια diffs, (τα οποία μπορείτε να ελέγξετε με την εντολή patch(1)), θα πρέπει να τα υποβάλλετε για ενσωμάτωση στο FreeBSD. Χρησιμοποιήστε το πρόγραμμα send-pr(1), όπως περιγράφετε στο κείμενο Αναφορές προβλήματος και γενικές επεξηγηματικές παρατηρήσεις-σχόλια. Μη στέλνετε μόνο ένα μήνυμα με τα patches στη ηλεκτρονική λίστα τεχνικών συζητήσεων του FreeBSD αλλιώς θα χαθούν! Σας ευχαριστούμε προκαταβολικά για οποιαδήποτε προσφορά κώδικα (το έργο ανάπτυξης του FreeBSD είναι εθελοντική προσπάθεια που βασίζεται ακριβώς σε τέτοιες προσφορές!). Επειδή είμαστε απασχολημένοι, μπορεί να μη χειριστούμε την αίτηση για αλλαγή αμέσως, ωστόσο μέχρι να το κάνουμε αυτό, θα παραμείνει στην βάση αναφορών. Θυμηθείτε να επισημάνετε την υποβολή σας με την ετικέτα [PATCH] στην περίληψη της αναφοράς.

Αν νομίζετε ότι χρειάζεται (π.χ. έχετε προσθέτει, αφαιρέσει ή μετονομάσει κάποια αρχεία), χρησιμοποιείστε το εργαλείο tar για να πακετάρετε τις αλλαγές σας, και το εργαλείο uuencode(1) για να τις ενσωματώσετε στην αναφορά που θα στείλετε. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το εργαλείο shar(1) αντί για το tar(1).

Αν η φύση των αλλαγών που θέλετε να κάνετε είναι κάπως ευαίσθητη, π.χ. αν δεν είστε σίγουροι για τα πνευματικά δικαιώματα και τη διανομή των αλλαγών ή αν απλά δεν είστε έτοιμοι να δώσετε στη δημοσιότητα κάποιες αλλαγές χωρίς ένα review ακόμα, τότε είναι καλύτερα να στείλετε τις αλλαγές σας απευθείας στην ομάδα core του FreeBSD αντί να τις προωθήσετε μέσω του send-pr(1). Η ομάδα core του FreeBSD αποτελείται από ένα πολύ μικρότερο αριθμό ατόμων. Έχετε υπόψιν όμως ότι αυτή η ομάδα είναι πολύ απασχολημένη, οπότε καλό είναι να τους στέλνετε μηνύματα μόνο όταν είστε αρκετά σίγουροι ότι είναι απαραίτητο.

Κάτι τελευταίο σχετικά με τον πηγαίο κώδικα του FreeBSD. Οι σελίδες τεκμηρίωσης intro(9) και style(9) περιέχουν πληροφορίες σχετικά με το στυλ κώδικα που προτιμούμε για το FreeBSD. Πριν στείλετε σημαντικές αλλαγές στην ομάδα ανάπτυξης είναι σημαντικό να έχετε εξοικειωθεί με το στυλ που γράφουμε και, όταν είναι δυνατόν, να το ακολουθήσετε στο γράψιμο του κώδικα που θα μας στείλετε.

2.4. Νέος Κώδικας και Μεγάλα Πακέτα Πρόσθετων Χαρακτηριστικών

Στην περίπτωση μιας σχετικά μεγάλης συνεισφοράς λογισμικού στο FreeBSD και κάθε φορά που προστίθεται ένα σημαντικό καινούριο χαρακτηριστικό στο σύστημα, είναι σχεδόν πάντα απαραίτητο να είναι διαθέσιμες οι αλλαγές με τη μορφή ενός πακέτου tar ή να είναι διαθέσιμες μέσω ενός εξυπηρετητή web ή FTP. Αν δεν έχετε πρόσβαση για να ανεβάσετε τα αρχεία σε κάποιοn εξυπηρετητή web ή FTP, ρωτήστε στην κατάλληλη λίστα ηλεκτρονικού ταχυδρομείου του FreeBSD και κάποιος άλλος μπορεί να φιλοξενήσει τα αρχεία για σας.

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

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

  2. Η άδεια GNU General Public License, ή "GPL". αυτή η άδεια δεν είναι τόσο δημοφιλής επειδή χρειάζεται έξτρα προσπάθεια από οποιονδήποτε χρησιμοποιεί τον κώδικα για εμπορικούς σκοπούς, αλλά επειδή υπάρχει ένα μεγάλο σώμα πηγαίου κώδικα, το οποίο διανέμεται με αυτή την άδεια κι από το οποίο εξαρτιόμαστε (μεταγλωττιστής, assembler, προγράμματα μορφοποίησης κειμένου, κλπ.), θα ήταν κάπως χαζό να μη δεχόμαστε καμία αλλαγή σε τέτοιο κώδικα. Ο κώδικας με άδεια GPL διανέμεται όμως σε δικό του, ξεχωριστό μέρος του πηγαίου κώδικα του FreeBSD, κάτω από τους καταλόγους /sys/gnu και /usr/src/gnu. Έτσι είναι εύκολο να ξεχωρίσει κανείς από τον κώδικα του FreeBSD όλα τα μέρη με άδεια GPL, όταν υπάρχει λόγος να γίνει τέτοιος διαχωρισμός.

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

Για να ορίσετε ότι κάποιο δικό σας έργο πηγαίου κώδικα διανέμεται με τους όρους μιάς άδειας "τύπου BSD" μπορείτε να συμπεριλάβετε στην αρχή των αρχείων πηγαίου κώδικα το παρακάτω κείμενο, αντικαθιστώντας το κείμενο μεταξύ των %% με τις κατάλληλες πληροφορίες:

Copyright (c) %%χρονιά_ή_χρονιές_αλλαγών%%
        %%το_όνομά_σας%%, %%η_διεύθυνσή_σας%%.
	All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer as
   the first lines of this file unmodified.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY %%το_όνομά_σας%% ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL %%το_όνομά_σας%% BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

        $Id$

Ένα αντίγραφο αυτού του κειμένου υπάρχει στο αρχείο /usr/shared/examples/etc/bsd-style-copyright, οπότε μπορείτε να το αντιγράφετε από εκεί κάθε φορά που χρειάζεται.

2.5. Χρήματα, Υλικό ή Πρόσβαση στο Διαδίκτυο

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

2.5.1. Χρηματικές Δωρεές

Η οργάνωση FreeBSD Foundation είναι ένας μη κερδοσκοπικός σύλλογος, ο οποίος έχει ιδρυθεί για να προωθήσει το έργο της Ομάδας του FreeBSD. Λόγω της νομικής φύσης του συλλόγου, η οργάνωση παρέχει μερικές φορολογικές ελαφρύνσεις στις Ηνωμένες Πολιτείες και πιο συγκεκριμένα στην πολιτεία του Colorado. Οι δωρεές στην οργάνωση εκπίπτουν από τους φόρους που πρέπει να πληρώσει κάποιος στις Ηνωμένες Πολιτείες· πιθανόν και σε άλλα μέρη.

Οι δωρέες σας μπορούν να σταλούν σε μορφή εμβάσματος, στη διεύθυνση:

The FreeBSD Foundation
P.O. Box 20247,
Boulder,
CO 80308
USA

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

Περισσότερες πληροφορίες για την οργάνωση FreeBSD Foundation μπορείτε να βρείτε στην ανακοίνωση The FreeBSD Foundation — an Introduction. Η επικοινωνία με την οργάνωση μπορεί να γίνει και μέσω ηλεκτρονικής αλληλογραφίας στη διεύθυνση bod@FreeBSDFoundation.org.

2.5.2. Δωρεές Υλικού

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

2.5.3. Δωρέες Πρόσβασης στο Διαδίκτυο

Πάντα είναι χρήσιμο να έχουμε καινούρια mirror sites για το FTP, τον ιστότοπό μας ή το cvsup. Αν θέλετε να εγκαταστήσετε ένα τέτοιο mirror, παρακαλούμε δείτε τo άρθρο Mirroring FreeBSD. Εκεί θα βρείτε περισσότερες πληροφορίες.