Apple Resedit
Quando gli ingegneri di Apple Computer stavano progettando il file system e l’OS del Macintosh, hanno fatto qualcosa di molto insolito o meglio di molto creativo, erano i primi anni 80, e il Macintosh rappresentò per quei tempi un’autentica rivoluzione con la sua interfaccia grafica coerente, elegante e pulita unita a una CPU a 16/32 bit basato sul mitico Motorola 68000. Allora negli anni 80 (e tuttora) la grande maggioranza dei file system e relativi OS utilizza un singolo fork: un file, cioè un blocco di dati.
Il Macintosh sarebbe stato diverso. Ogni file sarebbe composto da due fork, uno normale data fork come nei normali file system, l’altro un database strutturato di risorse, il resource fork. Ciò ha consentito a un’applicazione Macintosh di mantenere diverse localizzazioni dei suoi menu e altri contenuti come testo,immagini, icone, etc. nelle risorse.
I fork delle risorse erano consentiti per qualsiasi file, quindi un’applicazione ad esempio poteva memorizzare le impostazioni di una finestra di un documento nel fork delle risorse.
Le risorse sono state utilizzate per archiviare molti dati strutturati standard, come le specifiche e i contenuti di avvisi e finestre di dialogo, menu, raccolte di stringhe di testo, definizioni e layout di tastiera, icone, finestre, caratteri e blocchi di codice che devono essere utilizzati da app. Era possibile estendere i tipi di risorsa supportati tramite un modello, a sua volta archiviato come risorsa, in modo tale che gli sviluppatori potevano definire nuovi tipi di risorsa appropriati per le proprie applicazioni.
Quindi Apple sviluppò un editor di risorse che è diventato rapidamente una delle applicazioni più conosciute sul Macintosh. ResEdit era lo strumento per eccellenza dell’utente esperto: se non ti piaceva un particolare dialogo in un’appplicazione Macintosh, si poteva usare ResEdit per modificarlo; oppure se volevi creare il tuo layout di tastiera personalizzato.
ResEdit diventò pertanto l’applicazione o meglio lo strumento di sviluppo “de facto” per Apple Macintosh, utilizzata per creare e modificare le risorse direttamente nell’architettura del “resource fork” dei files e applicazioni dei sistemi Apple Macintosh classici.
Era un’alternativa a strumenti come REdit e il compilatore di risorse Rez. Per l’utente medio, ResEdit era generalmente più facile da usare, poiché utilizzava un’interfaccia utente grafica. Sebbene fosse stato concepito per essere uno strumento per sviluppatori, gli utenti esperti lo usavano spesso per modificare icone, menu e altri elementi della GUI di un’applicazione, personalizzandola in base alle proprie preferenze.
Ad esempio si potevano tradurre i menu in inglese in italiano con molta semplicità senza ricompilare l’applicazione.
Le risorse sul Macintosh potevano essere di molti tipi diversi ed in effetti qualsiasi dato arbitrario poteva essere trasformato in una risorsa. Sebbene il sistema definisse molti formati standard per particolari tipi di risorse (ad esempio un’icona o un modello di finestra), i programmatori erano anche liberi di definirne di propri.
ResEdit è stato uno dei primi esempi (e pioniere per quei tempi) di uno strumento di layout GUI, un componente essenziale per lo sviluppo rapido di applicazioni. Ad esempio, il sistema operativo Macintosh classico definiva una risorsa standard denominata modello di finestra di dialogo e un elenco di voci di finestra di dialogo (rispettivamente tipi di risorsa “DLOG” e “DITL”).
Ciascun tipo di risorsa aveva un nome di quattro caratteri, ad esempio ALRT per una definizione di avviso, DLOG per le finestre di dialogo, KCHR per i layout di tastiera e così via.
In ResEdit era semplice creare questi tipi di risorse e aggiungere loro elementi GUI in modo WYSIWYG (what you see is what you get), in modo tale che un’interfaccia utente potesse essere progettata direttamente come sarebbe apparsa all’utente finale dell’applicazione. Successivamente, il codice dell’applicazione poteva creare una finestra di dialogo funzionale utilizzando i dati delle risorse memorizzate che corrispondevano all’aspetto che è stato disposto in ResEdit.
Quando ResEdit è apparso per la prima volta a metà degli anni 80, fu considerata un’innovazione rivoluzionaria ed unica, non riscontrabili su nessuno dei sistemi informatici di quegli anni.
ResEdit includeva un editor standard per modelli di finestre (WIND), menu (MENU), finestre di dialogo, controlli (CNTL), tavolozze di colori (clute pltt), icone (ICON, cicn, ICN#) e vari altri tipi standard.
Una delle funzionalità più potenti di ResEdit (che è apparsa per la prima volta con ResEdit versione 2.0) è la capacità di definire strutture di dati arbitrarie come risorse utilizzando una semplice funzionalità di creazione di modelli. Il programmatore può semplicemente aggiungere tipi di dati elementari a un elenco per definire un modello (a sua volta archiviato come risorsa di tipo TMPL). Questo modello consente a ResEdit di creare al volo un editor GUI che consente l’inserimento di dati e il pacchetto nella struttura definita nel modello.
È semplice per un programmatore definire una struttura di dati corrispondente in un linguaggio di programmazione scelto, come C o Think Pascal, caricare la risorsa in modo standard e accedere ai dati come il tipo C definito. ResEdit include una serie di modelli predefiniti per molte risorse del sistema operativo standard che non richiedono un editor grafico.
ResEdit non è mai stato aggiornato per funzionare nativamente su Macintosh basati su PowerPC dopo la migrazione dalla serie Motorola 68000, e non sullo Unix di Apple Mac OS X (così era chiamato l’OS prima di essere comunemente denominato semplicemente macOS.
Apple ora scoraggia l’uso di resource fork nelle nuove applicazioni macOS, preferendo i bundle di applicazioni più portabili derivati dal mitico OS NeXT la cui innovativa tecnologia è stata portata in macOS.
Rimane disponibile un’alternativa commerciale di terze parti di lunga data denominata Resorcerer, e più recentemente ci sono stati numerosi tentativi di creare editor di risorse nativi macOS open source, incluso uno chiamato ResKnife.
L’ultima versione ufficiale di ResEdit è la 2.1.3 fu rilasciata nell’agosto 1994. Esistono hack non ufficiali rilasciati come ResEdit 2.1.4 e versioni successive, che aggiungono funzionalità come un decompilatore e la possibilità di modificare i data fork, ma questi non sono supportati da Apple.
I fork delle risorse e il pensiero d’ingegneria dietro di essi sono stati ingegnosi e hanno dato potere, ma aprivano a ogni sorta di problemi di sicurezza. Ai tempi (anni 80 e 90) in cui esisteva il malware classico per Mac OS, viveva quasi invariabilmente in fork di risorse e traeva grande vantaggio dalle loro funzionalità. Sebbene fosse possibile bloccare e proteggere le singole risorse, armato di una copia di ResEdit si poteva cambiarlo velocemente e quasi qualsiasi altra cosa tu desiderassi, proprio come il malware potrebbe aver fatto.
Invece, ora sul moderno macOS abbiamo un bundle di app, cartelle contenenti strutture standard di file e più cartelle, fatte per sembrare un’applicazione, una libreria o altro. All’interno di questi, le strutture dati che sarebbero andate nelle risorse (resource fork) del Mac OS classico, sono ora cartelle piene di file, con data fork standard. In molti casi, i dati strutturati sono esposti in XML, che è molto meno efficiente delle vecchie risorse e meno adatto alla manomissione da parte di utenti esperti.
Invece ora siamo costretti a modificare le impostazioni negli elenchi di proprietà (file .plist).
Le risorse modificabili con ResEdit sono state entusiasmanti e soddisfacenti per gli utenti ma terribilmente insicuri se confrontati con le complesse e variegate minacce cyber di oggi.