In questo articolo, ti metterò al passo con tutto ciò che devi sapere su GitHub Codespaces, che vale davvero la pena imparare perché sta cambiando il modo in cui lavorano gli sviluppatori, offrendo un ambiente di sviluppo immediato e basato sul cloud. Vedremo il ciclo di vita di GitHub Codespaces, così potrai capire le diverse fasi del processo. Inoltre, vedremo come personalizzare il tuo codespace in modo che si adatti al tuo stile di lavoro e alle tue esigenze.
Non preoccuparti se non conosci ancora Git e GitHub. Puoi seguire il nostro corso GitHub Concepts per imparare a creare un repository, un README e molte altre nozioni fondamentali. Inoltre, non perdere il nostro corso Foundations of Git per iniziare con le basi del controllo versione.
Che cos'è un GitHub Codespace?
Un GitHub Codespace è un ambiente di sviluppo basato sul cloud che consente agli sviluppatori di scrivere, testare ed effettuare il debug del codice direttamente nel cloud, eliminando la necessità di configurazioni locali complesse. Quando crei un codespace, viene avviato un contenitore Docker in esecuzione su una macchina virtuale, preconfigurato con gli strumenti, le librerie e le dipendenze necessarie per il progetto. Una caratteristica notevole di GitHub Codespaces è anche l'integrazione con IDE come Visual Studio Code, come vedremo più avanti in questo articolo.

Workflow di un codespace. Fonte: GitHub
Comprendere il ciclo di vita di GitHub Codespaces
Capire GitHub Codespaces richiede di comprendere il ciclo di vita di un codespace. Ogni fase prevede azioni specifiche che influiscono sulla tua esperienza o su come utilizzi le risorse.
Fase di creazione
Hai due opzioni principali quando crei un codespace: partire da un progetto esistente oppure avviarne uno nuovo. Se stai lavorando a un progetto esistente, probabilmente creerai un codespace da un branch del repository esistente, e il codespace sarà collegato allo specifico branch che selezioni. Se stai avviando un nuovo progetto, puoi invece usare un template. Un template è utile perché fornisce un ambiente preconfigurato per aiutarti ad avviare un progetto.
Nota: anche se i template sono usati principalmente per iniziare nuovi progetti, se stai lavorando a un progetto esistente e vuoi usare impostazioni specifiche di un template, puoi applicarne la configurazione per migliorare il tuo ambiente. Anche questa è un'opzione.
Trovare Codespaces nel menu di GitHub. Immagine dell’autore
Per progettazione, l'intero workflow e l'interazione con Git e i branch è simile al flusso di lavoro che avresti lavorando sulla tua macchina locale. In entrambi i casi, pubblichi il progetto su un repository GitHub e devi assicurarti di fare push delle modifiche su GitHub.
Fase di rebuilding
Creare un nuovo codespace è un'alternativa al rebuilding di un codespace. In alcune situazioni, però, ricostruire un codespace offre dei vantaggi, quindi vale la pena capire la differenza. Per esempio, il rebuilding ti permette di applicare aggiornamenti alla configurazione del container senza perdere il lavoro all'interno della directory /workspaces. Inoltre, quando esegui il rebuilding, GitHub Codespaces riutilizza le immagini in cache dalle build precedenti, velocizzando il processo ed evitando di reinstallare le librerie.
Ricostruire il container. Immagine dell’autore
Fase di arresto
Arrestiamo un codespace perché, quando l'ambiente è in pausa, non consuma risorse, e questo aiuta a gestire i costi. Ricordiamo che un codespace in esecuzione comporta addebiti di CPU, mentre un codespace arrestato comporta solo costi di storage.
È importante sapere che, se non arresti esplicitamente un codespace, questo continuerà a funzionare finché non andrà in timeout per inattività. Il periodo di timeout è una personalizzazione che possiamo scegliere, e che tratterò nella prossima sezione. È anche importante sapere che chiudere semplicemente una scheda del browser non arresta il codespace. È un errore comune.

Arrestare un codespace. Immagine dell’autore
Fase di eliminazione
Una volta terminato il lavoro su un progetto, elimina il codespace per evitare costi di archiviazione non necessari. È sempre una buona pratica mantenere il tuo workspace in ordine.
Puoi fare push delle tue modifiche su un branch remoto prima di eliminare, oppure scartare del tutto eventuali modifiche non confermate. Inoltre, i codespace che restano inattivi per un periodo stabilito verranno eliminati automaticamente. Questo è pensato per aiutare gli sviluppatori a gestire lo storage e i costi. La scelta del periodo prima dell'eliminazione automatica è un'altra personalizzazione che vedremo sotto.

Eliminare un codespace. Immagine dell’autore
Personalizzare GitHub Codespaces
Una grande qualità di GitHub Codespaces è l'alta personalizzazione. Puoi scegliere una configurazione o selezionare strumenti specifici. In linea generale, possiamo dividere le personalizzazioni in due categorie: quelle progettate per personalizzare il tuo workspace in base al tuo stile di lavoro, e quelle pensate per aiutarti a gestire le risorse e contenere i costi.
Personalizzare l'ambiente del tuo codespace
La prima cosa da considerare è come personalizzare il nostro ambiente. Gli sviluppatori apprezzeranno le personalizzazioni che si adattano al loro specifico flusso di lavoro. La maggior parte di queste personalizzazioni è accessibile cliccando sulla tua immagine del profilo per aprire il menu delle impostazioni, come puoi vedere nell'immagine qui sotto.
Apertura del menu impostazioni. Immagine dell’autore
Settings Sync
La prima cosa che potresti voler fare è assicurarti che le impostazioni siano coerenti tra la versione desktop di VS Code e il client web. Puoi farlo abilitando Settings Sync, così qualsiasi modifica o personalizzazione fatta in un posto viene applicata anche all'altro. È una funzione molto comoda per chi deve passare da un ambiente all'altro.

Abilitare Settings Sync. Immagine dell’autore
Possono verificarsi conflitti se ci sono differenze tra le impostazioni nel cloud e quelle locali o se una delle tue macchine è rimasta offline per un po'. In caso di conflitti, potrai scegliere di sovrascrivere usando le impostazioni locali o quelle cloud, oppure selezionare più nello specifico quali impostazioni mantenere.
Rinominare un codespace
GitHub assegna un nome visualizzato a ogni nuovo codespace. Probabilmente non vorrai tenere il nome generato automaticamente, soprattutto se hai più codespace attivi. Io cerco di scegliere un nome che indichi lo scopo del progetto e mi aiuti a orientarmi facilmente.
Rinominare un codespace. Immagine dell’autore
Sappi che, oltre al nome visualizzato, ogni codespace ha anche un nome permanente che non puoi cambiare. Questo nome permanente è in pratica il nome visualizzato con una serie di caratteri generati casualmente alla fine. Lo scopo è garantire che il codespace abbia un identificatore univoco. Presta attenzione al nome permanente se prevedi di usare l'interfaccia a riga di comando di GitHub. È utile anche nel caso tu debba contattare il team di supporto di GitHub per qualsiasi motivo. Puoi trovare il nome permanente aprendo il codespace nel browser, dove il sottodominio nel browser corrisponde al nome permanente.
Cambiare la shell
Se apri un nuovo codespace nell'app desktop di VS Code, la shell che si apre dipende dalle tue impostazioni locali. Se usi il client web di VS Code, vedrai bash aperta per impostazione predefinita. Puoi sempre cambiare shell se preferisci, ad esempio zsh o fish, e puoi applicare questa modifica nelle impostazioni in modo che si apra la shell preferita ogni volta.
Cambiare la shell. Immagine dell’autore
Impostare l'editor predefinito
Puoi anche scegliere il tuo editor di codice preferito. Per esempio, se ti piace davvero Visual Studio Code come a me, puoi configurare le impostazioni per avviare VS Code ogni volta che crei o apri un codespace. Puoi scegliere tra VS Code, JetBrains e JupyterLab.
Scegliere un editor predefinito. Immagine dell’autore
Gestire risorse e prestazioni
Vediamo ora alcune impostazioni relative all'allocazione delle risorse e alle prestazioni.
Cambiare il tipo di macchina
Puoi selezionare o modificare l'hardware sottostante che alimenta il tuo ambiente. Ad esempio, puoi passare a una macchina con più CPU, RAM o storage. In questo modo, puoi assicurarti che il tuo codespace abbia risorse sufficienti per gestire qualsiasi attività su cui stai lavorando, ma allo stesso tempo evitare di esagerare. È importante prestare attenzione al tipo di macchina remota che stai usando perché i tipi appartengono a diversi livelli di fatturazione.
Selezionare un tipo di macchina preferito. Immagine dell’autore
Sappi che puoi cambiare il tipo di macchina solo dei codespace che sono pubblicati; quindi, se crei un codespace da un template non collegato a un repository GitHub, non avrai l'opzione per cambiare il tipo di macchina. Inoltre, se fai parte di un'organizzazione, potresti non avere l'opzione di cambiare il tipo di macchina, a seconda delle regole della policy vigente.
Personalizzare il periodo di timeout
Per impostazione predefinita, GitHub Codespaces si arresta automaticamente dopo 30 minuti, ma puoi modificare questo valore nelle impostazioni personali. Il periodo massimo di timeout è di quattro ore. È importante prestare attenzione all'uso delle risorse ed evitare che i codespace inattivi restino in esecuzione quando non serve.
Modificare il periodo di timeout. Immagine dell’autore
Configurare l'eliminazione automatica
I codespace inattivi verranno eliminati dopo un certo periodo di tempo. Questo è pensato come una comodità per liberare risorse. Puoi configurare per quanto tempo i tuoi codespace arrestati vengono mantenuti prima di essere eliminati, ma tieni presente che il periodo massimo di conservazione è di 30 giorni.
Impostare il periodo di conservazione. Immagine dell’autore
Scegliere la regione geografica
Puoi impostare una regione geografica predefinita in cui ospitare i tuoi GitHub Codespaces visitando le impostazioni del profilo. Selezionare una regione più vicina alla tua posizione può migliorare le prestazioni, ad esempio tempi di caricamento più rapidi e minore latenza, e ti permette anche di personalizzare dove vengono archiviati i tuoi dati per rispettare eventuali requisiti di residenza dei dati.
Cambiare la regione. Immagine dell’autore
GitHub.dev vs GitHub Codespaces
Se conosci GitHub, potresti conoscere anche GitHub.dev e potresti chiederti qual è la differenza tra GitHub.dev e GitHub Codespaces.
Per cominciare, GitHub.dev è un editor di codice leggero, basato su browser, mentre GitHub Codespaces fornisce un ambiente di sviluppo completo che ti consente di eseguire e testare il codice. In altre parole, poiché GitHub.dev ha uno scopo limitato, è pensato principalmente per modifiche al codice.
GitHub Codespaces si integra anche con IDE come VS Code, e le modifiche alle impostazioni negli ambienti cloud e locali possono essere sincronizzate tramite la funzione Settings Sync, come abbiamo visto. Gli sviluppatori noteranno anche che gli ambienti GitHub.dev non sono persistenti, il che significa che il tuo lavoro non viene salvato tra una sessione e l'altra a meno che tu non effettui manualmente il commit delle modifiche nel repository. Con GitHub Codespaces, invece, le modifiche vengono salvate anche se chiudi o arresti il tuo codespace.
In sintesi, dovremmo considerare GitHub Codespaces come la scelta per progetti più grandi e workflow più complessi, perché offre la potenza di un ambiente di sviluppo senza la necessità di configurazione o gestione delle risorse sulla tua macchina personale.
| Caratteristica | GitHub.dev | GitHub Codespaces |
|---|
| Scopo | Editor di codice basato su browser per modifiche rapide al codice ospitato in repository GitHub | Ambiente di sviluppo completo e basato sul cloud |
| Ambiente | Nessuna configurazione necessaria; accesso rapido via browser | Container basato su Docker con strumenti, librerie e dipendenze preconfigurati |
| Integrazione con IDE | Esperienza di editing limitata con editor integrato | Supporta Visual Studio Code, JetBrains e JupyterLab |
| Personalizzazione | Personalizzazione minima | Altamente personalizzabile |
| Gestione delle risorse | Nessuna gestione delle risorse richiesta | Gli utenti gestiscono costi CPU, costi di storage e impostano i timeout |
| Deployment | Non pensato per il deployment | Pieno supporto ai workflow di deployment |
| Disponibilità | Disponibile per qualsiasi repository GitHub | Richiede abbonamento e maggiori risorse |
Conclusione
Man mano che ci muoviamo verso un ambiente di lavoro distribuito e flessibile, strumenti come GitHub Codespaces avranno un ruolo importante nel plasmare il futuro dello sviluppo software. In particolare, GitHub Codepspaces risolve alcune questioni principali: ti permette di iniziare a programmare subito, indipendentemente dalle specifiche della tua macchina locale; ti dà accesso a un ambiente di sviluppo da qualsiasi dispositivo; e ti consente di collaborare con i membri del team in ambienti identici.
Per approfondire, leggi i seguenti articoli di DataCamp:
Infine, ascolta l'episodio del podcast di DataCamp, The Future of Programming with Kyle Daigle, COO at GitHub. Parla dello stato del coding assistito dall'IA e di come vede evolvere il settore.
In questo articolo, ti metterò al passo con tutto ciò che devi sapere su GitHub Codespaces, che vale davvero la pena imparare perché sta cambiando il modo in cui lavorano gli sviluppatori, offrendo un ambiente di sviluppo immediato e basato sul cloud. Vedremo il ciclo di vita di GitHub Codespaces, così potrai capire le diverse fasi del processo. Inoltre, vedremo come personalizzare il tuo codespace in modo che si adatti al tuo stile di lavoro e alle tue esigenze.
Non preoccuparti se non conosci ancora Git e GitHub. Puoi seguire il nostro corso GitHub Concepts per imparare a creare un repository, un README e molte altre nozioni fondamentali. Inoltre, non perdere il nostro corso Foundations of Git per iniziare con le basi del controllo versione.
Che cos'è un GitHub Codespace?
Un GitHub Codespace è un ambiente di sviluppo basato sul cloud che consente agli sviluppatori di scrivere, testare ed effettuare il debug del codice direttamente nel cloud, eliminando la necessità di configurazioni locali complesse. Quando crei un codespace, viene avviato un contenitore Docker in esecuzione su una macchina virtuale, preconfigurato con gli strumenti, le librerie e le dipendenze necessarie per il progetto. Una caratteristica notevole di GitHub Codespaces è anche l'integrazione con IDE come Visual Studio Code, come vedremo più avanti in questo articolo.
Workflow di un codespace. Fonte: GitHub
Comprendere il ciclo di vita di GitHub Codespaces
Capire GitHub Codespaces richiede di comprendere il ciclo di vita di un codespace. Ogni fase prevede azioni specifiche che influiscono sulla tua esperienza o su come utilizzi le risorse.
Fase di creazione
Hai due opzioni principali quando crei un codespace: partire da un progetto esistente oppure avviarne uno nuovo. Se stai lavorando a un progetto esistente, probabilmente creerai un codespace da un branch del repository esistente, e il codespace sarà collegato allo specifico branch che selezioni. Se stai avviando un nuovo progetto, puoi invece usare un template. Un template è utile perché fornisce un ambiente preconfigurato per aiutarti ad avviare un progetto.
Nota: anche se i template sono usati principalmente per iniziare nuovi progetti, se stai lavorando a un progetto esistente e vuoi usare impostazioni specifiche di un template, puoi applicarne la configurazione per migliorare il tuo ambiente. Anche questa è un'opzione.
Per progettazione, l'intero workflow e l'interazione con Git e i branch è simile al flusso di lavoro che avresti lavorando sulla tua macchina locale. In entrambi i casi, pubblichi il progetto su un repository GitHub e devi assicurarti di fare push delle modifiche su GitHub.
Fase di rebuilding
Creare un nuovo codespace è un'alternativa al rebuilding di un codespace. In alcune situazioni, però, ricostruire un codespace offre dei vantaggi, quindi vale la pena capire la differenza. Per esempio, il rebuilding ti permette di applicare aggiornamenti alla configurazione del container senza perdere il lavoro all'interno della directory /workspaces. Inoltre, quando esegui il rebuilding, GitHub Codespaces riutilizza le immagini in cache dalle build precedenti, velocizzando il processo ed evitando di reinstallare le librerie.
Fase di arresto
Arrestiamo un codespace perché, quando l'ambiente è in pausa, non consuma risorse, e questo aiuta a gestire i costi. Ricordiamo che un codespace in esecuzione comporta addebiti di CPU, mentre un codespace arrestato comporta solo costi di storage.
È importante sapere che, se non arresti esplicitamente un codespace, questo continuerà a funzionare finché non andrà in timeout per inattività. Il periodo di timeout è una personalizzazione che possiamo scegliere, e che tratterò nella prossima sezione. È anche importante sapere che chiudere semplicemente una scheda del browser non arresta il codespace. È un errore comune.
Arrestare un codespace. Immagine dell’autore
Fase di eliminazione
Una volta terminato il lavoro su un progetto, elimina il codespace per evitare costi di archiviazione non necessari. È sempre una buona pratica mantenere il tuo workspace in ordine.
Puoi fare push delle tue modifiche su un branch remoto prima di eliminare, oppure scartare del tutto eventuali modifiche non confermate. Inoltre, i codespace che restano inattivi per un periodo stabilito verranno eliminati automaticamente. Questo è pensato per aiutare gli sviluppatori a gestire lo storage e i costi. La scelta del periodo prima dell'eliminazione automatica è un'altra personalizzazione che vedremo sotto.
Eliminare un codespace. Immagine dell’autore
Personalizzare GitHub Codespaces
Una grande qualità di GitHub Codespaces è l'alta personalizzazione. Puoi scegliere una configurazione o selezionare strumenti specifici. In linea generale, possiamo dividere le personalizzazioni in due categorie: quelle progettate per personalizzare il tuo workspace in base al tuo stile di lavoro, e quelle pensate per aiutarti a gestire le risorse e contenere i costi.
Personalizzare l'ambiente del tuo codespace
La prima cosa da considerare è come personalizzare il nostro ambiente. Gli sviluppatori apprezzeranno le personalizzazioni che si adattano al loro specifico flusso di lavoro. La maggior parte di queste personalizzazioni è accessibile cliccando sulla tua immagine del profilo per aprire il menu delle impostazioni, come puoi vedere nell'immagine qui sotto.
Settings Sync
La prima cosa che potresti voler fare è assicurarti che le impostazioni siano coerenti tra la versione desktop di VS Code e il client web. Puoi farlo abilitando Settings Sync, così qualsiasi modifica o personalizzazione fatta in un posto viene applicata anche all'altro. È una funzione molto comoda per chi deve passare da un ambiente all'altro.
Abilitare Settings Sync. Immagine dell’autore
Possono verificarsi conflitti se ci sono differenze tra le impostazioni nel cloud e quelle locali o se una delle tue macchine è rimasta offline per un po'. In caso di conflitti, potrai scegliere di sovrascrivere usando le impostazioni locali o quelle cloud, oppure selezionare più nello specifico quali impostazioni mantenere.
Rinominare un codespace
GitHub assegna un nome visualizzato a ogni nuovo codespace. Probabilmente non vorrai tenere il nome generato automaticamente, soprattutto se hai più codespace attivi. Io cerco di scegliere un nome che indichi lo scopo del progetto e mi aiuti a orientarmi facilmente.
Sappi che, oltre al nome visualizzato, ogni codespace ha anche un nome permanente che non puoi cambiare. Questo nome permanente è in pratica il nome visualizzato con una serie di caratteri generati casualmente alla fine. Lo scopo è garantire che il codespace abbia un identificatore univoco. Presta attenzione al nome permanente se prevedi di usare l'interfaccia a riga di comando di GitHub. È utile anche nel caso tu debba contattare il team di supporto di GitHub per qualsiasi motivo. Puoi trovare il nome permanente aprendo il codespace nel browser, dove il sottodominio nel browser corrisponde al nome permanente.
Cambiare la shell
Se apri un nuovo codespace nell'app desktop di VS Code, la shell che si apre dipende dalle tue impostazioni locali. Se usi il client web di VS Code, vedrai bash aperta per impostazione predefinita. Puoi sempre cambiare shell se preferisci, ad esempio zsh o fish, e puoi applicare questa modifica nelle impostazioni in modo che si apra la shell preferita ogni volta.
Impostare l'editor predefinito
Puoi anche scegliere il tuo editor di codice preferito. Per esempio, se ti piace davvero Visual Studio Code come a me, puoi configurare le impostazioni per avviare VS Code ogni volta che crei o apri un codespace. Puoi scegliere tra VS Code, JetBrains e JupyterLab.
Gestire risorse e prestazioni
Vediamo ora alcune impostazioni relative all'allocazione delle risorse e alle prestazioni.
Cambiare il tipo di macchina
Puoi selezionare o modificare l'hardware sottostante che alimenta il tuo ambiente. Ad esempio, puoi passare a una macchina con più CPU, RAM o storage. In questo modo, puoi assicurarti che il tuo codespace abbia risorse sufficienti per gestire qualsiasi attività su cui stai lavorando, ma allo stesso tempo evitare di esagerare. È importante prestare attenzione al tipo di macchina remota che stai usando perché i tipi appartengono a diversi livelli di fatturazione.
Sappi che puoi cambiare il tipo di macchina solo dei codespace che sono pubblicati; quindi, se crei un codespace da un template non collegato a un repository GitHub, non avrai l'opzione per cambiare il tipo di macchina. Inoltre, se fai parte di un'organizzazione, potresti non avere l'opzione di cambiare il tipo di macchina, a seconda delle regole della policy vigente.
Personalizzare il periodo di timeout
Per impostazione predefinita, GitHub Codespaces si arresta automaticamente dopo 30 minuti, ma puoi modificare questo valore nelle impostazioni personali. Il periodo massimo di timeout è di quattro ore. È importante prestare attenzione all'uso delle risorse ed evitare che i codespace inattivi restino in esecuzione quando non serve.
Configurare l'eliminazione automatica
I codespace inattivi verranno eliminati dopo un certo periodo di tempo. Questo è pensato come una comodità per liberare risorse. Puoi configurare per quanto tempo i tuoi codespace arrestati vengono mantenuti prima di essere eliminati, ma tieni presente che il periodo massimo di conservazione è di 30 giorni.
Scegliere la regione geografica
Puoi impostare una regione geografica predefinita in cui ospitare i tuoi GitHub Codespaces visitando le impostazioni del profilo. Selezionare una regione più vicina alla tua posizione può migliorare le prestazioni, ad esempio tempi di caricamento più rapidi e minore latenza, e ti permette anche di personalizzare dove vengono archiviati i tuoi dati per rispettare eventuali requisiti di residenza dei dati.
GitHub.dev vs GitHub Codespaces
Se conosci GitHub, potresti conoscere anche GitHub.dev e potresti chiederti qual è la differenza tra GitHub.dev e GitHub Codespaces.
Per cominciare, GitHub.dev è un editor di codice leggero, basato su browser, mentre GitHub Codespaces fornisce un ambiente di sviluppo completo che ti consente di eseguire e testare il codice. In altre parole, poiché GitHub.dev ha uno scopo limitato, è pensato principalmente per modifiche al codice.
GitHub Codespaces si integra anche con IDE come VS Code, e le modifiche alle impostazioni negli ambienti cloud e locali possono essere sincronizzate tramite la funzione Settings Sync, come abbiamo visto. Gli sviluppatori noteranno anche che gli ambienti GitHub.dev non sono persistenti, il che significa che il tuo lavoro non viene salvato tra una sessione e l'altra a meno che tu non effettui manualmente il commit delle modifiche nel repository. Con GitHub Codespaces, invece, le modifiche vengono salvate anche se chiudi o arresti il tuo codespace.
In sintesi, dovremmo considerare GitHub Codespaces come la scelta per progetti più grandi e workflow più complessi, perché offre la potenza di un ambiente di sviluppo senza la necessità di configurazione o gestione delle risorse sulla tua macchina personale.
Conclusione
Man mano che ci muoviamo verso un ambiente di lavoro distribuito e flessibile, strumenti come GitHub Codespaces avranno un ruolo importante nel plasmare il futuro dello sviluppo software. In particolare, GitHub Codepspaces risolve alcune questioni principali: ti permette di iniziare a programmare subito, indipendentemente dalle specifiche della tua macchina locale; ti dà accesso a un ambiente di sviluppo da qualsiasi dispositivo; e ti consente di collaborare con i membri del team in ambienti identici.
Per approfondire, leggi i seguenti articoli di DataCamp:
Infine, ascolta l'episodio del podcast di DataCamp, The Future of Programming with Kyle Daigle, COO at GitHub. Parla dello stato del coding assistito dall'IA e di come vede evolvere il settore.