Idea for a new project
Posted: Wed Mar 15, 2006 11:00 am
Hi, I'm new here but I've talked to a few people here before and I'm active over at the alt.os.development newsgroup.
As a bit of background I started work on my own OS 2 years ago after looking for a project to join but finding them all too complex for the level I was at. Looking back at this experience I realised that what we are missing most is a good repository of OS 'components' which can be dropped into an OS project with minimal modification.
The only projects I have found covering this area are the Flux OSKit and libOSDK. Neither is really what I want, the OSKit is a monolithic library where including one part requires the rest and libOSDK is a library in assembly language. The OSKit is also very static having not released any code for a couple of years now. The key features I am looking for are:
1) Components must be separate so including one requires few dependencies, and those dependencies are clearly listed.
2) Multiple components can do the same job so a developer could choose between a component which follows a traditional approach and one which demonstrates a new way of doing things.
3) Components should be able to follow their own release timescales.
With the right people involved, this could become a showcase of new OS ideas since only a single component would need to be written rather than a full OS just to demonstrate 1 feature. With a good set of guidelines and standards, all the components can have a similar look and feel and one component can be swapped for another which does the same job with minimal change to the target OS.
A set of guidelines and standards will be developed to tie all the components together and help compatability between components. Standard interfaces will be used where more than one component fits into a category (eg. filesystems), and will be used as needed in other areas.
The guidelines will only be what is needed to help portability across compilers, the format of function names (proc_create or CreateProcess), the idea that components should only export functions (not variables) and lastly some rules to avoid collisions between identifiers in different components.
Guidelines and standards should be minimal. The idea is maximum freedom within the limits that are needed to give a consistancy to the project. The less points of argument there are, the more developers will be interested.
The nice thing with this idea is that it can be taken in several directions. Sadly, that means I need to decide my direction before writing anything. One other option I'm seriously considering is just writing a kernel, made up of many components, where each interface is standardised and people can write their own replacement components easily. This does away with the requirement for components to be easily dropped into any kernel, but still allows many components implementing the same job. Let me know if this sounds like a better direction.
I have a website that can be used as the projects base, and some of my OS code can be quickly stripped of dependencies and posted to get this thing kick started (a library of x86 assembly language functions and a self-contained physical memory manager are the first things I can think of). I also have the time to be the maintainer and co-ordinator of this project.
So, the real question here is what do you think? Is it a good idea? Has something like it been done and if so, where? I've not been too specific here since all the details are up for discussion once I know this project has some supporters.
Thanks in advance,
Paul Barker
As a bit of background I started work on my own OS 2 years ago after looking for a project to join but finding them all too complex for the level I was at. Looking back at this experience I realised that what we are missing most is a good repository of OS 'components' which can be dropped into an OS project with minimal modification.
The only projects I have found covering this area are the Flux OSKit and libOSDK. Neither is really what I want, the OSKit is a monolithic library where including one part requires the rest and libOSDK is a library in assembly language. The OSKit is also very static having not released any code for a couple of years now. The key features I am looking for are:
1) Components must be separate so including one requires few dependencies, and those dependencies are clearly listed.
2) Multiple components can do the same job so a developer could choose between a component which follows a traditional approach and one which demonstrates a new way of doing things.
3) Components should be able to follow their own release timescales.
With the right people involved, this could become a showcase of new OS ideas since only a single component would need to be written rather than a full OS just to demonstrate 1 feature. With a good set of guidelines and standards, all the components can have a similar look and feel and one component can be swapped for another which does the same job with minimal change to the target OS.
A set of guidelines and standards will be developed to tie all the components together and help compatability between components. Standard interfaces will be used where more than one component fits into a category (eg. filesystems), and will be used as needed in other areas.
The guidelines will only be what is needed to help portability across compilers, the format of function names (proc_create or CreateProcess), the idea that components should only export functions (not variables) and lastly some rules to avoid collisions between identifiers in different components.
Guidelines and standards should be minimal. The idea is maximum freedom within the limits that are needed to give a consistancy to the project. The less points of argument there are, the more developers will be interested.
The nice thing with this idea is that it can be taken in several directions. Sadly, that means I need to decide my direction before writing anything. One other option I'm seriously considering is just writing a kernel, made up of many components, where each interface is standardised and people can write their own replacement components easily. This does away with the requirement for components to be easily dropped into any kernel, but still allows many components implementing the same job. Let me know if this sounds like a better direction.
I have a website that can be used as the projects base, and some of my OS code can be quickly stripped of dependencies and posted to get this thing kick started (a library of x86 assembly language functions and a self-contained physical memory manager are the first things I can think of). I also have the time to be the maintainer and co-ordinator of this project.
So, the real question here is what do you think? Is it a good idea? Has something like it been done and if so, where? I've not been too specific here since all the details are up for discussion once I know this project has some supporters.
Thanks in advance,
Paul Barker