Welcome to the
Squeak
Home Page

What is Squeak?

Squeak is an open, highly-portable Smalltalk-80 implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks.

Other noteworthy aspects of Squeak include

Squeak is available for free via the Internet, at this and other sites. Each release includes platform-independent support for color, sound, and network access, with complete source code. Originally developed on the Macintosh, members of its user community have since ported it to numerous other platforms including Windows 95 and NT, Windows CE (it runs on the Cassiopeia and the HP320LX), all common flavors of UNIX, Acorn RiscOS, and a bare chip (the Mitsubishi M32R/D).

What it is not
The Squeak Smalltalk system bears no relation to the "Squeak" language designed by Rob Pike and Luca Cardelli in 1985, nor to its successor, "Newsqueak".

Squeak Tutorials

Please try John Maloney's BankAccount tutorial. It starts at the very beginning, and takes you through defining a class and writing some methods.

John Maloney's Morphic tutorial is a great introduction to working with the Morphic graphic system.

If you know how to program, but don't know Squeak or Smalltalk, try Chris Phoenix's tutorial.

Wolfgang Kreutzer at the University of Canterbury, New Zealand, has a good tutorial for the Squeak beginner.

What is Cool about Squeak

To quote from Dwight Hughes, a frequent contributor to the Squeak mailing list, "How is Squeak important? Squeak extends the fundamental Smalltalk philosophy of complete openness -- where everything is available to see, understand, modify, and extend for whatever purpose -- to include even the VM. It is a genuine, complete, compact, efficient Smalltalk-80 environment (*not* a toy). It is not specialized for any particular hardware/OS platform. Porting is easy -- you are not fighting entrenched platform/OS dependencies to move to a new system or configuration. It has essentially been put into the public domain - greatly broadening potential interest, and potential applications. The core team behind Squeak includes Dan Ingalls, Alan Kay, Ted Kaehler, John Maloney, and Scott Wallace. All of this has attracted many of the best and most experienced Smalltalk programmers and implementers in the world."

Squeak stands alone as a practical Smalltalk in which a researcher, professor, or motivated student can examine source code for every part of the system, including graphics primitives and the virtual machine itself. One can make changes immediately and without needing to see or deal with any language other than Smalltalk. Squeak runs bit-identical images across its entire portability base, greatly facilitating collaboration in diverse environments. The system, together with an adherance, for better or for worse, to the image model (the entire state of Squeak is manifest in an image file), has yielded a system of extreme portability and sharability. Any image file will run on any interpreter even if it was saved on completely different hardware, with a completely different OS (or no OS at all!).

A Brief History of Squeak

Squeak began, very simply, with the needs of a research group at Apple. We wanted a system as expressive and immediate as Smalltalk to pursue various application goals (prototypical educational software, user interface experiments and (let's be honest) another run at the Dynabook fence). As you can read in the OOPSLA paper ("Back to the Future") we hit on the idea of writing a Smalltalk interpreter in a subset of Smalltalk, together with a translator from that subset to C.

Philosophy

The current Squeak interpreter combines a classical ST-80 interpreter with a simple yet efficient 32-bit direct-pointer object memory and incremental garbage collector. It also includes a BitBlt graphics system that supports 1-, 2-, 4-, and 8-bit indexed colors, as well as 16- and 32-bit RGB colors, together with a "warp drive" that supports fast rotations and other affine transformations, as well as simple anti-aliasing. Other notable (and equally portable) capabilities of Squeak include 16-bit sound input and output, and support for sockets and general network access.

The portability and sharability of Squeak, together with its malleability (since it is all in Smalltalk, a competent Smalltalker can change anything about it), has given rise to a lot of interest in the academic community, and what one might call the "independent" computer science community. By this phrase we mean to include people who are not so interested in one language over another, or one OS over another, but who have their own particular passion (numerical analysis, graphics, distributed computing, music synthesis, O-O education, etc) and who want a system that can provide the most flexible and immediate command over experiments in their field of interest.

The Squeak Community

Squeak has an active and enthusiastic user community. Participants include teachers working on currculum materials, commercial and academic users, and a number of "quantum mechanics" interested in newer and better approaches to the ultimate goal of making high-quality computation simple and efficient.

The core development team is resident at Disney. Other organizations with significant Squeak interest include The Create project at UCSB, UIUC, Georgia Tech, INRIA in France, and the Univ. of Magdeburg.

The main vehicles for interaction among this community are the Squeak Mailing List, the Squeak Wiki Servers, and the Squeak Archives.

The Squeak Mailing List

For the first year of its life the external Squeak community came together and grew through a mailing list initiated and supported by Stephen Pope at UCSB's CREATE project. With many other fish to fry, Stephen has passed the baton to John Brant at the Computer Science Department at UIUC (University of Illinois, Urbana-Champaign). The main Squeak mail list is
	squeak@cs.uiuc.edu
As you might guess, this list carries a lot of traffic, including questions from newbies, bug reports and fixes, discussions of how to improve Squeak, etc. For those who want less traffic,
	squeak-annc@cs.uiuc.edu
carries only major announcements such as availability of new releases.

You must be on the Squeak email list to send mail to the list. To get on, send a message to

	squeak-request@cs.uiuc.edu
with the subject of "subscribe" (or "unsubscribe"). Unsubscribing may also be done by filling out the web form at http://squeak.cs.uiuc.edu/mail/subscribe.html.

Subscription requests for the announcement list should be sent to

	squeak-annc-request@cs.uiuc.edu

Both mailing lists are being archived here at UIUC.

	archive of the Main Squeak List
	archive of Squeak-Annc List

We are greatly indebted to Ralph Johnson and Computer Science Department at UIUC for their willingness to support the Squeak mailing lists and file archives.

Join us on Wiki Servers

In addition to the mailing list, Squeak is discussed on a web site that acts like a bulletin board. Please visit our Squeak Discussion Area. How is that discussion area implemented? Well, ...

An exciting new dimension has recently been added to the Squeak community with Ward Cunningham's Wiki server concept, and its various implementations. A Wiki server is quick to implement (in fact Wiki-Wiki means quick in Hawaian Creole): A Wiki server serves pages just like any other server, except that anyone (even you) can also change them and create new ones. There are no security or synchronization checks. If something goes wrong you fix it back again; if everything goes wrong, someone restores the last saved copy.

Because it is not sequential like mail, this medium is much better suited to sharing "gestalts" such as personal profiles and interests, project descriptions and status, and the like. Because anyone can make their own changes or new pages, it is an ideal medium for "hosting" a community. There is no need for everyone to have a web page with your thoughts on Squeak -- the Squeak Wiki is waiting right now to host your thoughts.

The internal documentation of Squeak is now being done on a Squeak-based web server. Enter the Squeak Documentation Swiki to see the contents of all the info windows in Squeak.

You may fondly remember Ward Cunningham's Wiki-wiki. It has now been moved in its entirety to a Swiki at Georgia Tech: start at WelcomeVisitors

Every copy of Squeak now includes Mark Guzdial's Wiki web server. A Swiki is one of several Plugable Web Servers based on Georg Gollman's Squeak web server software. Swikis are available with password protection for the site or for the individual page.

Squeak is Free, with a Liberal License

Smalltalk-80 was developed at Xerox PARC in the 1970s. Apple obtained a license in 1980. A team at Apple developed Squeak in 1996, and have made it available free under license. The license agreement is intended to keep Squeak open and available to the user community, while allowing users to do useful things with Squeak. Here is a paraphrase of the license terms:

You are allowed to change Squeak, write extensions to Squeak, build an application in Squeak, and include some or all of Squeak with your products. You may distribute all of these things along with Squeak, or portions of Squeak, for free or for money. However, you must distribute these things under a license that protects Apple in the way described in this license.

If you modify any of the methods of class objects (or their relationships) that come with Squeak (as opposed to building on top of the classes in the release), you must post the modifications on a web site or otherwise make them available for free to others, just as has been done with Squeak. The same is true if you port Squeak to another machine or operating system - you must post your port on a web site or otherwise make it available for free to others under the same license terms.

Downloading Squeak

Please read the license for Squeak.
No matter what system you are on, you will need these four files:

The first three files are platform-independent. The fourth file is the interpreter, or virtual machine (VM), and you must get one that is intended for your particular computer. Plug-ins are also different for each OS.

All files must be downloaded in Binary mode

Put them all in the same directory. Launch the image and the VM together, if possible.

For up to the minute download info, see the Download Squeak page on the Swiki.

Even though image, sources, and changes are the same across platforms, we list them by operating system, so they will come packed in the proper format.

Windows 98/95, NT, and CE
click here to download Squeak 2.7 for Win 98/95 and NT. You will get a zip archive of all four files needed for Squeak.

For Windows CE you have two choices.


Once you are in Squeak, left mouse button to select, right for the content menu, ALT-click is the window menu, ALT-period to interrupt or use Ctrl-Break. (port by Andreas Raab)

Macintosh
Squeak 2.7 is available as a bundle of files: Squeak2.7-mac.sea
In Squeak on the Mac, Option-click for content menu, Command-click for window menu (a.k.a. Apple or flower key), Command-period to interrupt.
(port by Dan Ingalls and John Maloney, with Alan Kay, Ted Kaehler, and Scott Wallace. Done at Apple, then continued at Disney)

MacOS X Server
There are three ways to run Squeak on Mac OS X. If you use the currently shipping Mac OS X Server, use the MacOS X Server yellow box port by Marcel Weiher. Currently this bundle is a 2.6 VM with 2.7 images and changes files. If you are a MacOS-X DP2 developer the same port runs on your system in Cocoa mode. It is also possible to use the MacOS port above in classic or blue box mode. The master site is at http://www.metaobject.com/downloads/Squeak/

UNIX
Squeak runs on many UNIX OS's. Squeak should compile "out of the box" for most versions of Unix running on most architectures, using only GNU make, and simple makefile modifications. Squeak's makefiles use many extensions provided only by GNU make and are thus incompatible with other make versions.

Master Squeak UNIX site: http://www-sor.inria.fr/~piumarta/squeak/.

Note that sound only works on some of ports, for further information check the master Squeak Unix site.

Ports so far include:

We offer precompiled UNIX binaries for these platforms: In this directory, click on your UNIX OS.
Source code in C is available for UNIX systems, if needed.
Left mouse button to select, right for content menu, ALT-click is the window menu, ALT-period to interrupt.
(port by Ian Piumarta)

Squeak on many PDAs

A mini version of Squeak 2.3 can be derived from the release by automated deletions. It decompiles system sources with temp names preserved. The resulting 580k image can browse over 850k of formatted source code with no other files needed. This image includes an editor, compiler, source code browsers, fileLists, Floats and LargeIntegers. It is a complete Smalltalk development environment that can run in 1MB on many PDA's. A premade mini image lives here.
Interpreters for specific machines:

Zaurus
Squeak for the Sharp Zaurus PDA. (Japanese domestic version only, not the English version, nor the English WindowsCE version). The Squeak Zaurus page in Japanese.
(port by OHSHIMA Yoshiki)

Acorn RiscOS
The VM build package is provided ready to go in a Sparkive and the runtime is available in both full and slightly shrunk forms, with the smaller image about 1Mb smaller than the bigger. Should work ok on an Oracle NC (preferably the 'Office' StrongARM version) if you know how to do the RiscOS->NCOS configure tricks. And on the 'Phoebe2100' machines. It should function, albeit a little slowly, on IMS Peanuts as well. Command-period is the interrupt key on these machines. Full Instructions. (port by Tim Rowledge)

DEC Itsy
Tim Rowledge did a port to the
DEC Itsy, a research PDA with software based on Linux OS and standard GNU tools.

OS/2
A fast modern port using the DIVE video ddls. (port by Juan Manuel Vuletich. Original port using XFree86 on OS/2 by Boris G. Chr. Shingarov)

DOS
Port to bare DOS on a PC. (Port by Chris Grindstaff)

Be OS
Squeak for the Be OS is available. (port by Colin Sarsfield and his team)

NeXT
Squeak on NeXTSTEP, with a pure NeXT front-end. Available for NeXTSTEP 3.3 (it may run on OPENSTEP 4.2 too). Version 0.2d14 is compiled for NeXTSTEP on the Motorola and Intel boxes. A preliminary version lives here. Look in this directory for interpreter sources. And here for ".gz" files of the image, sources, and changes. Won't compile on OPENSTEP systems such as Rhapsody yet. (port by Pascal Bourguignon).

Further Downloading Information
If you have trouble starting Squeak, Read the troubleshooting section.

The primary archive at UIUC is mirrored in these locations:

Goodies and Other Squeak-Related Software

"Goodie" is a Smalltalk term meaning useful software that can be filed into a working image to give it some useful or interesting new capability. A number of Squeak-specific goodies are
available here. Moreover a lot of code in the vast UIUC Smalltalk Archives will run in Squeak with little or no modification.

See our Discussion of some selected Goodies. If you have code to share, see How to Submit a Goodie.

Squeak Support

Boris Shingarov once wrote in joking reference to an "unofficial" feature of Squeak,
	"Wow! Is there anything in Squeak that is supported or official?!!!"

We responded,
	"Of course not.  Well, the name is official, and the current version
	runs bit-identical on more platforms than most other software ;-)."

Seriously, though, there is something here that touches on Squeak philosophy. Official standards and product support are the enemies of change. Next to universal access, malleability is the prime figure of merit for Squeak. It is our intention for Squeak to evolve.

Some people feel tentative about using a system that appears to be dependent on the whimsical enthusiasm of a couple of wizards. Who could make product plans upon such shifting sands?

The answer is simple: Each Squeak release includes everything about itself: the image, the virtual machine, with complete source code for each. If the Squeak team vanished tomorrow, probably 25% of the folks on the Squeak mail list could maintain the current version single-handedly for the next 20 years.

It's better than being supported. It's having control over your destiny.

Where is Squeak Headed?

(This section has its own page. Click here.)

Other Sites

The official Squeak Documentation site.

The main Squeak Discussion Area is at Georgia Tech.

Stephen Pope's U.S. mirror site at CREATE at UCSB. Back online!

The Smalltalk User Group of Argentina (SUGAR) has a good site (in English and Spanish).

European users may wish to use:
Ian Puimarta's site for Macintosh and Unix versions of Squeak (INRIA, France).
Andreas Raab's site for Macintosh and Windows versions of Squeak (Univ. of Magdeburg, Germany).

Tim Rowledge's Squeak page.

The original Xerox PARC report on ThingLab, Alan Borning's system for building graphical constraints (1979). Download the ThingLab goodie and run it in Squeak (still has some conflicts with other Squeak features).

Serg Koren's Site with sources that can be compiled by Code Warrior Professional Release 2, and some improved Squeak examples in the image.

Further References


This page is http://squeak.org/ ... or ... http://squeak.cs.uiuc.edu/
Written by Dan Ingalls and Ted Kaehler (kaehler2@webpage.com), 21 Apr 99.