berkus wrote:I believe a team of 15 inexperienced in OS design folks with no clear idea is just a FAIL and they gonna learn it the hard way. No offense, such is life.
Exactly, and I learned the hard way myself... So here's the kind of think that's likely to happen, mahmoudaladawi :
1) The 2 or 3 talented people in the group will start doing a lot of work, while the others will write nearly nothing. About one or two months before the deadline, you'll discover that half of them simply didn't have the knowlege and capabilities, and didn't understand anything about the project, so you'll have wasted an enormous amount of time trying to explain them what their part of the job was. The other half won't care about the project at all, focus on the other courses, and you'll have wasted your time on them too. (That's what happened to my team of 10 people).
2) Eventually, you'll hit a really difficult problem, and you'll spend a month or two trying to solve it, because OSDev is a very specific topic, and you won't know *where* to search. (For me it was "how the heck do I get into 1024x768 VESA mode - took two weeks to discover you couldn't do it in PM and another two weeks to understand that a 8086 VM was way too complicated and that I needed to rely on grub to do the job). OSDev is full of difficult problems, and if you hit one early enough in you project, you won't be able to get around it and you'll stay blocked for a long time.
3) Since you don't know where you're going, your project will lack proper design. As long as you follow some kind of tutorial, it should be ok, but as soon as you'll want to add some piece of functionnality that wasn't planned in the tutorial, you'll have to refactor / rewrite large portions of code -- and you'll loose a lot of time.
So the solutions to above problems I'd suggest to you are :
1) Make sure everybody's working, attending to all meetings, and regularly report their advancement, otherwise kick them out of the project as fast as you can -- you'll be better with 2 people working on their own, than with 15 people with only two of them actually working.
2 and 3) Spend the first month doing those two things :
- Read the whole OSDev wiki (wiki.osdev.org). I did it, and it shouldn't take more than a week.
- Implement a "quick and dirty" OS with a VGA text mode console, a keyboard driver, basic memory management (malloc, free), a sheduler and very basic Inter-Process Communication if you intend to write a microkernel later on. Follow some kind of tutorial to do this, so it won't take too much time. This should help you see what OSDev is about, where are the difficulties and what you need to design for your "real" OS. Ideally, all 15 members should do this task, so they all get a good grab with OS development. This should also help you kicking out people if needed : those who haven't implemented at least half of the "quick" OS after a month won't help you with the real one.
And no, spending a month discovering the topic you're about to spend a year on isn't loosing your time. It'll help you a lot.
(Note : By "kicking out of the team", I don't mean actually showing them the way out, I mean : ask them if they *really* want to do some work, and if they do, ask them to write the report, documentation, or some small optionnal parts of your OS (e.g. an extra driver). But DON'T RELY ON THEM.)