Il mio primo contributo open source è stato per una biblioteca che avevo precedentemente utilizzato (e che avrei sofferto molto senza) su un precedente progetto a pagamento. Durante il mio utilizzo iniziale avevo individuato un bug nel codice, quindi ho creato una patch, aderito al progetto e inviato per la revisione.
Circa 8 mesi dopo, quando ho avuto un po 'di tempo libero, ho deciso che avrei restituito (e lavorato sulle mie capacità di sviluppo) contribuendo maggiormente al progetto. Così ho clonato il repository e ho iniziato a familiarizzare con la base di codice. Dopo alcune settimane di invio di correzioni minori alla base di codice e monitoraggio delle richieste di funzionalità, ho raccolto una richiesta di funzionalità per aggiungere un modulo piuttosto sostanziale al progetto.
Poiché la generazione di molte correzioni individuali di patch è piuttosto noiosa per qualsiasi sviluppo significativo, ho clonato il repository su un ramo su git hub e ho iniziato a inserire codice. Alcune settimane e diverse migliaia di righe di codice in seguito, io e il responsabile del progetto abbiamo lavorato integrando e testando le mie correzioni nella libreria in modo coerente con il resto della base di codice.
È stato un processo inestimabile che ho imparato molto da:
- Quando ho iniziato non sapevo come usare Git, alla fine potevo creare abilmente rami di tracciamento remoti e unirli o rifondarli nel ramo principale senza sudare.
- Ho iniziato con VS 2008 e ho finito per migrare su Linux e Monodevelop per lavorare alla scrittura di codice (perché VS è ritardato unicode e le terminazioni di linea sono un tale dolore in git). Si scopre che non c'è molto che non si possa fare in * nix che si possa fare in * dows.
- Non avevo mai fatto alcun test unitario prima, Nunit è un gioco da ragazzi e scrivere test unitari è roba piuttosto elementare.
- Ho dovuto imparare a ingoiare la lingua e ascoltare, oltre a praticare la pazienza. Non ha senso sostenere una posizione ferma sulla tua posizione in un progetto open source perché tutti i soggetti coinvolti sono ben informati (probabilmente più di te) e in grado di accettare / rifiutare le tue idee in base alla sostanza e non alla consegna. È estremamente umiliante e gratificante allo stesso tempo.
- Il solo fatto di avere gli occhi di un altro sviluppatore esperto su un'ampia base del mio codice ha evidenziato difetti nel mio stile che non avevo mai considerato prima (così come ho sottolineato difetti nel suo codice). Per me, ho imparato che è più facile / meglio definire le costanti che usare un mucchio di numeri magici con commenti dettagliati.
Quel particolare progetto era basato sulla generazione e decodifica di pacchetti di rete su tutti i livelli di protocolli di rete. Ho un interesse personale per le reti di livello inferiore, quindi è stato bello discutere con un altro sviluppatore con interessi e conoscenze condivise nel dominio.
Se vuoi solo bagnarti i piedi: trova un progetto che già usi; clonare il repository; e inizia a vedere se riesci a correggere alcuni bug e / o aggiungere alcuni test unitari. Sembra intimidatorio guardare la base di codice di qualcun altro con occhi nuovi, ma è un'abilità estremamente preziosa da imparare. Invia alcune patch. Puoi aspettarti che il tuo codice venga attentamente esaminato all'inizio. Non preoccuparti, è una parte normale del processo ottenere la fiducia degli amministratori del progetto.
Dopo aver stabilito una base di merito con gli amministratori del progetto, inizia a cercare più responsabilità, come proporre nuove funzionalità o chiedere di essere assegnato all'implementazione delle richieste di funzionalità.
Se non riesci a trovare un progetto già esistente su una delle principali reti di repository open source (github, sourceforge, codice google) pensa a un'app che ti piacerebbe davvero usare che non esiste ancora e avvia la tua.
Preparati a essere umiliato e aspettati che il lavoro venga respinto a favore di ulteriori revisioni. Il mito secondo cui chiunque può aggiungere codice a un progetto open source è completamente falso. C'è sempre un gatekeeper tra te e l'accesso push. Migliore è il codice, meno verrà esaminato a lungo termine man mano che acquisisci la fiducia degli amministratori del progetto. Se è il tuo progetto, sarai quel guardiano.
Aggiornare:
Ci ho appena pensato e mi sono reso conto che non mi sono preoccupato di menzionare a quale progetto fa riferimento gran parte della mia risposta. Per coloro che vogliono sapere, è SharpPcap . Lo sviluppatore principale Chris Morgan è molto professionale e puntuale. Fa un ottimo lavoro nella gestione del progetto e mi ha insegnato molto su ciò che serve per maturare un progetto OSS.
A causa di vincoli di tempo personali non sono stato in grado di fornire codice da oltre un anno, ma cerco ancora di restituirmi nascondendomi su Stack Overflow e rispondendo a domande su SharpPcap di tanto in tanto.