Oberon (operating system)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Tiled window arrangement of Oberon
DeveloperNiklaus Wirth and Jürg Gutknecht
Written inOberon
Source modelOpen source
Initial release1987[1]
Available inEnglish
PlatformsNS32032, IA-32, Xilinx Spartan, and many others
Default user interfaceText user interface
Official websitewww.ethoberon.ethz.ch

The Oberon System[3] is a modular, single-user, single-process, multitasking operating system written in the programming language of the same name.[4] It was originally developed in the late 1980s at ETH Zürich. The Oberon System has an unconventional visual text user interface instead of a conventional CLI or GUI. This "TUI" was very innovative in its time and influenced the design of the Acme text editor for the Plan 9 from Bell Labs operating system.

The latest version of the Oberon System, Project Oberon 2013, is still maintained by Niklaus Wirth and a number of collaborators but older ETH versions of the Oberon Systems have been orphaned. The Oberon System also evolved into the multi-process, SMP-capable Bluebottle operating system, with a zooming user interface.


The Oberon operating system was originally developed as part of the NS32032-based Ceres workstation project. It was written almost entirely (and since the 2013 edition, now is described entirely) in the Oberon programming language.[5] The basic system was designed and implemented by Niklaus Wirth and Jürg Gutknecht and its design and implementation is fully documented in their book "Project Oberon".[6] The user Interface and programmers reference is found in Martin Reiser's book "The Oberon System".[7] It was later extended and ported to other hardware[8] [9] [10] [11] [12] by a team at ETH-Zürich and there was recognition in popular magazines.[13] [14] [15] [16] [17] [18] Wirth and Gutknecht (although being active Computer Science professors) referred to themselves as 'part-time programmers' in the book 'Project Oberon'.[6] In late 2013, a couple of months before his 80th birthday, Niklaus Wirth published a second edition of Project Oberon.[19] It details the implementation of the Oberon System using a RISC CPU of his own design realized on a Xilinx FPGA board. It was presented at the symposium[20] organized for his 80th birthday at ETHZ. In the meantime several emulators for this version were implemented. [21] [22] [23] [24]

According to Josef Templ, a former member of the developer group at Eidgenössische Technische Hochschule, Zürich and later member of the "Institut für Systemsoftware" of Johannes Kepler University of Linz, where one of the versions (V4) was maintained, the genealogy of the different versions of the Oberon System was the following:

Year Name Remark
1985   Start of the Oberon project
1987  V1 Internal use at ETHZ.[3][25] Only simple text editing facilities.
1991  V2  Extensible text model and a special editor called Write[26] supporting these extensions.
1991 System 3 Extensions to the kernel supporting persistent objects and object-libraries supporting object embedding and object linking. Gadgets, text-editor: Script, and graphics-editor: Illustrate[14]
1992 Publication of the Oberon Trilogy: "Project Oberon",[6] "The Oberon System".",[7] and "Programming in Oberon"[5]
1992  V4 Functionality of Write integrated into standard text editor.
Rel. 1.4 Desktops
1993 Rel. 1.5 Generic document model
1994  V4 Hanspeter Mössenböck's appointment at JKU (Linz), development of V4 moved to Linz.
1995 Rel. 2.0 Extension of the document space to the whole internet. Improved bitmap-editor: Rembrandt. –Online tutorials.
2000 ETH-Oberon System-3 renamed to ETH-Oberon
2002 AOS - A2 Active Object System[27] (aka Act. Oberon Sys., later renamed to A2)
2013 PO 2013 - V5 Re-implementation of the original Oberon System in FPGA

User interface[edit]

Oberon has a text user interface (TUI), which has to be differentiated from the terminal user interface. It combines the point-and-click convenience of a graphical user interface (GUI) with the linguistic strength of a command line interface (CLI) and is closely tied to the naming conventions of the Oberon language. Any text appearing (almost) anywhere on the screen can be edited and can therefore be used as command input. Commands are activated by a middle-mouse click[28] on a text fragment of the form Module.Command (optionally followed by Parameters, which are terminated by ~). A command is defined by any procedure which is exported and has an empty argument list. Parameters to the command have to be defined before executing the middle click and must be explicitly scanned and retrieved by the procedure. There are no checks nor any questions asked during command execution. This is sometimes called a "non-modal" user interface (UI). Nothing like a command prompt is required.

Although radically different from a command line, the TUI is very efficient and powerful.[29] A steep ascent in the early learning curve makes it a little bit difficult in the beginning. No questions are asked: this is a deliberate design decision, which needs getting used to. Most editors ask the user when closing a modified text: this is not the case in the Oberon System. The usage of the TUI and programming interface is fully documented in Martin Reiser's book "The Oberon System".[7] A short introduction to the user interface can be found on Niklaus Wirth's home page.[30] The later Versions of System Oberon, Oberon V4 (or V4 in short, sometimes also referred to as Linz-Oberon) and Oberon System 3 (or S3, sometimes also called ETH-Oberon or Spirit of Oberon), enhanced the basic interface with different but incompatible implementations for buttons, drop down menus, and other active elements. V4 used for that purpose a dedicated control character embedded in normal text in contrast to System 3, which extended the kernel by introducing persistent objects. Both extensions include a large set of user interface elements.

Mastering the Oberon user interface, both the purely textual and also the so-called Gadgets System (under S3), is absolutely non-trivial. Therefore, it is recommended to proceed after a successful installation of Oberon System 3 to André Fischers Oberon System 3 Tutorial. An expanded version of this tutorial was published as a book,[31] which it is out of print now. The whole book is available in electronic form under a single user license in every installed version of System 3 (Windows, Linux or Native, i.e. also with the Gadgets toolkit of OLR[32]). More information how to get your own copy of the Oberon Companion may be found in the Getting Started section of the Oberon Wikibook.

Similar user Interfaces have yet to appear in more commonplace operating systems. Rob Pike's Acme system under Plan 9 from Bell Labs was strongly inspired by the Oberon TUI. Whether the worksheet interface of the Macintosh Programmer's Workshop influenced Oberon's TUI or vice versa is difficult to decide: the Oberon System was based on Wirth's previous computer design the Lilith, and both the Apple Macintosh (and its precursor Lisa) and the Oberon System (on Ceres and its precursor Lilith) have the same roots: they were all inspired by the Alto developed at Xerox PARC.

Versions and availability[edit]

V1 was the first usable version some time before the Oberon Trilogy[5][6][7] was published. A major change in the text model together with the editor called Write[26] yielded V2. As foreshadowed in the table in section history above there was a major fork in the beginning of 1990s: V4 vs. System 3: The group around Jürg Gutknecht introduced persistent objects and object-libraries thereby extending the kernel. The group around Hanspeter Mössenböck realized similar features by introducing active elements mapped to a special character thereby extending fonts without changing the kernel. System 3 was sometimes also called Spirit of Oberon and later renamed to ETH Oberon, whereas V4 was sometimes also called Linz Oberon.

The Oberon subsystem in A2 on an XO-1.5.

As of 2017 the Oberon OS is available for several hardware platforms, generally in no cost versions and from several sources, which is quite confusing. The Oberon OS is typically extremely compact. Even with an Oberon compiler, assorted utilities including a web browser, TCP/IP networking, and a GUI, the entire package can be compressed to a single 3.5" floppy disk. There are/were versions which emulated the Oberon OS on top of another operating system and versions which run on bare hardware. The latter ones are called Native Oberon. There are/were native versions for the Ceres, Intel IA-32, and ARM platforms. In 2013 Niklaus Wirth adapted the basic system as described in "Project Oberon"[6] to a current FPGA design. According to the preface of the 2013 edition, the whole system compiles in less than 10 seconds on a Spartan-3 board. This version is sometimes also called V5, despite it being much more similar functionally to the original V1 running on the Ceres than any of the later versions.

A version of the Oberon System 3,[14] which was integrated in the Microsoft Windows OS was called Plugin Oberon.[33] Plugin Oberon supported the binary format called OMI (Oberon Module Interchange) aka "slim binaries", which allowed portable object code between Intel x86, Motorola 68K, and PowerPC architectures. Slim binaries were invented by Michael Franz in the early 1990s. They were motivated and opposed to the "fat binaries" invented by Apple during the transition from 68K to PowerPC architectures.[34] OMI provided portable code based on a compressed version of the abstract syntax tree. The approach of a compressed abstract syntax tree is revived for Graal and Truffle.

The version called Oberon V4 (see also History) is closer to the original operating system developed by N. Wirth & J. Gutknecht. It was originally developed at ETHZ, but when H.P. Mössenböck went to Institut für Systemsoftware at Johannes-Kepler University in Linz (JKU) the development of V4 moved also. Therefore, V4 is sometimes also called Linz-Oberon in contrast to ETH-Oberon. The most recent version of V4 and extensions are available at JKU. Oberon V4 appears to be orphaned, there are almost no changes since 2000. Another repository of V4 is Claudio Nieder's Oberon V4, which also shows difference between the different V4 implementations. Since 2013 this page moved to/is mirrored at SourceForge. V4 is closer to what would now be called an integrated development environment than an operating system of its own. There were many extensions written for V4, which are still available from the ftp server of SSW at JKU; some documentation can be found on their web-pages, more information is normally included in the packages and it is given in Oberon's special rich text format.

Around 2010, the computer science department at ETH Zurich has begun exploring active objects and concurrency for operating systems, and has released an early version of a new language Active Oberon and a new operating system for it, first called AOS and — due to copyright issues — now called A2, and/or Bluebottle. It is available from ETH Zurich with most source via the Internet. Native versions (A2), i.e. running on the bare hardware, are currently possible for Intel IA-32 and X86-64 single- and multi-processor systems and for the StrongARM CPU family, versions running on top of another operating system are available on Windows (WinAos), Unix (UnixAos), Linux (LinuxAos), and OS-X (DarwinAos). More detailed information about A2 can be found on the russian Wikipedia pages about A2.

As a part of an industrial research project[35] the Native Systems Group of ETH Zurich has developed an application-specific operating system called stailaOS which is based on the latest version Oberon OS. It is targeted towards applications like real-time analytics, high performance trading systems, main memory based ERP etc.

Native Oberon[edit]

The Oberon0 installer running under QEMU in Debian Wheezy. The presentation of the partition table illustrates the comprehensibility of the system in general.

Native Oberon[36] stands for the Oberon System running on bare hardware. PC-Native Oberon is the version of the Oberon operating system which runs on IA-32 (x86-32) PC hardware. There has never been a V4 Native Oberon, so every information here in this section implicitly assumes that it is System 3. Native Oberon has minimal hardware requirements (133 MHz Pentium, 100MB hard disk, and a VESA 2 graphics card with a resolution of at least 1024x768 pixel, optionally a 3COM Network card). The basic system runs from a single HD-Floppy and additional software can be installed through the network. The full installation includes the Gadgets GUI. It is written completely in the Oberon programming language.

A version called LNO (an acronym for Linux Native Oberon), which uses Linux as hardware abstraction layer (HAL) also exists. Its goal was to be as compatible as possible to PC-Native Oberon. Other versions of the Oberon System, i.e. without Native in the name, had partially modified interfaces of low level modules. In 2015 Peter Matthias revitalized LNO under the Name OLR[32] (Oberon Linux Revival) as a multi-platform Distribution running seamlessly under Intel x86, RISC-V, MIPS, and ARM. It runs nicely on the Raspberry Pi and on the inexpensive CHIP computer; with some tweaking (adjusting group membership or/and permissions on some devices) it runs nicely under Tiny Core Linux. OLR interfaces with Linux kernel by direct System calls. OLR currently (mid 2017) misses a network layer.

Project Oberon 2013[edit]

In 2013 Niklaus Wirth and Paul Reed completed a re-implementation of the original Oberon System for the Digilent Xilinx Spartan 3 FPGA Starter Board. The work includes a revision of "Project Oberon",[6] identified as Project Oberon (New Edition 2013). In 2015 Paul Reed collaborated with Victor Yurkovsky in the creation of OberonStation, a Xilinx Spartan 3-based computer designed specifically to run Oberon. The system has since been ported to a Xilinx Spartan 6 FPGA Development Board by Saanlima Electronics. Peter de Wachter implemented an emulator for it, which was also ported to Java and JavaScript by Michael Schierl, running in modern browsers, and ported to Free Pascal/Ultibo by Markus Greim.[21][22][23] Andreas Pirklbauer maintains an experimental version and extensions of Project Oberon 2013 at GitHub.



A2, Yet another name for the Active Object System, 2003.
ALO, ARM Linux Oberon; in LNO family and for ARM CPU.
AOS, Active Object System, 2002. Renamed to A2 because of rumored copyright issues.[27]
BB, BlackBox Component Builder. Component Pascal IDE from Oberon Microsystems.
Bluebottle OS, And again another name for the Active Object System, 2003.
CP, Component Pascal. A dialect in the Oberon family most similar to Oberon-2.
ETHO, Oberon as developed at Eidgenössische Technische Hochschule (ETH) Zürich.
Fox, The compiler for Active Oberon, appearing in AOS (= A2 = Bluebottle).
LEO, Linux ETH Oberon. ETHO 2.4.3 for Linux x86.
LNO, Linux Native Oberon.
NO, Native Oberon. Oberon running on bare hardware rather than atop another operating system.
OLR, Oberon Linux Revival. A version of NO which uses Linux as a HAL and runs on x86, ARM, and MIPS.
OP2, The Portable Oberon-2 Compiler. OP2 was developed to port Oberon onto commercially available platforms.[37]
PACO, (scope) PArallel COmpiler. Appears in A2. Compiles each scope in an independent thread.
RISC5, the CPU of Project Oberon 2013 based upon Wirth's RISC architecture.[38] Not to be confused with RISC-V.
UnixAOS, Unix-based AOS.
WinAOS, Windows-based AOS.

See also[edit]


  1. ^ Irena Kulka. "ETH - Oberon - Welcome to Oberon". Archived from the original on 6 January 2017. Retrieved 27 November 2017.
  2. ^ ETH-License
  3. ^ a b Niklaus Wirth & Jürg Gutknecht: (1988) The Oberon System. Report Nr. 88.
  4. ^ Wirth, Niklaus: The Programming Language Oberon. Software - Practice and Experience, 18:7, 671-690, Jul. 1988
  5. ^ a b c M. Reiser and N. Wirth: Programming in Oberon Addison-Wesley/ACM Press (1992) ISBN 0-201-56543-9. Out of print.
  6. ^ a b c d e f N. Wirth and J. Gutknecht: Project Oberon - The Design of an Operating System and Compiler Addison-Wesley/ACM Press (1992) ISBN 0-201-54428-8. Out of print. Online version of a second edition.
  7. ^ a b c d Reiser, Martin: "The Oberon System - User Guide and Programmer's Manual" - Out-of-print - Addison-Wesley/ACM Press (1991) ISBN 0-201-54422-9
  8. ^ A. R. Disteli, OBERON for PC on an MS-DOS base, Technical Report #203 der ETH-Zürich, November 1993, Reprint.
  9. ^ J. Supcik, HP-OBERON, Technical Report #212 of the ETH-Zürich, November 1993, Reprint.
  10. ^ M. Franz, MacOberon Reference Manual, Technical Report #142 der ETH-Zürich, November 1993, Reprint.
  11. ^ J. Templ, Design and implementation of SPARC-Oberon. Structured Programming, 12, 197–205 (1991).
  12. ^ M. Brandis, R. Crelier, M. Franz, J. Templ, The Oberon System Family. Software-Practice and Experience, Vol. 25(12), 1331–1366, December 1995. Also: Technical Report 174 of the ETH-Zürich.
  13. ^ R. Gerike, Wider den Schnickschnack. Oberon System, Teil 1: Anwendersicht. c't 1994 (2) p. 180, Teil 2: Technische Einblicke. c't 1994 (3), p. 240 (German language).
  14. ^ a b c H. Marais, Oberon System 3, Dr. Dobb's Journal, October 1994, pages 42-50.
  15. ^ D. Pountain, Oberon: A Glimpse at the Future, BYTE 18(5), 111ff, May 1993. Archive.org
  16. ^ D. Pountain, Modula's Children, Part II: Oberon, BYTE 16(3), 135-142, Mar. 1991. Archive.org
  17. ^ D. Pountain, The Oberon/F System, BYTE 20(1), 227f, Jan. 1995. Vintage Apple
  18. ^ T. Börner, Betriebssysteme: Native Oberon für den PC, CHIP 1999, March, p. 131ff (German language).
  19. ^ "[Oberon] Project Oberon, 2013 Edition". Retrieved 11 August 2015.
  20. ^ Olaf A. Schulte. "ETH Zurich Multimedia Portal: video, audio, podcast, webcast, live-streaming - Niklaus Wirth Birthday Symposium". Retrieved 11 August 2015.
  21. ^ a b Peter De Wachter. "Oberon RISC Emulator". Retrieved 10 August 2017.
  22. ^ a b Michael Schierl. "Project Oberon emulator in JavaScript and Java". Retrieved 10 August 2017.
  23. ^ a b Markus Greim. "Port of the OBERON RISC Emulator to [Ultibo]". Retrieved 10 August 2017.
  24. ^ Roel P. de Jong. "Oberon Workstation". Retrieved 10 August 2017.
  25. ^ Wirth, Niklaus. Designing a System from Scratch. Structured Programming (1989) Vol. 10, pp. 10-18.
  26. ^ a b Szyperski, Clemens A., Write: An extensible text editor for the Oberon system. Eidgenössische Technische Hochschule Zürich (1991). Report 151.
  27. ^ a b Muller, Pieter Johannes, The active object system design and multiprocessor implementation. Eidgenössische Technische Hochschule Zürich (2002). pdf
  28. ^ Using the mouse and the keyboard http://www.ethoberon.ethz.ch/ethoberon/tutorial/Mouse.contents.html
  29. ^ Franz, Michael (2000). "Oberon - The Overlooked Jewel". In Böszörmény, Lászlo; Gutknecht, Jürg; Pomberger, Gustav (eds.). The School Niklaus Wirth - The Art of Simplicity. Morgan Kaufmann Publishers. pp. 41–53. CiteSeerX ISBN 1-55860-723-4.
  30. ^ Wirth, Niklaus (2015). "How to use the Oberon System" (PDF). Retrieved 24 November 2016.
  31. ^ André Fischer & Hannes Marais: The Oberon Companion. A Guide to Using and Programming Oberon System 3. vdf Hochschulverlag AG (1997). ISBN 978-3728124937, out of print, but see notes in Getting Started section of the Oberon Wikibook
  32. ^ a b Matthias, Peter. "Oberon Linux Revival". Retrieved 31 August 2016.
  33. ^ Zeller, Emil Johann (2002). "Fine-grained integration of Oberon into Windows using pluggable objects" (PDF).
  34. ^ Franz, Michael (1994-03-01). Code-Generation On-the-Fly: A Key to Portable Software. Zürich: Verlag der Fachvereine Hochschulverlag AG an der ETH Zurich. ISBN 9783728121158.
  35. ^ stailaOS(ETHZ) Project Page Archived 2011-10-04 at the Wayback Machine
  36. ^ Archives of the Oberon Website.
  37. ^ Crelier, Régis. "Separate Compilation and Module Extension". ETHZ. Retrieved 18 November 2018.
  38. ^ Wirth, Niklaus. "FPGA-related Work". ETHZ. Retrieved 12 September 2016.

External links[edit]