This text without links can be printed as a reference material leaflet without loss of information

ETH Oberon White Paper

Be wise - generalize.
Unknown origin

Keywords: component framework, document-based, dynamic loading, extensibility, graphical user interface, graphical components, interactive composition, MVC, Oberon, object-oriented, operating system, persistent object, programming language.


  1. The Oberon Project History
  2. The Oberon Programming Language
  3. The ETH Oberon System
  4. Application Packages
  5. The different ETH Oberon System Implementations
  6. How to get the ETH Oberon System
  7. Books on Oberon
  8. Interesting HTML documents
  9. Contact address
  10. Copyright

1 The Oberon Project History

Oberon is simultaneously the name of a programming language and of a modern operating system. The Oberon project [WG92] was started at the Swiss Federal Institute of Technology in Zürich (ETHZ) in 1985 by Niklaus Wirth and Jürg Gutknecht. It was originally targeted towards in-house built hardware (Ceres workstation, based on the National Semiconductors 32000 processor family). Later, the decision was made to port the system to popular computer hardware, where it would run natively or on top of the operating system of the host. Today, Oberon is available for many computer platforms.

In 1991, Jürg Gutknecht and his group continued the development towards the ETH Oberon System. The goal was to exploit the inherent potential and features of Oberon to a much larger degree, upgrade the system by a concept of composable and persistent objects, complement the textual user interface by a graphical companion and provide support for the ubiquitous network. In 1995, the first official Oberon System 3 release was finished. Since then, the system has been constantly improved and extended. In 1997, the Release 2.2 including a large palette of applications was published together with a comprehensive hypertext-based documentation. In March 2000, a new release was ready and the system was renamed "ETH Oberon System".

2 The Oberon Programming Language

The Oberon language is the successor of Modula-2 in the Pascal family [RW92]. From Modula-2, Oberon inherits the following programming in-the-large concepts which are universally recognized as essential, namely: New concepts in Oberon include: The primary merit of the language Oberon [Wir88] lies in the provision of data type extensibility as a multi-purpose construct. In combination with polymorphism and procedure variables it supports both heterogeneous data structures and object-oriented programming. As a consequence, no radical break with traditional programming technique is necessary even if an OOP style is used.

In comparison with typical terminology, classes correspond to record types, subclasses to extended record types, superclasses to base record types and objects to record instances. In its simplest form, a method corresponds to an installed procedure variable and a message-send to a call of an installed procedure variable. In contrast to class-centeredness of most OOP languages, Oberon uses an instance-centered OOP model.

Some of the characteristics of the compiler are:

The compiler can generate two types of object files: (a) classical native object files containing target machine code or (b) slim binaries. Slim binaries are a new form of object files that contain no object code at all, but a portable description of a module's content that makes these files completely independent of the eventual target machine (platform independence). Object code generation is carried out on-the-fly by the module loader (depending on the underlying hardware) and is as efficient as loading traditional object files.

3 The ETH Oberon System

The original Oberon system is a single-threaded, single-user, co-operative multi-tasking operating system [Wir88, WG92] that runs on bare hardware or on top of a hosted operating system as a single-window application. The ETH Oberon System is an extended version that has intrinsic support for persistent objects and for building graphical user interfaces. It presents itself as a hierarchy of modules, many of which export one or several powerful abstract data types. Application modules simply reuse these data types and do not have to care about their implementation at all.

Core components:

Some of the implementations use the facilities of the underlying operating system, via API.

System characteristics:

ETH Oberon System highlights:

  1. Advanced Textual User Interface. The basic ETH Oberon System layer comes with a highly powerful textual user interface (texts with embedded Oberon commands). It is as lean and compact as the original system. For the native version the basic system is only 210 KB when loaded.

  2. Integrated object support in the kernel. The ETH Oberon System kernel is an upgrade of the original Oberon kernel by a unifying object machinery that

  3. Object Autonomy and Persistence. All ETH Oberon System objects are autonomous and persistent by nature, i.e. they are viable in any environment and are portable to any other store or machine together with their current state. The ETH Oberon System supports persistence by a binding mechanism that allows objects to be bound to an object library.

  4. Extensibility by Software Bus Technology. The ETH Oberon System objects are consistently equipped with generic message interfaces. Based on this genericity, the ETH Oberon System defines a common message protocol that can be regarded as a kind of software bus in the sense that objects implementing this protocol can participate and cooperate in system data structures. The protocol is defined by a set of basic message types and rules that can be extended individually for specific classes or groups of objects. It follows the principle of parental control in composite objects.

  5. Fully Hierarchical Composability. The ETH Oberon System objects are components by nature, i.e. they can be freely embedded in any other container object or text. Object composition can be nested up to any arbitrary level.

  6. Generalized MVC Scheme. The ETH Oberon System display space is a heterogeneous hierarchy of composite and elementary visual objects and it supports arbitrary partial and total overlapping. The hierarchy is based on a generalized Model-View-Controller scheme that allows different camera views of one and the same object (visual or not).

  7. Powerful GUI Framework Gadgets. The Gadgets package provides a very powerful framework for object composition. It includes a rich library of predefined visual objects and model (or abstract) objects, called "gadgets", and some effective tools for their interactive and descriptive composition and inspection.

    Gadgets object types cover a large spectrum. Most of them are of a visual nature and are seen on the display, that is, they are part of the display space. Examples are text gadgets, viewers, menu bars, buttons, sliders, panels etc. In contrast to visual gadgets, non-visual gadgets operate behind the scenes and are able to manipulate and store information. They are acting as models in the MVC scheme.

    The Gadgets framework allows the run-time construction of graphical user interfaces (GUI) from gadgets as building blocks. Each dialog element, or gadget, can be embedded in any UI (textual or graphic) or application. All gadgets can be integrated and reused in any other ETH Oberon System environment. Gadgets can float in a text, they can be embedded in a panel, in a graphic diagram etc. Container gadgets manage other gadgets as their "children". The principal containers are panel gadgets (two-dimensional edit surfaces) and text gadgets (complete text editors with support for embedding), although more refined containers are available.

    Two different methods for object construction and composition are available: interactive and descriptive. The interactive method makes use of the built-in editing support of ETH Oberon System objects. Visual objects are modified and used interactively wherever they are located. ETH Oberon users create new UIs or modify existing ones in a typical drag-and-drop fashion. In effect, UI construction is reduced to pure document editing. In addition, two supporting tools are available: The Gadgets tool offers a rich and extensible arsenal of predefined components and some layouting functionality. The Columbus inspector allows gadgets to be inspected together with their attributes and links.

    The descriptive method relies on a formal language and a corresponding interpreter. The description language LayLa is of a LISP-like functional style.

  8. Self-Contained Documents. A concept of generic and self-contained documents is part of the Gadgets framework. Such documents are named and can be included in other container objects or texts by reference. Also, they are able to migrate and, optionally, they can be authenticated.

  9. Extensibility on Different Levels

    Openness and extensibility were key goals of project Oberon from the beginning. With ETH Oberon System we can distinguish extensibility on three different levels:

4 Application Packages

The ETH Oberon System package includes several interesting tools and applications. Many of them were developed as productivity tools by ETH assistants and students. Some of the applications ready for use are: Users may opt to install their selection of applications chosen from a rich palette of application packages supplied with the system:

5 The different ETH Oberon System Implementations

The ETH Oberon system can be installed on various platforms, either on top of the operating system (Windows, Linux for Intel-based PC or for PPC, MacOS for Macintosh) of the host machine or, in the case of Intel-based PC, Transmeta platform and DEC Shark NCs, as a native operating system, known as Native Oberon. The platform-specific hardware and software requirements together with installation instructions are described in readme files. Details on how to obtain the latest update for a specific platform are given in the next section.

PC Native Oberon on Intel-based PCs is absolutely self-contained and makes no use of any alien software layer or Bios. In a way, PC Native Oberon is to the PC what the original Oberon [WG92] was to the Ceres. For example, it uses the same flat file directory structure found in the original Oberon system. In contrast, the other implementations adopt the directory structure of their host system and the concept of a name path.

6 How to get the ETH Oberon System

The system, together with its source code (under a general license agreement), is available for free as freeware. The newest release of the ETH Oberon System can be obtained at any time via anonymous file transfer from the ETH: The subdirectory names for the different implementations are: The Macintosh port can also be obtained from the University of California in Irvine (UCI):

7 Books on Oberon

A comprehensive list of technical papers issued by the ETH as well as a list other papers having Oberon as subject is found in:

8 Interesting HTML documents

More information on current developments is available using an Internet browser. The following list of HTML documents addresses is not exhaustive.

9 Contact address

Swiss Federal Institute of Technology
The ETH Oberon System Developer Team
Institute for Computer Systems
ETH Zentrum
CH-8092 Zürich

Phone +41 1 632 7311, Fax +41 1 632 1307
E-mail (discussion list): oberon at
ETH Oberon homepage:
Bluebottle homepage:

10 Copyright

ETH Oberon System is a copyright of the Team of the Institute of Computer Systems of the ETH Zürich.

The Oberon system is available free of charge and no registration is required for downloading the material. The source code is available under the following license agreement. Each source code module refers to the license terms at the beginning.

13 Mar 2000 - Copyright © 2002 ETH Zürich. All rights reserved.
E-Mail: oberon-web at