[Mono-dev] [Mono-devel-list] Operating System in C# Project

Michael Schurter michael at synthesyssolutions.com
Mon Oct 30 14:56:45 EST 2006


Brian Crowell wrote:
> jmacdonagh wrote:
>> Glad to see I'm not the only one interested in ths. I've also toyed
>> around with this idea for some time. I began looking at traditional
>> operating system development to learn a little more.
> 
> What interests me most about this is a C# program as a first-class
> citizen, or really, every API in the system being not only available,
> but *designed for* managed programs.
> 
> I think a good example of that can be found in Microsoft's DirectX,
> which we were just discussing. Compare Managed DirectX to XNA. The
> differences are big. XNA exposes, for the most part, the very same
> APIs, but in a much more intuitive and friendly manner than Managed
> DirectX.
> 
> You could consider fully object-oriented operating systems, where the
> design of the API is every bit as important as its concept. You could
> organize the system around safe plug-ins, each providing some service
> to the whole, such as a windowing system, file systems, etc., but
> which are most importantly *as easy to write as implementing an
> interface or an abstract base class.*
> 
> I'd be very interested in participating on design of such a thing.
> I've been trying to teach myself good object-oriented design over the
> years, and I think I would have some good input to give past the
> initial problem of booting such an environment.
> 
> Perhaps the project could be approached in two stages? Half where we
> boot the managed environment, and half where we assume the managed
> environment. You could design and implement these independently of
> each other. You could even design a set of classes to emulate the
> kernel on top of an ordinary runtime, for the purposes of unit
> testing. One strategy I've become fond of, especially where
> components and unit testing come into play, is generous use of the
> IServiceProvider interface; if components accessed kernel objects
> this way (or a similar way, where you ask for a base class but not a
> specific implementation), they would neither need to know or care
> whether they're using the real thing or not.

The 2 stages sounds sensible: kernel and framework/platform/libraries.

Personally I couldn't care less about a managed kernel, but I'd love to 
help implement the rest of the stack.

So where do we start?  Monix (Mono + Unix) doesn't seem to be a taken 
name!  :)

I could throw up svn, wiki, and mailing-list on my personal domain name 
to get things started.  I hate to keep continuing this discussion on 
mono-devel as its pretty OT.

Perhaps Miguel to give some advice on the first steps to starting this 
project as he's probably started more large-scale FOSS projects than anyone!

-- 
Michael Schurter



More information about the Mono-devel-list mailing list