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 _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list