I'm glad that Oberon is still in active development, it's great to have alternative operating systems, the more, the merrier.
If I were younger, and more sure of myself, I'd fork it, and "fix" a few things. I'd convert ARRAY OF CHAR in almost all cases to Free Pascal Style counted, reference counted, garbage collected, unlimited length AnsiString or WideString. (So they can contain NUL, and over a gigabyte of text).
I'd run it through NotePad++ and convert all tabs to spaces
I'd run as fast as I could towards Free Pascal compatible syntax, ditching case sensitivity and the non-standard # instead of <> for inequality.
Even though I'm older now, and more conservative... I still feel ---> <--- this close to being nerd sniped by it.
The last great version of Oberon, before ETHZ focused into Blue Bottle OS, written in Active Oberon. Which is actually my favourite version in the Oberon family linage.
Anyway Oberon System 3, is a great example of a full graphical single user workstation OS, with component framework (OLE style), with a repl, written in a GC enabled system programming language, supporting both JIT for dynamically loaded modules, or straight AOT compilation.
All of this when PCs still had to deal with Windows 3.x.
The Oberon component model actually differs significantly from COM/OLE. Oberon uses messages and message protocols; COM uses interfaces and the same virtual function tables as C++. Also interesting to note that there is not a single type-bound procedure in the whole Oberon System release 2.3.6 code.
OLE 1 and Gadgets both appeared in 1990; Marais references the 1989 InterViews (Linton, Vlissides, Calder) publication in his 1990 report. See also https://doi.org/10.1080/10618600.1996.10474712.
It is important and also helpful for the younger readers to name and correctly attribute the essential achievements. E.g. one fellow stated that "OLE was introduced in Windows 3.x", so it is important to note that the Oberon Gadget system appeared in the same year, and the component system was an independent achievement, that took a completely different approach than OLE or OpenDoc.
Written in Modula-2. I had to learn Modula-2 in university. When I read the announcement that we were to use Modula I thought it was Modula-3 that was already a thing at the time. But I guess Modula-2 is good enough and an even better teaching language. It was also a bit popular on the Atari ST with the Megamax Modula compiler (and at least three other Modula compilers!)
EDIT: not written in Modula-2 but wrongly attributed by Github.
Modula-3 is not directly related to Modula-2, despite what many think.
Modula-2 was designed by Niklaus Wirth, influenced by Mesa, and the XDE environment after his first sabbatical at Xerox PARC. Oberon would be out of his second sabbatical, influenced by Mesa/Cedar.
Modula-3 on the other hand, was born out of research at DEC/Olivetti from Mesa/Cedar former researchers, after they came out with Modula-2+, as Cedar's evolution influenced by Modula-2 design.
Can fellow readers make a short pitch regarding why someone who is not familiar with Oberon would be interested in it today (other than historical curiosity)?
I don't know of any other system that accomplishes as much with the same amount of code lines. It includes not just a kernel, but also a compiler, a dynamic linker, an editor, and an unusual blend of a desktop and command line.
It's not something you'd want to use today, but it's certainly worth studying. It's a wonderful lesson in keeping complex systems as simple as possible.
AFAIK there is no way to follow instructions from somewhere that results in an actual working system. I think there's something experimental that works on top of a Smalltalk system, but that it's not able to work independently of that. I also don't remember all source code being available.
Oberon is able to run on actual hardware and works in various emulators.
I do love the research they did for STEPS though, it's unfortunate it didn't result into an actual release.
Indeed, Michael Franz's work was certainly impressive. It's unfortunate that the code readability of those parts didn't quite match up to the rest of the system.
It features an alternative way of object-oriented design with focus on messaging and message inheritance (instead of the usual dynamic dispatch and class hierarchies). And the Gadgets framework is also pretty interesting and likely worth to be reused in current systems.
For all those of you who crib about forced capitalisation of certain keywords and use of BEGIN ... END in Oberon, see for yourself how it improves the usability of reading the code, even without pretty colour formatting - https://raw.githubusercontent.com/rochus-keller/OberonSystem... ... each block of code can be easily identified for analysis.
Also, while it wasn't initially done on the environment, automatic formating can take care of it, capitalizing keywords automatically, or on save, no need to overuse the shift key.
If I were younger, and more sure of myself, I'd fork it, and "fix" a few things. I'd convert ARRAY OF CHAR in almost all cases to Free Pascal Style counted, reference counted, garbage collected, unlimited length AnsiString or WideString. (So they can contain NUL, and over a gigabyte of text).
I'd run it through NotePad++ and convert all tabs to spaces
I'd run as fast as I could towards Free Pascal compatible syntax, ditching case sensitivity and the non-standard # instead of <> for inequality.
Even though I'm older now, and more conservative... I still feel ---> <--- this close to being nerd sniped by it.
Oops... too late... I've been bit[0]
[0] https://github.com/mikewarot/OberonSystem3FP