Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Squeak
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Object-oriented programming language}} {{other uses|Squeak (disambiguation)}} {{Infobox programming language | name = Squeak | logo = Squeak.svg | logo caption = Original 1996 logo by Tim Rowledge<ref>{{cite web |url=http://www.rowledge.org/tim/squeak/ |title=Tim: Squeak Smalltalk |access-date=2016-02-28}}</ref> | screenshot = Squeak 51 morphic interface screenshot.png | screenshot caption = [[Screenshot]] of the Squeak–Smalltalk Morphic user interface. | paradigm = [[Object-oriented programming|object-oriented]] | designers = [[Alan Kay]], [[Dan Ingalls]], [[Adele Goldberg (computer scientist)|Adele Goldberg]] | developers = The Squeak Community | released = {{Start date and age|1996}} | latest release version = {{cite web |url=https://github.com/OpenSmalltalk/opensmalltalk-vm/releases |title=202312181441}} | latest release date = {{start date and age|2023|12|20}} | latest preview version = | latest preview date = <!-- {{Start date and age|2024|mm|dd}} --> | typing = [[Type system|Dynamic]] | implementations = Squeak, [[Croquet Project|Croquet]] | dialects = [[Croquet Project|Croquet]], [[Newspeak (programming language)|Newspeak]], [[Pharo]] | influenced by = [[Smalltalk]], [[Lisp (programming language)|Lisp]], [[Logo (programming language)|Logo]]; [[Sketchpad]], [[Simula]]; [[Self (programming language)|Self]] | influenced = [[Etoys (programming language)|Etoys]], Tweak, [[Croquet Project|Croquet]], [[Scratch (programming language)|Scratch]] | platform = [[Cross-platform]] | operating system = [[Cross-platform]]: [[Unix-like]], [[macOS]], [[iOS]], [[Microsoft Windows|Windows]], more | license = [[MIT License|MIT]], [[Apache License|Apache]] | file ext = .image, .changes, .sources, .st | website = {{URL|www.squeak.org}} }} '''Squeak''' is an [[Object-oriented programming|object-oriented]], [[Class (computer programming)|class-based]], and [[Reflective programming|reflective]] [[programming language]]. It was derived from [[Smalltalk]]-80 by a group that included some of Smalltalk-80's original developers, initially at [[Apple Inc.|Apple Computer]], then at [[Walt Disney Imagineering]], where it was intended for use in internal Disney projects. The group later was supported by [[HP Labs]], [[SAP]], and most recently, [[Y Combinator]]. Squeak runs on a [[Stack machine|stack virtual machine]] (VM), allowing for a high degree of portability. The Squeak system includes code for generating a new version of the VM on which it runs, along with a VM simulator<ref name="miranda_2018">{{cite book |first1=Eliot |last1=Miranda |first2=Clément |last2=Béra |first3=Elisa |last3=Gonzalez Boix |first4=Dan |last4=Ingalls |year=2018 |title=Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages |chapter-url=https://doi.org/10.1145/3281287.3281295 |chapter=Two decades of smalltalk VM development: live VM development through simulation tools |publisher=ACM Digital Library |pages=57–66 |doi=10.1145/3281287.3281295 |isbn=9781450360715 |s2cid=53116661 |url=https://hal.archives-ouvertes.fr/hal-01883380/file/hal.pdf |archive-url=https://ghostarchive.org/archive/20221009/https://hal.archives-ouvertes.fr/hal-01883380/file/hal.pdf |archive-date=2022-10-09 |url-status=live |access-date=2020-11-09}}</ref> written in Squeak. ==Developers== [[Dan Ingalls]], an important contributor to the Squeak project, wrote the paper<ref>{{cite journal|first1=Dan |last1=Ingalls |first2=Ted |last2=Kaehler |first3=John |last3=Maloney |first4=Scott |last4=Wallace |first5=Alan |last5=Kay |year=1997 |title=Back to the Future: the story of Squeak, a practical Smalltalk written in itself |journal=ACM SIGPLAN Notices |publisher=ACM Digital Library |volume=32 |issue=10 |pages=318–326 |doi=10.1145/263700.263754 |doi-access=free}}</ref> upon which Squeak is built, and constructed the architecture for five generations of the Smalltalk language. [[Alan Kay]] is an important contributor to the Squeak project, and Squeak incorporates many elements of his proposed [[Dynabook]] concept. ==User interface frameworks== Squeak includes four [[user interface]] frameworks: * An implementation of [[Morphic (software)|Morphic]], [[Self (programming language)|Self]]'s graphical [[direct manipulation interface]] framework. This is Squeak's main interface. * Tile-based, limited [[visual programming language|visual programming]] scripting in [[Etoys (programming language)|Etoys]], based on Morphic. * A novel, experimental interface called [[Tweak programming environment|Tweak]]. In 2001 it became clear that the Etoy architecture in Squeak had reached its limits in what the Morphic interface infrastructure could do. Hewlett-Packard researcher Andreas Raab proposed defining a "script process" and providing a default scheduling-mechanism that avoids several more general problems.<ref>{{cite web |url=http://tweakproject.org/ABOUT/FAQ/OriginalTweakMemo/ |title=Tweak: OriginalTweakMemo |publisher=Tweakproject.org |date=2001-07-06 |access-date=2011-06-12 |url-status=dead |archive-url=https://web.archive.org/web/20111002012532/http://tweakproject.org/ABOUT/FAQ/OriginalTweakMemo/ |archive-date=2011-10-02}}</ref> This resulted in a new user interface, proposed to replace the Squeak Morphic user interface in the future. Tweak added mechanisms of islands, asynchronous messaging, players and costumes, language extensions, projects, and tile scripting.<ref>{{cite web |url=http://tweakproject.org/TECHNOLOGY/Whitepapers/ |title=Tweak: Whitepapers |publisher=Tweakproject.org |access-date=2011-06-12 |url-status=dead |archive-url=https://web.archive.org/web/20111002012629/http://tweakproject.org/TECHNOLOGY/Whitepapers/ |archive-date=2011-10-02}}</ref> Its underlying object system is class-based, but to users, during programming (scripting), it acts like it is [[prototype-based programming|prototype-based]]. Tweak objects are created and run in Tweak project windows. * A [[model–view–controller]] (MVC) interface was the primary UI in Squeak versions 3.8 and earlier. It derived from the original Smalltalk-80 user interface framework which first introduced and popularized the MVC architectural pattern.<ref>{{cite web |url=http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html |first=Steve |last=Burbeck |title=How to use Model-View-Controller (MVC) |publisher=St-www.cs.uiuc.edu |date=1997-04-04 |access-date=2011-06-12 |url-status=dead |archive-url=https://web.archive.org/web/20090801040629/http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html |archive-date=2009-08-01}}</ref> MVC takes its name from the three core classes of the framework. Thus, the term "MVC" in the context of Squeak refers to both one of the available user interface frameworks and the pattern the framework follows. MVC is still provided for those wishing to use this older type of interface. ==Uses== Many Squeak contributors collaborate on [[Open Cobalt]], a [[free software|free]] and [[open-source software|open source]] [[virtual world]] browser and construction toolkit built on Squeak. The first version of [[Scratch (programming language)|Scratch]] was implemented in Squeak.<ref>{{Cite web |title=Scratch |url=https://wiki.squeak.org/squeak/5833 |access-date=2022-03-23 |website=wiki.squeak.org}}</ref> [[OpenQwaq]], a virtual conferencing and collaboration system, is based on Squeak.<ref>{{Cite web |title=Moving Immersive Collaboration Forward|date=3 May 2011|url=http://teleplace.wordpress.com/2011/05/03/moving-immersive-collaboration-forward/}}</ref> Squeak is also used in the Nintendo ES operating system.<ref name="gamasutra">{{cite web |last=Sheffield |first=Brandon |date=2007-12-04 |title=Inside Nintendo's ES Open-Source Operating System |url=https://www.gamedeveloper.com/game-platforms/inside-nintendo-s-es-open-source-operating-system |access-date=2024-03-05 |website=[[Game Developer (website)|Game Developer]]}}</ref> ==License== Squeak 4.0 and later may be downloaded at no cost, including source code, as a prebuilt [[virtual machine]] image licensed under the [[MIT License]], with the exception of some of the original Apple code, which is governed by the [[Apache License]]. Squeak was originally released by Apple under its own ''Squeak License''. While source code was available and modification permitted, the Squeak License contained an [[indemnity]] clause that prevented it from qualifying as true [[free and open-source software]]. In 2006, Apple [[Software relicensing|relicensed]] Squeak twice. First, in May, Apple used its own [[Apple Public Source License]], which satisfies the [[Free Software Foundation]]'s concept of a Free Software License<ref>{{cite web|url=https://www.gnu.org/philosophy/apsl.html |title=FSF's Opinion on the Apple Public Source License (APSL) 2.0 |publisher=Gnu.org |date=2011-05-07 |access-date=2011-06-12}}</ref> and has attained official approval from the [[Open Source Initiative]]<ref>{{cite web|url=http://www.opensource.org/pressreleases/osi-clarifies-APSL.php |title=Clarification of the APSL: Press Releases OS Clarifies The Status Of The APSL |publisher=Opensource.org |date=1999-03-17 |access-date=2011-06-12}}</ref> as an Open Source License. However, The Apple Public Source License fails to conform to the [[Debian Free Software Guidelines]]. To enable inclusion of [[Etoys (programming language)|Etoys]] in the [[One Laptop Per Child]] project, a second relicensing was undertaken using the Apache License. At this point, an effort was also made to address the issue of code contributed by members of the Squeak community, which it was not in Apple's power to unilaterally relicense. For each contribution made under the Squeak License since 1996, a relicensing statement was obtained authorizing distribution under the [[MIT license]], and finally in March 2010, the result was released as Squeak 4.0, now under combined MIT and Apache licenses.<ref>{{cite web|url=http://www.h-online.com/open/news/item/Squeak-4-0-released-now-under-MIT-Apache-license-956267.html |publisher=The H Open |title=Squeak 4.0 released - now under MIT/Apache license |date=2010-03-16 |access-date=2011-06-12}}</ref> ==See also== {{Portal|Free and open-source software}} * [[Alice (software)]] * [[Croquet Project]] * [[Pharo]] * [[Seaside (software)]] ==References== {{Reflist}} == External links == {{Commons category}} * {{Official website|www.squeak.org}} {{Smalltalk programming language}} {{Authority control}} [[Category:Programming languages]] [[Category:Apple Inc. software]] [[Category:Class-based programming languages]] [[Category:Disney technology]] [[Category:Dynamic programming languages]] [[Category:Dynamically typed programming languages]] [[Category:Educational programming languages]] [[Category:Free educational software]] [[Category:Programming languages created by women]] [[Category:Smalltalk programming language family]] [[Category:Software using the MIT license]] [[Category:Visual programming languages]] [[Category:High-level programming languages]] [[Category:Multi-paradigm programming languages]] [[Category:Cross-platform free software]] [[Category:Programming languages created in 1996]] [[Category:1996 software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Commons category
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Official website
(
edit
)
Template:Other uses
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Smalltalk programming language
(
edit
)