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


152

Ho appena iniziato a lavorare un anno fa e voglio unirmi a un progetto open source per gli stessi motivi di chiunque altro: aiutarmi 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 le persone a abbinarsi a progetti open source?

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


9
Bene, ho appena dato un'occhiata ad ArsTechnica e ho visto questa domanda descritta come un articolo. Ecco il link. arstechnica.com/business/guides/2012/03/…
Evan Plaice

Risposte:


111

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.


puoi suggerire qualche sito popolare al riguardo?
Aditya P,

2
@AdityaGameProgrammer Darei maggiore enfasi alla ricerca di un progetto specifico non di un sito di hosting open source. I siti di hosting sono solo una discarica per i progetti open source e alcuni progetti migreranno verso siti diversi se si possono trovare funzionalità migliori (vale a dire licenze specifiche supportate, supporto per il controllo della versione migliore, migliori tracker di bug, ecc ...). Ne ho già nominati alcuni. IMHO, github, google code e sourceforge sono i più popolari. Launchpad (utilizza il controllo della versione di bazaar) è il luogo in cui si svolge la maggior parte dello sviluppo di Ububtu / Linux.
Evan Plaice,

2
@AdityaGameProgrammer (cont) Github, sourceforge e il codice google sono tutte masse ribollenti di progetti. Poiché sourceforge è in circolazione da più tempo, probabilmente troverai molti più progetti morti / orfani. È molto più facile trovare un progetto a cui partecipare se ti prendi del tempo per considerare ciò che ti interessa per primo. L'eccezione è, se stai cercando di ospitare il tuo progetto. Quindi, prenditi un po 'di tempo per cercare le funzionalità che si adattano meglio al tuo normale flusso di lavoro di sviluppo.
Evan Plaice,

Grazie. I miei precedenti tentativi di trovarne uno su Sourceforge mi hanno portato a un vasto numero di progetti morti / orfani.
Aditya P,

28

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. In caso contrario, pensare a quello che si sarebbe voluto fare, in generale, e la ricerca di un progetto in questo settore.

  2. Quando hai trovato un potenziale progetto, non affrettarti. Prova ad 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à intorno 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.


2
+1 per "considerare di partire da ruoli secondari". Scrivere test è davvero semplice e uno sguardo ravvicinato ai test dà una buona idea di ciò che il codice sta cercando di realizzare. La documentazione è un buon modo per comprendere il "quadro più ampio" e la verifica dei bug è un buon punto di accesso a bassa barriera per rompere il ghiaccio. Lavorare su ciò che gli sviluppatori in genere trascurano dimostra che il tuo obiettivo è migliorare il progetto e che i tuoi contributi non sono solo guidati dall'ego. I problemi dell'ego possono rendere la vita difficile ai manutentori del progetto, quindi fanno attenzione a quel genere di cose.
Evan Plaice,

9

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

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'è solo qualche piccola cosa che vorresti cambiare se potessi?

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


8

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 certo che nessuno le vorrebbe tranne me, e probabilmente sarei costretto a sottopormi a una valutazione psichiatrica se nessun altro hacker del kernel competente le avesse mai viste. Ma mi piace ancora la mia implementazione 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 per Ohloh per trovare prima il software che potresti essere interessato a utilizzare . 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 bozze di specifiche, poiché alla fine utilizzeremo il risultato.


+1 piglatin_printk ()? Sembra divertente. Mi piacerebbe vederlo in azione. Non sorprende che la maggior parte delle patch del kernel Linux siano state respinte, non c'è molto spazio per il divertimento / la creatività in un progetto così critico. Fortunatamente, ci sono molti progetti più piccoli che hanno una barriera di accesso molto più bassa all'accettazione del codice, anche se i contributi richiedono un po 'di lavoro prima di essere impegnati.
Evan Plaice,

1
@EvanPlaice Non sono stati respinti, non sono mai stati inviati;)
Tim Post

7

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.


Piccolo sito fantastico :) Si potrebbe anche dare un'occhiata a freecode.com
nha

4

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 trascorso qualche tempo 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.


3

Esiste un nuovo sito Web specifico per questo chiamato Code 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.


1
Ci ho pensato e ho aggiunto alcune note. Code52 è guidato da 3 sviluppatori dell'azienda Readify, che afferma di aver vinto il titolo di "Partner dell'anno 2012 di Microsoft". Sebbene i progetti siano ospitati su GitHub, tutti i progetti sono scritti in WinJS (ovvero target Win8) e hanno la Licenza pubblica Microsoft. Da un aspetto sommario, MPL viene copiato a sinistra ma comporta alcune restrizioni che richiedono che i derivati ​​ereditino la stessa licenza o una licenza simile. Cioè è più simile alla licenza GPL che alla licenza MIT molto meno restrittiva.
Evan Plaice,

Il progetto sembra molto accattivante, ma non riesco a scuotere la sensazione che questo sia il nuovo programma di Sharecropping digitale per sviluppatori Open Source, creato da Microsoft per popolare il nuovo ecosistema di Windows 8 senza spendere un centesimo. Non suona come un cappello di stagnola che indossa il portacollo, ma MS non ha esattamente la migliore reputazione quando si tratta di integrarsi con Open Source.
Evan Plaice,

1
-1 Sembra che questo sito sia praticamente morto (non più aggiornamenti) oltre un anno fa
Michael Durrant il

3

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

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 imparare

Spero che lo trovi utile e puoi sempre aggiungere altro se ne trovi di fantastici!


ti dispiacerebbe spiegare di più su ciò che fa e perché lo consigli come rispondere alla domanda posta? Le "risposte solo link" non sono del tutto benvenute allo Stack Stack
moscerino

2

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.


1
Mentre penso che sia un'ottima idea, farlo come un progetto per principianti può essere intimidatorio. Soprattutto quando non hai recensioni di codice o altre persone che possono aggiungere input. I miei progetti hanno attraversato molte riscritture e migliaia di righe di codice perché nessuno mi ha detto che X era migliore, un problema che ho ancora. Partecipare a un progetto consolidato accelererà l'apprendimento molto meglio
TheLQ

@TheLQ: Immagino che dipenda dal tuo livello di esperienza, fare qualcosa da zero ti insegnerà molte lezioni e cose che non impareresti unendoti a un team che ha già fatto molte cose. Secondo me, ci sono beni e cose cattive sul tuo o sul progetto di qualcun altro.
Brian R. Bondy,

@TheLQ Sono completamente d'accordo. È un'esperienza preziosa partecipare a un progetto già esistente perché ti dà un'idea di come sono gestiti i progetti open source e di come è strutturata l'organizzazione. Dopo aver lavorato al progetto di successo di qualcun altro, fare il salto nel creare uno dei miei è stata una passeggiata nel parco.
Evan Plaice,

2

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

Dovrai prima scoprire cosa ti interessa. Quindi sviluppare alcune competenze in alcuni settori che sono correlati ai tuoi interessi. Quindi trova un progetto in cui le tue competenze sono richieste e necessarie.

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.


Come consiglieresti a qualcuno di determinare cosa sono interessati o di sviluppare competenze in queste aree?
Adam Lear

2
@Anna Non sono sicuro di aver capito la tua domanda. Voglio dire, ci sono centinaia di argomenti - da cose di basso livello come protocolli di rete o meccanismi interni di una GPU ad argomenti altamente astratti, quasi matematici (analisi, sistemi di tipi, teoria delle categorie, ecc.). Il più grande genio non li padroneggerà tutti e sarà felice di avere qualcuno che è un esperto in un campo dove lui, il genio, non lo è. Ma quali sono i tuoi interessi, chi può dirlo se non tu?
Ingo,

1
Sì, scoprire gli interessi è forse abbastanza personale (o il consiglio equivale a "provare cose diverse e vedere cosa ti piace"), ma che ne dici di acquisire esperienza? Dici che è molto più che conoscere un paio di lingue. Quindi, dato un nuovo argomento / argomento, cosa faresti per acquisire tale competenza? Per me, aderire a un progetto OSS sarebbe parte di quel processo, ma se ti sto leggendo nel modo giusto stai suggerendo che uno dovrebbe essere un esperto prima di aderire a un progetto.
Adam Lear

Cosa farei? Leggere libri. Leggi i PDF. Discuti con qualcuno che conosci o in rete. Prova qualcosa. Pratica. Rispondi a tutte le domande su SO che emergono riguardo a quell'argomento. Poi un giorno noterai che pochi sanno meglio di te. - Non prendermi troppo alla lettera riguardo all'esperto, ma ricorda, nei progetti open source, dato che è volontario, non c'è modo di costringere qualcuno a fare un lavoro, quindi le persone che sanno cosa stanno facendo e che vogliono fare proprio questo sono i benvenuti.
Ingo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.