How many different types of IPC did you try (and how many different kernels did you write to try them), before you found something that you thought couldn't be improved?rdos wrote:Of course.Brendan wrote:For an example, (a long long time ago) I looked at the way/s IPC is done in *nix (pipes and sockets and streams and signals and ... yuck). I didn't like it. I looked at lots of different types of messaging, and it looked a lot cleaner to me. I knew I wanted a distributed system and that synchronous messaging wouldn't work too well for normal applications, but I thought it'd be a good idea to use synchronous messaging to reduce overhead for device drivers. I implemented a "sort of monolithic" kernel where device drivers used segmentation and got loaded into the kernel space and communicated with synchronous messaging, and normal applications used asynchronous messaging to talk to each other (and to talk to device drivers). This worked fine, but I didn't like it. Then I tried the micro-kernel approach, with device drivers as processes that use asynchronous messaging. I implemented the kernel, then implemented some drivers, then implemented some applications, etc. I liked it a lot (and it's part of my OS design that I've kept ever since). Did you do something like this for RDOS? I assume you just implemented whatever seemed like a good idea in your first kernel and got stuck with it.
Um, that's one. Can I assume it was the first attempt, and it seemed to work sort of, so you rushed out and registered it with IANA and never attempted any alternatives?rdos wrote:RDOS has a network transparent messaging API that doesn't run on top of TCP/IP. It uses it's own protocol under IP (SMP/IP), which is registered with IANA. The specification is available on my site: http://www.rdos.net/smp/ . Now please tell me that you are not distributing your system with TCP/IP, but with some efficient message protocol that also is registered with IANA?
So you "attempted" one graphics API; where the only research you did was a google search that led you to someone else's API?rdos wrote:The graphic API was constructed from scratch. It was modeled after PicoGUI, but uses no code from that project. The GUI was also written from scratch, as was the widget toolkit. The PNG library naturally was ported as there is no sense in writing that one your own. The font interface was ported from FreeType, as there is no need to reinvent the TrueType interface either.Brendan wrote:For an example, I had ideas for 2D image file formats rolling around in the back of my head for about 6 months. I came up with several possibilities, found problems with most of them, refined others, etc. One of those possibilities was the idea of using solid and shaded triangles for everything (as they're extremely easy to scale, rotate, render with anti-aliasing, etc). I spent about 3 months writing a prototype/utility to convert bitmap files to my file format (and convert my file format into bitmap files) and experimenting with the idea. The end result was that I discarded the "solid and shaded triangles for everything" plan - converting raw pixel data back into the least number of triangles (while getting good image quality and file sizes) proved too computationally expensive and relatively complex. It wasn't a total loss though - I've formed a new "solid, shaded and textured triangles for everything" plan, where bitmap data doesn't need to be converted but you still get the (scaling, rotating, etc) advantages. I haven't written a formal specification for the file format or implemented a prototype for it yet; but it's not my highest priority at the moment and I will one day. Did you do something like this for RDOS? I assume you just grabbed some open source PNG library and slapped it into your OS.
Did you try 5 different ways of porting FreeType (that all worked) before you found the perfect way to port FreeType?
Wow, you actually tried 2 things! Congratulations!rdos wrote:To begin with, certainly. However, there are now boot-loader for both BIOS and GRUB (multiboot). There will probably be for UEFI at some point. The job of the boot-loader is to bring up the system, and so needs nothing more than the absolute minimum in order to work.Brendan wrote:For an example; so far I've probably had at least 6 different designs for "boot code" (different stages, different responsibilities, different capabilities, different ways for the pieces to communicate, etc); starting from extremely simple "text mode only" with little more than "load kernel and jump" from the early days; leading up to glorious modular pieces of art with full graphical "boot menu" windowing systems (with layers with lighting/shadows, and resolution/colour depth independence, and dithering, and fonts that are scaled to suit the physical size of the monitor), and fault tolerance features (like RAM testing and faulty RAM avoidance), and built-in CPU feature detection and "AP CPU startup", and code to auto-detect the best kernel out of many kernels to actually start. Did you do something like this for RDOS? I assume you just cobbled together a boot loader when you were just starting and haven't been able to make any significant changes to it since.
So to find the perfect kernel, you tried "lots and lots of different kernels" (one kernel) and decided it was "adequate".rdos wrote:In regards to many kernels I feel that is an extremely bad idea. Some functions in the scheduler are different between SMP and single-core, but those are patched in the code at startup so there is no need for multiple schedulers. The kernel also detects things like the availability of PAE paging and then can install either hooks for PAE paging or normal paging. This doesn't require compiler switches or different kernels. Long mode support is loaded as an device-driver. RDOS today could run everything from DOS to 16-bit protected mode (NE), PE (Win32 and native), ELF and long mode applications without any need to configure the kernel or build multiple versions of it.
Just adequate?rdos wrote:Those have a history of multiple versions. The one's in use today are what I consider adequate.Brendan wrote:Do I need to talk about memory management, or schedulers?
You support many file formats (but didn't spend any time researching the design of the best file format for anything, and just used file formats designed by others)?rdos wrote:As of above, I support many, with the same kernel.Brendan wrote:Executable file formats?
How much time did you spend researching languages before you invented C; and how long did it take you to implement these compilers?rdos wrote:BCC, OpenWatcom, GCC.Brendan wrote:How about programming languages (I'm currently researching that - designing languages and writing a crappy tool-chain)?
No, your idea of "researching many alternatives" is to settle for the first thing that comes along. This makes sense for your project, where time is limited and you can't afford to (e.g.) throw out several working kernels in a search for perfection (mostly because there are existing customers that depend on the old code).rdos wrote:You're wrong.Brendan wrote:To be honest; I don't think anyone here (other than me) has done anything like this for their project.
What I can't understand is why you're attempting to lie about it.
Cheers,
Brendan