Hi,
DavidCooper wrote:You could of course argue that showing people how a bubble sort works is not educational because it is hopelessly slow at sorting things, but it is of educational use for that very reason - you use it precisely to show people its limitations, and there is also a lot to be gained from it educationally if people experiment with modified versions of it to see how easy/difficult it is to improve on it, even if no such modified version will ever be worth using for anything in the real world.
If it's done correctly (e.g. you show bubble sort, then you show other sorting algorithms, then you explain why bubble sort is bad), then showing people bubble sort can be valuable as it helps them avoid it. However, if someone only shows bubble sort, claims that it's "how sorting works" (even though no practical sorting works like that), and fails to show other sorting algorithms, then you end up with people who haven't learnt that bubble sort is bad that don't avoid it.
DavidCooper wrote:If people are only allowed to study highly complex operating systems, it could be very difficult for many of them ever to get their mind round one at all. For educational purposes, what you want to do is start by looking at a range of simple operating systems and to discuss which ones are badly designed and which are well designed. The better designed ones will be the ones that are better able to be evolve into more advanced operating systems, but all of them will arguably be badly designed because at some point major aspects of them have to be abandoned and replaced in order to accomodate something that simply can't be done in a simpler OS. MikeOS is a useful illustration of a simple OS which is too simple to be able to do things the ideal way and which could be better designed in many simple ways. That doesn't mean it isn't worth looking at, and it's also useful for educational reasons to look at it's potential to be upgraded into something much more capable without giving it a radical redesign, even if it turns out that there is an impassable barrier higher up at some point which it cannot cross. Young children play with simple toys which have limited capability. Older ones play with more complex toys which do not suffer from so many limitations. We don't throw out all the simple toys from the shops and say that children shouldn't be allowed to have them because they are more limited in what can be done with them than more advanced toys, but instead we allow children to explore those limits and push the capability of those toys as far as they can, and then we encourage them to move on to bigger things. That is extremely useful in helping them develop their intelligence.
Yes; however nobody attempts to claim that a child's toy aeroplane is a learning tool that's going to help children design real aeroplanes. The child's toy aeroplane only helps the child recognise the general shape of an aeroplane; and if we had a toy that looked nothing like an aeroplane it wouldn't even do that. In that case you could call it a "fun abstract shape for playing" but an honest person wouldn't call it learning tool that's going to help children design real aeroplanes. In the same way, if MikeOS's web site claimed that MikeOS is "a fun abstract piece of software" it'd be fine, but calling it "a learning tool for OSs" is dishonest.
DavidCooper wrote:When I look at MikeOS I see something that has not been pushed anywhere near to its limits, and I also see something that does have severe limits and which is clearly not a place you would want to be trapped forever. There is plenty to be gained from playing with it and it is therefore useful, just so long as people are warned (as they are) that it is only a stepping stone (an optional one) to bigger things. If people want to step on it, that's fine, and if they want to skip over it or follow a different path, that's fine too.
When I see MikeOS I can see "a fun abstract piece of software". More specifically, I see a wrapper around BIOS functions with none of the pieces that are needed in a real OS, where the only thing anyone could possibly learn about OS design and OS development is how to do it wrong; and instead of warnings to inform people that it's severely limited and entirely unsuitable for a real OS it only says "it's a learning tool!".
DavidCooper wrote:What would ideally be done with MikeOS is that it would be developed into a series of example operating systems with small differences between them, and those small differences would enable significant advances for very little extra code, such as turning it into a multitasking OS, giving it a decent screen mode to work with, adding paging, switching the whole thing from using the PIC to APIC, and anything else you care to suggest. You could then introduce people to the simplest version, show them its limitations, move them on to the next version, most of which would already be familiar to them, and show them how it overcame some of the limitations of the previous version, then point out the limitations that are still there and move them on to another version, etc. That would provide people with a lot more value from studying it, building repeatedly on what they already know without them having to learn about a whole new OS every time. At some stage, the way it's tied to the BIOS could be overcome in MikeOS32 by writing alternative code to replace the BIOS functions (though it would be kept to a very small set of vital BIOS functions rather than trying to replace the whole bloated shebang), and it looks as if there is a route open to taking it beyond there into multiprocessing too just through a series of small evolutions without it ever needing it to be totally abandoned and replaced with something entirely new. The same thing could of course be done with many operating systems, taking people through a series of versions which illustrate the course of its evolution as it tries to overcome design limitations in earlier versions.
In theory, I agree with you completely. In practice you can't make incremental changes like that - as soon as you do anything that breaks the BIOS you have to completely rewrite the entire OS and you're back to the beginning and everything you learnt is useless/discarded. A far better idea would be to start with tools and booting, then add (e.g.) memory management, then add (e.g.) scheduling, etc; so that you're starting simple and adding more complexity, but don't hit the "it's all useless, throw it all out, sorry for wasting your time" limitation that relying on the BIOS causes. This is how most (all?) of the OS development tutorials do it.
DavidCooper wrote:As it stands, MikeOS only comes in one primitive form, and then it leaves you to move on to look at other operating systems, but it clearly does show how many simple OSes work (as well as how they don't).
It doesn't show how anything in any modern OS works at all.
DavidCooper wrote:I haven't looked at it, but it may be that Minix is a better place for some/all people to start and that it can take them through the whole journey already without them wasting time on MikeOS or any other simple OS. That I do not know. Perhaps the wiki should have (or maybe already does have) a page suggesting a good study route to follow through a range of operating systems which would show the best way(s) to people who have difficulty getting started in understanding/writing OSes so that they could be steered towards the best examples to study from the start and thereby learn to avoid all the major pitfalls before they start wasting years of their lives trying to write their own crap OS (though of course it isn't entirely a waste as they're bound to be learning some transferable skills along the way).
To be honest; I'd suggest the best learning route would begin with theory; possibly starting with (e.g.) "monolithic vs. micro-kernel vs. exo-kernel" and the advantages/disadvantages of each; then moving on to memory management and virtual memory (and the advantages/disadvantages); then doing scheduling algorithms, etc.
DavidCooper wrote:I don't know if MikeOS would merit a mention on such a page because I haven't looked at the alternatives, but it seems reasonable to me to think that it could be listed as one of the really simple OSes that might be worth taking a look at before moving on, but the key to how long anyone spends working with it would be entirely down to how quickly they take on ideas and how difficult they find it to get their head round more complex OSes. Some people are able to start out looking at Windows or Linux from the off, while others need to start with something that's stripped right down to the minimum if they're to have a chance of understanding it at all.
MikeOS would probably merit several mentions; but they'd all be warnings and/or examples of things an OS shouldn't do.
Cheers,
Brendan