Hacker News new | ask | show | jobs
Oberon System 3 (github.com)
107 points by hollimolli 973 days ago
9 comments

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.

Oops... too late... I've been bit[0]

[0] https://github.com/mikewarot/OberonSystem3FP

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.

> OLE style

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.

Style doesn't mean 100% the same C++ code as OLE.

Of course the Document/Gadgets/Library system was implemented in a different way as OLE.

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.
Yes Herr Professor, they appeared on the same year.

I was trying to make a point about an idea for the people that might have heard of OLE and nothing else.

How many with the age of 30 years and below do you think even know what InterViews was about?

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.
To be fair, OLE was introduced in Windows 3.x. Of course, writing in Pascal or C++ was less fun than it would be in Oberon.
OLE as concept, is based on how Xerox Star and GlobalView handled documents.

Some of the Office team early developers were ex-Xerox researchers.

I haven't mentioned them, because they aren't well know outside Xerox PARC archeology.

You could change that? They deserve the history be known.
Charles Simonyi developed Bravo, the first WYSIWYG word processor, for the Alto at Xerox PARC.

He later wrote Microsoft Word, and other parts of what became MS Office, at Microsoft, where he was Chief Architect:

https://en.wikipedia.org/wiki/Charles_Simonyi

He designed what is now called Hungarian Notation:

https://en.wikipedia.org/wiki/Hungarian_notation

Word uses the famous piece table data structure -- also from PARC -- which is how "fast saves" work.

https://web.archive.org/web/20160308183811/http://1017.songt...

As a result Simonyi is a billionaire and was the first ever two-time space tourist:

https://www.theguardian.com/world/2009/mar/26/space-tourist-...

You could justifiably say that he and his work are quite famous. (!)

It’s been documented elsewhere; e.g.:

https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&d...

The LayLa layout language is pretty neat. Converts a simple formal language to Gadgets (widgets).

Demo: https://github.com/rochus-keller/OberonSystem3/blob/b2d16e32...

That's cool... it's like a terse version of the DSL that Lazarus uses for forms. (.lfm files)
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.

Oberon is written in Oberon, by the way.

It's the Oberon language, not Modula-2 (Github displays Modula-2 by mistake).
Oh ok, thanks for the correction :)
And there's now a Modula-2 front-end for GCC:

https://gcc.gnu.org/onlinedocs/gm2/

It was also a bit popular on the Amiga.
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.

> I don't know of any other system that accomplishes as much with the same amount of code lines

Possibly STEPs?: https://tinlizzie.org/VPRIPapers/tr2012001_steps.pdf

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.

And a JIT in later versions, with the support for slim binaries.
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.
Here's a 5 page one from its author:

https://cr.yp.to/bib/1995/wirth.pdf

Here's a plain text version on my own blog:

https://liam-on-linux.dreamwidth.org/88032.html

Michael Franz' classic Oberon -- the Overlooked Jewel is also short and highly readable:

https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90...

Somewhat of a tangent, the oberonc compiler for the JVM brings the language to the Java platform as well. Very nice.

https://github.com/lboasso/oberonc

Note that compiles Oberon-07, which isn't the same as Oberon.
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.
From the perspective of a Freepascal user - Neat!!

Will try it soon.

What kind of filesystem does it have? Or does it have one?
Non-hierarchical, a bit like a key value store.