Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I almost didn't post this comment because it makes me sound like such a killjoy, but:

"I spend most of my days in the world of PHP, JavaScript (I love jQuery) and a little bit of HTML, CSS and ActionScript 3.0. I’ve done some hobby software development and also wrapped my head arround languages like C, C++ (except for templates), C# and Java."

It sounds like you don't have the experience required to make an OS. I certainly don't either (I'm no C-head) so I am in no position to snark, but you're going to fail in this endeavour.

That doesn't mean it's pointless, though- I think it'll be a tremendous learning experience in getting to grips with the core of how computers actually work. So, good luck. Just don't go thinking you're going to make the next Linux out of this.

EDIT: It's also important to note that the author didn't submit this to HN. He didn't say "take this, HN amateurs!", he just posted something on his blog that someone else picked up.



You know what, if you have hesitation about posting something, then you probably shouldn't. It's one thing to have a specific concern about his project, but it's quite another to call into question his skill as a programmer and indeed quite arrogant to assume that you know what it takes to build an OS.

There is a big difference between saying "You don't have what it takes" and saying, "I think the obstacles you face will be very large, good luck!"


He is right though - I was really into messing with kernel development a few years ago, and despite being an experienced C/C++ developer and working on it on and off for a couple of years, nothing useful came out of it.

You really need to be extremely familiar with computer internals, have a very good grasp of the instruction set architecture of the platform you're targeting, have expert C knowledge, and at least be very comfortable programming with assembly.

And even then you're going to fail unless you're working with a large team - there's just too many parts of a modern operating system for one person to ever tackle. Even if you only want to support a single set of hardware (one graphics card, one network card, etc), you'd spend years just writing drivers for everything and by then the hardware would be long obsolete.

I'm not trying to say that he shouldn't do it - it is great for learning how computers work on a low level - but he really does need lots of experience, and should go into it with the correct expectations.


You are overstating what an operating system is. The core of most modern operating systems were written by a single person, or two people - including Windows.

Operating systems become large because of hardware support. They are also large now because what is considered 'operating system' has changed - from including a desktop environment to including a web browser.

The reason why OS X and Windows have large teams and year-long development cycles is because they are a complete stack of applications, not just a kernel, fs etc.

To get an OS written from scratch to boot on specific hardware with some basic functionality should be an 8-12 week job for a competent C developer.

The best thing I did in my teens was to grab x86 docs and attempt to write an OS. I thoroughly recommend it to everybody as a good project to learn system and development (along with writing a compiler and writing a simple database).


quite arrogant to assume that you know what it takes to build an OS

With all of the (largely web/app-centric) development work that I have done, there are numerous concepts in OS development that baffle me. I don't claim to know what it takes to build an OS, but I know that it is beyond me.

Also, I wasn't questioning his skill as a programmer, I was questioning the undertaking that he is discussing. Any solo developer would struggle to create an OS (especially when they have a full time job to contend with), let alone someone that is going to have to learn a lot along the way. So my suggestion was to go ahead, but treat it as a learning experience rather than a deliverable product.


Everyone that ever created an OS from scratch had to learn first. The only question is how long it will take, but there is no reason to say "you will fail".


treat it as a learning experience rather than a deliverable product.

But what is the purpose of mentioning this?

If you are recommending that he go ahead with the endeavour, then what does it matter if he ends up with a deliverable product or not.

Also, these kind of projects can have a timeframe of years, regardless of programming skill. If he finishes it, it will be a result of him sticking to it in the long run, not a result of how much C knowledge he had on the first day of the project.


As I thought more about this very, very important point, I thought I'd give shout out to Pure64: http://www.returninfinity.com/pure64.html

It _will_ be a tremendous learning experience for him to try his hand at writing an OS. But there's always the dark side, the discouragement, difficulty, and flames from the internet along the lines of "Lol, you'll fail." (And I don't mean to belittle the parent post – I'm referring to all the other responses this guy is going to get.)

So take a look at Pure64: it's a project from the University of Waterloo – unofficially – but for someone just getting their feet wet, it's a great way to get down to writing Bare Metal Code but you can skip a whole lot of pain!


> Just don't go thinking you're going to make the next Linux out of this.

I don't think many people that decide to build an OS, regardless of C/asm experience, have the goal of making the next Linux. Most (myself included) get into OS development because it's interesting and a great learning experience.


this is a terrible comment that runs completely against the spirit of what hacking is.

he didn't say anywhere that he expects to build the next Linux, it is all about learning. in that, he has already succeeded, as you can see from his progress all that he has learned and all the little tips he has picked up from trying

i'm just shocked that on a site about hackers that somebody would call out the efforts of a hacker to learn something new as 'going to fail'.

edit: and how frikkin' arrogant are you to assume that just because this guy does PHP and Javascript work that he isn't capable of learning about operating systems. seriously, get your head out of your ass.


You have it backwards. Going from high level, dynamically typed languages into building an OS is a fantastic way to learn low level programming and how hardware works. Whether or not he's successful isn't really what matters.


Even Linus wasn't out to build the next Linux. He was just about as clueless as this guy when he started out with two processes alternating in cooperative multi-tasking mode. Then pre-emptive mode (using interrupts and stack switching). Then some basic screen IO iirc and so on.

It all grew from there.


Indeed. I always feel it is better for people in his position (attempting something so incredibly complex with a very low level of related experience) to do the work, then talk about it - rather than the other way around. Talk is cheap when you don't know what you are doing.


Talk is also cheap when you're talking about somebody else not knowing what they're doing.


Then again, the flames may just make the guy a bit more determined – angry enough not to give up.


And I also don't have the skills to make an OS. Yet, in school I'm making a simple one.

That's how you learn. If I had the skills, what would be the point of the exercise?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: