Articolo originale: Open Source for Developers – A Beginner's Handbook to Help You Start Contributing

Cosa ti viene in mente quando senti il termine Open Source? Nel mondo della programmazione, open source è un termine generico per indicare un software open source (OSS). Un software open source è costruito su un codice sorgente accessibile a tutti che può essere visualizzato, modificato, ampliato e distribuito.

In questo articolo approfondiremo molti aspetti del software open source e del suo ecosistema. Parleremo di cosa ti serve per iniziare a contribuire all'open source, delle competenze necessarie, di come mantenere i progetti open-source, delle sfide, delle risorse e di alcuni progetti interessanti per iniziare.

Prima di iniziare, ecco qualche parola su di me e sul mio interesse per il mondo open-source.

Utilizzo quotidianamente progetti, prodotti e servizi open source e contribuisco ad alcuni di essi per migliorarli. Mi occupo anche di molti progetti open source per educare i principianti alla programmazione web.

Puoi consultare i progetti open-source che gestisco sul mio profilo GitHub.

Questo articolo intende condividere con te la mia esperienza per aiutarti a iniziare a lavorare con l'open source, se non stai già contribuendo.

Come funziona l'Open Source?

I progetti open-source sono composti dalle seguenti persone ed elementi:

Manutentori del progetto: i manutentori sono una o più persone che avviano il progetto open-source, lo gestiscono, prendono decisioni, fanno brainstorming di idee e lavorano a stretto contatto con i collaboratori, gli utenti e le piattaforme di marketing.

I manutentori del progetto avranno diritti di accesso e privilegi aggiuntivi per controllare vari aspetti del progetto.

Contributori del progetto: quando i manutentori avviano un progetto open-source, sono i primi a contribuire. Man mano che il progetto cresce e più persone lo conoscono, cresce la volontà di contribuirvi.

Man mano che cresce, il progetto ottiene più collaboratori. Chiunque può esaminare il codice del progetto, modificarlo, richiedere una revisione e inserire le modifiche nel progetto.

Repository del codice sorgente e della documentazione: il manutentore conserva il codice sorgente del progetto in un repository di codice sorgente centralizzato (ad esempio, GitHub). Questo aiuta tutti i collaboratori ad avere l'accesso necessario al codice per contribuire.

Licenza del progetto: ogni progetto open source deve specificare una licenza di distribuzione per renderla chiara agli utenti/consumatori.

Esistono vari tipi di licenza e il manutentore può sceglierne una in base alle esigenze del progetto. Alcune licenze di distribuzione molto diffuse sono MIT, Apache License 2.0, GNU General Public License (GPL) 3.0 ecc.

Guida alla contribuzione: un manutentore del progetto OSS crea una guida alla contribuzione per aiutare i collaboratori a comprendere il processo di pull request, gli standard, l'ambito e così via.

Guida al codice di condotta: la guida al codice di condotta illustra le varie linee guida, la collaborazione, le aspettative di comportamento dei collaboratori e come approcciare e risolvere i problemi.

Cultura del progetto: la cultura del progetto si evolve con la comunità del progetto. Sebbene i manutentori abbiano un ruolo importante, i collaboratori sono ugualmente responsabili del mantenimento di una sana cultura di apprendimento, condivisione e crescita.

Community: man mano che il progetto cresce, la community si sviluppa intorno ad esso. Strumenti come GitHub Discussions e Discord sono famosi per organizzare interazioni basate sulla community.

Distribuzione: un progetto open-source deve avere un modo per raggiungere gli utenti finali e i consumatori. Dovrebbe esserci un modello di distribuzione che aiuti il codice a tradursi in un prodotto finale da consegnare.

Utenti/Clienti: gli utenti o i clienti sono i consumatori del prodotto che il team open-source costruisce utilizzando il codice sorgente.

Ora diamo un'occhiata all'immagine sottostante. Qui vediamo la community di un progetto open-source che comprende manutentori e collaboratori.

Il codice sorgente si trova nel repository centralizzato. I collaboratori fanno il fork (un termine che impareremo a breve) del repository upstream e contribuiscono. Una volta terminato il contributo, il manutentore del progetto lo integra al branch principale.

opensource-model
Una visione di alto livello del modello di lavoro Open Source

Non preoccupatevi se non conoscete termini come fork, branch, merge, ecc. Li impareremo presto in questo articolo. Continuate a leggere.

Ora cerchiamo di capire come il software open-source viene consegnato agli utenti/clienti.

L'immagine seguente mostra una delle tante possibilità ad alto livello. Un progetto open-source dovrebbe avere un meccanismo di build-package-deploy che utilizza il processo di Continuous Integration e Continuous Deployment (CI/CD).

Ogni volta che vengono apportate modifiche al codice nel branch principale (main), il flusso di lavoro CI/CD si avvia automaticamente. Costruisce il codice sorgente, lo impacchetta e lo distribuisce per renderlo accessibile agli utenti finali e ai clienti target.

deploy
Una visione di alto livello di come il CODICE SORGENTE arriva nelle mani degli utenti

Nota bene: il CI/CD o qualsiasi altro meccanismo di distribuzione non sono parte integrante dello sviluppo di software open source. Tuttavia, conoscerli aiuta a comprendere il modello di lavoro OSS da cima a fondo.

Cosa significa contribuire all'Open Source?

Contribuire all'Open Source significa migliorare il progetto open source in qualsiasi modo. Una delle idee sbagliate che si possono avere sul contributo è che bisogna contribuire solo al codice sorgente. Ebbene, non è tutto qui.

Contribuire al codice sorgente di un progetto open source è solo un tipo di contributo che si può dare. Tuttavia, è possibile contribuire ad altre aree come:

  • La documentazione del progetto. Migliorarla in modo che più collaboratori e utenti la trovino facile da gestire.
  • Testare l'applicazione, trovare i problemi e creare issue nel sistema di gestione dei problemi.
  • Partecipare alle revisioni del codice per aiutare il progetto a migliorare gli standard di codifica.
  • Scrivere unit test, test end-to-end e migliorare la qualità dell'applicazione.
  • Creare contenuti come articoli e video per diffondere la conoscenza del progetto.
  • Contribuire a costruire la community di persone interessate.

Tutti questi elementi sono contributi cruciali per i progetti open source.

I vantaggi dei contributi Open Source

I contributi Open Source comportano una serie di vantaggi per gli sviluppatori. Alcuni vantaggi chiave sono:

  • Ottenere la possibilità di migliorare le proprie skill.
  • Migliorare il software/l'applicazione con il codice e la documentazione.
  • Incontrare persone che la pensano allo stesso modo, creando network e community.
  • Comprendere i cicli di sviluppo e manutenzione delle applicazioni.
  • Imparare dai feedback delle pull request.
  • Imparare a gestire il proprio codice come open source.

Miti sull'Open Source

Ora conosciamo il modello Open Source e i suoi vantaggi. La prossima cosa che vogliamo imparare è come iniziare a contribuire all'Open Source, sia come manutentori del progetto che come collaboratori.

Prima di farlo, chiariamo alcuni miti sull'Open Source.

Mito: Non so programmare. L'Open Source non fa per me.

Realtà: l'Open Source non riguarda solo la programmazione! Hai molte opportunità di contribuire al miglioramento della documentazione, ai test, alla creazione di media, alla creazione di contenuti e molto altro ancora. Quindi, non restare indietro pensando che la mancanza di competenze di programmazione possa impedirti a contribuire all'OSS.

Mito: So programmare ma non conosco la tecnologia utilizzata in questo progetto Open Source. Non posso contribuire.

Realtà: Al contrario, è un'ottima opportunità per imparare qualcosa che non si conosce già! L'ecosistema Open Source è abbastanza paziente da fornirvi il tempo necessario per imparare e contribuire.

Mito: L'Open Source non mantiene uno standard di livello aziendale.

Realtà: non è affatto vero. Infatti, oggi molti software aziendali sono alimentati da software Open Source. Non è corretto pensare che i progetti Open Source non si preoccupino della qualità e degli standard.

Mito: I progetti Open Source non sono facili da mantenere.

Realtà: Un progetto Open Source è sostenuto dai collaboratori. Un aspetto essenziale per un manutentore è stabilire le basi, creare una tabella di marcia, costruire la community e mantenere alta la motivazione.

Per molti progetti Open Source, i manutentori non devono nemmeno scrivere il codice. I collaboratori possono gestire lo sviluppo, a condizione che il manutentore fornisca il supporto necessario.

Mito: Il software open source è sempre libero.

Realtà: La maggior parte lo è, ma non tutto l'OSS è libero. Ciò dipende dal tipo di licenza utilizzata dal progetto. Alcune licenze sono restrittive per dare libero accesso all'uso e alla distribuzione del codice in qualsiasi modo. È necessario prestare particolare attenzione alle informazioni sulla licenza di un progetto per capire "quanto" l'OSS sarà libero.

Mito: L'Open Source è per i principianti.

Realtà: Molti sviluppatori pensano che l'OSS sia per i principianti e gli studenti. In realtà, tutti possono contribuire. Ha senso che un esperto in materia arricchisca un progetto Open Source con le proprie conoscenze ed esperienze.

Cosa sapere per iniziare a contribuire all'open source

Gli sviluppatori devono conoscere poche cose fondamentali per iniziare rapidamente a lavorare con i progetti Open Source. Si tratta di prerequisiti facoltativi, ma se ne sarai a conoscenza, ti piacerà ancora di più contribuire all'Open Source.

Conoscere le basi di Git

Se sei già a conoscenza del significato di Git e del suo utilizzo principale, hai già fatto un bel po' di chilometri. Git è onnipresente nel mondo Open Source e non puoi ignorarlo.

È necessario conoscere almeno questi argomenti,

  • Cos'è Git e come funziona?
  • Che cos'è un repository?
  • Come clonare un repository?
  • Come si fa a mettere in pratica le modifiche?
  • Come fare il commit delle modifiche?
  • Come scrivere messaggi di commit migliori?
  • Come risolvere i conflitti di merge?
  • Come eseguire il push delle modifiche a un repository remoto?
  • Come fare il pull delle modifiche dal repository remoto?

Se sei alle prime armi con Git, ti consiglio questo video che ti aiuterà a imparare i concetti di Git e tutti gli usi sopra menzionati: Demystifying Git for Beginners.

Acquisire familiarità con GitHub

Su GitHub ci sono oltre 128 milioni di repository pubblici. Una parte significativa di questi repository sono progetti Open Source. Il progetto Open Source a cui si vuole contribuire potrebbe essere presente anche su GitHub. Pertanto, è necessario imparare a gestire le cose su GitHub.

Come collaboratore di un progetto Open Source, devi sapere:

  • Come fare il fork di un repository?
  • Come si trova l'URL per clonare il repository?
  • Come creare una Pull Request?
  • Come revisionare una "Pull Request"?

In qualità di manutentore del progetto, è necessario conoscere:

  • Come creare un repository?
  • Come aggiungere informazioni sulla licenza al progetto?
  • Come creare una guida alla contribuzione e una guida al codice di condotta?
  • Come impostare uno standard per la creazione delle issue e delle pull request?
  • Come fare il merge delle pull request?

Puoi seguire la discussione su Twitter qui sotto. Ti spiega tutto passo per passo:

Imparare a fare il fork di un repository

Il fork è un altro concetto cruciale da comprendere. La maggior parte dei progetti Open Source non consente a un collaboratore di creare branch direttamente su un repository. Al contrario, il flusso di lavoro dei contributi può svolgersi in questo modo:

  • Fare il fork del repository.
  • Clonare il repository
  • Eseguire le modifiche.
  • Ottenere le modifiche dall'UPSTREAM.
  • Creare una pull request dal repository modificato al repository principale.

Nella mia esperienza di lavoro con molti collaboratori, la maggior parte di loro trova il concetto di forking un po' impegnativo.

Per imparare a fare il fork di un repository GitHub, è possibile consultare questo video tutorial: How to Fork a GitHub Repository. Inoltre, è possibile trovare questo repository GitHub per esercitarsi nel forking. È per principianti assoluti, per acquisire sicurezza nel fare il fork di un repository.

Imparare a risolvere i conflitti di Merge

Chiedete a qualsiasi sviluppatore cosa ne pensa della risoluzione dei conflitti di merge. Non è molto semplice, ma più li si affronta e più si impara. Capire il processo di risoluzione dei conflitti di merge, come ragionare e come risolvere un conflitto di merge.

Ecco una guida pratica con esempi per imparare a risolvere i conflitti di merge. Dai un'occhiata.

Imparare la sintassi di Markdown

La documentazione è una delle esigenze principali di qualsiasi progetto Open Source. Un file Readme.md spiega il progetto, come configurarlo, eseguirlo, distribuirlo e così via.

Il file Contributing.md spiega come contribuire al progetto.

Il file CODE_OF_CONDUCT.md descrive cosa aspettarsi dal comportamento e dall'impegno di un collaboratore. Naturalmente, è possibile scrivere molti altri file .md in base alle esigenze del progetto.

L'acronimo md sta per markdown. È la sintassi usata per la documentazione in GitHub. È meglio imparare la sintassi di base per poter partecipare alla documentazione senza problemi.

Ecco un progetto open source che fornisce la sintassi di mark down da copiare e utilizzare. Ti consiglio di darci un'occhiata.

GitHub - atapas/markdown-cheatsheet: A single place for all the markdown syntaxes I have learned so far.
A single place for all the markdown syntaxes I have learned so far. - GitHub - atapas/markdown-cheatsheet: A single place for all the markdown syntaxes I have learned so far.
875262cc-d687-4a77-9967-57fbb5d07b7a

Coltiva le tue soft skill

L'Open Source è un campo fertile per molti sviluppatori che possono lavorare, imparare e costruire assieme. Come contributore, le tue competenze tecniche potrebbero non essere sufficienti per godere appieno dell'esperienza open source.

Parliamo di alcune soft skill indispensabili per gli sviluppatori.

  • Pazienza: la pazienza  è una qualità indispensabile per gli sviluppatori. È necessaria quando si impara qualcosa di nuovo, si esegue il debug di un problema complesso, si lavora con altri, si negozia con qualcuno e si riceve/dà un feedback. A volte le cose non vanno al ritmo che ci si aspetta, quindi bisogna avere pazienza e valutare la situazione.
  • Curiosità: una mente curiosa fa molta strada. Quando si contribuisce all'open source, le possibilità sono immense. È necessario essere curiosi per capire le cose. Questo non si applica solo alle sfide tecniche, ma anche al lavoro con le persone.
  • Essere reattivi: nell'ecosistema Open Source, è possibile non incontrare e parlare con le persone quotidianamente, ma il lavoro deve andare avanti. È necessario essere reattivi alle domande, ai compiti, alle richieste e a tutto ciò di cui si è responsabili. Molte grandi iniziative muoiono solo a causa della mancanza di reattività da parte delle persone.
  • Essere umili: l'umiltà è la chiave del successo. Chi è preparato ma non è umile spesso non riesce a lavorare in squadra.

Come iniziare a contribuire ai progetti Open Source

Vediamo ora come iniziare con la contribuzione all'open source. L'elenco che segue fornisce i link e le risorse per iniziare subito a contribuire ad un progetto open source.

GitHub Explore

GitHub Explore mostra i repository in base ai propri interessi. È possibile impostare le notifiche per essere informati su un progetto.

Inoltre, è possibile cercare i repository per argomenti e tendenze. Usa GitHub explore per scoprire i progetti più pertinenti alle tue competenze, esigenze e aspirazioni. Puoi trovarlo qui: https://github.com/explore/

Come contribuire all'Open Source di freeCodeCamp

Questo repository di freeCodeCamp è un gioiello in tutto e per tutto. Fornisce molte risorse e indicazioni per iniziare a lavorare con l'open source. Puoi trovarlo qui: https://github.com/freeCodeCamp/how-to-contribute-to-open-source

Contributor Ninja

Questo sito ti aiuta con un elenco di linguaggi di programmazione tra cui scegliere: JavaScript, HTML, Rust, Go e molti altri. Si ottengono schede di repository da selezionare. È un luogo semplice per iniziare. Puoi trovarlo qui: https://contributor.ninja/

First Contributions

Si tratta di un elenco enorme di progetti open source da cui cercare e filtrare. Dispone anche di una documentazione ben guidata per iniziare. Puoi trovarlo qui: https://firstcontributions.github.io/

CodeTriage

CodeTriage è un enorme elenco di progetti con issue aperte. Mostra una separazione dei problemi e dei documenti da sottoporre a triage. Il sito web è molto utile. Puoi trovarlo qui: https://www.codetriage.com/

Up For Grabs

Questo è un elenco completo di progetti Open Source da cui scegliere in base ai propri interessi. Puoi trovarlo qui: https://up-for-grabs.net/#/

First Timers Only

Se non hai mai contribuito a un progetto open source prima d'ora e stai iniziando, considera la lettura di questa pagina.

Si possono vedere molte delle fonti di cui abbiamo già parlato, ma la pagina è piena di motivazioni. Puoi trovarlo qui: https://www.firsttimersonly.com/

Open Source Friday

Cosa farai questo venerdì o il prossimo? Che ne dici di investire qualche ora per contribuire al software che usi e ami? Dai un'occhiata a questo sito e registrati. Puoi trovarlo qui: https://opensourcefriday.com/

Spero che le risorse siano state utili. Inoltre, puoi esplorare le discussioni su Twitter, potresti trovare altre informazioni al riguardo.

Manutentori di progetti Open Source

Finora abbiamo visto il lato dei collaboratori open source. Questo articolo sarebbe incompleto se non toccassimo anche il lato dei manutentori dei progetti open source.

In qualità di manutentore del progetto, è necessario seguire determinati standard affinché gli altri possano conoscere e contribuire al repository del progetto.

  • Fornire un nome chiaro e una descrizione del progetto. Inoltre, è necessario aggiungere gli argomenti che sono correlati al progetto.
  • Aggiungere un file Readme.md chiaro per spiegare gli obiettivi del progetto, come usarlo, come configurarlo e così via. Se il codice sorgente è il cuore di un repository, il file README ne è la faccia.
  • Creare un profilo della community. Aiuta i manutentori dei repository open-source a esaminare il lavoro e a capire come aiutarlo a crescere.
  • Stabilire un Codice di Condotta.
  • Creare una Guida per i Collaboratori.
  • Decidere i template delle Issue.
  • Creare un template per le Pull Request (PR).
  • Attivare GitHub Sponsors.

Per conoscere questi standard in modo più dettagliato, è possibile consultare questo articolo.

Prima di concludere...

Questo è tutto! Siamo giunti alla fine di questo articolo. Spero che tu l'abbia trovato utile e che ti abbia dato una motivazione sufficiente per iniziare a contribuire all'open source.

Prima di concludere, vorrei citare alcuni progetti e repository open source da consultare.

L'elenco potrebbe continuare a crescere, ma mi fermo qui. Se ti è piaciuto leggere questo articolo e/o hai delle domande, vuoi metterti in contatto con me, puoi trovarmi in questi posti: