Negli ultimi 6 mesi ho avuto modo di provare estensivamente Nova, nuovo text editor per macOS di casa Panic.

L'ho utilizzato come IDE principale per tutti i progetti che ho seguito e ho anche avuto modo di sviluppare un paio di estensioni. Oggi vorrei raccontarti la mia esperienza d'uso fin qui e quello che potresti aspettarti se decidessi di dare a Nova una chance. Iniziamo.

Introduzione

Per prima cosa diamo un po' di contesto.

Nova è un IDE che punta a un mercato general purpose al pari di Atom, Sublime Text e VS Code. L'applicazione è stata in closed beta per diversi mesi e rilasciata ufficialmente al pubblico il 16 settembre 2020.

Panic, la software house, è una tra le più ammirate aziende del settore, quantomeno nel mondo macOS e iOS. Potresti averne sentito parlare per Transmit (de-facto client FTP per Mac), Coda, Prompt o Code Editor. Da qualche anno sono anche entrati nel mondo dei videogame con il ruolo di produttori. Se Firewatch e Untitled Goose Game non ti dicono niente, beh... Attesissimo anche il loro prossimo progetto, Play Date. Andate a vederlo, non dico altro...

Nova non è la prima esperienza di Panic nel mondo dei text editor. Coda infatti è stato per anni un valido alleato di diversi sviluppatori. Da qualche tempo però si sentiva la necessità di un aggiornamento che lo riportasse al passo con le ultime novità, specialmente dei tool a supporto dello sviluppo. Nova è la risposta di Panic a queste necessità. Ciò che stupisce è che non si sono limitati a un aggiornamento, sono ripartiti proprio da zero.

Per evitare brutte sorprese alla fine mettiamo direttamente sul piatto quello che per molti potrebbe essere lo scoglio maggiore da superare, il prezzo. Nova richiede un primo acquisto di $99 per un anno di aggiornamenti. In seguito si può decidere se rinnovare un altro anno per $49 o tenere il prodotto all'ultima versione a cui abbiamo avuto diritto. Un modello simile a quello di altre app, ad esempio Sketch.

Il fatto che sia solo per macOS e che non sia gratuita è sicuramente un limite per molti, specialmente se si è abituati a software Open Source come Atom o VS Code. Tuttavia ritengo che ci siano valide ragioni per considerare tale acquisto e adesso proverò a citarne alcune.

Feature

Ovviamente non c'è bisogno di dire che Nova ha tutte le feature di base che ci si aspetterebbe da un text editor: syntax highlighting, tree view, git, split view, multi cursor, ecc. Passiamo quindi alle funzioni meno scontate.

App nativa

Se sei come me, sono certo che crederai che le tecnologie web siano fantastiche, ma che non siano adatte a ogni singola finalità. Non sono un fatico del nativo, credo solo che per certi casi d'uso tali soluzioni siano più adatte. Apprezzo prodotti come Basecamp o Notion, ma sceglierò sempre Sketch rispetto a Figma, così come sceglierò sempre Keynote rispetto a Google Slides. Ogni volta che devo fare qualcosa di più avanzato della gestione di contenuti cerco di trovare una soluzione nativa. Nova è una soluzione nativa.

Brand

Nova è l'unico IDE che io abbia mai visto ad integrare elementi di branding in ogni angolo dell'interfaccia. In genere questo tipo di applicazioni hanno a malapena un logo e una landing page per finalità di marketing. Nova, al contrario, punta tutto sul suo brand e tono di voce estremamente caratteristici. Ogni icona, descrizione e bottone contribuisce all'atmosfera unica di Nova.

Riuscire a urlare così forte e al tempo stesso senza risultare opprimente è ciò che innalza Nova a un livello superiore. Non è più solo un tool per portare a termine il lavoro.

Nova - Brand

Task

I Task sono delle azioni configurabili per ogni progetto. Forniscono un accesso rapido a comandi che normalmente avresti dovuto lanciare da terminale. Ogni progetto può avere diversi "gruppi" di Task, ogni gruppo può contenere tre tipi di azioni: build, run e clean. Un esempio di utilizzo è associare queste tre azioni a dei relativi script NPM.

Una volta configurati i Task appaiono nella Toolbar e ovviamente hanno delle shortcut associate.

I Task generano anche dei Report. Si può scegliere di visualizzare il Report al lancio, al completamento, al crash, ecc. In alternativa tutti i Report generati possono essere visualizzati nel panello Reports raggiungibile dalla Sidebar.

File remoti

Estremamente interessante la possibilità di accedere agli asset remoti direttamente dal File Browser integrato o dal pannello Remote nella Sidebar. In questo modo si può caricare, scaricare, modificare o eliminare degli elementi dai server ftp, S3, WebDav, Google Drive, ecc.

Nel mio caso lo trovo molto utile per gestire gli asset su S3 e ottenerne i link da inserire nel codice. Tutto all'interno di Nova!

Preview

Nova offre anche un web server statico integrato. È possibile impostare una porta a nostra scelta e consentire la connessione anche da altri dispositivi sulla rete.

Cliccando sull'occhio in alto a destra si aprirà un finestra del browser direttamente all'interno di Nova. In alternativa tenendo premuta la stessa icona si potrà scegliere un browser o un'altra app con cui visualizzare la medesima pagina.

Se non vuoi usare il server integrato ma vuoi comunque sfruttare la preview di Nova è possibile impostare un URL di preview personalizzato.

Terminali

Nova offre due tipi di terminali. Il primo è il classico terminale locale, il secondo è un terminale remoto. Quest'ultimo è studiato appositamente per le connessioni ai server tramite SSH. Dopo aver impostato il server la prima volta, il login avviene in automatico.

Color picker

Dalla versione 5.0 di Nova è stato introdotto anche un potente Color Picker. Consente di lavorare con colori sia con profilo sRGB che Display P3. È possibile gestirli con codice HEX, rgb, rgba, hsl, ecc. Tutto quello che ci si aspetterebbe insomma.

È anche possibile salvare dei colori a livello globale o specifici per progetto così da averli sempre a disposizione. Tuttavia credo che delle variabili css siano comunque preferibili.

Snippet (Clip)

Nova offre un sistema integrato per il salvataggio e riutilizzo di snippet di codice. Questi prendono il nome di Clip. Si possono creare Clip globali o specifiche per un progetto. In una Clip si possono anche inserire dei placeholder per l'auto-completamento o l'autofocus.

Le Clip possono anche essere fornite dagli sviluppatori di estensioni. Ad esempio la mia estensione Vue for Nova fornisce diverse Clip per lo scaffolding dei nuovi file Vue.

Publishing

Per progetti senza sistemi di Continuous Deployment c'è anche la possibilità, dopo aver impostato un server remoto, di tenere traccia dei file modificati, in un apposito pannello della Sidebar, per poi farne l'upload manuale.

Palette

Grazie alla shortcut Cmd + Shift + O è possibile accedere a una Palette per la ricerca rapida di file e simboli. Con la shortcut Cmd + Shift + P invece si raggiunge la Palette dei comandi.

Oltre alle Palette di default ci sono anche quelle fornite dagli sviluppatori di estensioni. Molto interessante è Advanced New File. Questa estensione aggiunge una Palette che consente di creare più velocemente file e cartelle.

.nova

Tutte le configurazioni del progetto (Task, Server, Clip, colori, ecc) vengono salvate in formato json in una comoda cartella .nova all'interno del progetto. Molto utile per salvare queste informazioni con git.

Estensioni

Nel prossimo articolo entrerò nel dettaglio di questo argomento. Illustrerò lo stato attuale della libreria, la community, alcune delle estensioni che trovo più utili e la mia esperienza nello svilupparne un paio, Vue for Nova e Copyright.

Per il momento ti basti sapere che Nova offre un set di estensioni ormai abbastanza completo. Se non hai esigenze particolari dovresti essere coperto. Da non interpretare come se non ci sia altro che i tool più mainstream, anzi!

Nova - Libreria estensioni

Ad ogni modo se hai dubbi puoi controllare la disponibilità di tutto ciò che ti serve su questa pagina.

Cosa manca

Sebbene come abbiamo visto l'esperienza risulti già solida, Nova ha ancora un po' di lavoro davanti a sé per diventare un editor completo al 100%. A mio avviso questi sono attualmente i maggiori problemi.

Debugger

L'assenza di un debugger è sicuramente una delle mancanze più evidenti. È possibile ovviare al problema con il debugger incluso nella maggior parte dei browser, ma non è una soluzione applicabile a tutti i casi d'uso.

La buona notizia è che Panic ha confermato che questa feature arriverà nel prossimo futuro.

Vim mode

Non c'è bisogno di dire che questa sia una feature essenziale per molti di noi. Anche qui la buona notizia è che Panic è al lavoro per consentire quantomeno lo sviluppo di un'estensione che sopperisca al problema.

Dalle Release Notes della versione 5.0:

Commands API: Added support for commands with unmodified key events when an editor is focused to allow for emulation of alternative key binding schemes. (This lays the groundwork for the possibility of, for example, Vim modes in the future.)

Stabilità generale

Sebbene la situazione sia nettamente migliorata dai primi giorni, ogni tanto capita qualche crash un po' fastidioso. Nella mia esperienza sono causati principalmente dalle estensioni, ma non ho sufficienti strumenti per confermarlo.

Sia chiaro che non capita così di frequente da inficiare l'esperienza d'uso e gli aspetti positivi bilanciano ampiamente questo problema. Tuttavia non posso non citarlo come nota dolente.

Conclusioni

Come hai visto da questo inquadramento generale Nova è un'app decisamente interessante. Offre funzionalità uniche e l'esperienza di utilizzare un software 100% nativo è a mio avviso troppo spesso sottovalutata. Credo molto nel progetto, anche se riconosco che sia per certi versi ancora un po' acerbo. Diamo tempo al tempo.

A dispetto di tutte le feature credo però che l'unico vero metro di giudizio sia l'uso quotidiano che si fa di qualcosa. In questi termini posso dire che sono 6 mesi che uso esclusivamente Nova per scrivere codice (oltre Xcode) e credo di essere diventato dipendente da alcuni workflow che solo qui si possono trovare. Dal primo avvio sono tornato su VS Code solo una volta per vedere il nome del mio tema preferito, anche se per il momento non me la sono sentita di disinstallarlo del tutto. Vediamo fra altri 6 mesi.

Ad ogni modo è proprio il workflow ciò che più apprezzo di Nova. Ciò che in generale mi porta a esprimere un giudizio positivo su un software. Il workflow e la visione che porta avanti. Software come Nova, Basecamp, Affinity e Sketch non cercano solo di offrire una serie di tool racchiusi da una bella interfaccia. Cercano di ripensare al modo in cui si dovrebbe affrontare un problema, creano soluzioni nuove che semplificano l'esperienza. Questo è ciò a cui ogni software dovrebbe aspirare e ciò che riesce meglio a Nova.

Seguimi su

Twitter

Vuoi parlare con me?

tommaso@hey.com