back
66 comments
This project is cool as hell. I really appreciate that it has very straightforward instructions and takes no time to get up and running, it's just a git clone and an install command.

The only quirk I ran into is that when I ran graphical programs, I would get a full-screen window with a blank prompt; I needed to move that window to another workspace in order for the running program to be displayed. The IDE seems to get smushed into the bottom corner of the screen in KDE and gnome for some reason (which I could work around by toggling windowed mode with alt+enter and then dragging the window to resize), but it works fine in i3.

Between discovering this and finally getting around to trying the Factor language, I'm afraid I'm going to be very unproductive on my side projects for a while..

>I'm afraid I'm going to be very unproductive on my side projects for a while

I infer that your main project is discovering things that may one day help you be more productive in your side projects.

It could be worse. Ben Eater was just trying to get his web browser working like he wanted...

Thank you very much. I love Oberon for its simplicity and structuredness, and I find it best-suited for all programming tasks. I even use it in web-programming. So when I found out about Oberon, I noticed that there is nothing that I can easily install to start programming in it. I tried XDS, OO2C, VOC, BlackBox, and everything was not that I wanted. It was nothing as simple as, for example, Free Pascal, where you just download and use it. So I made Free Oberon. I switched several times from SDL 2 to Allegro 5 and 4 and back (with a lot of recoding on each step), also switched compilers from VOC to BlackBox and finally Ofront+.

I'm planning to substitute it with my own Oberon compiler at some point, so I read everything about compiler construction and do Oberon experiments a lot.

Could you please describe the issue with the full-screen a bit more? You can create an "issue" in the FreeOberon Github repo. I think it would be possible to fix it. Are you using two monitors?

I learned about Oberon by experimenting with the Acme editor (which borrows heavily from Oberon) and from learning about its influences on the Go language. The language doesn't "look modern", but it does seem very simple, and it seems really fun to learn. And I very much enjoy the retro feel of it.

A bonus for me personally is that I happen to be learning Russian, and there's a fair bit of documentation and videos that I can use for immersion learning, which is a lot of fun.

I will be sure to help with the full-screen issue soon.

Every time Oberon comes up, I wonder how it would have done if it had had a "normal" graphical interface, and some aesthetically minded person such as Keith Ohlfs or Susan Kare to make it attractive by the standards of the average user/developer.
Isn't this normal enough?

https://www.progtools.org/article.php?name=oberon&section=co...

Good enough when placed against many UNIX windows managers, or the developer beloved Plan 9 and Inferno GUIs.

It failed because like Xerox, it stayed mostly inside ETHZ walls, a few European universities and zero industry interest, too much focused on building UNIX clones.

I remember Oberon. My take is that it failed to become a mainstream language because we were using C to write system tools and browsers, Visual Basic and Visual C++ to write Windows apps and PHP and Java to write web apps. Those filled most niches.

Delphi and the Pascal languages were on a downward spiral of popularity. C was the incumbent. PHP was easy to install and solved a problem that most developers had: write a web app quickly. Java and the Visual languages were backed by big companies. Oberon was not. It was a curiosity at best. I remember other languages from back then: Eiffel and Modula 3. They resurface sometimes in HN posts.

> Isn't this normal enough?

It definitely is not normal enough. It's a whole operating system, after all.

> It failed because like Xerox, it stayed mostly inside ETHZ walls, a few European universities and zero industry interest, too much focused on building UNIX clones.

Not really. It failed because Oberon was not a great language even in the 2000-s. Right now it's not even good enough for teaching purposes.

Apparently it was good enough to inspire Go authors, and everyone that enjoys its influences in Go, as the ultimate design in language simplicity.
Oberon is perfect for teaching purposes. It is understandable from the first glance. On the first lesson, even 9-year-olds start writing graphical programs! I've been testing Free Oberon as an edutcational tool since 2016. Kids in a sport summer camp use it.
> It's a whole operating system, after all.

You can use that one which easily starts on all platforms without taking control of the PC: https://github.com/rochus-keller/oberonsystem3

Maybe, but that's not what's being shown on the linked website.
Maybe because the linked Website is not the original Oberon, and derived OSes done at ETHZ.

The question of the parent naturally should be answered in regards to what was available during the 1990's.

Check out Component Pascal Collection. It is as normal as it gets under Windows. Tell you what: I use their built-in wordprocessor to write grant applications. I prefer it over MS Word or even Libre Office. Download free BlackBox Component Builder from there, as well as amazing scientific software written in that language. Includes graphics, math, algebra, simulations, etc. Some of that stuff (Chill by Robert Campbell) was developed at BAE Systems for flying jet planes. Not just cool. It is heavy duty production stuff. And free. http://www.zinnamturm.eu/downloads.htm
BlackBox is a great program, but it is a self-contained system, that isn't well-suited for classical programming (i.e. making executables: console applications, grpahical games, integrating with C-code).

If you need an Oberon compiler in classical sence, use Free Oberon.

The graphical interface is the least of its problems.
How does FreeOberon compare to FreePascal, in terms of standard library and third party libraries available? Is it a practical development environment, in the sense of not needing to reinvent every wheel to use it?
https://free.oberon.org/docs/en/

On a glance it looks pretty limited, I see no way to access OS API, no networking, etc (more or less like Turbo Pascal).

Perhaps sufficient as educational tool.

Syscalls were the OS APIs back in the Turbo Pascal days. DOS didn’t have an SDK like we now expect. But people still pulled off some pretty sophisticated stuff in Pascal (personally, I wrote a DOS GUI frontend (like pre-Win 3.x) in Turbo Pascal)
Damn, I miss the days Turbo Pascal was used for business logic, and the grunt work was TASM blocks and syscalls.

Actually, that might just be the nostalgia talking.

int 0x80 was/is the x86_32 way of doing syscalls in linux.

im not sure if sysenter, used on 64bit systems is classed as an interrupt.

the sdk is just a layer on top of that.

ive never used c on dos, it woukdnt surprise me if they used a similar library to linux. theres certainly nothing preventing it.

Ah, I still remember those DOS interrupts :)

And of course, modern Pascal compiler like FPC provides OS specific units to do that.

Free Oberon is used as educational tool (since 2016).

I also use it in production code for web-development. It serves as a backend for a high-load interactive website (langauge courses with exercises).

> Perhaps sufficient as educational tool.

Has Oberon ever been a thing outside academia? I’ve heard about some Modula2/3 stuff out there in the wild, but not Oberon.

I think it's due to a lack of freestanding compilers when the project was launched. People expected a new programming language from Niklaus Wirth but what they got was a language and an operating system, the latter which was too different from any mainstream system.

Studying and using this relatively low-level (but safe!) minimalist language which is not inspired by C has given me quite a few new insights.

https://miasap.se/obnc/oberon-report.html

https://miasap.se/obnc

Yes, when I was at CERN almost 20 years ago, Niklaus Wirth did a session on Oberon for scientific computing, and as part of that Oberon day, there was someone from Brasil talking about their use in production, controlling some hardware stuff.

Additionally Astrobe sells Oberon-07 compilers for IoT (https://www.astrobe.com/order.htm), for a while XDS also sold Oberon compilers alongside their Modula-2 compilers, and there was a spin-off from ETHZ which sold Component Pascal, basically yet another Oberon dialect.

Oberon is used in microcontroller programming, medical device programming, railways in Switzerland use Oberon, atomic power station in Rostov (Russia) use it, a power station in Kaliningrad also uses Oberon.
From a quick Google search: "Oberon includes low-level features that make it particularly suited to the development of real-time applications on ARM microcontrollers." https://www.astrobe.com/Oberon.htm

https://www.astrobe.com/order.htm

Ah, very interesting.

You can access the WinAPI, network etc. etc. (also you have the platform abstraction level) using modules that are not documented, but are available in source in the Free Oberon directory. See Data/bin/OfrontPlus/Mod/Lib. Please let me know what module you need and I can add it into the documentation.
It is better to not use any software from russia now anyway.
Quick look at https://github.com/kekcleader/FreeOberon/blob/main/src/make....:

It uses ofront (Oberon-2 to C translator), and let GCC do the heavylifting. Let's check if this thing can be easily built on macOS...

It uses Ofront+ -- a descendant of Ofront. So that's another transpiler.

Ofront+ is much more developed, for example it allows compiling in Oberon-07 standard with the addition POINTER TO ARRAY and 2-byte CHARs. That is what Free Oberon uses by default. In future versions of Free Oberon, there will be a selection of Oberon standards (Ofront+ provides Oberon 1990, Oberon-2, Oberon-07, Component Pascal, and the so called Oberon-3).

Please let me also know about the results. I don't have access to MacOS, but would love to make Free Oberon available there too.

My students with MacOS are learning using Free Oberon in an emulator.

The great thing about Oberon now under Linux/Windows/Mac is that you can easily create CLI and related filter programs, like something that can be piped into perl or awk, or can receive output from a shell pipeline. This makes for a very gentle slope into using it more.
Which Oberon compiler do you use?
I can recommend OBNC:

https://miasap.se/obnc/

With this compiler you can also write interfaces to existing C libraries without too much pain. This is achieved without any (non-standard) additions to the language.

I recommend BlackBox Component Builder and the Component Pascal which should have been named Oberon-3, but stepped back to Pascal for marketing. Which failed. But the language and environment are superior. And free. Check them out. This website is providing amazing scientific software. Includes graphics, math, algebra, simulations, etc. Some of that stuff (Chill by Robert Campbell) was developed at BAE Systems for flying jet planes. It should tell you something. http://www.zinnamturm.eu/downloads.htm
In Free Oberon, you can also make C-bindings very easily. In fact, there is Allegro5.Mod in the source files as a good example.
Hi everyone. I'm the Free Oberon creator :) Will be happy to answer your questions.
The TUI IDE is kinda interesting, looks a lot like QuickBasic, Turbo C and other old-style DOS apps. But otherwise, it would be a lot more sensible these days to just code an Oberon-specific language server, that you could use with any IDE.
Oberon is much more a language/library/IDE/operating system, like a Pascal-flavored Lisp machine. This is a bit like saying "Emacs Lisp is great but what I really want is a language server for it so I can write it in VS Code."
This project just uses a C transpiler and creates plain binaries, though. It's not running under any sort of bespoke environment.
Free Oberon includes a console compiler (fob), which you can use in any IDE. Oberon is a langauge with all-caps keywords, so it does not really require syntax highlighting. So the language server might not be so useful for this language (I don't use IDE tips etc., so maybe there could be some benefits there, I don't know).

The Free Oberon IDE resembles Turbo Pascal-style IDE, but this currently runs in a graphical window and can be easily customized.

I love that TUI. Ncurses doesn’t even come close.

I used to spend hours in Paradox for DOS, Turbo C etc. It felt so comfortable compared to Ncurses TUIs.

The TUI for Free Oberon is built from scratch. The programming module is called "OberonVision" (like TurboVision in DOS).
Too much at 4:20 AM