It really is a pretty exciting project, even if I do have a few more gray hairs now (at least the ones that are left). Thanks for the Byte magazine references; I wasn't aware of these articles; very interesting to read how people experienced this technology in the nineties.
Reddit is somehow broken. I moderate the Oberon subreddit and don't manage to permanently remove protected status. When I go away and come back a few days later it is again protected and people have to contact and ask me when they want to post. I already went to Reddit administration with this issue but never got a response.
Cool. What is the primary use case? What features in particular make it more useful than TCC alone? TCC as such is looking for the standard C libraries on the system. How do you handle this with your approach?
Pasting a Wikipedia link or saying "just ask an LLM" only helps out the one instance of someone not knowing. I did the same thing as the OP you're replying to. They're right - a brief summary in the readme would be a near zero-effort permanent fix to people who stumble on your project and dont know what Oberon is.
Thinking independently and learning strategies to find their own way are among the most important foundations for anyone interested in technology or who wants to work in the field. If people are curious enough about a keyword or topic, they should also be willing to put in some effort to research it. Or, if that really isn’t possible, they should ask good questions. That’s generally much more promising than confronting the author of a post with accusations right off the bat.
One of the basic principles of communication is that you have a mental model of the person you're communicating with and are phrasing what you want them to understand in terms that you think they'll understand. So whenever you're writing something - anything - you should be writing with a target audience in mind, and stop explaining right around the point where you believe that your target audience doesn't need further explanation.
Of course it's normal for there to be a disconnect between your assumptions about your target audience and reality. In a real conversation this happens all the time and it's no big deal. When something's written and especially when it's printed it can be a bit more of a problem, so maybe better to err on the side of over-explaining. Also a good reason to have editors and proofreaders. But I'm rambling a bit.
In this case, the link was posted to HN by the author, so the author might have had "average HN reader" in mind. Oberon never really achieved success outside of a particular niche in academia, so unless they went to ETH Zurich I personally wouldn't expect someone - even someone in tech - to know about it.
Exactly. I knew what the link was about and didn't study at ETH Zurich. I (mistakenly?) think Oberon is that kind of "roots knowledge" shared between all of us, like Lisp or Forth. That's why I asked when one should stop clarifying things. Maybe some people need to know what a compiler os, or a VM, or a windowing system, or ...whatever.
What I mean is that having so much info at the toe of our tips, comments like "you should put a link about what this thing is" are needless.
> I (mistakenly?) think Oberon is that kind of "roots knowledge" shared between all of us, like Lisp or Forth.
Yes, I think that's a mistake. Lisp and Forth saw widespread commercial use, were hugely influential, and directly begat many other languages. While I'd expect most folks on here to be familiar with Pascal - you could say those same things about it - and maybe even know who Wirth is, Oberon basically saw no commercial use whatsoever and even in academia was basically only used at the school it came from. There's no real comparison.
Yes, you are likely confusing Oberon with Pascal. That is the Wirth language people usually have heard about. They may also have heard about Modula 2, but assuming that is stretching it. I was already interested in computers at the time, but I still only remember Oberon as that even bigger failure than Modula.
it is an Ethereum fork, named after Jan Zurich (a cousin of the famous Chief Niklaus Emil Wirth). Jan Zurich discovered a little moon on Uranus, and named it Blaise
It’s also worth noting that Jan (who strictly uses the pronouns var / val) belongs to one of the most historically marginalized groups in modern tech: One-Pass Compiler Enthusiasts. They were repeatedly ostracized by the bloated LLVM cabal for stating that any build process taking longer than 50 milliseconds is a toxic social construct. The ETH fork was actually meant to fund a decentralized safe space where nobody is ever forced to use a borrow checker.
I assume you're just trolling to make a rhetorical point (apologies if not!), but FWIW:
ETH Zurich is one of the most well-regarded technical schools in the world, and arguably the most well-regarded technical school in Europe. It has many famous alumni, including Albert Einstein. I think it's fair to expect most people in tech to be familiar with the big schools in the field, even the ones in Europe, though maybe that's giving too much credit to Americans.
But maybe it's also worth pointing out some other principles of communication: ETH Zurich wasn't really the main topic of my comment, and it's OK if readers don't catch every reference; communication is invariably lossy, and as long as general meaning is conveyed that's OK! Also, given the context (the sentence "Oberon never really achieved success outside of a particular niche in academia, so unless they went to ETH Zurich...") even if the reader hadn't heard of ETH Zurich it could be reasonably inferred that ETH Zurich is an academic institution, probably in Zurich, where Oberon was successful. Part of writing is trusting that the reader is a rational person who understands how (the) language and the world work, otherwise communication becomes impossible.
Some associated ideas in the philosophy of language might be the "cooperative principle", the "principle of humanity", and the "principle of charity". I'll frankly make a muddle of trying to explain them in detail, and this reply is already too long and too snarky, so in this case I'd ask the interested reader to consult Wikipedia, the Stanford Encyclopedia of Philosophy, etc.
> even if the reader hadn't heard of ETH Zurich it could be reasonably inferred that ETH Zurich is an academic institution, probably in Zurich, where Oberon was successful. Part of writing is trusting that the reader is a rational person
The first sentence of the README says, "This project modernizes the Kernel of Oberon System 3 (version 2.3.7) by migrating it from the original Oberon Boot Loader (OBL, written in assembler) to the Multiboot specification (handled in Oberon directly in the Kernel)."
Armed with that and the headline "Oberon System 3 runs natively on Raspberry Pi 3", it can be reasonably inferred that "Oberon System 3" is an operating system (shown here of being capable of running on a Raspberry Pi). It doesn't require prior familiarity with Oberon, despite what the previous commenter said.
Neither you nor the original questioner are being particularly rational about this.
> it can be reasonably inferred that "Oberon System 3" is an operating system
"Oberon is an operating system" was indeed evident, but it's also not particularly illuminating. There are dozens of niche operating systems, why do we care about this one in particular? What does it do that other operating systems don't?
> "Oberon is an operating system" was indeed evident,
No, it is not evident: this is not correct.
Oberon is bare-metal self-hosted programming system. It is both a language and an OS.
> why do we care about this one in particular?
1. It is the final development in the career of Niklaus Wirth, the creator of Pascal. Pascal is the Wirthian language that had considerable commercial success.
(A dialect called the USCD p-System was one of the original 3 OSes that IBM offered for the PC, for instance. Apple created Object Pascal, and implemented parts of the Lisa and original Mac OSes in it. In the early days of DOS, Borland TurboPascal was one of the leading IDEs, and then when 16-bit Windows achieved commercial success, Borland's Delphi led the way as the most sophisticated Windows IDE.)
2. It's the end of his life's work. Wirth did not stop with Pascal.
The next generation was Modula. It was a bit of a flop, but the successor, Modula-2, was a hugely influential language too. Topspeed Modula-2 was at one time the fastest compiler of all kinds for the PC.
Development did not end there.
Others did Modula-3, not Wirth. He moved on to create Oberon.
3. This is the end of the line of the single most widespread and influential family of programming languages outside of the C world.
> What does it do that other operating systems don't?
Wirth was a keen advocate of small size and simplicity.
Oberon is one of the smallest simplest compiled languages of all time. It is also an OS, and an ID, and a tiled mouse-controlled windowing system. The core is about 4000 lines of code.
4k LOC.
The entire core OS is smaller than the tiniest trivial shell tool on any FOSS Unix.
It is almost unbelievably tiny, it is fast, and it is self-hosting. It can run bare-metal, on multiple platforms, or as a conventional language under another OS. It has its own GUI. It can interop with other languages. You can, and people do, build complete GUI apps in Oberon.
It may be less well-known than its own ancestors but this is an important, significant language, and the final generation of a very important and very much alive dynasty.
Borland Turbo Pascal for CP/M and MS-DOS was developed by Anders Hejlsberg, who went on to develop All The Languages for Microsoft.
Perhaps more surprisingly, Turbo Modula 2 for CP/M (which was certainly surpassed by Topspeed Modula 2) was developed by Martin Odersky, who created Scala.
Throw in Robert Griesemer and his co-creation of Go, and the Wirth family tree is as influential in modern programming as it possibly could be.
No, it is not correct, and trying to coerce it into the reductive box of an incomplete view does not help.
Comparison: you are angrily maintaining "Orange is a colour! It is right there in the rainbow! Red, orange, yellow, green, blue, indigo, violet! It's a colour! That is the set to which it belongs!"
It is true. But it is incomplete.
It is also a fruit. It belongs equally in "apple, orange, banana, pear, quince."
Also a valid set; no parallel.
It is in other sets too. The set of citrus fruits. "Lemon, orange, lime, pomelo, grapefruit."
Oberon is a programming language.
It is also a set of frameworks. They are integral.
It is also an editor.
It is also a UI design.
It is also an OS.
Any one is true but is incomplete.
There are other views but yours and none is privileged; yours does not invalidate the others, nor they yours. You only see one but your view is too narrow.
I like how you assumed I’m American because I don’t have knowledge of international top ranking technical schools.
One of the basic principles of communication is that you have a mental model of the person you're communicating with and are phrasing what you want them to understand in terms that you think they'll understand. So whenever you're writing something - anything - you should be writing with a target audience in mind, and stop explaining right around the point where you believe that your target audience doesn't need further explanation. Not everybody lives in Europe or has knowledge of what the top technical schools are (which is a bit classist to assume tbh), and this type of Euro-centric thinking doesn’t work very well when communicating with people from other backgrounds.
Thanks. Preparations for the migraion of AOS/Bluebottle are underway. Concerning memory safety: it's only memory safe if you don't use the SYSTEM module features, and OberonSystem 3 (and later) heavily depend on those features.
Sure, but that in the end is what matters with memory safe systems languages, reduction of attack surface and easy to spot when safety is being disabled.
Alternative being Assembly written primitives, like in Smalltalk originally. Blue book description.
There are better alternatives than assembly. The Oberon approach would already benefit if low-level code no longer operates behind the compiler's back and instead supports full type checking. My new Micron language provides this.
There is actually no good reason why the SYSTEM features use LONGINT instead of typed pointers. C at least has type support, even if the compiler ignores it for many situations.
Micron is doing well; the language definition has matured; it now even supports Go interfaces from level 2 onwards (i.e. even for plain records before level 3 adds dynamic memory).
The primary goal of Micron is not safety, but to make a better C, Pascal and Oberon, adding some features which turned out to be very useful in C++, but without the complexity. The compiler now has an x86 and ARMv7 backend with debug support. RV32 support is on the horizon. And there is a C99 transpiler if need be.
It all boils down to the fact that ideas should be viewed as tools rather than dogmas, and famous people are neither infallible nor prophets simply because they had a few good ideas.
Thanks. The A2 Fox compiler actually has an ARM backend, so I would be surprised if nobody has migrated it to the Raspi yet. The 2003 version of AOS/Bluebottle (not A2) is on my list of interesting sytems, particularly because it supports multicore hardware.
The system is up extremenly fast (compared to Linux), but then it takes pretty long to find the USB hub and the keyboard/mouse. Maybe I can still speed this up.
Cool, tell me whether it worked. Unfortunately my mini HDMI adapter is broken and I have to wait for the new to arrive. But I already soldered the headers to the UART pins and observed the system start which looked as it should.
reply