back
114 comments
Oh, this is something I'm going to have to try. Excellent work!

I have to ask, since people who'd know will probably be here, what's the "ten thousand foot view" of Oberon today? I'm aware of the lineage from Pascal/Modula, and that it was a full OS written entirely in Oberon, sort of akin to a Smalltalk or Lisp machine image. What confuses me is the later work on Oberon seems to be something of a cross between a managed runtime like Java or dot net, and the Inferno OS, where it can both run hosted or "natively". Whenever I've skimmed the wikipedia or web pages I've been a bit confused.

Thanks. In contrast to Smalltalk or Lisp, Oberon is originally a native language, and the Oberon System originally was conceived as the native operating system of the Ceres computer used for teaching in the nineties at ETH Zurich. So there is no image as in Lisp or Smalltalk. Oberon lives on today in the form of various dialects and derivatives (such as my Oberon+ or Micron languages, see https://github.com/rochus-keller/oberon and https://github.com/rochus-keller/micron). There are indeed Oberon implementations which run on Java or ECMA 335 runtimes, which is possible due to the very restricted pointer handling and memory management of Oberon.
Smalltalk too was originally a full OS running on bare metal back in the Xerox Alto days (1972-ish).
The "OS" (or rather "kernel") was actually the VM which was implemented in microcode and BCPL. The Smalltalk code within the image was completely abstracted away from the physical machine. In today's terms it was rather the "userland", not a full OS.
It's refreshing to see Oberon getting some love on the Pi. There’s a certain 'engineering elegance' in the Wirthian school of thought that we’ve largely lost in modern systems.

While working on a C++ vector engine optimized for 5M+ documents in very tight RAM (240MB), I often find myself looking back at how Oberon handled resource management. In an era where a 'hello world' app can pull in 100MB of dependencies, the idea of a full OS that is both human-readable and fits into a few megabytes is more relevant than ever.

Rochus, since you’ve worked on the IDE and the kernel: do you think the strictness of Oberon’s type system and its lean philosophy still offers a performance advantage for modern high-density data tasks, or is it primarily an educational 'ideal' at this point?

The Oberon user interface inspired Acme on Plan 9.

Oberon is a very nice, fun and cozy system and environment for programming. I lived in it for a few months back around 2010 and it was a joy.

I often think this style of UI -- tiled text windows but with mouse and graphics interaction (similar to emacs actually) -- is what we should be using for the coding agents we're all using now.

I'd like to be able to dock panels of information, live-edit pieces of code instead of just "accept? Y/N", have side interactions, have real scroll bars and proper clipboards, even a live REPL alongside.

Instead we get Claude Code's janky "60fps TUI" full of bugs and barely interactive.

I was about 5 links deep before I figured out what Oberon actually was. A high-level explainer at the top of the readme would be really nice for folks who aren't already familiar with the Oberon ecosystem
I am surprised the top comment on an HN post is someone asking what Oberon is (especially someone who have programmer in their name.) Oberon is not only a programming language, but an entire software and hardware computing system built from the ground up to be as minimal as possible by famed computer scientist Niklaus Wirth. Simple RISC CPU, Oberon compiler, OS And Windowing system. The windowing system was famously copied by Rob Pike's Acme text editor on Plan 9.

https://projectoberon.net/

I'm quite familiar with Project Oberon as a professor who studies operating systems and programming languages, but even though this is Hacker News where many of us are familiar with the project, I'm not surprised that there are also many readers who are not familiar with it, since Oberon does not have the userbase of much more popular programming languages and operating systems, and it's not even covered in many undergraduate courses on those topics. Most undergraduate OS courses are Unix-focused, centering on either Linux, Minix, or xv6. The Oberon OS is certainly not Unix. Programming languages and compiler courses tend to vary, but I haven't seen one that uses Oberon.
I mean, in all fairness, I wasn't even born when Oberon started development
Remember that people who familiarize themselves with computing history are neither "crushing it" nor doing anything else evocative of advertising for energy drinks. Study of computing history is therefore something to be avoided.
A picture of the running system is the first thing you see at the link.

On the screen is (readable to me at least) the first page of the paper "Oberon Language Report" showing N. Wirth as the author.

In the Introduction to the on-screen document it says, "Oberon is a general-purpose programming language that evolved from Modula-2."

A good opportunity to consult wikipedia once again (https://en.wikipedia.org/wiki/Oberon_(operating_system)), or to ask your trusted LLM.
Pasting a Wikipedia link or saying "just ask an LLM" only helps out the one instance of someone not knowing. I did the same thing as the OP you're replying to. They're right - a brief summary in the readme would be a near zero-effort permanent fix to people who stumble on your project and dont know what Oberon is.
The best potted intro I know:

https://ignorethecode.net/blog/2009/04/22/oberon/

A more in-depth look for folks with some comp-sci knowledge:

https://www.scribd.com/document/377504715/Oberon-the-Overloo...

The latter is lifted from “The School of Niklaus Wirth: The Art of Simplicity,” which is a worthwhile volume for anyone with an interest in this stuff.
This is a really cool thing. Thanks Rochus.

The Oberon language and the Oberon System were featured in Byte Magazine several times, most notably in Dick Pountain's articles:

https://vintageapple.org/byte/pdf/199103_Byte_Magazine_Vol_1... https://vintageapple.org/byte/pdf/199305_Byte_Magazine_Vol_1... https://vintageapple.org/byte/pdf/199501_Byte_Magazine_Vol_2...

Spotting similarities betwen the appearance of the Oberon System and Plan 9, or Oberon syntax bits that were used in later languages, is left as an exercise for the reader.

It really is a pretty exciting project, even if I do have a few more gray hairs now (at least the ones that are left). Thanks for the Byte magazine references; I wasn't aware of these articles; very interesting to read how people experienced this technology in the nineties.
Does Oberon still require capitalized keywords? That always seemed to be emphasizing the wrong thing:

    IF disaster THEN abort;
Yes, the original Oberon (which the system is based on) has upper-case keywords (and some other orthodoxies). If you are looking for something more modern, go to https://github.com/rochus-keller/oberon, https://github.com/rochus-keller/luon or https://github.com/rochus-keller/micron.
Yes, like Modula-2 as well.

However, people always forget we don't program in Notepad, rather programmer editors that are able to do automatic capitalisation of keywords.

It is a non problem, like discussion of parentheses or white space in programming languages that require them.

This is great, especially being System 3, given the nice user experience Oberon eventually morphed into.

In System 3 with the Gadgets system it was already starting to feel like a proper mainstream OS, instead of the plain black and white, without framework like experience from the initial Project Oberon, even thought it was a technological achivement already, with a memory safe systems language.

I prefer the path taken down by Active Oberon, however that doesn't seem to also get that much love nowadays, and is much more complex to explore than System 3.

For those that not know it, it already had something like OLE (inspired by how Xerox PARC did it with Cedar), an AOT/JIT compilation system (with slim binaries for portability), and everything on a memory safe systems language.

Thanks. Preparations for the migraion of AOS/Bluebottle are underway. Concerning memory safety: it's only memory safe if you don't use the SYSTEM module features, and OberonSystem 3 (and later) heavily depend on those features.
Sure, but that in the end is what matters with memory safe systems languages, reduction of attack surface and easy to spot when safety is being disabled.

Alternative being Assembly written primitives, like in Smalltalk originally. Blue book description.

This is great! I remember running System 3 on a 386 back when MS-DOS was king.
Thanks. There is actually also an i386 version of the system in the repository, where I modified the kernel so it runs with Multiboot, making installations much easier. An essential achievement for both platforms were the stand-alone tools, i.e. I can compile and link the whole Oberon system on Linux or any other platform (see https://github.com/rochus-keller/op2/). I even implemented an IDE which I used for the development (see https://github.com/rochus-keller/activeoberon/).
Cool. Is macOS (Apple Silicon) also supported?

If not, well there's another reason to have a Linux VM ready :)

Have always been fond of Oberon! I would love to have A2/ActiveOberon/BlueBottle or whatever the name of the day is on a small native machine as well.

Great Stuff!

Thanks. The A2 Fox compiler actually has an ARM backend, so I would be surprised if nobody has migrated it to the Raspi yet. The 2003 version of AOS/Bluebottle (not A2) is on my list of interesting sytems, particularly because it supports multicore hardware.
I'm going to try and give it a go on a zero2 I have lying around. Thanks, this is exactly what I come to hacker news for.
Cool, tell me whether it worked. Unfortunately my mini HDMI adapter is broken and I have to wait for the new to arrive. But I already soldered the headers to the UART pins and observed the system start which looked as it should.
Impressive work. Native boot on Raspberry Pi without emulation is a rare thing to see working cleanly. How's the performance compared to running Oberon on a standard x86 setup? And does this open up the possibility of running it headless as a small server?
This is lovely. And I bet it is very fast on that hardware, all things considered.
The system is up extremenly fast (compared to Linux), but then it takes pretty long to find the USB hub and the keyboard/mouse. Maybe I can still speed this up.
I still hope to see the world where Oberon is the future (and present) of OS and programming language design, and I know very little about it.

Thanks to your work, that's about to change.

Thank you times a thousand <3

> I still hope to see the world where Oberon is the future (and present) of OS and programming language design

I see you're into horror stories.

Oberon is absolutely a horrible language. It's an example of how you can screw up a good language by insisting on things that were important in 1960-s.

Like not allowing multiple returns (not multiple return _values_ but multiple returns).

There's an argument (and I think a good one) that in structured programming there should be only one return per function. It's not that hard -- you just have a variable and you set it to what you want to return and the last line of the function returns that variable. I think that some things Wirth did with Oberon, particularly in the post Oberon-OS versions like Oberon-07, are a bit restrictive, but they are always in the service of making code easier to read, even if it makes it slightly harder to write.
Show me significant concepts implemented in today's languages which cannot directly be traced back to "things that were important in 1960-s" or seventies ;-)
Apparently a school of though widely embraced by Go scholars, nowadays resposible for our cloud infrastructure.
So good to see Oberon this accessible! Mad props!
Will this image also work on the 3B+? I have a spare one of those that I can try this out on.
Thank you, I've never heard of the Oberon os before.
Oberon is both a programming language and an operating system used mostly for teaching, much like e.g. xv6 or xinu. Similar to the latter, Wirth has written text books about the system, some of which can be downloaded for free (see https://projectoberon.net/ for the PDF links).