# Squeak

Il linguaggio di programmazione Squeak è un dialetto di Smalltalk. È orientato agli oggetti, basato sulle classi e con il supporto alle riflessioni.
È derivato direttamente da Smalltalk-80 da un gruppo nella divisione Apple Computer che includeva alcuni degli sviluppatori originali di Smalltalk-80. Il suo sviluppo è stato continuato dallo stesso gruppo a Walt Disney Imagineering, dove era destinato ad essere utilizzato nei progetti Disney interni. Successivamente il gruppo ha proseguito il lavoro con il supporto da laboratori HP Labs, SAP e più di recente Y Combinator.
Squeak è multipiattaforma, cioè i programmi prodotti su una data piattaforma funzionano senza modifiche su tutte le altre piattaforme (come Windows, Linux e macOS). Il sistema Squeak include il codice per la generazione di una nuova versione della macchina virtuale (VM) su cui è in esecuzione. Include anche un simulatore VM scritto in Squeak. Per questi motivi, è facile da portare su altre piattaforme.

## Gli sviluppatori

Dan Ingalls, importante contributore al progetto Squeak, ha scritto il paper su cui Squeak è basato e costruito l'architettura per cinque generazioni del linguaggio Smalltalk.
Squeak comprende molti degli elementi che Alan Kay ha proposto nel concetto Dynabook, formulato negli anni '60.

## Framework di interfaccia utente

Squeak include quattro framework di interfaccia utente:
* Un'implementazione di Morphic, l'interfaccia grafica di manipolazione diretta di Self. Questa è l'interfaccia principale di Squeak.
* Scripting di programmazione visiva basata su piastrelle in Etoys, basata su Morphic.
* Una nuova interfaccia sperimentale chiamata Tweak. Nel 2001 è emerso che l'architettura Etoy di Squeak aveva raggiunto il limite di quanto le infrastrutture di interfaccia Morphic potrebbero fare. Il ricercatore Hewlett-Packard Andreas Raab ha proposto di definire un "processo di script" e di fornire un meccanismo di pianificazione predefinito che evita diversi problemi più generali. Ciò ha determinato una nuova interfaccia utente, proposta per sostituire l'interfaccia utente Squeak Morphic in futuro. Tweak ha aggiunto meccanismi di isole, messaggistica asincrona, giocatori e costumi, estensioni di lingua, progetti e script di piastrelle. Il suo sistema di oggetti di sistema è basato su classi, ma agli utenti, durante la programmazione (scripting), agisce come se fosse basato su prototipi. Gli oggetti Tweak vengono creati e eseguiti nelle finestre del progetto Tweak.
* Un'interfaccia model-view-controller (MVC) è stata l'UI primaria nelle versioni Squeak 3.8 e precedenti. È derivato dall'originale interfaccia utente Smalltalk-80 che ha introdotto e diffuso il modello di architettura MVC. MVC prende il nome dalle tre classi fondamentali del framework. Quindi, il termine "MVC" nel contesto di Squeak si riferisce ad entrambi i framework disponibili dell'interfaccia utente e al modello che segue il quadro. MVC è ancora previsto per i programmatori che hanno voluto utilizzare questo vecchio tipo di interfaccia.

## Usi

Molti collaboratori di Squeak collaborano su Open Cobalt, un browser virtuale libero e open source e un toolkit di costruzione che si basa su Squeak.
La prima versione di Scratch fu implementata in Squeak.
Squeak viene utilizzato anche nel sistema operativo Nintendo ES.
Il sistema di conferenza e collaborazione OpenQwaq è basato su Squeak.

## Licenza

Squeak 4.0 e versioni successive possono essere scaricate senza alcun costo, compreso il codice sorgente, come un'immagine di una macchina virtuale pre-installata sotto licenza MIT, ad eccezione di alcuni dei codici Apple originali, che sono regolati dalla licenza Apache.
Originariamente, Apple ha effettivamente rilasciato Squeak sotto una propria licenza denominata licenza Squeak. Mentre il codice sorgente era disponibile e le modifiche erano consentite, la licenza Squeak conteneva una clausola di indennizzo che impediva di qualificarsi come un vero software libero e open source.
Nel 2006, Apple ha cambiato licenza due volte a Squeak. In primo luogo, nel mese di maggio, Apple ha utilizzato la propria Apple Public Source License, che soddisfa il concetto di Free Software License della Free Software Foundation e ha ottenuto l'approvazione ufficiale dell'Open Source Initiative come licenza open source. La Apple Public Source License, come risulta, non riesce a superare il terzo standard che le licenze Free e Open Source Software sono tenute a rispettare: le Debian Free Software Guidelines promulgate dal progetto Debian, una influente distribuzione volontaria di Linux. Per consentire l'inserimento di Etoys nel progetto One Laptop Per Child è stato eseguito un secondo cambio di licenza utilizzando la licenza Apache. A questo punto è stato anche fatto uno sforzo per affrontare la questione del codice contribuito dai membri della comunità di Squeak, visto che non era nel potere di Apple di effettuare il cambio di licenza unilateralmente.
Per ogni contributo concesso sotto la licenza Squeak dal 1996, è stata ottenuta una dichiarazione di cambio di licenza che autorizza la distribuzione sotto la licenza MIT e, infine, nel marzo 2010, il risultato finale è stato rilasciato come Squeak 4.0, ora sotto licenze combinate MIT e Apache.

## Macchina virtuale Squeak

La macchina virtuale Squeak è una famiglia di macchine virtuali (VM) utilizzate nelle implementazioni del linguaggio di programmazione Smalltalk. Esse sono una parte essenziale di una qualsiasi implementazione di Smalltalk. Tutte sono Software open source. L'attuale VM è un sistema di traduzione dinamico ad alte prestazioni. Il codice pertinente viene mantenuto presso il repository OpenSmalltalk su GitHub.