
Project Oberon - Fenume
http://www.projectoberon.com/
======
vezzy-fnord
Wow, this is excellent. The Oberon and Bluebottle OS materials have always
been quite scattered, so someone putting them in a central index is quite
convenient.

For those unaware, Oberon's main qualities are the fact that it's a full
operating system written in a garbage collected Pascal-like language (actually
made by the same person who initially wrote Pascal) which uses said language's
module system to provide reusable/chainable interfaces throughout the whole
OS, support for orthogonal persistence and most notably, its highly
unconventional user interface that bridges the power of the CLI and the GUI
together in this vaguely hypertext-like workspace where you can dynamically
live program the UI itself through on-screen text that can serve as an entry
point or continuation to perform all sorts of computations, things you'd
normally write hacky scripts for. Closest analogue is Xerox's Cedar.

You should consider trying it and stealing a few ideas from it for the greater
good.

~~~
dang
> on-screen text that can serve as an entry point or continuation to perform
> all sorts of computations, things you'd normally write hacky scripts for.

The Acme editor famously works this way. So, in a rudimentary way, does the
Emacs scratch buffer. It's a weird amalgam of text editor and REPL: you
evaluate snippets of text and get the output in-place, and then edit the text
to get what you want next. This live-text-as-code way of working is not how
I'm used to interacting with a programming system and always slightly rewires
my brain. But even in that simple form, you can grasp in it the beginnings of
a whole computational paradigm, all the way up to UI. (Computational models
don't usually imply a UI—this is an exception, as are spreadsheets.) Oberon
must be the most systematic realization of this. I'd like to try it.

~~~
vezzy-fnord
Which is unsurprising, because Rob Pike was openly influenced by Oberon in the
design of both Acme and the original Plan 9 windowing system 8½ and its
current successor rio.

Oberon exploits it further, though. Plan 9 does use chording, programmable
text and plumbing but only insofar as it complements the synthetic file system
interface, whereas Oberon is more thoroughly object-oriented and can have the
text serve as a pointer to various OS subsystems, creating a sort of graphical
continuation-passing style, as I alluded.

------
Keyframe
Oberon. Now that's a name I haven't heard in a long time. Once upon a time
there was a great crossroad in the early 90's (when I was a kid and learning
programming - keep in mind that perspective).

BASIC was on its way out - we all knew it to some extent due to home computers
renaissance, but it was evident it didn't have any staying power. So there
were all these wonderful machines with different architectures, OS' and
programming languages out there, with no clear winner (it depended on what you
wanted to do). So, basically there were two camps in the end, regarding
programming languages. Pascal and C. Pascal had that notion that it was, too,
on its way out, but was really useful and Oberon was around the corner so it
was worth the wait to stick with it. On the other hand C++ was entering the
arena full force, because machines were getting faster (it had a stigma of
being slow). I went with C, because I was getting into SGI/IRIX and CG (and
later on abandoned programming as a full time choice), and some of my friends
went with Pascal. Oberon was floating in the air for some years, but nothing
happened. This was always a mystery to me. Eventually, Pascal guys moved to
Delphi and my circle of C guys either stayed with C (like I did) or bought OO
Kool-Aid and went with C++ (of which some later on went to Java). Pascal
(later on Delphi) guys developed sort of a cult. It never was clear what
happened to Oberon, and (to me) to this day it's a mystery. Funny enough, I
can now retrospectively see that programming languages we chose (and stuck
with) was heavily influenced by machines/OS' we used. Pascal guys were mostly
PC or Atari guys, and C were mostly those with access to *NIX and Amigas.

~~~
pjmlp
> Oberon was floating in the air for some years, but nothing happened. This
> was always a mystery to me.

Wirth was never good on capitalizing his work on the industry. Same thing
happened to Modula-2 sadly.

On his ACM award article and a later article about lean software, he discusses
how sadly he sees industry embracing complexity instead of quality.

[http://www-oldurls.inf.ethz.ch/personal/wirth/Articles/Turin...](http://www-
oldurls.inf.ethz.ch/personal/wirth/Articles/TuringAward.pdf)

[http://www.inf.ethz.ch/personal/wirth/Articles/LeanSoftware....](http://www.inf.ethz.ch/personal/wirth/Articles/LeanSoftware.pdf)

> Pascal guys were mostly PC or Atari guys, and C were mostly those with
> access to *NIX and Amigas.

A reason why I never cared about C, so basic when compared with Turbo Pascal
6.0, and eventually got to move into C++.

Also most of my friends with Amigas cared only about Assembly.

~~~
Keyframe
_Also most of my friends with Amigas cared only about Assembly._

Of course. I tried to be as brief as possible, not to bother people. Even C
had a stigma of being slow back then. Assembly was the language for anything
performant, but everybody was aware that in the following years computers will
get fast enough (computers, not compilers hah) not to care.

~~~
pjmlp
Sure, sorry for misunderstanding you.

That is why I always smile when people talk about how modern languages are so
slow and C is the king of speed, if only they used those old C compilers back
then...

------
nabla9
Oberon had so many good ideas. It's still worth studying.

The problem in the 90's: provide executable content across the net for
browsers.

Java was supposed to provide the portable universal binary code you could load
and execute everywhere, except that it did not have the necessary features and
was too complicated. Then came Javascript but it was broken mess for long time
and needs binary format.

There was Juice back in 1997
[http://www.modulaware.com/mdlt69.htm](http://www.modulaware.com/mdlt69.htm).
Ligthing fast single pass compiler that works with AST and gives constant-time
type and well-formedness checking portably over the net.

If WebAssembly is ready in 2017, we can finally have the portable binary with
the same set of features as Juice 20 years later. Instead of Oberon system, we
have browser in the client and node.js in the server throwing WebAssembly
around.

It's like déjà vu all over again.

~~~
stream_fusion
The problem with Java binaries on the client, was that the Java applet didn't
have direct access to the DOM bindings.

Instead, the applet rendered it's own GUI via the plugin, and the look and
behavior was inconsistent with the rest of the browser experience.

A similar story with activex and flash.

It's a mystery why it has taken so long to get to the point where we can
target the browser with a statically-checked higher-level language that has
API access to the native browser event loop and dom components the same way
that Javascript does it.

~~~
sanbor
Another problem with Java applets was that they were slow as hell for that
time.

------
martanne
I had the chance to take a Oberon related lecture and its simplicity is really
nice. Some things found in Oberon, like tiling window management, I use
everyday. The book describes the whole system including the RISC CPU design.

As part of the Niklaus Wirth Birthday Symposium to celebrate his 80th birthday
he also gave a talk titled "Reviving a computer system of 25 years ago"
(Abstract[0], Slides[1], Video[2]).

There was also a demonstration on the original hardware, the system really
seemed ahead of its time.

Project Oberon also inspired me to write a text editor[3] using a piece table
data structure as described in Chapter 5.

[0] [http://wirth-symposium.ethz.ch/speakers.html#Wirth](http://wirth-
symposium.ethz.ch/speakers.html#Wirth)

[1] [http://wirth-symposium.ethz.ch/slides/wirth.pdf](http://wirth-
symposium.ethz.ch/slides/wirth.pdf)

[2]
[http://www.multimedia.ethz.ch/conferences/2014/wirth/?doi=10...](http://www.multimedia.ethz.ch/conferences/2014/wirth/?doi=10.3930/ETHZ/AV-d40b0ce9-b9fa-4ba3-8dee-
cf9d0c6f01a4&autostart=false)

[3] [https://github.com/martanne/vis#why-another-text-
editor](https://github.com/martanne/vis#why-another-text-editor)

------
notdan
This sounds similar to another book/course/project I've seen that was quite
interesting to work through:

From NAND to TetrisBuilding a Modern Computer From First Principles

[http://www.nand2tetris.org/](http://www.nand2tetris.org/)

[http://www.amazon.com/The-Elements-Computing-Systems-
Princip...](http://www.amazon.com/The-Elements-Computing-Systems-
Principles/dp/0262640686)

------
dang
_Project Oberon is a design for a complete computer system. Its simplicity and
clarity enables a single person to know and implement the entire system, while
still providing enough power to make it useful and usable in a production
environment._

Yes! We need so much more of this.

 _If a system is to serve the creative spirit, it must be entirely
comprehensible to a single individual._

[http://www.cs.virginia.edu/~cs655/readings/smalltalk.html](http://www.cs.virginia.edu/~cs655/readings/smalltalk.html)

~~~
kylebrown
Speaking of smalltalk, was project Oberon inspired by Alan Kay's STEPS project
to implement a full OS + apps in under 20k LoC?

[http://www.vpri.org/pdf/tr2008004_steps08.pdf](http://www.vpri.org/pdf/tr2008004_steps08.pdf)

~~~
pjmlp
It was inspired by Cedar.

Wirth took sabbatical years to work at Xerox PARC in the two occasions.

After the first visit when we learned about Mesa, we designed Modula-2 and its
OS Lillith.

On the second visit he got to use Mesa evolution, Cedar, which was his
inspiration for Oberon and the Ceres workstation.

~~~
pjmlp
Replying to my own post. As it is already frozen for editing.

Please note the sentence

> After the first visit when we learned about Mesa, we designed Modula-2 and
> its OS Lillith.

 _we_ is _wrong_! Stupid mobile autocorrection, it should be read _he_.

------
carapace
Be sure to read "Project Oberon, The Design of an Operating System and
Compiler" generously published online as a pdf:
[http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf](http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf)

There are emulators for Wirth's new cpu in JS, Java, C, and Python.

You can run it in the browser from here:
[http://schierlm.github.io/OberonEmulator/](http://schierlm.github.io/OberonEmulator/)

(Shameless plug:
[https://github.com/PhoenixBureau/PythonOberon](https://github.com/PhoenixBureau/PythonOberon)
I wrote the Python emulator. It is sloooooooow, but it will boot and draw the
screen (after a few minutes...)

~~~
w23j
Correct me if I am wrong, but the page has links to the book you mention as
well.

However, the your link says _Edition 2005_ while the pdfs linked to by the
posted page say _Revised Edition 2013_.

~~~
carapace
D'oh! My bad. I was just so excited to see Oberon on the front page.

------
snail_mail
Couldn't help but think of
[https://github.com/urbit/urbit](https://github.com/urbit/urbit)

------
j_s
TL;DR (aka WTF?): The Design of an Operating System, a Compiler, and a
Computer

 _a design for a complete computer system. Its simplicity and clarity enables
a single person to know and implement the entire system_

~~~
timClicks
Take a look at the Wikipedia entry if you would like an overview of the
scale/scope of the project and its history:
[https://en.wikipedia.org/wiki/Oberon_%28operating_system%29](https://en.wikipedia.org/wiki/Oberon_%28operating_system%29)

------
pjmlp
Excellent work!

Without wanting to take any credit from the author, allow me advertise my own
Oberon information document.

[http://www.progtools.org/article.php?name=oberon&section=com...](http://www.progtools.org/article.php?name=oberon&section=compilers&type=tutorial)

Enjoy the screenshots and links to Cedar and Oberon documentation.

------
codezero
This isn't the same, but if you're interested in looking at a compiler and OS
mostly from scratch based on C check this out. It's pretty amazing.
[https://github.com/rswier/swieros](https://github.com/rswier/swieros)

It comes from the author of the c4 compiler. (Interpreter?)

~~~
sklogic
Shameless plug: there is also mine kinda-C-based setup (but I also have a
somewhat unfinished Oberon compiler too):
[https://github.com/combinatorylogic/soc](https://github.com/combinatorylogic/soc)

------
nickpsecurity
The work started when Wirth saw the same Xerox setup that Apple did. Wirth
couldn't buy one so he just built his own lol. The first system Wirth and Jurg
Gutknecht designed was Lilith [1]. They improved Pascal to make modular
software in the form of Modula-2. They made a P-code-like assembler language
called M-code to make compilation easier and raise assembler abstraction
slightly. They then wrote most of the system in Modula-2. They had in about 2
years a computer, OS, compiler, and some apps. ETH used these day-to-day and
they later morphed into Oberon system.

The brilliance of Wirth was keeping things simple. I think he overdid it but
it served him well in many ways. He also kept things consistent where
possible. Just having a simple language, compiler, libraries, and consistent +
simple bytecode target would be better than what I've dealt with coding. Each
iteration, he tries to improve the language and platform with lessons he
learned from the first. He also ensures the lowest common denominator is easy
to port, compile efficiently, and produce efficient code for.

A lot of inspiration. He's recently put Oberon on a custom, simple processor
running on an FPGA. The latest incarnation of the system is A2 Bluebottle [2]
with downloads here [3].

[1]
[http://www.cfbsoftware.com/modula2/Lilith.pdf](http://www.cfbsoftware.com/modula2/Lilith.pdf)

[2]
[http://www.sage.com.ua/en.shtml?e1l0](http://www.sage.com.ua/en.shtml?e1l0)

[3]
[http://www.oberon.ethz.ch/downloads/index](http://www.oberon.ethz.ch/downloads/index)

------
RexRollman
I was going to try Oberon Native again (for the first time since 1996) after
getting 9Front to work VMWare Fusion but couldn't find the installer images. I
went to the following site:

[http://www.oberon.ethz.ch/downloads/index](http://www.oberon.ethz.ch/downloads/index)

but the download links don't work. Does anyone know where it should be?

~~~
sp332
There's a note at ftp://ftp.inf.ethz.ch/pub/ETHOberon/readme.txt that says
they've all been moved to ftp://ftp.ethoberon.ethz.ch/Oberon/

~~~
RexRollman
Thank you!

------
Richard14
I don't know why but this kind of project brings me back to my Commodore 64
days. I remember seeing an announcement for a new version of the C64 but it
would not make sense unless it could capture the spirit of that little yet
powerful 16-Bit device that you can learn so much from and also play amazing
games on. Booting straight to Basic as the CLI inspired many of us to just try
and write our own little "software". It must have been the beginning of many
CS careers. This type of inspiring device can only come in a mobile form these
days and none of the current OSes are as beginner friendly and straightforward
as Basic on the C64 was. There might be a need for a tablet with an Oberon
like system that could attract the teens of today as a customizable and easily
programmable device.

------
mhd
An interesting thing about Oberon is that the most recent revision _removed_
some basic elements. Like multiple return statements… Wirth really likes his
minimalism.

------
pavlov
Here's a screenshot of the Oberon UI, cropped from page 16 of the book:

[http://i.imgur.com/uRLHiJj.png](http://i.imgur.com/uRLHiJj.png)

------
drico
if you are interested you should have a look at www.fullpliant.org also

------
LimpWristed
I am new to all this. I was thinking to get started with The Elements of
Computing Systems by Nisan/Schocken. Is Project Oberon something entirely
different? If not, how do they compare?

~~~
me2i81
Oberon is an already-built system designed by Niklaus Wirth, one of the giants
of the field. The goal of Elements of Computing Systems is to have you build a
more limited but still functional system yourself, so get busy!

------
rbanffy
This (or a Lilith), an Alto, a Symbolics 3600... I'd love to see little
Raspberry Pi versions of them...

Oh... And, if possible, with matching keyboards and mice.

------
madez
Not accessible for me.

    
    
        Error 404 Not Found
        
        Not Found
        Guru Meditation:
        
        XID: 630373509
    

Does it work for you?

~~~
jcr
That's a somewhat self-inflicted wound. Your browser is not sending a user-
agent, and the site fails to follow RFC2616 Section 14.43 (sending a UA is
_optional_).

------
rbanffy
I love the Lilith mouse that's used in the first photo.

------
jtwebman
It is funny, I was up late last night playing around with writing my own OS
and then this becomes the #1 spot on Hacker News.

------
frik
There was also Oberon System v4, a split of development: [http://www.ssw.uni-
linz.ac.at/Research/Projects/Oberon.html](http://www.ssw.uni-
linz.ac.at/Research/Projects/Oberon.html)

