9 ms·
Project Oberon
- kobieyc 5y ago
- visviva 5y agoMaybe 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 5y agoI 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 5y agoRecently heard about Serenity OS wonder if it's similar or different ideals.
- fouc 5y ago> 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
- midislack 5y agoIt'd be cool if we all had to use this. But nobody does.
- Kototama 5y agoI 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 5y ago> 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).
- pjmlp 5y agoThe Oberon channel has several videos of Oberon in action, https://www.youtube.com/results?search_query=The+Oberon+Channel+Part 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 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 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/ https://fyne.io/fynedesk/) with something like gRPC for the dynamic experience, could be a possible sucessor.
- badsectoracula 5y agoWhile 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 5y agoThey 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.
- johndoe0815 5y agoThis 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-friendly-and-powered-with-the-son-of-pascal/ 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://fleasystems.com/fleaFPGA_Ohm.html) - https://github.com/Basman74/Oberon_SDRAM 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) - 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://papilio.cc/index.php?n=Papilio.PapilioPro) - https://opencores.org/projects/oberon_sdram 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 https://github.com/solbjorg/oberon-riscv
- rbanffy 5y agoI wonder if it could be ported to the MiSTer platform. It seems to be a very common and friendly device.
- johndoe0815 5y agoThis should be possible - Hellwig Geisse (forgot to mention his project, sorry - https://github.com/hgeisse/THM-Oberon 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 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 https://riskfive.com/Web_resources.htm
- Rochus 5y agoSee also http://oberon-lang.ch http://oberon-lang.ch or https://github.com/rochus-keller/oberon https://github.com/rochus-keller/oberon for a modern version which runs on Windows, Mac and Linux including an IDE with source-level debugger.
- elcapitan 5y agoInteresting, the cleaned up syntax reminds me a lot of Nim :)
- Rochus 5y agoNim is a nice language, but more geared to Python. Oberon+ is based on the original Oberon syntax instead using the "end" keyword to end blocks (instead of indentation); but when using the lowercase keyword versions it has certain similarities with Lua, which is not that surprising since Lua - as Oberon - is influenced by Modula-2.
- jkonline 5y agoI 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.
- carapace 5y agoProject 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 5y agoI'm looking forward to reading your note; IIRC "Gadgets" postdates the book and so isn't documented in it.
- carapace 5y agoYes, Gadgets was written by a student later on. "The GADGETS user interface management system" https://www.research-collection.ethz.ch/handle/20.500.11850/68711 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 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 5y ago
- lboasso 5y agoIf 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 https://github.com/lboasso/oberonc [1] http://oberon07.com/compilers.xhtml http://oberon07.com/compilers.xhtml
- jdlyga 5y agoIs this a fork of Project Ganelon?
- based2 5y agohttps://en.wikipedia.org/wiki/Oberon_(programming_language) https://en.wikipedia.org/wiki/Oberon_(programming_language)