Semi-Open-Source OS Development
Posted: Sat Mar 07, 2009 10:02 am
I've been developing since I was 8 (approaching two decades, sadly) and have learned a lot about every portion of the field since then. However there are so many places that can stand to be improved that are common in all or most operating systems I would like to get a team together to work on a completely new type of operating system with the innovations seen feasible by all team members. The areas for improvement cover pretty much everything, and its just impractical and slow to implement these as bandages ie VFS's or thread synchronization apps or security protocols as modules of linux or bsd - and as I've learned its beyond me purely due to time to do them all myself.
A few of the biggest points (not all core OS level, but most are and the ones that aren't are intrinsically linked to development style) are below, any contributor's ideas would also be welcome of course - I've had a lot of stress from archaic design practices, but I'm sure I'm not the only one
________________________________________________________________
Security:
Exisitng security measures, even in the best operating systems, typically revolve around band aids on top of band aids, resulting in surface level security - attackers are expected from specific entry points and those entry points are protected against. Security implemented in a more strict fashion (better implementation than r/w/e permissions on files, inherent cryptography within files, network compatable cryptographic measures and checks, etc) would protect against any feasible attack, the perfectly secure system could be imaged, run in a sandbox, and be completely impervious to attack while running.
(this code has already been written, and is one of the points of why I believe band aid security is horrible - written at an application or kernel mod level on an existing system is too cumbersome)
Threading:
Race conditions shouldn't be possible outside of OS development, yet every large application I've worked on I find myself writing my own thread handling engine and having to work through this - it can be implemented through the use of some threading libraries, but they suffer overhead due to the deviation from the core OS thread handling calls. Granted this code is often trivial (at least by this point), but it is time consuming none the less - unless you simply give up and use an external library that is typically 99% right at absolute best and carries the aforementioned overhead.
File Systems:
Developers at an application and web level are moving more towards relational databases (which themselves have tremendous room for improvement, though I'll be releasing a POSIX database shortly that makes a huge leap in this area - and would like to port it in as the core FS). Core issues with existing filesystems that often hinders development of more advanced systems is concurrency and corruptibility - there is no reason for this if you treat the root filesystem as a database itself - all half decent databases essentially replicate FS functionality anyway simply to function in a multiuser state.
Networking:
Feasibly this is the only component that has to conform to existing standards in any degree, and in many ways is implemented through libraries anyway past a driver level - I think the concept of plug and play can be implemented better, but being a protocol level attribute of the database, this is something that would be implemented between the OS and app levels of the system.
Administration:
Computer security works well with Mac for instance, acting as a CA to digitally sign drivers after they are tested, and should they ever get the implementations that secure the CA certs right, it may work for Win32/64 systems well. However, system administrators need methods to secure and create exceptions within their networks, and the distribution of applications can be done without the significant overhead of addon applications (this is inherent in the security implementation described earlier). When a user sits down at a fresh machine on a workplace network it often requires a significant investment of time to get the machine's role properly adjusted, be it through network downloads or direct installation - the network however offers the flexibility for better systems (such as local CA customized roles that can be applied to a machine on the fly).
Rapid Application Development
.net does this very well, its about the only respectable thing left about Win32/64 systems, and the early versions of Vista proved it doesn't work when you attempt it on an OS level as a library, but mutable applications have significant possibilities - more of this can be described later if your interested (in the database I am preparing to release there are mutable calculation binaries that can be implemented in much the same way in a more thorough sense - though not having developed this as a code manipulation and compiler tool my opinions of it are just that, and are likely not worked out to such an extent as the previous topics).
________________________________________________________________
All these concepts are open to further expansion and customization by contributors of the project and I would like to have the OS licensed in a way where only contributors have access to source, with the rights to use the last version they made contributions to for personal use, with the final OS being sold as a proprietary system with all contributors getting a share of profits equal to their contributions - the system for this is also open to discussion. I am willing to host the project site and development portals, secure source mirrors would be welcome from contributors as well.
If your interested in this project please feel free to contact me directly - I'll check this thread for commentary as well of course. My personal site is http://cory.geesaman.com/ and the company I will be releasing the DB under is at http://www.novorum.com/
A few of the biggest points (not all core OS level, but most are and the ones that aren't are intrinsically linked to development style) are below, any contributor's ideas would also be welcome of course - I've had a lot of stress from archaic design practices, but I'm sure I'm not the only one
________________________________________________________________
Security:
Exisitng security measures, even in the best operating systems, typically revolve around band aids on top of band aids, resulting in surface level security - attackers are expected from specific entry points and those entry points are protected against. Security implemented in a more strict fashion (better implementation than r/w/e permissions on files, inherent cryptography within files, network compatable cryptographic measures and checks, etc) would protect against any feasible attack, the perfectly secure system could be imaged, run in a sandbox, and be completely impervious to attack while running.
(this code has already been written, and is one of the points of why I believe band aid security is horrible - written at an application or kernel mod level on an existing system is too cumbersome)
Threading:
Race conditions shouldn't be possible outside of OS development, yet every large application I've worked on I find myself writing my own thread handling engine and having to work through this - it can be implemented through the use of some threading libraries, but they suffer overhead due to the deviation from the core OS thread handling calls. Granted this code is often trivial (at least by this point), but it is time consuming none the less - unless you simply give up and use an external library that is typically 99% right at absolute best and carries the aforementioned overhead.
File Systems:
Developers at an application and web level are moving more towards relational databases (which themselves have tremendous room for improvement, though I'll be releasing a POSIX database shortly that makes a huge leap in this area - and would like to port it in as the core FS). Core issues with existing filesystems that often hinders development of more advanced systems is concurrency and corruptibility - there is no reason for this if you treat the root filesystem as a database itself - all half decent databases essentially replicate FS functionality anyway simply to function in a multiuser state.
Networking:
Feasibly this is the only component that has to conform to existing standards in any degree, and in many ways is implemented through libraries anyway past a driver level - I think the concept of plug and play can be implemented better, but being a protocol level attribute of the database, this is something that would be implemented between the OS and app levels of the system.
Administration:
Computer security works well with Mac for instance, acting as a CA to digitally sign drivers after they are tested, and should they ever get the implementations that secure the CA certs right, it may work for Win32/64 systems well. However, system administrators need methods to secure and create exceptions within their networks, and the distribution of applications can be done without the significant overhead of addon applications (this is inherent in the security implementation described earlier). When a user sits down at a fresh machine on a workplace network it often requires a significant investment of time to get the machine's role properly adjusted, be it through network downloads or direct installation - the network however offers the flexibility for better systems (such as local CA customized roles that can be applied to a machine on the fly).
Rapid Application Development
.net does this very well, its about the only respectable thing left about Win32/64 systems, and the early versions of Vista proved it doesn't work when you attempt it on an OS level as a library, but mutable applications have significant possibilities - more of this can be described later if your interested (in the database I am preparing to release there are mutable calculation binaries that can be implemented in much the same way in a more thorough sense - though not having developed this as a code manipulation and compiler tool my opinions of it are just that, and are likely not worked out to such an extent as the previous topics).
________________________________________________________________
All these concepts are open to further expansion and customization by contributors of the project and I would like to have the OS licensed in a way where only contributors have access to source, with the rights to use the last version they made contributions to for personal use, with the final OS being sold as a proprietary system with all contributors getting a share of profits equal to their contributions - the system for this is also open to discussion. I am willing to host the project site and development portals, secure source mirrors would be welcome from contributors as well.
If your interested in this project please feel free to contact me directly - I'll check this thread for commentary as well of course. My personal site is http://cory.geesaman.com/ and the company I will be releasing the DB under is at http://www.novorum.com/