Perché ho scritto Backup Sorcery
Tutto è nato dall’annuncio di Autodesk che le vecchie versioni di Revit (dalla 2021 in giù) non sarebbero più state supportate da Autodesk Forma (il vecchio ACC).
La notizia non era che venivano cancellate, ma solo che non sarebbe più stato possibile lavorare con le versioni vecchie in cloud, worksharing ecc. ecc., se non portandole a versioni successive. E questo da ora in poi, tutti gli anni: la finestra è la versione corrente più le cinque precedenti. Ma questo mi ha fatto interrogare su alcuni punti, primo fra tutti il fatto che, avendo progetti e file sul cloud di Autodesk, un cambio delle policy può portare da un momento all’altro a decisioni impattanti sullo storage di migliaia e migliaia di studi e aziende.

Photo by Patrick Robert Doyle on Unsplash
Non avevo mai fatto dei backup ragionati del mio spazio, e quindi ho iniziato a cercare di capire come farlo. Il primo problema è stato che non sapevo esattamente lo spazio occupato da ciascun progetto, quindi pensare a dove salvare i dati senza sapere di quanti dati si parlava era complicato: un download si poteva fermare a metà perché finiva lo spazio. Se volevo spostare i file su un cloud (ad esempio S3, Google Drive, Dropbox ecc. ecc.) dovevo prendere la taglia giusta di storage. La seconda cosa era il problema di linea: mentre scaricavo alcuni progetti il download da browser si bloccava e non finiva. Dato che lanciavo i download la sera per farli scaricare durante la notte, la mattina mi trovavo senza aver scaricato niente. L’altro metodo era usare Desktop Connector, ma non riesco a fidarmi molto dello strumento per fare i backup. Cosa trasferisce e cosa no non è sempre chiaro a prima vista, e quindi alla fine non so mai se ho replicato tutto sul mio PC o se qualche file è rimasto indietro. Scaricare un progetto è semplice: Autodesk Forma sul web, download su “Project Files” e, se la linea non dà problemi, dopo qualche ora lo zip è sul disco. Ma le versioni dei file e dei modelli? Quelle vanno fatte una alla volta: cliccare sulla versione, fare il download, ricliccare sulla versione successiva, rifare il download ecc. ecc. Ho modelli con più di 100 versioni: farlo a mano era eternamente lungo. Farlo con Desktop Connector era tecnicamente impossibile.

Photo by Cooper Hofmann on Unsplash
Ho cercato soluzioni al problema e sinceramente non ho trovato niente che mi piacesse. Oltre al fatto che tutti quelli che ho trovato erano a pagamento, alcuni addirittura spostavano il problema da un cloud a un altro, facendo il backup solo sul loro cloud. Mi ricordavo, da quando lavoravo in Archea a Firenze, che avevamo valutato alcuni strumenti per fare il backup già nel 2021, ma poi, complice anche il fatto che i software al tempo non sembravano troppo flessibili, non era stato fatto niente.
Tutto questo mi ha fatto venire voglia di capire come potermi fare un piccolo script Python per fare il download con le API di Autodesk Platform Services, con cui avevo già fatto alcuni piccoli programmi nel corso degli ultimi due anni. Niente di veramente utile: erano script Python più per imparare la piattaforma che per usarla davvero. Esperienza che però è servita. Ma come si dice, “l’appetito vien mangiando”, e dopo qualche giorno di prove (promettenti) in Python mi è venuto in mente: ma perché non faccio un tool più stabile in C#, per poterlo poi distribuire?
Intanto, perché ho scelto C# e non Python?

Volevo un tool che potesse venire usato da tutti, anche da chi non ha dimestichezza con Python, le dipendenze, i possibili “virtual environment” e tutto il resto che si porta dietro un linguaggio come Python. Insomma, credo che molti utenti, soprattutto di studi piccoli (dove un tool come questo, free, fa comodo), potessero avere una frizione alta per lanciarlo.
Poi la velocità. Il tool, oltre a fare i download, doveva gestire anche download parziali, il controllo con hash sui file e tante altre cose che succedono sotto il cofano. La velocità del download la decide la linea, ma per tutto quello che succede intorno C# mi dava più controllo. Terza cosa, un ambiente controllato, che non si rompe se Python viene aggiornato o una libreria cambia versione. Io stesso vedo che, usando molto Python per script personali, spesso aggiorno le librerie, Python e tutto il suo ecosistema, e spesso gli script di 6 mesi fa smettono di funzionare. Per quelli più importanti uso un “virtual environment”, ma anche quello porta via un sacco di spazio solo per far girare uno script di qualche kB. Insomma, pur essendo un fan di Python e usandolo quasi giornalmente, volevo una soluzione più robusta e con una UI/UX migliore, che non creasse barriere di ingresso all’uso del tool.

Da tutto questo è nato “Backup Sorcery”, un tool per fare i backup degli hub di Autodesk Forma. Ma non fa solo questo: può anche scaricare le versioni di un file, e questa funzione da sola basta a far capire l’utilità del tool. Quello che a mano era eternamente lungo, e con Desktop Connector impossibile, con Backup Sorcery è una spunta.
Ecco come è nato il progetto.
Il tool è free e non raccoglie informazioni: l’unica chiamata verso aec.codes è il controllo della versione, per avvertirvi se ci sono novità. Vista tutta la raccolta a strascico di informazioni che fanno oggi i siti e i programmi, mi piace sottolineare che non raccogliamo informazioni sui vostri hub, sui vostri progetti, sui vostri file o su come usate il tool. Mandiamo comunicazioni solo per update importanti sul prodotto, soprattutto in caso di aggiornamenti di sicurezza. Non facciamo spam. Alla registrazione per il download teniamo solo la vostra mail e pochi dati tecnici (data, versione disponibile e un indirizzo IP accorciato, contro gli abusi del form), come spiegato nella privacy notice. Niente passa per i nostri server, tutto è in mano a voi. Non ci sono formati proprietari: il manifest di ogni progetto, con l’hash SHA-256 di ogni versione scaricata, lo trovate nella cartella di backup. È un file JSON, che potete aprire anche con Notepad (anche se io vi consiglio Notepad++ 🙂 ) e leggere per intero. L’inventario dei progetti (l’harvest) sta invece in un database SQLite sul vostro PC, anche quello un formato aperto. Insomma, la trasparenza, visto che la cerco quando valuto i software che uso, mi piace anche darla quando sviluppo dei tool.
Se volete maggiori informazioni le trovate sul sito https://aec.codes/ o, se volete vedere direttamente la presentazione, andate su https://aec.codes/backup-sorcery/presentation
Se volete info scrivetemi pure; prossimamente arriverà anche un articolo su come funziona il tool.