Se non lo sai già, GitHub è un modo incredibilmente efficace per collaborare a progetti di sviluppo. Fornire un posto per chiunque disponga di una connessione Internet per avere una strada dove possono condividere gratuitamente il codice con il mondo (per non parlare dei robusti strumenti di supporto per l'ispezione della fonte e la facile visualizzazione delle cronologie dei commit). GitHub è stato adottato da molti grandi progetti open source come la loro casa principale per la collaborazione e il contributo.
Ma come vieni e contribuisci a un progetto? Certo, sai come usare Git per tenere traccia delle modifiche ai file e inviarli a un server. Ma ci sono grandi vantaggi nell'essere coinvolti in progetti open-source più ampi, e GitHub è senza dubbio il miglior punto di partenza. Oggi discuteremo alcune regole del percorso per collaborare a progetti open source e ti forniremo le conoscenze e l'intuizione necessarie per essere coinvolti.
Non aver paura di iniziare in piccolo
Una delle cose più importanti da capire quando si inizia a collaborare su progetti open-source è riconoscere il proprio ruolo. Spesso ci sono molte cose che uno sviluppatore può fare che non implichi essere un programmatore estremamente intelligente. In realtà, la paura di essere un programmatore inadeguato è spesso una ragione per cui le persone non vengono coinvolte in progetti open source per cominciare. Non aver paura di iniziare in piccolo: invece di provare a correggere un bug grave o riscrivere un intero modulo, prova a trovare elementi come inadeguatezza della documentazione o test e patch cross-device, o anche semplici errori di sintassi e problemi di grammatica (come questo da Utente GitHub mzgol).
Questi tipi di attività sono un buon modo per mettere piede nella tua porta come un contributore al progetto senza cercare di assumere più di quanto tu possa gestire. Iscriviti a CodeTriage per ottenere i problemi automatizzati di GitHub inviati alla tua casella di posta. Se si colpisce la tua casella di posta che ti senti sicuro di poter prendere, lavorare su di esso e inviare una richiesta di pull. (Parleremo di come farlo un po 'più in basso nel post.)
Con qualsiasi sforzo collaborativo, è stato probabilmente adottato un insieme di convenzioni. Questo può includere un set di vocaboli, un modo di contribuire e formattare messaggi di commit, un certo ritmo di collaborazione che i contributori hanno concordato, o anche degli standard sintattici che sono stati stabiliti. Prima di provare a essere coinvolto in un progetto, leggi tutti i documenti relativi a queste cose. Ad esempio, GitHub ha standardizzato a CONTRIBUTING.md
file (guarda le linee guida per essere coinvolto con jQuery per un esempio esauriente). Queste guide sono gestite dalle persone che mantengono anche il codebase e il ramo principale
.
Un altro modo per comprendere l'ecosistema di un progetto è semplicemente guardare la base di codice esistente e il log git
. Leggere i messaggi di commit e esaminare lo stile del codice può dirti molto su un progetto. Leggi la documentazione del progetto e adotta il vocabolario utilizzato in modo che i tuoi contributi mantengano la continuità e ritraggano una voce simile.
Una volta che fai parte dell'ecosistema culturale del progetto, come fai realmente codice di contribuzione?
Il flusso di lavoro per il contributo del codice può sembrare scoraggiante all'inizio.
Il flusso di lavoro per il contributo del codice può sembrare scoraggiante all'inizio. La cosa più importante da ricordare è seguire i modelli e gli standard delineati dal progetto su cui stai lavorando (come abbiamo già discusso). Il flusso di lavoro generale supportato da GitHub è abbastanza semplice.
All'interno di questo flusso di lavoro, è possibile visualizzare molte varianti per ogni progetto. Ad esempio, le convenzioni di denominazione per i rami degli argomenti variano. Alcuni progetti usano convenzioni come bug_345
, dove 345 è l'ID # di un problema GitHub che è stato archiviato. Alcuni progetti preferiscono messaggi di commit più brevi di altri. Ecco una serie di comandi che completano il flusso di lavoro sopra.
Forcella il repo su GitHub.com
Clona il repository utilizzando l'URL nella barra laterale destra:
git clone [email protected]: jcutrell / jquery.git
Passare alla directory clonata e quindi a questo punto, è possibile aggiungere il remoto upstream:
cd jquery git remote aggiungi upstream [email protected]: jquery / jquery.git
Questo ora ti consentirà di inserire localmente le modifiche dalla sorgente e unirle, in questo modo:
git fetch upstream git unione upstream / master
Tuttavia, prima di apportare le tue modifiche, controlla un ramo dell'argomento:
git checkout -b enhancement_345
Ora puoi apportare le modifiche e creare un commit che tiene traccia solo quei cambiamenti.
git commit -am "aggiungendo una faccina alla documentazione."
Successivamente, sposterai questo ramo dell'argomento al tuo fork del progetto.
git push Origin Enhancment_345
Infine, creerai una richiesta di pull. In primo luogo, vai alla tua forcella del repository. Potresti vedere un "i tuoi rami recentemente spinti", e se è così, puoi scegliere "Confronta e tira richiesta". Altrimenti, puoi selezionare il tuo ramo dal menu a discesa e successivamente fare clic "Pull Request" o "Confrontare" in alto a destra della sezione repo.
Ciascuno di questi vi porterà a una pagina in cui è possibile creare una richiesta di pull e commentare la richiesta. Questa pagina include anche una visualizzazione delle modifiche apportate. Ciò consente all'amministratore del progetto di vedere facilmente ciò che hai fatto e prendere decisioni più semplici sull'opportunità di unire il commit. Se hanno domande, possono chiedere loro nei commenti; potrebbero anche chiederti di ripulire la tua richiesta di pull e di inviarla di nuovo, e successivamente chiudere la richiesta di pull.
Si noti che è incredibilmente importante mostrare agli amministratori di un progetto il massimo rispetto; dopotutto, puoi sempre usare la tua versione del codice biforcuta, e se hanno scelto di non inserire le tue modifiche, è perché hanno la posizione per farlo. Ricordate, secondo Github Employee Zach Holman, che prende "How GitHub utilizza GitHub per costruire GitHub", le richieste pull sono conversazioni. Questo è come dovrebbero essere trattati; invece di aspettarti che il tuo impegno venga accettato, devi aspettarti solo che aprirà una conversazione sul codice che hai scritto.
GitHub offre GitHub Issues, che è un modo robusto per creare conversazioni automatizzate documentate, interattive su bug o funzionalità per ogni dato progetto. Mentre i problemi possono essere disabilitati, sono abilitati per impostazione predefinita. Ci sono molte caratteristiche fantastiche che Issues ha incorporato, ma una delle caratteristiche più importanti è l'integrazione con le richieste pull. Un utente può fare riferimento a un problema nel proprio messaggio di commit semplicemente includendo l'ID numerico del problema nel messaggio di commit. Per esempio:
git commit -am "Aggiunta di un'intestazione, correzioni # 3"
Questo messaggio di commit contrassegna automaticamente il problema n. 3 come chiuso quando viene accettata la richiesta di pull associata. Questo tipo di automazione rende GitHub un meraviglioso strumento per la gestione dei progetti di sviluppo.
Spesso, i grandi progetti open source beneficiano di molti diversi tipi di lavoro collaborativo.
Non farti prendere dal pensare che l'unico modo in cui puoi contribuire sia attraverso le richieste di pull. Spesso, i grandi progetti open source beneficiano di molti diversi tipi di lavoro collaborativo. Ad esempio, un progetto come Ruby on Rails era famoso per il suo Comunità; questa comunità rispondeva alle domande sui forum e nelle chat room IRC per aiutare a costruire conoscenze sul framework, e inoltre aiuterebbe a guidare la direzione futura del framework parlando di idee e scoperti di bug.
Questi canali di collaborazione sono solitamente aperti come ambienti di supporto come menzionato prima, come forum e chat. Potrebbero esserci anche catene di email, meetup o conference call che aiutano a definire la direzione del progetto e creano una comunità vivace e produttiva attorno al progetto. Senza questo tipo di comunità, le richieste di pull sono molto meno efficaci.
Ricorda, l'open source è guidato da persone che hanno l'attitudine che condividere la conoscenza e costruire l'intelligenza collaborativa è uno sforzo utile. Il tuo coinvolgimento in questi progetti sarà più efficace se ti avvicini a un dato progetto con l'atteggiamento curioso che chiede "come posso aiutare?" piuttosto che un atteggiamento chiuso che dice "ho intenzione di aiutare comunque voglio". Le persone nel mondo open source vogliono lavorare con persone che sono sinceramente spinte ad aiutare gli altri.
Se sei interessato a essere coinvolto in un progetto open source, bene! Ricorda, se ti avvicini al progetto con l'atteggiamento giusto e inizi in piccolo, potresti vedere il tuo nome su richieste pull unite a codice distribuito a persone di tutto il mondo e utilizzate ogni giorno. Prenditi il tempo per conoscere il progetto e le persone coinvolte nel progetto. Sviluppa un genuino interesse nell'aiutare il progetto a migliorare. Il potere di GitHub e del mondo open source continua a crescere ogni giorno; inizia a collaborare con altri sviluppatori e puoi far parte di quel mondo!