it-swarm.it

Come posso trovare un buon progetto open source a cui partecipare?

Ho appena iniziato a lavorare un anno fa e voglio unirmi a un progetto open source per gli stessi motivi di chiunque altro: aiutare a creare qualcosa di utile e sviluppare ulteriormente le mie capacità.

Il mio problema è che non so come trovare un progetto in cui mi inserirò.

Come posso trovare un progetto adatto ai principianti? Quali attributi dovrei cercare? Quali sono i segnali di avvertimento che un progetto potrebbe non essere la soluzione giusta? Ci sono strumenti là fuori per aiutare a abbinare le persone con progetti open source?

C'è una domanda simile qui , ma quella domanda ha a che fare con l'occupazione ed è limitata a PHP/Drupal.

152
Pops

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 più tardi, 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 puoi fare in * nix che puoi fare in * dows.
  • Non avevo mai fatto test di unità prima d'ora, Nunit è un gioco da ragazzi e scrivere test di unità è 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.

Aggiornamento:

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 contribuire con il codice in oltre un anno, ma provo ancora a restituirmi nascondendomi su Stack Overflow e rispondendo a domande su SharpPcap di tanto in tanto.

111
Evan Plaice

Ecco cosa ti suggerisco di fare per trovare la tua corrispondenza perfetta:

  1. Se hai un progetto open source che già usi, conosci e tieni a mente, dovrebbe essere il tuo primo candidato a provarlo. Altrimenti, pensa a cosa vorresti fare in generale e cerca un progetto in quest'area.

  2. Quando hai trovato un potenziale progetto, non correre in esso. Prova a usarlo da solo. È buono in azione come sembrava dalla descrizione e dalle recensioni? Altrimenti non è un completo spettacolo-stopper; forse è un'opportunità per te per saltare e fare davvero la differenza. Dopo tutto nessuno ha bisogno di un altro sviluppatore per un prodotto perfetto. Ma ti darà una visione importante se vuoi far parte di questo progetto, mentre acquisisci esperienza diretta con le nuove tecnologie in un'area che ti interessa.

  3. Inoltre, prima di iniziare a investire troppo tempo nel progetto e apprenderne i dettagli, prendi in considerazione le mailing list del progetto, i forum e persino il sistema di tracciamento dei bug per un paio di settimane. Se inizierai a contribuire regolarmente al progetto, trascorrerai molto tempo lì.

Capire: ti piace andare in giro o è un freno per te? Sembra che questo progetto abbia una comunità buona ed energica o sta lentamente morendo? Le persone di base sembrano incoraggiare e guidare i nuovi arrivati ​​o sarai da solo?

Esegui questi passaggi per diversi progetti, potenzialmente in aree diverse e avrai meno probabilità di provare delusione quando ti unisci a una squadra sbagliata. Tale esperienza può potenzialmente scoraggiarti dal farlo di nuovo in futuro.

Qualche altro pensiero:

Se il progetto a cui sei veramente interessato è di alto profilo con molti sviluppatori e attività attorno ad esso, probabilmente avrai difficoltà a stabilire una reputazione sufficiente lì per ottenere, diciamo, diritti o un ruolo interessante nella comunità. In questo caso, prendere in considerazione l'adesione a un progetto derivato correlato con una visibilità inferiore. Ad esempio, invece di provare a iniziare a contribuire a jQuery, prova a trovare il plug-in jQuery adatto a te. Successivamente puoi prendere in considerazione la possibilità di "salire".

Se ti piace un progetto ma ti senti intimidito dalle sue dimensioni, complessità o requisiti di qualità del codice, prendi in considerazione di partire da ruoli di supporto, come test, manutenzione della documentazione o verifica dei bug. Se chiedi nella mailing list del progetto che tipo di aiuto hanno maggiormente bisogno in questo momento, saranno più che felici di guidarti lì. :)

In questo modo imparerai il progetto e costruirai la tua reputazione lì contribuendo molto più ad esso rispetto a se avessi iniziato a inviare patch sub-standard che sarebbero state respinte più volte fino a quando non fossero pronte.

L'ultimo e il più importante: se vieni bruciato in un posto, vai avanti; non mollare.

Spero che aiuti.

28
kdubinets

Consiglio vivamente di trovare un progetto open source che abbia il tuo sincero interesse e che tu attivamente si.

Il motivo è semplice: fa la differenza tra un lavoro ingrato e un hobby.

Dai un'occhiata al tuo computer. Quale software hai messo su di esso che è Open Source? Un'ipotesi sarebbe Chrome o Firefox, o forse Open Office o un client Instant Messenger. Sono perfetti o c'è qualche piccola cosa che vorresti cambiare se potessi?

Se c'è, allora è il momento di fare qualcosa al riguardo.

9
user1249

Vorrei suggerire di trovare (o avviare) un progetto proprio come le persone hanno fatto per anni, iniziare a utilizzare il software Open Source per fare le cose. Questo può sembrare banale per te, forse forse troppo semplificato. Tuttavia, è davvero difficile descrivere la soddisfazione di usare qualcosa, trovare un bug, afferrare la fonte e risolverlo. O forse cambiandolo in modo che funzioni nel modo desiderato.

Inoltre, non limitarti a hackerare per essere coinvolto. Il 95% delle mie patch per il kernel Linux non vedrà mai la luce del giorno, so per sicuro che nessuno le vorrebbe tranne me, e io ' sarebbe probabilmente costretto a sottoporsi a una valutazione psichiatrica se un altro hacker del kernel competente li avesse mai visti. Ma mi piace ancora l'implementazione di piglatin_printk() che è iniziata come un bavaglio del 1 aprile diversi anni fa :)

Anche se sì, far conoscere il codice e il processo di pensiero a molte altre persone competenti non ha prezzo, così come imparare a comunicare e collaborare. Un progetto solista è un ottimo modo per mostrarti cosa non fare. Suggerimento, c'è di più oltre al semplice utilizzo del software di controllo versione, delle mailing list e di un bug tracker.

Per iniziare, suggerisco di scavare in giro Ohloh per trovare il software che potrebbe interessarti usando , prima. Scaricalo, costruiscilo, gioca con esso. Quindi vai a prendere qualcos'altro. Alla fine arriverai a voler migliorare qualcosa o ti accorgerai di avere l'impulso di implementare qualcosa di completamente diverso da quello che hai trovato.

L'altra cosa che aiuta è lavorare per un'azienda aperta e amichevole. La mia azienda usa Xen ampiamente, quindi non hanno problemi a trovare bug interessanti e risolverli, dato che dovremmo comunque farlo. Inoltre non si preoccupano dei dipendenti che partecipano a cose come RFC e progetti di specifiche, poiché alla fine utilizzeremo il risultato.

8
Tim Post

OpenHatch è stato creato appositamente per questo.

Per citare:

OpenHatch è una organizzazione no profit dedicata all'abbinamento di potenziali collaboratori di software libero con comunità, strumenti e formazione.

Puoi sfogliare i progetti per tipo, tecnologia, livello di abilità richiesto ecc. E trovare ciò che corrisponde al tuo livello.

7
phw

Una cosa che ho notato più volte quando si tratta di persone che cercano di iniziare con lo sviluppo open source è che sono sopraffatti dalla complessità e dall'entità dei grandi progetti. Ho affrontato lo stesso problema un paio di anni fa e, per esperienza, è meglio non guardare subito i progetti più grandi.

Dopo aver passato un po 'a guardare progetti che potrei piacere, mi sono reso conto che erano ancora fuori dalla mia portata e poi ho iniziato a lavorare su progetti molto piccoli da solo. Mi limito a rilasciare il codice su Github, indipendentemente dal fatto che sia veramente pertinente o che altre persone inizieranno a usarlo. Alla fine, le persone potrebbero iniziare a interessarsi a ciò che fai. Anche in caso contrario, acquisirai fiducia e capacità tecnica per passare lentamente a progetti più grandi e più popolari.

4
Checksum

Quando ho iniziato, ho cercato online le opzioni ed è stato difficile trovare qualcosa su cui poter affondare i denti come principiante.

Alcuni progetti ai quali è difficile contribuire non perché sono troppo avanzati ma perché la comunità non è accogliente. Quindi, non scoraggiarti quando colpisci un muro.

Durante la ricerca, ho deciso di mettere insieme un elenco di 10 progetti open source che i principianti possono iniziare a supportare senza processi stressanti. Ecco il link da utilizzare:

Dieci progetti per principianti da supportare e da cui apprendere

Spero che lo trovi utile e puoi sempre aggiungerne altri se ne trovi di fantastici!

3
Eenvincible

Consiglio di leggere: http://open-advice.org/ .

Ha lo scopo di aiutare coloro che creano e mantengono le comunità, e quelli che non sono sicuri su quale vogliono aderire o su come farlo.

In caso contrario, trova un progetto che ha una missione che risuona con te, oppure fai una forchetta e contribuisci a uno che ti è già utile.

In bocca al lupo.

3
user549213

Esiste un nuovo sito Web specifico per questo chiamato Codice 52 che incoraggia i nuovi sviluppatori a partecipare all'open source avviando un nuovo progetto OSS ogni settimana.

L'idea è che sembrerà molto meno scoraggiante per le persone che non sono mai state coinvolte in open source prima e si spera che si sentiranno più inclini a partecipare anche ad altri progetti OSS.

3
Marcus Swope

Suggerisco di iniziare un progetto da solo su un argomento che ti interessa.

Molto può essere appreso lavorando su un progetto in generale. Non è necessario vedere come qualcun altro codifica per imparare a programmare meglio. E a volte vedrai davvero cosa non fare poiché le altre persone spesso non sono più esperte di te.

Di solito aiuta a vedere il codice degli altri, ma incontrerai il codice di altre persone nel tuo progetto solo attraverso le librerie e i componenti che usi.

L'esperienza ti insegnerà cos'è la buona e la cattiva pratica.

2
Brian R. Bondy

Sono il proprietario di un progetto su codice google e cerco collaboratori. (Eppure non abuserò di questa risposta per la pubblicità.) Quindi la mia opinione potrebbe essere interessante per te.

Dovrai prima scoprire a cosa t sei interessato. Quindi sviluppare alcune competenze in alcuni campi che sono correlati a i tuoi interessi. Quindi trova un progetto in cui è richiesta e necessaria la competenza tua.

Più piccolo è il progetto, meno collaboratori ci sono già, maggiori sono le possibilità che i collaboratori vengano ricercati e puoi contattare direttamente gli autori/i proprietari del progetto. Dì loro a) qual è la tua esperienza b) dove vedi che potrebbe essere applicata nel progetto c) cosa pensi di poter ottenere.

Ricorda: conoscere solo uno o due linguaggi di programmazione tradizionali è non competenza.

2
Ingo