Copyright (c) 1995-1999 Martin-Gilles Lavoie <pandora_os@videotron.ca>
All Rights reserved

Man. Have I got a lot to say about the origins of Moira. A complex
history it has, and it all started sometime in mid to end of 1995.

At the time, Apple Computer inc had been bashing our heads (that is,
programmers' heads) with the Meca of all OS to come: Copland. We had
been waiting for years to get something like this (going through the
Pink and Taligent mess). Copland was finally sheduled for mid 1996
(after a number of delays). When the API details started to come out,
it was clear that Copland was in no way compatible with the-then Mac OS
API. Lots of code would have to be re-written to take advantage of
features promissed for this OS.

At the time, I was on the verge of beginning a new project. One wich
would take me a while to program and would not be complete by the time
Copland was out (well, that's what I tought at the time). Having a
tentative pre-alpha Copland API at hand, I looked at the structure of
it all (and, mostly, it's HIObject hierarchy) and decided to produce a
C++ -based framework wich would allow me to map to the Copland API, and
basically "clone" it's API for previous system software. This framework
would have allowed to, with minimal efforts, to create programs for the
current system software, and easilly migrate to Copland at it's
introduction.

This framework was called Common Application Framework Elements. Or
CAFE for short. Why CAFE? Because I'm an addict of the substance.
It's got noting to do with Java wich, at the time, was only an abandoned
and orphanded project at Sun Microsystems before some marketting
dweeb pushed it on the internet community as the next best thing since
assembler.

Then, when I had something usable under Mac OS (well, at the time, it
was called System 7), and Copland was about to come out, Apple decided
to pull the plug on the project. Darnit! Before they announced their
aquisition of NeXT Software, I spent a couple of months wondering what
to do about this lump of useless code I had. Tossing it away seemed like
a big waste. Making it a System 7-only framework seemed...well...dull.

Around december 1996, OpenOS was announced. OpenOS was slated to be a
free OS initiative who's purpose was to bring a buzzword-intensive modern
OS to the mass, complete with source code, completelly free of charge.
This had attracted a bunch of programmers who wanted to contribute. A
mailing list was created and discussions started around how to approach
this potentionally extensive project. I was amongst the curious who
offered help, wondering if, eventually, CAFE would be of some use. After
a couple of weeks, it became apparent that the project was not taken
seriously by it's initiator (who, a year later, started another similar
initiative: InfiniteOS, wich turned out to be another hoax). So, a
group of OpenOS enthousiuast decided to meet in a IRC meeting room and
discussed the matter. Luckilly, i was invited and showed up. (We still
have a transcript of this meeting, wich was logged for the records.)

To resume the outcome of this special meeting, a group of OpenOS devotee
decided to split and started their own project: Pandora OS. After a number of
meetings and debate, it was decided that CAFE would serve as the base upon
wich we'd start the API for this OS. Modifications (lots!) were to be made
in order to make it suitable for it's new life.

Over time, CAFE was refined, and an initial runtime environement was created
for Mac OS, providing a test bench for development and testing. This was
called Pandora's Box.

After about 6 months of coding passed, and Java (the Sun thing) was so much
hyped that I began to fear that my own CAFE would be mistaken for a
Java-related product. CAFE therefore became Standard Pandora Object Kit.
Or, SPOK, for short. Traces of CAFE are still visible in the source,
since CAppServerObject::onceObjectChkSum's value at runtime is still
'cafe'. Sort of a tribute to Moira's origins.

Another six months passed. By then, we had a solid kernel (Prometheus)
wich was almost ready to host SPOK (though SPOK wasn't ready for Prometheus).
To prepare for this, SPOK had to be reworked to use it's own graphics
library and memory manager, instead of relying on it's last Mac OS supports:
QuickDraw and Memory Manager. The CGraphicsDevice class was created, contexts
used, and memory calls replaced with more commong C library malloc calls
(and other routines). The bulk of SPOK was thus free of it's Mac OS ties,
except for Pandora's Box, wich became TheBox and was adapted to the new
environement. Also, SPOK's name didn't fit well with the nomenclature used
throughout the Pandora OS project, and was renamed Moira. As another tribute,
some variables in Moira's code are still named 'spokErr'. Live long and prosper.

During the CAFE->SPOK->Moira transitions, the Pandora OS group had plenty
time to refine some of the aspects of the runtime environement. It had been
decided that typical barriers between "extensions", "applications" and
"libraries" should be removed. It's all software anyhow. This fited very
nicelly with my love for Oberon-F's runtime system, where every compiled
tidbit becomes part of a global system with the difference that Oberon-F
compiled to bytecode--about 10 years before Java did, and that ours were
to be truly-compiled object code. This was called the SPOK Loadable Module
architechture. In the later part of the transitions, SPOK Loadable Module
became Shared and Loadable Modules. Or, SLM for short.

Home License Documentation Download