A new OS, a new tomorrow

Pages: 1234
Alright men I have a massive task at hand. I've written a kernel before, but it was very simplistic, and I did it through a tutorial. I've written a shell before, but that was rooted in Unix. I want to write my own OS. I've attempted it in the past and never completed my task. I've developed my own linux distro (Erika Linux)to be voice driven and semi AI based. So OS dev isn't new to me. BUT I post here with a simple purpose in mind. Do you think that I, working alone, can have my OS perfected (as in first full release of the OS) by my 4th year in college? I shall be a freshman in Uni this fall.
It very much depends on your skills in Assembly.

-Albatross
Not nearly as great as my skills in C/C++, but not horrible either.
A whole OS? As in, you write both the kernel and the userland applications? I'm going to go with no.

Assembly isn't used that much in OS development. It's mostly necessary for bootstrapping. Once you have that out of the way, you can write almost everything in C.
Linus Torvalds took a year of hard work to write a kernel from scratch and he was still in uni I think. But a whole OS? It took the GNU guys from 1984 to like 1986 to get most of the necessary commands and there were loads of them.
Let´s just say, that You CAN do it, IF you have the TIME... And no, it won´t be perfected, in my opinion - in the case that You perserve... But that is something to learn from and maybe make a lot of experiences with (even though it could - if working - a nice reference^^)...
You're right guys, I can't do it in the time I alloted, not that I expected different. I asked knowing full well I couldn't do it. But it has always been my philosophy to shoot for the stars and be grateful of where ever I land in the process. I'm doing it anyways. The goal is to have it done by 2014, realistically it'll be done around 2020. It will be a learning experience. There will be much frustration. There will be lots of failure. But in the end...All that will not matter.

Thanks for the responses. I have a long journey ahead of me. HS graduation is 2 weeks, and that means I'll have all summer soon to work on the kernel.
closed account (1yR4jE8b)
Are you implementing the kernel from scratch? If so...why? Linux is a great kernel and a perfect base to implement pretty much anything, why not make better use of your time adding the useful functionality to the definitive open platform and giving back to the community instead of dilly dallying around doing something that's already been done a thousand times over. I don't mean to insult you but realistically, there doesn't really seem to be a point to make a kernel for this. You'd be better off implementing the software instead of rewriting an already established base.

Just my $0.02
Isn't it amusing how people say "a penny for your thoughts" and also "my two cents", implying that to them their own thoughts are worth more than others'? No... no... stay... on... topic...

Unless you are really clever about writing your kernel (and I mean REALLY, Darwin, Solaris, and Linux are excellent kernels), then I say there's no real point doing it. What do you want to accomplish with your kernel? What would it add that doesn't already exist? If you can't answer that question, then don't write it. If you can answer that question with a proper answer, we will help you and ask for your autograph later.

Otherwise, it's not worth your time. Why not create a cross-platform C++ library that adds reflectivity to said language?

EDIT: Fixed a few grammar errors.

-Albatross
Last edited on
What the hell kind of response is that? So, just because there's a product A out there which performs some function, then there's no point in creating product B that performs similar functions, regardless of the reason for creating it? So what's the point of having several kernels, when only one's enough? After all, they all do more or less the same things, so why not pick one and dump the rest? They have no reason to exist. Furthermore, no new kernels need to be developed, because ultimately they won't do anything that's radically different than the ones that already exist.

EDIT: Also, screw reflection. Real Men do things at compile time or not at all.
Last edited on
Oi chrisname, could I borrow your flamesuit for a few days?

I agree with you on the part regarding "Real Men", helios. "Real Men" do things the brute-force numbskull way rather than the most efficient way. *wink*

EDIT: Also, I expect that at least one of us did put reason in his or her post. Read my own post carefully, especially the part with the question.

-Albatross
Last edited on
Are... Are you implying that reflection is efficient?
But any way a new system should be posix, it allows to avoid developing own applications. It will be needed only to port or just recompile existing soft.
@Albatross,
No. I need it.
closed account (z05DSL3A)
What do you want to accomplish with your kernel?
Having a nice stable center to my OS.

What would it add that doesn't already exist?
Knowledge.

Sometimes the reason for doing something is, purley and simple, the doing of it.

I have plans for a distributed real-time operating system for a robotics platform. It will give me no financial reward and no academic reward (qualification) but I still just want to do it.
Last edited on
@Grey Wolf,
I think like that. I write programs for fun and because I feel I've achieved something when I do.
closed account (1yR4jE8b)
Isn't it amusing how people say "a penny for your thoughts" and also "my two cents", implying that to them their own thoughts are worth more than others'? No... no... stay... on... topic...


I've always thought that "my two cents" basically implied "this is my opinion and it might not be worth much but here it is anyway" (because 2 cents is not worth a lot at all).

What the hell kind of response is that? So, just because there's a product A out there which performs some function, then there's no point in creating product B that performs similar functions, regardless of the reason for creating it?


Not when Product A is free software and creating Product B is possible by simply extending Product A. Why do we use inheritence in Object Oriented Programming? To reuse something useful that's already been made, but to add some features that we need to it. Most kernel's out there do that now, extend Linux to have a certain feature that is missing from the vanilla kernel (the Brain-Fuck Scheduler for example). No one's going to go and rewrite a Kernel for a Unix-like/Gnu operating system, they're going to extend Linux.

That's all I'm suggesting. Considering how easy it is to get the source code for Linux, why not take advantage of that instead of rewriting already established code that is irrelevant to the goal you are trying to achieve.

I personally learned way more about Operating System development from tinkering with the already established Linux Kernel than I did fighting with the bull crap nachOS kernel and working through a textbook in my third year of University.
Last edited on
No one's going to go and rewrite a Kernel for a Unix-like/Gnu operating system, they're going to extend Linux.

I disagree: http://wiki.osdev.org/Projects

Edit: Do a search for "UNIX-like", "UNIX clone", "POSIX", etc...
Last edited on
Those of you saying there's no point rewriting the kernel are far from right. Grey Wolf got it spot on. I'm doing just because I want to learn and I want to prove I can. As for making it posix compliant, My ego STRONGLY considers it, and yet theres the id in me saying if i write it to my own standard I can say it's mine and no one elses. No matter how hard in irrational it would be to write the client software. :P

Also as a note it will be closed source, as will the libraries to develop software for it...why? It's not leaving my computer. I'm not putting anything up for grabs as I know no one want's it. really writing my own operating system gives me the chance to experiment with things no ones ever implemented. whether it be because they are bad ideas, or too obscure a task to go on. Why not have AI based recourse management? Who says console commands need to be archaic and cryptic. Why a mouse/keyboard or even a touch interface?

Deep down I'm a scientist and a philosopher, in the classical sense. I want to experiment with the unknown, albeit from a technological standpoint. I'm doing my own bit of research for this project and I'm eventually going to be doing some more with it. Take it as you wish.

-Seraphimsan
closed account (1yR4jE8b)
This is where I strongly disagree with your point of view, perhaps it's just the free software hippy in me coming out, but I still strongly disagree.

First of all, like I've said before, I've learned way more contributing to the Linux project then any other kind of Kernel hacking I've done on my own. Mostly due to the fact that the community is so tightly knit, if there was something that was confusing me, the community was there to help me understand it. Whenever I tried to do anything on my own the only resources I had were archaic textbooks and sparse websites. The experience of working with real people who are willing to help you, on something that is actually useful, is much better and more rewarding than hacking away at some project you think no one will ever use. Frankly, if you plan to work on this by yourself as an indie closed source project over the course of four years, I bet you'll give up before the first is done. Like you've said already, you've attempted OS development before and given up.

Besides, how do you know that no one wants what you're making? Did you ever bother to ask? Con Kolivas wrote the BrainFuck Scheduler because he wasn't satisfied with the current Linux scheduler, now look how many distros are adopting the BFS for there kernel. AI based resource management sounds quite interesting, and I would be more than willing to contribute to it. I did my Undergraduate Thesis on Human Computer Interaction and voice/driven, non-touch based interfaces interest me a great deal. My experience in kernel development may (or may not) also be of use to you, but alas...your kernel is closed source so you're on your own ;-P.

I don't understand the thought process behind thinking that because you want to experiment, you need to do it alone. In the real world this just doesn't happen. You're just finishing high school, so you seem to still have that academia mentality where everything must be done on your own and that working with others is cheating (this isn't your fault, everyone is brainwashed by schools at a young age to think this), but in the real world there is no shame in working with someone (or many someones). The experience of working in a group of like minded individuals on a project is exponentially more rewarding, and you'd learn way faster, and you'd learn more, working in a group of people rather than by yourself. Working on your own will only lead to frustration, creative road blocks, and giving up (unless you are the most stubborn bad ass mofo on earth, but judging from the attitude in your posts I doubt it).

Operating System development is, from my experience, by far the most difficult thing to do in computer science. You will save yourself a lot of headaches, learn much more, and learn much faster by working with people then you ever would trying to do it on your own.

I'm not sure if this post sounds like I'm criticizing you (I'm not trying to, far from it), I'm just going to spell out my intentions clearly. I don't think what you want to achieve is a bad idea, no idea is a bad idea, and I guarantee you that SOMEONE out there would benefit from what you are trying to achieve. You keep saying you don't want it to leave your computer because you don't think it's going to be any good...but I'm saying, if you're going to do something do it right: get involved with people, learn from their experience, and impart the innovative flow of the young creative thought process onto them. Everyone can benefit from what you have to offer, and you will become a better programmer as well. It's a win/win situation for everyone.
Pages: 1234