Articolo originale: How to Contribute to Open Source Projects – A Beginner's Guide

Siccome continuiamo a progredire tecnologicamente, sempre più prodotti e servizi si stanno trasformando in servizi software pronti per l'uso. Molti di questi sono open source.

La maggior parte delle aziende e degli sviluppatori dipende da software e strumenti open source, che fanno funzionare i loro prodotti. Concorderai con me sul fatto che ultimamente il numero di contributi all'open source sia davvero cresciuto - non solo da singoli sviluppatori ma anche da parte delle aziende.

Il mio primo contributo alla comunità open source risale al 2020 durante l'annuale Hacktoberfest. In quanto principiante partecipai a progetti adatti ai principianti, che condividerò più avanti per aiutarti.

Se stai leggendo questo articolo è perché vuoi essere parte della grandiosa comunità open source - ma forse non sai da dove cominciare? Bene, sei nel posto giusto.

In questa guida tratteremo:

  • Cosa si intende esattamente con open source?
  • Come puoi iniziare a contribuire?
  • Cosa dovresti aspettarti?

Ecco, in questo articolo ci occuperemo di tutto questo e anche di più.

Andiamo!

Cosa vuol dire open source?

In poche parole, possiamo descrivere un progetto open source (OS) come del codice sorgente accessibile pubblicamente; si può vedere, usare, modificare e distribuire sotto licenza.

Come esempio, prendiamo una classe. Un insegnante può condividere un documento attraverso una piattaforma come Google Docs. Su questa piattaforma gli studenti possono modificare il documento e anche farne una copia per sé. Ma in qualsiasi momento apportano modifiche, queste devono essere approvate dall'insegnante prima di riflettersi nel documento.

L'open source funziona allo stesso modo: una volta che il codice è reso pubblico, se vuoi aggiungere funzionalità o fare cambiamenti, il proprietario deve approvare e pubblicare i cambiamenti per permettere agli altri di vederli.

La maggior parte dei progetti open source è il risultato di contributi di persone con diversi livelli di competenze - e non solo nel campo della programmazione, ma anche in altri, come la scrittura, le lingue e via dicendo.

Ogni volta che qualcuno corregge un refuso, aggiunge un messaggio di notifica per un possibile avviso del compilatore, sistema un bug, oppure aggiunge una documentazione dettagliata a un progetto, viene fatto un passo avanti. Se prendiamo tutti questi piccoli contributi da parte di persone diverse con abilità diverse e li mettiamo insieme, possono succedere grandi cose.

Come disse Vincent van Gogh:

Le grandi cose sono fatte da una serie di piccole cose messe insieme.

Perché dovresti contribuire all'open source

Contribuire a progetti open source può essere un modo gratificante di imparare, insegnare, condividere e fare esperienza.

Ci sono un sacco di ragioni per le quali dovresti contribuire a un progetto open source, per esempio:

  • Migliorare il software al quale ti affidi tutti i giorni.
  • Trovare un mentore se ne hai bisogno.
  • Apprendere nuove abilità o migliorare quelle che già hai.
  • Condividere le tue capacità.
  • Ottenere una conoscenza molto più approfondita del software che stai usando.
  • Costruirti una reputazione e sostenere la crescita della tua carriera.
  • In più, è divertente e dà soddisfazione e poi, ehi, non puoi sapere chi sta guardando, magari il tuo prossimo datore di lavoro o compagno d'affari 🙂.

Guida passo passo su come contribuire all'Open Source

Quando si parla di contribuire all'open source, non si intende necessariamente che devi saper programmare. Ci sono molti modi nei quali puoi contribuire anche se non sei un programmatore - ma avere questa competenza aiuta molto (sia te stesso che i progetti).

Tra i contributi più frequenti ci sono:

  • Aggiungere una descrizione alla documentazione di un progetto per approfondirne un certo aspetto, di solito ci si riferisce al file README (dai un'occhiata a questa guida su come scrivere dei file README validi).
  • Dare indicazione su uno specifico progetto e su come usarlo.
  • Aggiungere esempi di output per mostrare come funziona il codice.
  • Scrivere tutorial di approfondimento per un progetto.
  • Partecipare alla traduzione di un progetto - un buon posto in cui iniziare potrebbe essere il programma di traduzione di freeCodeCamp.
  • Rispondere a delle domande (come su Stack Overflow o Reddit).
  • Puoi offrirti come mentore di altri collaboratori.
  • Puoi correggere refusi e sistemare adeguatamente la cartella di lavoro del progetto.

Tutto questo e molto altro conta come contributo. Ora, cosa dovresti sapere esattamente prima di iniziare a contribuire a un progetto OS?

Cose da sapere prima di contribuire a progetti OS

Ci aspettiamo che ogni prodotto open source sia differente dagli altri, lo stesso vale per le comunità. Ogni comunità ha le sue regole e avrà diverse linee guida e funzioni e, se sei fortunato, alcune ti offrono anche una ricompensa in seguito al tuo contributo.

A discapito di tutto ciò, ci sono alcune caratteristiche comuni che valgono per tutti i progetti OS, ed è di queste che andremo a discutere.

Ruoli in un tipico progetto OS

In un tipico progetto OS incontriamo le seguenti persone:

  • Autore - La persona che ha creato il progetto. Gli autori hanno il potere di assegnare nuovi ruoli agli altri membri perché collaborino nel mantenimento del progetto.
  • Proprietario - Al proprietario è assegnata la proprietà amministrativa del progetto (l'autore stesso può essere anche proprietario).
  • Manutentori - Queste persone hanno la responsabilità di guidare la vision e gli obiettivi del progetto. Si sentono di solito responsabili della direzione del progetto e si impegnano per il suo miglioramento.
  • Collaboratori - Contribuiscono al progetto in un modo o in un altro. Seguono lo stesso processo di revisione del codice, sono soggetti agli stessi requisiti di stile, e così via.
  • Comunità di membri/utenti - I preziosi membri della comunità possono fornire riscontri sulle funzionalità, segnalare dei bug, e altro ancora.

I "must" di un progetto OS

Parlando di progetti OS, va detto che sono classificati in molti modi in base alla struttura, al tipo di piattaforma del prodotto, al linguaggio di programmazione usato, al suo essere indipendente o sponsorizzato e altro ancora.

Linee guida e altri tipi di informazioni aiutano a mettere in evidenza tutto ciò:

  • Licenza
    Se un progetto non ha una licenza open source, allora non è open source. La licenza protegge i collaboratori e gli utenti. Di solito aziende e sviluppatori assennati non toccano un progetto senza questa tutela. Se ti stai chiedendo come ottenerla e come scegliere quella più adatta al tuo progetto, consulta il sito ufficiale della licenza OS: https://choosealicense.com/.
  • File README
    Si tratta di un prontuario che spiega come iniziare. Elenca i requisiti per poter contribuire al progetto, i passi da fare per collaborare e così via. Un buon README contiene tutto quello che un potenziale collaboratore dovrebbe sapere sul progetto. Se hai già un progetto e stai cercando di scrivere un file README file, questa guida ti tornerà utile:  Come scrivere un buon file README.
  • Linee guida per la contribuzione
    Sono linee guida che aiutano le persone che vogliono contribuire al progetto a capire cosa ci si aspetta esattamente da loro. E sebbene non siano obbligatorie, è sempre una buona pratica aggiungerle. Se hai bisogno di aiuto per scriverle o vuoi sapere bene cosa contengono, sul sito ufficiale OS c'è un template che può esserti d'aiuto: template per le linee guida.
  • Codice di condotta
    Un codice di condotta è un documento che stabilisce le aspettative sul comportamento dei tuoi collaboratori e partecipanti. Adottare e far valere un codice di condotta può essere utile a creare un ambiente positivo e accogliente per la tua comunità. La guida OS spiega meglio ciò che contiene il codice: https://opensource.guide/code-of-conduct/.

Nella gestione di un progetto open source, sia individuale che da parte di un'organizzazione, tutto riguarda la creazione di una comunità dove le persone possono crescere insieme. Ciò significa che dovrai sviluppare un ambiente socievole dove le persone condivideranno idee, si impegneranno in sfide, e a un certo punto inizieranno casualmente a chiacchierare.

Qui ci sono alcune opzioni, e puoi usare strumenti come:

  • Issue Tracker
    È dove tieni traccia del tuo lavoro su GitHub e di come avviene lo sviluppo. Nel caso in cui ci siano problemi un collaboratore può creare una issue e collegarla a una pull request, gli altri colleghi possono così scegliere di risolvere quel problema. La issue viene chiusa una volta che il problema viene risolto.
  • Pull Request
    Permettono di far sapere agli altri dei cambiamenti che hai apportato a un branch in un repository su GitHub. Una volta aperta una pull request, puoi discutere con gli altri collaboratori dei possibili cambiamenti, revisionare, e procedere con nuovi commit prima che questi siano integrati nel branch principale.
  • Chat Channel
    Sebbene non sia obbligatorio, puoi considerare una buona pratica l'essere parte di un canale di comunità OS. È ideato specificatamente per condividere idee e intrattenere conversazioni. A questo scopo, tra i mezzi di comunicazione più comuni ci sono Slack e Discord.

Dunque, adesso hai un'idea di che cos'è un progetto OS e di cosa ti aspetta quando contribuisci. Ma arriviamo alla parte importante, come sapere a quale progetto partecipare?

Come trovare un progetto OS al quale contribuire

Non c'è bisogno di pensare troppo a come farlo, contribuire è possibile a tutti i livelli. Piuttosto pensa ad alcuni dei progetti che già conosci, che usi, e a quali cambiamenti o miglioramenti puoi fare.

Ricerche mostrano che circa il 30% dei contributi occasionali riguardano documentazione, correzioni di refusi, o anche traduzioni.

All'inizio ho promesso che avrei condiviso alcuni dei progetti che mi aiutarono durante le mie prime collaborazioni. Per tua fortuna, se sei alla tua prima volta - tutti lo sono a un certo punto -  qui ci sono alcuni link che ti aiuteranno a cominciare nel mondo dell'OS:

Un suggerimento rapido: nel mondo dell'open source, le issue vengono aperte e risolte abbastanza velocemente. Perciò, un modo per iniziare bene è scegliere una issue con la sicurezza di poterci lavorare su tempestivamente.

Come scegliere un progetto OS

Dopo aver trovato il progetto al quale vuoi contribuire, è tempo di fare un piccolo controllo. Assicurati che rientri nei seguenti criteri, così saprai se è un buon progetto al quale lavorare:

  1. Controlla se ha un file di licenza.
  2. Guarda a quando risale l'ultimo commit. Questo ti farà capire se i collaboratori sono attivi e ti darà un'idea di quanto ci impiegheranno per replicare al tuo contributo.
  3. Controlla il numero di collaboratori.
  4. Guarda ogni quanto si fanno commit. Se vedi molte attività recenti è un buon segno - vuol dire che la comunità è attiva, così come i manutentori.

Ora, se il primo controllo è superato, procedi con i seguenti:

  1. Ha delle issue aperte? Se sì. può essere un buon segno, hai un posto in cui iniziare.
  2. Quanto tempo impiegano a rispondere? Questo dipende da quanto spesso vengono chiuse le issue e le pull request integrate.
  3. Sulle issue ci sono discussioni attive?
  4. Vengono chiuse regolarmente?
  5. Quante pull request aperte ci sono?
  6. Quando è stata l'ultima volta che è stato fatto il merge di una pull request?
  7. I manutentori ringraziano chi contribuisce?

Se anche l'ultimo controllo è stato superato, allora sei pronto per cominciare.

Cose da considerare prima di entrare nell'OS

So che sei entusiasta e pronto a scatenarti nel mondo OS, ma sai cosa cercare in un progetto?

Come detto sopra, ci sono modi diversi coi quali puoi contribuire. Ma prima di dare il tuo primo contributo, è bene prendere nota di alcune cose riguardanti il progetto che andrai a scegliere, per esempio:

  • Quale linguaggio di programmazione usa?
    La tecnologia fondamentale che sta dietro ogni applicazione è il linguaggio di programmazione che viene usato. Alcuni dei più popolari su GitHub sono JavaScript, Python, Java, Ruby, and PHP - ma ce ne sono altri. Ci sono moltissimi progetti che potrebbero addirsi ai tuoi interessi e capacità. Trovane uno al quale ti farebbe piacere lavorare.
  • Tipo di progetto
    Dopo che hai scelto il linguaggio col quale vuoi lavorare, devi scegliere anche il tipo di progetto che preferisci. Dai un'occhiata in giro e scegli un argomento che risponde ai tuoi interessi.

Una volta trovato il progetto, vorrai contribuire davvero. E lo farai attraverso le pull request. Vediamo di cosa si tratta.

Cos'è una Pull Request?

Ti ricordi l'esempio di Google Docs? Bene, una pull request è simile, ma si tratta di codice.

Possiamo descrivere una pull request come un collaboratore che propone un cambiamento - sia codice sia documentazione o altro - e chiede a un manutentore di controllare, assicurarsi che sia tutto a posto, poi integrarlo nel progetto.

Quindi, come si fa?

Come inviare una Pull Request

Se sei a questo punto, vuol dire che hai trovato un progetto e sei pronto per contribuire. Vediamo allora come si fa effettivamente una pull request.

Passaggi per inviare una PR

  • Esegui il fork del repository
    Nell'angolo in alto a destra, vedrai il termine "fork". Tutto ciò che devi di fare è cliccarlo per creare una copia del progetto nel tuo profilo.
fork-repo

Dopo questa operazione l'URL del progetto cambierà in:

https://github.com/<IlTuoUsername>/nomeprogetto
  • Clona il progetto sulla tua macchina
    Per fare questo passaggio, devi avere installato Git localmente sulla tua macchina. Se non ce l'hai, fai riferimento alla documentazione ufficiale Git per scoprire come fare.

Copia l'URL del fork del progetto e procedi aprendo la tua riga di comando o git bash e inserendo il seguente comando:

git clone https://github.com/<IlTuoUsername>/<nomeprogetto>

Questo creerà una copia del progetto sulla tua macchina, in locale. Ora che hai clonato il repo bisogna fare due cose.

La prima è fare i cambiamenti/apporti necessari e poi eseguire un'azione di commit con le modifiche. Dopo aver fatto i cambiamenti e aver aggiunto i file, è tempo di aggiungere questi cambiamenti in un branch separato, prima di fare un push remote.

Ma prima creiamo un branch. Dalla riga di comando, cambia il percorso in modo che punti alla cartella del tuo repo. Per farlo, usa questo comando:

cd nome-cartella-progetto

Ora, per creare un branch useremo questo comando: git checkout

git checkout -b nome-branch

Per esempio:

git checkout -b lary-mak

Aggiungiamo le modifiche al branch creato. Per vedere quelle che hai fatto, useremo il comando git status:

git status

Il comando elencherà tutti i cambiamenti che hai apportato. Per aggiungerli useremo git add *, che aggiungerà i file al nostro branch.

git add *

Scriviamo un messaggio di commit, che spieghi brevemente quel che abbiamo aggiunto:

git commit -m "<messaggio di commit>"
  • Invia le modifiche al remoto
    Adesso che tutto è pronto, è tempo di far sapere al nostro manutentore cosa abbiamo aggiunto. Ciò è possibile con questo comando:
git push origin <nome-branch>

sostituendo <nome-branch> con il nome del branch che hai creato prima, nel mio caso sarà git push origin lary-mak.

  • Proponi le modifiche
    Se vai sul tuo repo su GitHub e ricarichi la pagina, vedrai un pulsante "Compare and pull request". Cliccaci su.

Presto il manutentore integrerà le tue modifiche nel branch principale del progetto (a meno che non ti richiedano di fare dei cambiamenti). Riceverai una email di notifica quando accadrà.

Creare una pull request ha alcuni vantaggi, ad esempio:

  • Ti permette di contribuire a un altro repo senza il bisogno di privilegi amministrativi nel caso di modifiche.
  • Permette agli altri di revisionare le tue modifiche e suggerire correzioni, cambiamenti, aggiunte e così via.
  • Lascia agli amministratori del repo il controllo su quello che viene aggiunto nel repo del progetto.

Congratulazioni 🥳🎉,
hai appena completato il flusso standard fork -> clone -> edit -> pull request il cui risultato è tuo primo contributo. Lo userai spesso! Dunque, cos'altro?

Cosa viene dopo la tua prima Pull Request?

Non è mica finita! Ora, trova più progetti e continua a partecipare. Assicurati anche di riuscire a prestare attenzione al mese dedicato all'OS, viene gestito ogni anno da Digital Ocean e c'è la possibilità di vincere fantastici premi.

Una cosa ancora della quale parlare un po' di più prima di concludere: perché contribuire a progetti OS è appagante.

I benefici di contribuire all'OS

  • Le persone che contribuiscono a progetti OS arrivano a conoscere la tecnologia in modo molto più approfondito rispetto a chi la usa soltanto.
  • Puoi concentrare i tuoi sforzi sull'aggiungere e sfruttare funzionalità che saranno utili alle aziende in base all'esperienza di cosa funziona e cosa non funziona nel modo reale.
  • Ti dà coraggio e costruisce la tua reputazione. Chi contribuisce a progetti OS ha accesso all'esperienza e alla prospettiva dei membri di altre comunità.
  • Contribuire all'OS offre una chiara visione nel futuro di un progetto.
  • Se sei su GitHub, una gran parte delle cose che fai su quella piattaforma è pubblica. Usala a tuo vantaggio per fare sempre del tuo meglio quando partecipi e quando comunichi con altri collaboratori.

Perché dovresti contribuire all'OS come sviluppatore

  • Ti aiuterà ad affinare le tue competenza di programmazione e a migliorare nello scrivere un codice pulito.
  • Ti farà conoscere nella comunità e tra i tuoi pari. Questa notorietà può offrirti molte opportunità nella tua carriera.
  • Ti permetterà di imparare molto sulla gestione di un progetto e potrebbe essere di ispirazione per iniziare un progetto tutto tuo.

Concludiamo!

Come ho detto, l'OS è aperto alla partecipazione di tutti. Ci sono molte opportunità delle quale puoi approfittare e imparare qualcosa di nuovo. Tutto ciò di cui hai bisogno è decidere di iniziare e partire.

L'OPEN SOURCE TI ASPETTA

Se hai letto fin qui, lo apprezzo molto.

Fammi sapere cosa ne pensi, un'opinione sincera fa sempre piacere!

Collegati con me su Twitter | YouTube | LinkedIn | GitHub

Buona programmazione ❤