H,
Antti wrote:embryo wrote:But the amount of work is great. Here is the base - language, compiler, IDE(editor, debugger). Next comes OS.
The amount of work is not insurmountable. If we think about a compiler, for example, it could be an extremely naive implementation without any optimisations. It would still do the task. Actually, it would probably do the task surprisingly well.
My roadmap goes a little like this:
Plain text to tokenised source code conversion utility. Source code is supposed to be tokenised by a fancy IDE while you type, but there is no fancy IDE for Linux/Windows and converting plain text seemed easier. This turned out to be a lot harder than I first imagined - e.g. something like "
typedef myType as range myFunction(myConstant*9) to myConstant + @(myStructure + myType.min).myMember.size" isn't trivial to tokenise.
Initial "all in one" compiler. This doesn't need to generate good quality code, but because the language was designed with the assumption that there will be an optimiser (e.g. things like dead code elimination instead of pre-processing/conditional code) the resulting binaries will be extremely bad if there's no optimisation, and at least some optimisation (constant folding, dead code elimination, etc) will probably be necessary just to make it bearable. This can't really be started until the "plain text to source code" utility is done.
Boot code, kernel modules, etc. I'm planning to cheat here (no support for UEFI, only support 80486, etc). This can't really be started until the compiler is done.
VFS, device manager, some drivers, some misc. stuff. These can't really be started until the kernel is usable.
Minimal GUI and IDE. These can't really be started until there's some device drivers, etc.
Both native compilers. These can't really be started until there's some device drivers, etc.
After all of this, I'm going to end up with a "not very good" OS with bad hardware support, ugly graphics, minimal IDE, etc; and I'll want to spend at least 6 months making everything less bad before I release it as "version 0.1".
Antti wrote:embryo wrote:What do you think about collaboration? (the question is for all participants)
Unfortunately, it is very unlikely that it works if the project is trying to do thing differently and is at the early stage. People who would be competent to contribute are too critical and it results in a controversy. People who would be interested in helping are not necessarily competent enough to give any helpful contribution. It is a one-man journey until the design is stabilized and there are enough evidences for the design being successful.
For my project, nobody would be able to do anything until at least the kernel is done, and I'm much more likely to wait until "version 0.1" is released before I start looking for contributors - e.g. after it's self-hosting and not as painful to use, so that people can run the OS inside an emulator and use it to develop software.
Of course eventually (maybe "version 0.2") the features of the OS will start to shine - people will be able to create distributed clusters so that it's like they're working together on the same computer. E.g. 2 or more people using different IDE "front ends" that talk to the same IDE "back end", so that multiple people can be working on the same piece of code at the same time (and can watch each other make changes in real time, etc).
Cheers,
Brendan