Introduzione di uno sviluppatore a GitHub

Ti interessa imparare JavaScript? Ottieni il mio ebook gratuito su jshandbook.com

GitHub è un sito Web che ospita miliardi di righe di codice ed è il luogo in cui milioni di sviluppatori si riuniscono ogni giorno per collaborare e segnalare problemi con il software open source.

In breve, è una piattaforma per sviluppatori di software ed è costruita attorno a Git.

SUGGERIMENTO: se non conosci ancora Git, consulta la mia guida Git.

Come sviluppatore, non puoi evitare di usare GitHub o un altro strumento basato su Git su base giornaliera come parte del tuo lavoro. Viene utilizzato per ospitare il tuo codice o per collaborare al codice di altre persone. Questo articolo spiega alcuni concetti chiave di GitHub e come utilizzare alcune delle sue funzionalità per migliorare il flusso di lavoro.

Perché GitHub?

Ora che sai cos'è GitHub, potresti chiederti perché dovresti usarlo.

GitHub, dopo tutto, è gestito da una società privata, che beneficia dell'hosting del codice delle persone. Quindi perché dovresti usarlo al posto di piattaforme simili come BitBucket o GitLab?

Oltre alle preferenze personali e ai motivi tecnici, c'è un grande motivo: tutti usano GitHub, quindi l'effetto di rete è enorme.

Le principali basi di codice sono migrate nel tempo da altri sistemi di controllo delle versioni a Git per la sua praticità e GitHub è stata storicamente ben posizionata e ha fatto molti sforzi per soddisfare le esigenze della comunità Open Source.

Quindi oggi, ogni volta che cerchi una libreria, il 99% delle volte la troverai su GitHub.

Oltre al codice Open Source, molti sviluppatori ospitano anche repository privati ​​su GitHub per la comodità della piattaforma.

Ora cominciamo con gli importanti concetti specifici di Git che uno sviluppatore deve conoscere.

Problemi di GitHub

I problemi di GitHub sono uno dei tracker di bug più famosi al mondo.

Offrono ai proprietari di un repository la capacità di organizzare, taggare e associare i problemi alle pietre miliari.

Se si apre un problema su un progetto gestito da qualcun altro, rimarrà aperto fino a quando non lo si chiude (ad esempio se si capisce il problema riscontrato) o il proprietario del repository lo chiude.

A volte otterrai una risposta definitiva, altre volte il problema verrà lasciato aperto e taggato con alcune informazioni che lo categorizzano. Quindi lo sviluppatore può tornare su di esso per risolvere il problema o migliorare la base di codice con il tuo feedback.

La maggior parte degli sviluppatori non viene pagata per supportare il proprio codice rilasciato su GitHub, quindi non puoi aspettarti risposte rapide. Ma alcuni repository open source sono pubblicati da aziende che forniscono servizi attorno a quel codice, hanno offerte commerciali per versioni con più funzionalità o utilizzano un'architettura basata su plug-in. E così hanno pagato gli sviluppatori che lavorano al progetto open source.

Codifica sociale

Credito immagine: https://octodex.github.com

Alcuni anni fa, il logo GitHub includeva il motto "social coding".

Cosa significava, ed è ancora rilevante? Certamente è.

Seguire

Con GitHub puoi seguire uno sviluppatore o un repository andando sul profilo dell'utente e facendo clic su "Segui", oppure facendo clic sul pulsante "Guarda" in un repository.

In entrambi i casi, l'attività verrà visualizzata nella dashboard. Seguire un utente o un repository è diverso da Twitter, dove vedi cosa dicono le persone, invece vedi cosa fanno le persone.

Stelle

Una grande caratteristica di GitHub è la possibilità di creare un repository. Questa azione lo includerà nel tuo elenco di "repository speciali", che ti consente di tenere traccia dei progetti che ritieni interessanti e scoprire progetti simili.

È anche uno dei meccanismi di valutazione più importanti, poiché più stelle ha un repository, più è popolare e importante in generale. Ciò si traduce in una maggiore visibilità nei risultati di ricerca.

I grandi progetti possono avere decine di migliaia di stelle.

GitHub ha anche una pagina di tendenza in cui sono presenti i repository che ottengono il maggior numero di stelle in un determinato periodo di tempo (ad esempio, oggi o questa settimana o questo mese).

Entrare in quegli elenchi di tendenza può causare altri effetti di rete come essere presenti su altri siti, solo perché hai più visibilità.

Forchetta

L'ultimo importante indicatore di rete di un progetto è il numero di fork.

Questa è la chiave del funzionamento di GitHub, poiché un fork è la base di una richiesta pull (PR), che è una proposta di modifica. Una persona può eseguire il fork del repository, apportare alcune modifiche e quindi creare una richiesta pull per chiederti di unire tali modifiche.

A volte la persona che crea un repository potrebbe non chiederti mai di unire nulla. Potrebbero rovesciare il tuo repository solo perché gli è piaciuto il tuo codice e hanno deciso di aggiungere qualcosa che non desiderano ricollegare nel repository originale. Un utente può anche correggere un bug che stavano riscontrando e che era specifico per loro.

Popolare = migliore

Tutto sommato, questi sono tutti indicatori chiave della popolarità di un progetto. A parte gli indicatori di cui sopra, la data dell'ultimo commit e il coinvolgimento dell'autore nel tracker dei problemi sono indicazioni utili sull'opportunità o meno di fare affidamento su una libreria o un software.

Pull richieste

Nella sezione precedente ho introdotto cos'è una richiesta pull (PR). Per ripetere, una persona può biforcare il repository, apportare alcune modifiche e quindi creare una richiesta pull per chiederti di unire tali modifiche.

Un progetto potrebbe avere centinaia di PR, ed è generalmente il caso che più un progetto è popolare, più PR ha, come il progetto React:

Una volta che una persona invia una richiesta pull, deve essere rivista dai manutentori principali del progetto.

A seconda dell'ambito della richiesta pull (il numero di modifiche, il numero di elementi interessati dalla modifica o la complessità del codice toccato), il manutentore potrebbe aver bisogno di più o meno tempo per assicurarsi che le modifiche siano compatibili con il progetto.

Un progetto potrebbe avere una cronologia chiara delle modifiche che vogliono introdurre. Il manutentore potrebbe voler semplificare le cose mentre si introduce un'architettura complessa in una richiesta pull.

Ciò significa che una richiesta pull non viene sempre accettata rapidamente e non esiste alcuna garanzia che la richiesta pull verrà mai accettata.

Nell'esempio che ho pubblicato sopra, c'è una richiesta pull nel repository che risale a 1,5 anni fa. E questo succede in tutti i progetti - è abbastanza normale e potrebbe essere dovuto ai motivi che ho menzionato sopra.

Gestione di progetto

Insieme ai problemi, che sono i luoghi in cui gli sviluppatori ricevono feedback dagli utenti, l'interfaccia GitHub offre altre funzionalità volte a fornire alcune funzionalità di gestione del progetto.

Uno di questi è Progetti. È molto nuovo nell'ecosistema e molto raramente utilizzato, ma è una scheda Kanban che aiuta a organizzare i problemi e il lavoro che deve essere fatto.

Il Wiki è pensato per essere usato come documentazione per gli utenti. Uno degli usi più impressionanti del Wiki che ho visto finora è il GitHub Wiki del linguaggio di programmazione Go.

Un altro aiuto popolare nella gestione di progetti sono le pietre miliari. Fa parte della pagina dei problemi e puoi assegnare problemi a traguardi specifici, che potrebbero essere obiettivi di rilascio.

A proposito di rilasci, GitHub ha migliorato la funzionalità dei tag Git introducendo rilasci.

Un tag Git è un puntatore a un commit specifico e, se fatto in modo coerente, ti aiuta a tornare alla versione precedente del tuo codice senza fare riferimento a commit specifici.

Una versione di GitHub si basa sui tag Git e rappresenta una versione completa del codice, insieme a file Zip, note di rilascio e risorse binarie che potrebbero rappresentare una versione completamente funzionante del prodotto finale del codice.

Mentre un tag Git può essere creato a livello di codice (ad esempio, utilizzando il programma git a riga di comando), la creazione di una versione GitHub è un processo manuale che avviene attraverso l'interfaccia utente di GitHub. Fondamentalmente dici a GitHub di creare una nuova versione e dici loro a quale tag vuoi applicare quella versione.

Il confronto si impegna

GitHub offre molti strumenti per lavorare con il tuo codice.

Una delle cose più importanti che potresti voler fare è confrontare un ramo con un altro. Oppure potresti voler confrontare l'ultimo commit con la versione attualmente in uso per vedere quali modifiche sono state apportate nel tempo.

GitHub ti consente di farlo con la vista di confronto: basta aggiungere / confrontare alla fine del nome del repository.

Ad esempio, https://github.com/facebook/react/compare

Nella figura seguente, confronto l'ultima versione di React v15.x con l'ultima versione di v16.0.0-rc disponibile al momento in cui scrivo per vedere cosa è cambiato.

Questa vista mostra i commit effettuati tra due versioni (o tag o riferimenti di commit) che sono stati modificati e la differenza effettiva, se il numero di modifiche è inferiore a un importo ragionevole.

Webhook e servizi

GitHub offre molte funzionalità che aiutano il flusso di lavoro degli sviluppatori, come webhook e servizi.

Webhooks

I webhook consentono di eseguire il ping di servizi esterni quando si verificano determinati eventi nel repository, ad esempio quando viene inviato il codice, viene creato un fork o viene creato o eliminato un tag.

Quando si verifica un evento, GitHub invia una richiesta POST all'URL che gli viene comunicato di utilizzare.

Un utilizzo comune di questa funzione è il ping di un server remoto per recuperare l'ultimo codice da GitHub quando inviamo un aggiornamento dal nostro computer locale.

Spingiamo su GitHub, GitHub dice al server che abbiamo inviato e il server estrae da GitHub.

Servizi

I servizi GitHub e le nuove app GitHub sono integrazioni di terze parti che migliorano l'esperienza degli sviluppatori o forniscono un servizio all'utente.

Ad esempio, è possibile impostare un runner di test per eseguire i test automaticamente ogni volta che si spingono alcuni nuovi commit, utilizzando TravisCI.

È possibile impostare l'integrazione continua utilizzando CircleCI.

È possibile creare un'integrazione Codeclimate che analizzi il codice e fornisca un rapporto di "Debito tecnico" e copertura del test.

Parole finali

GitHub è uno strumento e un servizio straordinari da sfruttare, un vero gioiello nel set di strumenti per sviluppatori di oggi. Questo tutorial ti aiuterà a iniziare, ma la vera esperienza di lavorare su progetti GitHub open source (o chiusi) è qualcosa da non perdere.

Ti interessa imparare JavaScript? Ottieni il mio ebook gratuito su jshandbook.com