Hi,
tay10r wrote:
I had no idea how many operating system projects there actually were until I found this site.
It's sad to see that a lot of them have not really taken off, a lot of effort goes to waste.
For the majority of people here the goal is to learn about OS internals (and not finish writing an OS); and in this case none of the effort is wasted and you can't skip pieces without learning less.
tay10r wrote:
I would to start promoting the idea of tackling operating system development as a community instead of as an every-man-for-himself approach. One person does not have to write the entire operating system by themselves. I know that everyone, myself included, takes pride in the amount of code that they write, but projects are not getting finished. I've made an effort to create or contribute to reusable operating system projects. BMFS and Pure64 come to mind. I found
https://github.com/omarrx024/lai, an os-independent ACPI implementation (props to Omar). I would like to see more projects like this.
Every few years someone suggests that everyone else works together on a single project. It never works. For the majority of people "learn less by letting other people do it" doesn't make any sense. For the minority of people (where the goal is to finish an OS eventually) they all have good specific reasons for not just using (e.g.) FreeBSD and saying they're finished without doing anything.
tay10r wrote:
There's no reason we can't all share libraries for:
Woah there! For my OS project there will never be shared libraries - in my opinion they're an intolerable disaster and need to be replaced, either by isolated services (communicating via. messaging, for much better security and scalability) or be statically linked (to avoid dependences, breakage and malicious code injection risks).
tay10r wrote:
1. ELF Loading
2. Memory Allocation
3. Network Protocols
4. GPT
5. FAT32
6. Windowing System
I mean heck, if we agreed to a standard for driver interfaces, we could even share device drivers too.
We can't even agree on standard driver interfaces for boring/simple devices.
Mostly, you seem to be assuming that all operating systems are essentially the same (and therefore code can be shared). This is a mistake. For most of the things you've listed there's a small amount of "potentially shareable" code, and a large amount of code that is not shareable between different OS designs because it depends on things like the interfaces between upper and lower layers, the interface to the kernel, the OS's permission system/s, etc.
tay10r wrote:
What do you say we get the ball rolling on this? Who thinks it would be good for the community to share more projects?
I think you should start by trying to design a "standard" interface that USB device drivers can use to talk to a USB controller driver. Note that this interface should include things like hot-plug events, isochronous ("fixed rate") transfers, hardware fault reporting and statistics gathering (bytes and packets sent/received, etc), and power management; and should describe how (and if?) USB controller driver starts USB device drivers after/during enumeration. Don't forget that some people are doing micro-kernels (where USB controller driver and USB device drivers are in separate processes), and most people will insist on asynchronous interfaces.
After you've designed it; post a complete description somewhere and then brace yourself for the resulting fire storm of suggestions, objections and arguments.
Cheers,
Brendan