What is an aspect ?

Jason Marshall jmarsh@serv.net
Wed, 25 Aug 1999 12:51:26 -0700

Laurent Martelli wrote:

> I think dividing things into kernel/user-space is wrong. This is not
> a good way of seeing things. I'd rather talk about
> aspects. "Minesweeper" would belong to the functional aspect, where
> you *describe* the services available to the user of the
> system. Security would be another aspect, describing which services
> are available to which users. You don't need to know about security to
> describe the Minesweeper service. And you shouldn't have to think
> about a particular GUI neither. The GUI could be a "click-and-play"
> one, or it could be a one line text screen. Memory management,
> networking and others are just runtime optimisation issues.

Bravo.  This pretty well expresses my opinion on the subject of how a
reflective 'safe' environment should operate.  Each piece of software
may (and likely, will) see a different facade that represents 'everything
else' currently accessible to it.  That facade essentially amounts to a
list of services (and depending how you frame the picture, clients) that
it can interact with.  What one entity sees as the networking services,
or persistant storage services, may be drastically different from what
another entity within the system sees.

> execute the minesweeper on a single machine, you don't have to care
> about network. And obviously, the minesweeper should not be network
> aware. But it should work in a network environment if needed. To
> achieve this, only the interpretor running the minesweeper need to be
> network aware.

Exactly.  If one were to load a more computationally intensive game, like
Chess, it doesn't need to see the network (unless it's a multi-player
but the runtime may decide to farm off some speculative move calculations
(looking ahead at the next move while the opponent is considering his own
move) to the cluster of SGI's running in the next room.  The chess program

doesn't even know this is going on, because the runtime is acting as a
trusted intermediary; it knows how to access the net without giving undue
priveledge to the program on whose behalf it is acting.

If the calculation isn't conducive to this sort of parallelism, the
runtime may
still be able to ask trusted machines to either perform optimizations for
(assuming you can totally trust native code that comes to you over a NIC),

or ask them to test out highly speculative optimizations for you, and
on their success or failure (a bit of a brute-force method of

> That's why I think the question is not "What is a kernel", but rather
> what is an aspect.

Well, there still exists in this notion of a 'runtime' some qualities that
could be
arguably attributed to a kernel, could they not?

Jason Marshall