[HN Gopher] Project Oberon
       ___________________________________________________________________
        
       Project Oberon
        
       Author : Koshkin
       Score  : 253 points
       Date   : 2022-02-25 13:42 UTC (9 hours ago)
        
 (HTM) web link (www.projectoberon.com)
 (TXT) w3m dump (www.projectoberon.com)
        
       | jkonline wrote:
       | I find it hard to cpnclude how "useful and usable in a production
       | environment" an OS project can be, when the project website still
       | isn't using SSL/ HTTPS.
        
       | pjmlp wrote:
       | 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.
        
         | kragen wrote:
         | To be entirely meticulous about the genealogy, I think Wirth
         | was at PARC in 01976, and what inspired him most there was
         | Mesa; Lampson first described (Mesa's successor) Cedar in PARC
         | TR CSL-83-15, Xerox Palo Alto Research Center, December 01983,
         | and without rereading the report, I think Cedar's development
         | began about 01981. So Cedar is Oberon's sibling, not its
         | parent.
         | 
         | The connecting link at ETH between Mesa and Oberon was the
         | Lilith workstation with its system software written in Wirth's
         | Modula-2 (01977-01984).
         | 
         | As for Golang, the relationship is much more direct! The first
         | public version of Golang is mostly a slightly modified version
         | of Pike's Newsqueak, but at the point Golang became Golang,
         | Pike was working with Griesemer and Thompson. IIRC Griesemer
         | did his dissertation under Wirth at ETH on extending Oberon to
         | parallel computers.
        
           | pjmlp wrote:
           | Yes, mostly correct.
        
             | kragen wrote:
             | I'd be delighted if you'd correct whatever isn't!
        
               | pjmlp wrote:
               | Go is mix of Limbo and Oberon-2.
               | 
               | I also remember reading somewhere that Wirth found Cedar
               | too powerful, or complex, so Oberon was designed with the
               | goal to be as capable as Cedar environment, while using a
               | simpler language.
               | 
               | So not sure which kind of relation I would put them,
               | besides being an inspiration.
        
           | _fz_ wrote:
           | Here's a Project Oberon emulator in Go:
           | https://github.com/fzipp/oberon
           | 
           | And a Go port of the RISC compiler:
           | https://github.com/fzipp/oberon-compiler
        
         | badsectoracula wrote:
         | 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).
        
           | pjmlp wrote:
           | They are Oberon, the system that was described on the first
           | edition of Project Oberon was the version 1.
           | 
           | ETHZ researchers and Niklaus Wirth then iterated further on
           | the Oberon (the OS) and Oberon (the language).
           | 
           | The definitive Oberon (the OS) version that still uses the
           | plain Oberon (the language) from original project was System
           | 3, which is what those videos relate to.
           | 
           | In Active Oberon used to write AOS (BlueBottle OS), you can
           | still relauch System 3 as a nested OS.
        
             | badsectoracula wrote:
             | Yes they are Oberon too but my point is that they've
             | evolved and added a ton of stuff that go further than the
             | minimalistic nature of the linked site. The "Project
             | Oberon" in the site doesn't even have overlapping windows
             | or color for example.
        
               | pjmlp wrote:
               | That is like evaluating what MS-DOS was capable of by
               | looking at MS-DOS 1.0 instead of 6.22.
               | 
               | Oberon 1.0 isn't what was the daily driver at ETHZ,
               | beyond its initial introduction.
        
             | wrycoder wrote:
             | I consider Active Oberon and AOS to be forks, and I think
             | Wirth does, also. I believe that he feels that Project
             | Oberon is _his_ final word on the subject.
             | 
             | Wirth created Oberon-7 largely by _removing_ features[0]:
             | 
             |  _Revised Oberon (Oberon-07) is a revision of the original
             | language Oberon as defined in 1988 /1990. It is accepted by
             | the compiler recently completed for the ARM processor. Most
             | changes in the language might easily be called features of
             | a dialect. However, there are a few that merit a stronger
             | distinction, because they should be considered as
             | permanent, and as corrections of unsatisfactory properties
             | of the original Oberon. These are the elimination of the
             | loop statement, function result specification, array
             | assignments, constant parameters, and read- only import of
             | variables. All changes were made in the interest of
             | regularity, simplicity, completeness, and well-
             | structuredness._
             | 
             | See also [3] for confirmation that Oberon-7 is the language
             | of Project Oberon.
             | 
             | I'd recommend reading the papers on Wirth's personal site
             | [2].
             | 
             | [0] https://people.inf.ethz.ch/wirth/Oberon/Oberon07.pdf
             | (pdf) (15Jul2011 update)
             | 
             | [1]
             | https://people.inf.ethz.ch/wirth/Oberon/OberonAtAGlance.pdf
             | (pdf) (20Nov2013)
             | 
             | [2] https://people.inf.ethz.ch/wirth/Oberon/index.html
             | 
             | [3] https://people.inf.ethz.ch/wirth/ProjectOberon/PO.Syste
             | m.pdf (pdf) (2013)
        
               | pjmlp wrote:
               | Project Oberon cannot be his final word, given that it is
               | only the first version, later upgraded up to System 3
               | version.
               | 
               | It is hard to consider them forks, when they originated
               | on the same department and he also collaborated in some
               | form.
               | 
               | Component Pascal and Zonnon, those are proper forks.
               | 
               | While I admire Wirth's work, his goal to pursue a
               | minimalist Oberon with Oberon-07 is not so interesting to
               | me.
               | 
               | My pocket phone is more powerful than any Xerox
               | workstation, why should we keep searching for such
               | minimalist endeavours, instead of the rich development
               | experience provided by them.
        
       | fouc wrote:
       | > 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
        
       | lboasso wrote:
       | If you want to try out only the Oberon language, you might be
       | interested in oberonc [0] an oberon-07 self-hosting compiler for
       | the JVM. There are other several Oberon implementations for
       | different platforms listed here[1]
       | 
       | [0] https://github.com/lboasso/oberonc
       | 
       | [1] http://oberon07.com/compilers.xhtml
        
       | carapace wrote:
       | Project Oberon is awesome!
       | 
       | I found the Project Oberon book in SFSU library and read it cover
       | to cover. Such a tight, elegant system. Pretty much complete:
       | Oberon OS includes compiler for Oberon language!
       | 
       | Language was self-hosted (compiler written in itself) and Prof.
       | Wirth had a heuristic: no feature could be added to the
       | lang/compiler if it made compiling the compiler slower.
       | 
       | There are several emulators, in C, JS, Java, and Python, and
       | there's Verilog so you can burn to FPGA and make a real
       | workstation. People have.
       | 
       | The system has two kinds of OOP. There is the
       | C++/Java/Python/etc. kind where you basically add methods to a
       | record type, and there is the old school Smalltalk message-
       | passing kind, where elements of the OS communicate through an
       | extendable message bus.
       | 
       | The GUI system, especially with the "Gadgets" subsystem, is mind-
       | blowing. It would take too long to go over it at the moment, but
       | there are features there that _still_ haven 't made it into
       | mainstream GUI systems. If I get a minute later today I'll come
       | back and add a note detailing some of the awesome if someone else
       | hasn't already filled in the picture.
        
         | kragen wrote:
         | I'm looking forward to reading your note; IIRC "Gadgets"
         | postdates the book and so isn't documented in it.
        
           | carapace wrote:
           | Yes, Gadgets was written by a student later on. "The GADGETS
           | user interface management system" https://www.research-
           | collection.ethz.ch/handle/20.500.11850/...
           | 
           | I'm trying to find original sources, as my memory is a little
           | foggy. There is some good information here:
           | https://en.wikibooks.org/wiki/Oberon/ETH_Oberon/Tutorial
           | 
           | Basically it combined a nice Model-View-Controller widget
           | collection with facilities like live introspection and
           | editing of widgets, and embedding widgets in (multiple)
           | documents (edit a spline widget in one view and it changes in
           | all the views/docs in which it's embedded)
           | 
           | It might sound a little plain vanilla now, but this was in
           | 1990-1991.
        
             | kragen wrote:
             | Thank you!
        
         | marktangotango wrote:
         | Some of the gui stuff actually made it into Plan 9, see the
         | acme editor for more info.
         | 
         | I love all of Wirths writing, he really does a lot to make
         | complex topics approachable.
         | 
         | Note there's a lot more to OOP than adding methods to records,
         | on the surface yeah, but "primitive" sub-typing just scratches
         | the surface. This isn't a criticism, just a note so anyone
         | interested can learn more, Pierce's Types and Programming
         | Languages is a good place to start.
        
         | chadcmulligan wrote:
         | > The GUI system, especially with the "Gadgets" subsystem, is
         | mind-blowing. It would take too long to go over it at the
         | moment, but there are features there that still haven't made it
         | into mainstream GUI systems.
         | 
         | Have you seen Delphi?
        
         | pjmlp wrote:
         | I have a old article with lots of screenshots,
         | 
         | http://progtools.org/article.php?name=oberon&section=compile...
        
           | 7thaccount wrote:
           | Pretty amazing. I wish I could do my work on a truly
           | lightweight system like this.
        
       | Rochus wrote:
       | See also http://oberon-lang.ch or https://github.com/rochus-
       | keller/oberon for a modern version which runs on Windows, Mac and
       | Linux including an IDE with source-level debugger.
        
       | johndoe0815 wrote:
       | 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
        
         | kragen wrote:
         | The _original_ implementation of Oberon was based on a Nominal
         | Semidestructor 32032. Thanks for linking these more recent
         | designs! Especially, I had no idea Oberon had been ported to
         | RISC-V, which is very inspiring indeed!
        
           | johndoe0815 wrote:
           | Right, Wirth's group used to build their own machines. The
           | previous Modula-2 machine (Lilith) was a microcoded 16-bit
           | system built from SSI/MSI 74-series TTL components whereas
           | the Ceres family of workstations used different CPUs and
           | support chips from the NS32k family - the final version
           | (Ceres 3) used a low-cost embedded version of the NS32k
           | without an MMU (you don't need one for a type-safe language -
           | that was at least the motivation for this...). It could run
           | diskless and boot over a proprietary network, which used the
           | same hardware (Zilog Z8530 SCC) as Apple's Localtalk in Macs
           | (but a different protocol, I think).
           | 
           | An FPGA reimplementation of the Ceres would be great to have.
           | Someone already did the hard work and implemented a NS32k
           | soft core - http://www.cpu-ns32k.net/index.html
           | 
           | The old edition of the Project Oberon book that described the
           | NS32k version is a bit hard to find. But it's interesting to
           | see how little has changed between the versions.
        
           | johndoe0815 wrote:
           | Just noticed "Nominal Semidestructor". Right on point! :)
        
         | rbanffy wrote:
         | I wonder if it could be ported to the MiSTer platform. It seems
         | to be a very common and friendly device.
        
           | johndoe0815 wrote:
           | This should be possible - Hellwig Geisse (forgot to mention
           | his project, sorry - https://github.com/hgeisse/THM-Oberon)
           | is working on an Oberon port to the Terasic DE2-115 FPGA
           | port, which has an Altera FPGA like the MiSTer. The basis of
           | the MiSTer is a Terasic DE10 Nano FPGA board, which has a
           | more recent Cyclone V FPGA (the DE2-115 has a Cyclone II).
           | 
           | The MiST (MiSTer's predecessor, https://github.com/mist-
           | devel) would also be a nice platform.
           | 
           | More Oberon resources and links can be found here if you are
           | interested: https://riskfive.com/Web_resources.htm
        
       | visviva wrote:
       | 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".
        
         | rob74 wrote:
         | I was aware of the Oberon programming language, which is the
         | successor of Modula-2, which is itself the successor of Pascal
         | (all invented by Niklaus Wirth), but it took me a few minutes
         | to remember that there was also an OS and computer system
         | called Oberon. However in a university setting it makes perfect
         | sense to have a complete "package" of hardware, OS and
         | programming language which you can design and understand "from
         | the ground up".
        
         | ge96 wrote:
         | Recently heard about Serenity OS wonder if it's similar or
         | different ideals.
        
       | midislack wrote:
       | It'd be cool if we all had to use this. But nobody does.
        
         | Koshkin wrote:
         | Someone does:
         | 
         | https://visual.sfu-kras.ru
        
         | pjmlp wrote:
         | 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.
        
       | Kototama wrote:
       | 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?
        
         | JulianWasTaken wrote:
         | > 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).
        
       | kobieyc wrote:
        
       | jdlyga wrote:
       | Is this a fork of Project Ganelon?
        
       ___________________________________________________________________
       (page generated 2022-02-25 23:00 UTC)