Project Oberon

I’ve written several times about Project Oberon, I guess I’m kind of obsessed with it.  There is just something delicious about a computer that is so open, all the way down to the code that generates the processor itself.

But it’s not just that.  The Oberon workstation also embodies a method of computing that represents an alternative time-line along the development of user interfaces and models of personal computing itself.  The only other system I’m aware of that followed a similar path was Jef Raskin’s Cat and the related Swyft devices.  This being a text-oriented user interface (not to be confused with a terminal or command-driven interface).

Canon Cat help screen (more at

I won’t attempt to explain the interface in detail here, but the gist is that you interact with the computer by typing text into a document, and execute commands by selecting the commands (and their operands) from the document.  This sounds simple enough but it’s such a departure from the way we use computers now that it’s hard to understand the power this approach lends to users.

So I periodically return to the desire to have a Project Oberon-based computer, and in particular a portable computer akin to a laptop.  There are a handful of people making hardware that is capable of running Oberon natively (including the synthesized CPU implemented in an FPGA ), but all of the ones I’ve found are oriented toward desktop workstation use.  This is somewhat due to the nature of the Oberon workstation reference design which uses a VGA interface for the display and PS/2 interfaces for keyboard and mouse.

Pepino, a development board designed for use as an Oberon workstation

While it’s possible to create adapter to interface these ports with the components you would use in a portable computer, it’s awkward, and seems somewhat silly when you consider the fact that one of the objectives of the computer is that it is an open design.  A more reasonable approach would be to adapt the hardware design to incorporate the necessary components to make it suitable for portable use.

Of course this is usually where my ambition begins to become depleted.  The idea of having a portable Oberon workstation is a very romantic one, but in the face of the complexity and time investment necessary to design, fabricate and assemble a custom system board, I start to second-guess how confident I am that I’ll be able to put the system to practical use.  This is based less on the merits of the system and more on my perception of the “opportunity cost” of building a system from the “chips up” vs. something with broader applications and lower risk (perhaps an ARM computer with a Linux-based O/S).

The problem with this type of “being reasonable” is that it doesn’t move the state-of-the-art forward the way a fresh approach does*.  While it’s significantly simpler and more practical to build a portable computer around Linux, why bother when similar machines already exist?  Sure incremental improvements in size, portability, quality, etc. can be made, and a machine more suited toward an individuals preferences is possible, but ultimately it only moves things along in an incremental fashion, and it does little to open-up new territory for different modes of work, liberation from legacy hardware architectures or innovative new applications.

So while it doesn’t make as much “sense” to sink time into developing something like a portable Oberon workstation (when you could be building something that people want instead), doing so does a lot more to advance the state-of-the-art of personal computers.  Is that enough to motivate me to make the investment (in both time and money)?  I guess we’ll see.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s