Comment by vezzy-fnord
10 years ago
Wow, this is excellent. The Oberon and Bluebottle OS materials have always been quite scattered, so someone putting them in a central index is quite convenient.
For those unaware, Oberon's main qualities are the fact that it's a full operating system written in a garbage collected Pascal-like language (actually made by the same person who initially wrote Pascal) which uses said language's module system to provide reusable/chainable interfaces throughout the whole OS, support for orthogonal persistence and most notably, its highly unconventional user interface that bridges the power of the CLI and the GUI together in this vaguely hypertext-like workspace where you can dynamically live program the UI itself through on-screen text that can serve as an entry point or continuation to perform all sorts of computations, things you'd normally write hacky scripts for. Closest analogue is Xerox's Cedar.
You should consider trying it and stealing a few ideas from it for the greater good.
> on-screen text that can serve as an entry point or continuation to perform all sorts of computations, things you'd normally write hacky scripts for.
The Acme editor famously works this way. So, in a rudimentary way, does the Emacs scratch buffer. It's a weird amalgam of text editor and REPL: you evaluate snippets of text and get the output in-place, and then edit the text to get what you want next. This live-text-as-code way of working is not how I'm used to interacting with a programming system and always slightly rewires my brain. But even in that simple form, you can grasp in it the beginnings of a whole computational paradigm, all the way up to UI. (Computational models don't usually imply a UI—this is an exception, as are spreadsheets.) Oberon must be the most systematic realization of this. I'd like to try it.
Which is unsurprising, because Rob Pike was openly influenced by Oberon in the design of both Acme and the original Plan 9 windowing system 8½ and its current successor rio.
Oberon exploits it further, though. Plan 9 does use chording, programmable text and plumbing but only insofar as it complements the synthetic file system interface, whereas Oberon is more thoroughly object-oriented and can have the text serve as a pointer to various OS subsystems, creating a sort of graphical continuation-passing style, as I alluded.
The acme editor was new to me so thanks for that. The comment about spreadsheets reminded me of an interview on the Thoughtbot Podcast with Chris Granger about a new IDE being developed called Eve. [podcast link](http://giantrobots.fm/111) If I understand correctly, the idea is that its like excel, but you use it to build domain editors, but it revolves heavily around constraint solvers? I don't know, but the podcast episode is awesome. Bottom line is that I'm giddy to use it [link to the announcement post](http://www.chris-granger.com/2014/10/01/beyond-light-table/)
Perhaps something like an ipython notebook would be the "modern" way to do it?
Or getting more modern, Swift playgrounds in the latest versions of XCode have a similar kind of feel to them.
> highly unconventional user interface that bridges the power of the CLI and the GUI together in this vaguely hypertext-like workspace where you can dynamically live program the UI itself through on-screen text that can serve as an entry point or continuation to perform all sorts of computations, things you'd normally write hacky scripts for. Closest analogue is Xerox's Cedar.
Sounds a lot like Smalltalk's print-it/do-it? I suppose the idea orginated with Oberon?
Wirth worked with Cedar at Xerox and wanted a similar experience at ETHZ.
The weird TempleOS has similar features: http://www.codersnotes.com/notes/a-constructive-look-at-temp...
Thanks for this summary, I've been struggling for the last few minutes to try and figure out what the hell Oberon was. That sounds awesome!!
Yes, thanks for the concise summary.
The only thing I didn't understand is the part about garbage collection. What does garbage collection mean and what is the benefit in this implementation?
Programming language with automatic memory management. Look up "garbage collection" for all the details in the world.
The reason I brought it up is because it's a common trope that you can't do low-level programming with GC, and systems like Oberon are direct evidence to the contrary.
1 reply →
Hmmm, if you don't know what garbage collection is (and I don't mean this as sneer) how are you sure that you understood everything else said?
In the sense that garbage collection is a pretty basic CS term, and the summary contained lots of CS terms and implied knowledge to understand it (modules, interfaces, persistence, etc).
7 replies →
> actually made by the same person who initially wrote Pascal
Niklaus Wirth, for those interested.
A reminder of how curious it is that PARC had all of Kay's, Smith's and Wirth's handiwork under their belt, all the rudiments of today's PC with mouse-controlled icon WYSIWYG GUIs back in the late 1970s, and never had the imagination to go anywhere viable with it (but give it away as dramatized in 'Pirates of Silicon Valley'). Same could be said of PalmPilot and the smart phone.
I do Xerox PARC archeology, always looking for documentation from those days.
This was triggered by having been a Smalltalk and Oberon user on their glory days.
It made me realise how much the IT world lost by having UNIX clones going mainstream instead of these systems. Specially the culture that still insist in using their computers as if they had a PDP-11.
Sounds fantastic, but I'm sure it's not. If you made billions on a product such as did Xerox you'd be keen to fully investigate a technology that threatens to supplant your bread and butter product, fear will drive you to do this. Once the product has been developed you will look at it and say "Product X has a return of y, while there are zero customers for this newfangled product", this is more than enough for the board to reject the new idea, many of them think the new technology is just a passing fad anyway.
I wouldn't call it lack of imagination, and it was all quite viable. Senior management simply punted on listening to anyone.
Is there a screencast available of this “chainable” interface? I haven't seen anything quite like it since The Mother of All Demos in 1968.
There's not much in the way at all of video demonstrations for it, but I did find this: https://www.youtube.com/watch?v=UTIJaKO0iqU
It might be of help.
Good summary. I'll add that Wirth's focus on simplicity makes it very easy to port to new hardware, too. Basically a compiler backend and some low-level stuff on bottom. Usually 1-2 students at ETH would do it over several months for each new architecture.
> Google summary
Was this an autocorrect-typo of "good summary", or am I missing something?
Good catch! I've edited it to correct it.
The language: is it Oberon or Component Pascal (which was a descendant of Oberon)?
It is specifically Oberon-07[0], a 2007 revision of the original Oberon from 1986, which is still being worked on by Niklaus Wirth with updates as recently as this year.
Component Pascal is a superset of Oberon-2, itself an extension of the original Oberon that tacked on limited OOP support and a handful of other tricks. Component Pascal was not a Wirth-designed set of extensions, however Blackbox Component Builder is quite the nice piece of kit in its own right.
Unfortunately the availability of modern implementations for the Wirthian languages leaves something to be desired. The only implementations that cover both 64-bit platforms and any semblance of cross-platform support is the Vishap Oberon Compiler[1], Gardens Point Component Pascal[2], GNU Modula-2[3] and m2c[4].
There's also an Oberon-07 to JavaScript implementation[5].
At this point, the very small Wirthian languages community has been mostly focused on Oberon-07. It's worth noting there are a few Modula-2 fans about still poking at things, such as the Modula-2 R10[6] effort.
[0]: http://oberon07.com/
[1]: http://oberon.vishap.am/ (Oberon-2 compiler, limited Oberon-07 support)
[2]: http://gpcp.codeplex.com/ (Component Pascal for .NET)
[3]: http://www.nongnu.org/gm2/ (Modula-2 GCC front-end)
[4]: http://nongnu.org/m2c/ (Modula-2 to C compiler)
[5]: http://oberspace.dyndns.org/oberonjs.html
[6]: http://bitbucket.org/trijezdci/m2r10
> Unfortunately the availability of modern implementations for the Wirthian languages leaves something to be desired.
There is the Delphi-compatible, GPL-licenced Free Pascal¹). GNU Pascal²) is also still around but might or might not meet your definition of 'modern implementation'.
¹) http://www.freepascal.org
²) http://www.gnu-pascal.de
1 reply →