Live data from Hacker News

Project Oberon

projectoberon.com

1–10 of 72 posts

Re: Project Oberon

#2
> the 2013 edition of Project Oberon and its results are intended to be presented "as-is", a teaching and learning resource kept reasonably static in the spirit in which the original book was written.

This is a classic

Re: Project Oberon

#3
Maybe Project Oberon is widely known to others, but if not, I suggest the title be changed to something like "Project Oberon is a design for a complete desktop computer system from scratch".

Re: Project Oberon

#5
I wish more languages/softwares/projects set this goal of simplicity and clarity.

Clarity is easier to measure. Simplicity is harder. Take Golang for example, yes you can learn the language in a few days or weeks but then some of the external complexity ends up with boilerplate. Is that simpler in the end?

Then simplicity has many aspects. Take a software project. Simple for who? the users? the original devs? the maintainers?

We have Kolmogorov complexity for algorithms but what is the equivalent to measure whole systems?

Re: Project Oberon

#6
post #5

I wish more languages/softwares/projects set this goal of simplicity and clarity. Clarity is easier to measure. Simplicity is harder. Take Golang for example, yes you can learn the language in a few days or weeks but then some of the external complexity ends up with boilerplate. Is that simpler in the end? Then simplicity has many aspects. Take a software project. Simple for who? the users? the original devs? the mai…

> We have Kolmogorov complexity for algorithms but what is the equivalent to measure whole systems?

Theory is nice, but we don't really spend enough time systematically or empirically measure how long it takes people to learn various things, or similarly how easy they find making a change to an existing (codebase|project|language|etc). Doing so and just reporting what we learn as an industry would have a ton of value -- arguably a lot more than just coming up with a metric or proxy model of what we care about (how long something takes to learn or maintain).

Re: Project Oberon

#7
The Oberon channel has several videos of Oberon in action,

https://www.youtube.com/results?search_query=The+Oberon+Chan...

While Oberon was quite cool, people should also learn about its Xerox influence,

"Eric Bier Demonstrates Cedar"

https://www.youtube.com/watch?v=z_dt7NG38V4

Also dive into what happened afterwards, Oberon-2, Active Oberon, Zonnon,...

Active Oberon could be considered quite modern, also makes the distinction between safe and unsafe pointers, which improves the experience for low level coding.

https://github.com/metacore/A2OS

One of the best things about these systems is proving what systems programming with automatic memory management were capable of.

Given Oberon-2's influence on Go, maybe improving Fyne (https://fyne.io/fynedesk/) with something like gRPC for the dynamic experience, could be a possible sucessor.

Re: Project Oberon

#8

It'd be cool if we all had to use this. But nobody does.

In a very twisted way, .NET on Windows alongside PowerShell, and Java/Kotlin on Android take many similar ideas, but granted they fail at the full execution.

Re: Project Oberon

#9
This project is still a great example of a complete computer design, starting from Niklaus Wirth's own RISC5 CPU (not a RISC-V) and very simple peripherals over the OS, runtime/garbage collector, compiler, GUI and simple example applications.

One problem of the original implementation is that it was based on an old Xilinx Spartan 3 development board. This is not only no longer available, but it is one of the few FPGA boards that used 32 bit wide fast (12 ns IIRC) asynchronous SRAM chips. Wirth's hardware design relies heavily on this.

Some years ago, there was a compatible board, the OberonStation. However, it seems this is no longer manufactured: https://pcper.com/2015/12/meet-the-oberonstation-kid-friendl...

However, some modified designs exist that implement a cache in FPGA block RAM and an SDRAM controller. These can be used with more recent FPGA boards:

- FleaFPGA "Ohm" board with a Lattice ECP5 FPGA and 32 MB RAM (https://fleasystems.com/fleaFPGA_Ohm.html) - https://github.com/Basman74/Oberon_SDRAM

- Radiona ulx3s, another ECP5 in an open source design (https://github.com/emard/oberon) - https://github.com/emard/oberon

- PapilioPro using a Xilinx Spartan 6 LX, another open source PCB design (https://papilio.cc/index.php?n=Papilio.PapilioPro) - https://opencores.org/projects/oberon_sdram

Shameless plug: my student Rikke's port of Project Oberon to RV32I (this is a real RISC-V), however, we still need to find some time to build an FPGA-based SoC. Currently, it runs in emulation: https://github.com/solbjorg/oberon-riscv

Re: Project Oberon

#10
post #7

The Oberon channel has several videos of Oberon in action, https://www.youtube.com/results?search_query=The+Oberon+Chan... While Oberon was quite cool, people should also learn about its Xerox influence, "Eric Bier Demonstrates Cedar" https://www.youtube.com/watch?v=z_dt7NG38V4 Also dive into what happened afterwards, Oberon-2, Active Oberon, Zonnon,... Active Oberon could be considered quite modern, also makes the d…

While these are called "Oberon", judging from the screenshots (i haven't watched the videos), they seem to be way beyond the minimalistic nature of the Oberon system shown in Project Oberon.

I think the emulator linked at the bottom left side is a better way to check out Oberon in action as you can easily (well, after you figure out how things get compiled, etc :-P) see it in practice and how a few individually simple (if not outright primitive) things can be combined to create something nice. For example i always found it amusing that the "menu bar" in each window is really just a regular text area and the commands shown are really methods that are called when you (IIRC) middle click them, like any other text in a window (so the main "GUI" for a program can really by just a text file with methods to click on - and of course since it is editable you can simply customize the GUI by editing the text file).

Post reply on HN