[gold-devel] What do we want to provide?
Adam Martin
adam at fsl.cs.sunysb.edu
Wed Oct 19 23:16:21 EDT 2005
On 2005 Oct 19 , at 19:34, Justin Hibbits wrote:
> Alright, to make good use of the mailing lists:
>
> What exactly do we want to provide to a) the user, and b) the
> developer?
As far as userland functionality above the kernel, I do not think I'm
too qualified to speak on this. For kernel services, I will TELL you
as much as I can here.
> Adam posted the list of classes we came up with in March, but I don't
> think
> it's complete enough, and the behavior isn't fleshed out. So I ask
> you guys.
Justin, you came up with those classes, I just posted. Why not flesh
out their purpose, and entry points, and such? At least all that you
can think of.
What I do know I want from a Gold v1 userland is a well documented API
with a concept manual. The concept manual is a glossary/reference for
any and all concepts in Gold, like Objects, Messages, Applications, and
outlines the accepted practices of writing applications.
I see the "right" way to write applications as a kind of "lego
building" exercise. For those who don't know, legos are child's
plastic interlocking bricks which form complex structures, but
themselves are simple "particles". Building an application would be a
matter of collecting the right "legos", and stringing them all
together. The interfaces of almost any service need to be compatible
for similar services. If there's two services that can work on a
specific type of object, and take one integer argument also, even if
both services are in DIFFERENT providers they should be standardised as
to argument order and expectation for the same nature of inputs. At
some point in the distant future, around v2 or v3, perhaps this process
can even be put into a trivial GUI.
Working with information should be fluid, and "intelligent". In
traditional posix you must specify the location of "objects" you want,
like: "/dev/null". We need a mechanism, like: "?null" or "?LSD_API.h"
or something, where paths can be coded as meeting requirements. Like
we've discussed, a database file structure would be ideal. Whether
this belongs in kernel or userland is a topic of some debate, but I've
made clear what I am willing to put into a kernel, and what I am not
willing to put into a kernel.
Again, SACROSANCT among my concerns is proper documentation. RTFS is
an invitation for me to burn you alive in molten lava. Working with
files once accessed shouldn't be normally in the traditional "stream"
sense, forks aside. I want to be able to work with files as "entities"
who know how to do their job. As an application programmer, if I open
up a file which is of general classification "media" and tell it to
"play itself" it should know what to do, or rather the system should.
From the perspective of the applications programmer, the whole system
exists to arbitrate this and other services.
From a security standpoint, authd being the extension of LSD's
security model, and being our way of performing verified privilege
escalation for limited purposes, is fine for v1. I would like to see
some active anti-intrusion mechanisms in v2, and perhaps some work in
network security?
Oh, transparent access to all data on any location. If I have
security clearance to view something, that "something" should be
accessible by the same means, regardless of where it is. Network data,
web data, ftp, ssh, samba, filesystems, and anything else should be
accessible transparently. Program output should be treated as a form
of this data, and programs should be attachable to nodes for IO. This
is like pipes in the next generation. Now a program's output can be
treated like any other object, and I can attach as a client to any
running program to interact with it.
> I don't want a list of classes, I want a set of behaviors that we as
> an OS
> provider -- kernel, user libraries, and user interface -- should
> provide.
Not to echo what is in the LSD_API document, but I'll give a brief
explanation of LSD concepts, functionality, and mechanisms.
In LSD we have a few fundamental concepts to learn about, and master,
if you have not already:
Files, Forks, Events, Kernel Message Buffers (and KMB Pages), Event
Buffer Pages, Event Handlers, Compound Symlinks, Threads, Monitors,
Processes, Synchronous and Asynchronous system services, new permission
semantics, and a few other things.
I'd write more but I'm passing out at the keyboard. I'll probably
write more in an hour or so.
> I await your thoughts,
>
> - Justin
--
Adam David Alan Martin
More information about the gold-devel
mailing list