Alle 5:02 del mattino del 30 settembre, su un repository GitHub aperto da appena tre ore compare un commit intitolato con una sola parola: "one-shot". Dentro ci sono 241 file e circa 42.000 righe di codice scritto in Rust. È il primo pezzo di PhotoCraft, un editor di immagini che vuole fare tutto quello che fa oggi Photoshop: stesse funzioni, stessi menu e stesse scorciatoie da tastiera.

Una settimana dopo PhotoCraft non è più il solo software in quel repository: accanto a lui ci sono anche VectorCraft, FilmCraft, LightCraft, PrintCraft, EffectCraft e DesignCraft, e si può immaginare, leggendo il nome, di cosa stiamo parlando. Sono le controparti di Illustrator, Premiere, Lightroom, Acrobat, After Effects e InDesign, condensate in un milione e mezzo di righe di codice e più di 3.500 commit. Sette commit su dieci portano la firma dello stesso sviluppatore: Claudio di nome e Opus di cognome.

Da più di una settimana sui social si parla di "app Adobe decompilate" e clonate ma la realtà è ben diversa, perché per quanto oggi sia possibile decompilare piccole app non è facile farlo con una suite da milioni di righe di codice. Anzi, se fossero state decompilate e copiate si sarebbe trattato di puro furto di proprietà intellettuale, e la storia sarebbe stata molto meno interessante, sarebbe stata solo il racconto di qualcosa di illecito.

No, quello che è stato fatto è semplice: provare a rifare Photoshop prima, e le altre app poi, usando ovviamente l'IA, ma con un metodo che va oltre quello che può essere un semplice vibe coding. E che ci dice molto sul futuro del software.

Il sogno impossibile di rifare Photoshop

Da anni Adobe detiene il monopolio delle app di fotoritocco e, ogni volta che aumenta il prezzo, e lo ha fatto più volte, soprattutto di recente, c'è chi prova a sganciarsi, ma poi torna sempre all'app Adobe, perché Photoshop è Photoshop. È unico. L'idea di ricreare Photoshop è uno dei progetti più vecchi, e anche più frustranti, del software libero: per un piccolo team di sviluppatori è impossibile, questo ovviamente prima dell'avvento dell'IA, reggere il passo di un team di sviluppo di centinaia di persone che lavorano a un software che si evolve e aggiunge nuove funzioni ogni mese.

Ci hanno provato in tanti, ma solo Ivan Kutskir, sviluppatore nato in Ucraina e trasferito a Praga con il suo Photopea, si è avvicinato davvero, in questi anni, all'idea alla base di Photoshop, con un decimo però delle funzioni. Arrivare a questo risultato ha richiesto oltre dieci anni di lavoro e, in ogni caso, se prendiamo mille persone che usano Photoshop, il software di Kutskir lo hanno provato in pochi.

C'è poi un secondo problema, quello della compatibilità: Adobe pubblica una specifica del formato PSD pensata per chi vuole leggerlo e scriverlo, ma è furba nel farlo, e nei documenti ci sono alcune lacune che chi prova a ricreare un'app di fotoritocco compatibile con i PSD denuncia da anni, mancanze che sembrano fatte proprio per creare attrito e spingere lo sviluppatore a lasciar perdere. Il comportamento reale dei file va infatti scoperto per tentativi, e questo vuol dire che chi fino ad oggi si metteva in testa di provare a creare una replica credibile di un'app Adobe doveva mettere in preventivo anni di lavoro.

Il solo fatto che questi anni siano diventati "una settimana" dovrebbe far capire l'impatto che l'IA può avere sul mondo del software.

Un regista e un esercito di agenti che scrivono codice a un ritmo impressionante

Dietro le Crafting Apps, questo il nome della suite, c'è ArtCraft, applicativo open source per creare immagini e video con l'AI. Il suo fondatore, Brandon Thomas, lo ha presentato come una sorta di "Cursor per il cinema": invece di affidarsi alla fortuna di un prompt, come succede con Gemini Nano o Veo, ArtCraft permette di controllare in modo preciso il risultato del lavoro creativo, indirizzandolo verso la volontà dell'artista.

È lo stesso Thomas a piantare il primo seme: se guardiamo la cronologia di PhotoCraft, il suo nome è l'unico che compare come sviluppatore nei primi giorni, quando sui vari repository di GitHub vengono caricati i primi file dei progetti, decine di migliaia di righe di codice ogni giorno. A quel punto i progetti prendono vita e, al posto di Thomas, arriva l'amico Claudio (Claude Opus 5.5): EffectCraft e FilmCraft arrivano a 290.000 righe di codice Rust, VectorCraft e PhotoCraft a 250.000. Il più piccolo, DesignCraft, ne conta comunque più di 90.000.

Su 3.577 commit totali, almeno 2.493 dichiarano Claude come coautore, e dal 1° ottobre ci sono 400 commit al giorno. Quello creato da Brandon Thomas è un cantiere di sviluppo che non si è mai fermato: dopo il primo giorno i sette progetti in parallelo hanno prodotto stabilmente centinaia di commit al giorno, un ritmo che nessuna squadra umana potrebbe sostenere.

Le sette app non condividono una riga di codice, sono scritte interamente in Rust e girano come vere app native su Mac, Windows e Linux, senza Electron né pagine web travestite da programmi. Lo stesso codice si compila anche per il browser.

FilmCraft: l'ambizione di ripensare Premiere

Dentro FilmCraft, ovvero Premiere ripensato da Claude, la complessità è evidente. Ricostruire Premiere non vuol dire solo disegnare una timeline, ma significa ricostruire tutto ciò che Premiere usa, a partire dai codec necessari per comprimere i video o per leggerli. FilmCraft si apre in un istante, è leggerissima e pesa solo 35 MB. Eppure funziona, non alla perfezione ma funziona.

Oggi quasi tutti i programmi video del mondo si appoggiano a FFmpeg, la soluzione open source più nota. FilmCraft no: H.264, HEVC, AV1, VP9, ProRes, l'audio AAC e Opus, i contenitori MP4, MOV e Matroska sono stati interamente riscritti da zero in Rust a partire dalle specifiche pubbliche.

Il risultato è stato controllato fotogramma per fotogramma confrontandolo con quello prodotto da FFmpeg, e si è giunti alla conclusione che il decoder H.264 riscritto interamente dall'IA produce un risultato identico al bit su 37 clip video di prova e riesce a decodificare tra i 500 e i 600 fotogrammi al secondo usando come sorgente un video HD, quindi ha anche prestazioni decisamente elevate. I test di conformità automatici per HEVC, VP9 e AV1 hanno dato lo stesso risultato.

Guardando i diversi documenti che accompagnano il progetto si si rende conto che il lavoro fatto, anche se fatto da un'IA, è basato su assunzioni e idee che probabilmente non sarebbero nemmeno venute in mente a un singolo sviluppatore umano: il tempo, per esempio, non è misurato in secondi all'interno del codice, ma in unità minuscole, 254.016.000.000 al secondo, questo perché è un numero che si divide esattamente per tutte le frequenze video e audio comuni.

Il progetto è tutt'altro che perfetto, ma dal momento in cui abbiamo iniziato a scrivere questo articolo a quello in cui lo state leggendo, sono già state pubblicate decine di commit che hanno chiuso bug e aggiunto funzioni. Nei documenti pubblicati su GitHub si legge ad esempio che i decoder sono perfetti sui video di prova, ma che i file veri, quelli girati con telefoni e fotocamere, sono stati provati solo in parte, perché è difficile passare da un test strumentale a un test reale. Alla domanda "è pronto per il lavoro vero?" il team composto da agenti risponde con una stima, tra il 50 e il 60%, e nel file Roadmap di ogni progetto si può seguire giorno dopo giorno lo sviluppo e sapere cosa manca e cosa c'è.

Un manuale di sviluppo scritto per le macchine

Se le app sono il prodotto, la parte forse più interessante di tutta questa storia è il metodo. Dentro ogni repository c'è un file chiamato Agents.md, che potremmo considerare la documentazione di riferimento per l'intero processo di creazione delle Crafting Apps. Questo file descrive in dettaglio i compiti assegnati a ciascun agente, i modelli di linguaggio utilizzati, le regole di sintassi del codice Rust e i criteri di test automatizzati. Ogni agente ha una specializzazione: uno si occupa dell'interfaccia utente, un altro della gestione dei file, un altro dei codec video, e così via. Tutti i compiti sono eseguiti in parallelo grazie a un orchestratore che distribuisce le richieste ai singoli agenti, raccoglie i risultati e li integra in un singolo ramo di sviluppo. La complessità di questo approccio è enorme, ma è la chiave che consente di produrre centinaia di commit al giorno.