Single-language client-server Web Development in Smalltalk

Orca is a framework that allows the development of complete Web applications in a single language. Developers write Smalltalk to express the server-side, the client-side, and communication between client and server. Orca's compiler automatically translates Smalltalk into readable JavaScript code that executes in all major Web browsers, while transparent bidirectional message passing enables, for example, client objects to send Smalltalk messages to server objects. Further, developers can leverage considerable parts of Smalltalk's standard library and existing JavaScript libraries in client-side components.

The single-language approach unifies Web development. Instead of applying two programming languages, two markup languages, and the undirectional Hypertext Transfer Protocol, developers use the same language, libraries and tools for both client-side and server-side components. No application models have to be mirrored accross languages to be available on the client and the server. Expert knowledge becomes less likely as there is less difference in the implementations of client- and server-side parts. Furthermore, the resulting homogenous code base facilitates a consistent vocabulary of idioms and patterns.

We used the Squeak (http://www.squeak.org/) implementation of the Smalltalk programming language and environment.

Demo Video


Orca's implementation comprises Smalltalk and JavaScript sources. Both have to be in place to run Orca applications. You can find the Squeak sources in a Squeaksource repository, while we host our JavaScript sources in a git repository.

There are two prerequisites to load and run Orca: First, you need git (git-scm.com) to load the client-side sources of Orca. Second, you need a Squeak VM (squeakvm.org) to run the server-side sources.

To clone the client-side sources from our github repository, use:

There are two ways to continue depending on whether you want to install Orca into an exisiting image or into a new image.

The git repository includes an automatic installer script that builds a new Squeak image. It downloads the latest Squeak sources, the latest Squeak trunk image, and the Orca packages and their dependencies.
The git repository contains a bash script called custom_installer.sh.default. To use it, you need to set the path to your Squeak VM.

If you want to load Orca into an exisiting Squeak image instead, you can use our Metacello configuration: ConfigurationOfOrca. You should be able to load Orca into current Squeak images as, for example, the latest All-in-One image (ftp.squeak.org).

To load it, evaluate:

Now, you should have a Squeak image with the Orca packages and dependencies. To configure your Orca installation, evaluate:

You just need to specify the path to the git repository and restart the Orca server. Afterwards, you can browse localhost:8887/test/ to ensure that Orca is running.

Other example applications that come with Orca: /index, /balls, /browser, /xxo, /chat, and /sysstats.


This Software is licensed under the MIT license (opensource.org).

Mailing list

Join our mailinglist (groups.google.com) if you encounter problems or want to contribute to the Orca project.

Partners and participants

Bedarra Research Labs, Ottawa, Ontario

Hasso-Plattner-Institut, Potsdam


  • Lauritz Thamsen, Anton Gulenko, Michael Perscheid, Robert Krahn, Robert Hirschfeld, and David A. Thomas. Orca: A Single-language Web Framework for Collaborative Development. In Proceedings of the Conference on Creating, Connecting and Collaborating through Computing (C5) 2012, Institute for Creative Technologies, University of Southern California, Playa Vista, California, USA, January 18-20, 2012, IEEE. (to appear)