HomeBlogGitHub: cos’è e come funziona
API Basics

GitHub: cos’è e come funziona

Cos'è GitHub, come si usa e perché è diventato il più grande hub di progetti open source al mondo

Nato come semplice strumento per ospitare progetti software open source, GitHub oggi rappresenta la più grande comunità collaborativa mai esistita, nonché l’archivio che custodisce la storia delle tecnologie digitali della nostra epoca.

Attualmente, quasi ogni riga di codice scritta passa almeno una volta per i server di GitHub, una piattaforma che ospita il lavoro di oltre 100 milioni di sviluppatori e più di 400 milioni di progetti.

Cos’è GitHub?

GitHub è una piattaforma online di proprietà di Microsoft che permette agli sviluppatori di archiviare, gestire e tracciare le modifiche su progetti di codice sorgente collaborando con altri programmatori.

GitHub è basato su Git, un software di controllo versione distribuito creato da Linus Torvalds nel 2005 per coordinare in maniera efficiente il lavoro delle migliaia di collaboratori attivi sul kernel di Linux - da poco costretti a fare a meno del sistema BitKeeper, in uso fino a quel momento.

L’esigenza “personale” di Torvalds si è ben presto trasformata in una piattaforma che ospita oltre 100 milioni di sviluppatori e contiene più di 400 milioni di repository. Lanciato nel 2008, oggi GitHub è il più grande e diffuso hub di progetti open source al mondo.

La differenza tra Git e GitHub

La differenza sostanziale tra Git e GitHub è data dal fatto che Git è un software che funziona in locale, mentre GitHub è uno dei servizi di hosting cloud che utilizza la tecnologia messa a punto da Torvalds.

Git è un software di controllo versione locale che tiene traccia della storia dei file scattando una foto al codice ogni volta che si esegue una modifica (commit). Una delle sue caratteristiche principali è che permette di recuperare qualsiasi versione passata dei file e di creare rami di lavoro paralleli (branch) per testare nuovo codice senza toccare la versione principale del progetto.

GitHub, dicevamo, è il sito web di proprietà di Microsoft che ospita i progetti Git online per metterli a disposizione di tutti gli altri sviluppatori che devono/vogliono collaborare. Lo stesso servizio è offerto anche da altre piattaforme come GitLab e Bitbucket, ma GitHub può essere tranquillamente considerato “lo standard”. 

La piattaforma è infatti riuscita in breve tempo a diventare un punto di riferimento per l’intera comunità dell’open software (per esempio, offrendo spazio illimitato e gratuito per i progetti pubblici e permettendo agli sviluppatori di avere una pagina profilo che raccogliesse tutti i loro contributi in una sorta di portfolio pubblico).

GitHub: a cosa serve?

Le funzioni principali di GitHub possono essere così riassunte:

  • Controllo versione (versioning GitHub): è lo scopo essenziale di Git, e consiste nel tenere traccia di ogni modifica al codice permettendo di tornare a qualunque versione precedente e di lavorare in parallelo sullo stesso progetto senza interferire con il codice principale;
  • Repository e hosting: GitHub conserva e rende accessibile via web il codice di milioni di progetti (repository), dai software proprietari delle piccole aziende al codice (open source) che ha portato l’uomo sulla Luna con la missione Apollo 11;
  • Collaborazione: mette a disposizione degli sviluppatori strumenti che permettono a centinaia di sviluppatori di lavorare sullo stesso progetto contemporaneamente senza sovrascrivere il lavoro altrui, come le “pull requests” (che servono a proporre modifiche e farle revisionare) e le “issues” per la gestione dei bug.

Più recentemente, GitHub ha assunto anche un’altra funzione strategica: con l’integrazione di GitHub Copilot, un’intelligenza artificiale basata sui modelli di OpenAI addestrata sull’immenso archivio di GitHub, la piattaforma si è trasformata in un vero e proprio assistente alla programmazione capace di suggerire codice in tempo reale, correggere gli errori e automatizzare alcuni compiti particolarmente ripetitivi o complessi.

GitHub: come funziona?

Prima di GitHub, contribuire a un progetto altrui implicava email e patch manuali. Oggi, per contribuire, è sufficiente prendere il progetto di un altro, copiarlo (fork), modificarlo e chiedere all’autore di accettare le modifiche (pull request).

Ma vediamo meglio come funziona. A differenza di altri sistemi, Git funziona tramite snapshot: ogni volta che c’è una modifica (commit) scatta un’istantanea completa dell’intero stato del progetto in quel momento. 

Ogni snapshot viene associato a un ID univoco (hash) calcolato sul contenuto del codice, che include anche autore, data e ora e messaggi. Questo funzionamento, tipico di Git, rende praticamente impossibile corrompere o alterare il software. Anche la modifica di un solo bit, infatti, cambierebbe la “firma” dello snapshot.

Un’altra caratteristica centrale del funzionamento di GitHub è nel sistema di puntatori (branching), che poi è quello che permette a centinaia di persone di lavorare insieme sullo stesso progetto software. Il puntatore Main è un’etichetta che indica l’ultima versione ufficiale del software. Accanto a questo, possono esistere altri segnalibri che puntano ai branch, ovvero ai rami “sperimentali” del software che ancora non fanno parte del progetto principale.

Questi segnalibro, che si aggiornano automaticamente nel momento del commit, permettono di portare avanti diverse sezioni del software in parallelo senza che il lavoro di diversi sviluppatori interferisca con quello degli altri.

Come usare GitHub

Per iniziare a usare GitHub è necessario come prima cosa creare un account su github.com e installare Git sul proprio pc. Dopodiché si può scegliere tra tre diverse modalità di interazione:

  • Da riga di comando, usando i comandi nel terminale;
  • Tramite l’app GitHub desktop, che offre un’interfaccia grafica molto facile da usare, ideale per chi non ha dimestichezza con Git;
  • Direttamente sull’interfaccia web, che permette di eseguire buona parte delle azioni fondamentali (creare repository, caricare file, “forkare”, etc.).

In ogni caso, tutto inizia dal pc dello sviluppatore, dove viene creata la cartella/repository Git del progetto. Git tiene traccia di tutte le modifiche apportate al codice. Quando il progetto è pronto per essere condiviso, si carica (push) su GitHub, che quindi contiene una copia della repository su cui possono lavorare tutti i diversi collaboratori.

Il lavoro cooperativo avviene attraverso tre strumenti chiave:

 

  • Fork: serve per copiare un progetto per poterci lavorare senza interferire con l’originale;
  • Pull request: se il fork presenta miglioramenti rispetto al codice originale, si chiede all’autore di approvare le modifiche apportate;
  • Merge: le modifiche approvate vengono “fuse” automaticamente nel codice di partenza, e il branch viene integrato nel Main. 

 

 

Cos'è GitHub e come si usa
Condividi su