Wednesday, June 07, 2006

Wondering

This post is gonna be some how technical, as during the last days I kept asking myself this question:

Why usually every student in computer science is thinking about either:

1- Making a new Operating System.
2- Making a new RDBMS.
3- Making a new programming language.



And everytime you ask someone why you think about this?

You got these answers:

1- For learning (this is the only good answer).
2- For making something for us to work with.

The main problem here that they never ask them selves a very simple question:

What we'll add by making this project?!!


Because anyone could build kernel with it's loaded in less than 10 months, this is not the problem here, I'll give you a very simple and very known example, Linux OS, can you tell me during the early releases of Linux, why could someone stop using Unix and use Linux?!

Simply because Linux is free.

Now lets imagine that Linux was in the same price as Unix, now everyone could think in this way and make this comparison:


Unix Linux

Not Free Not Free
Unix arc. Unix arc.
Well tested for years and having good support New and using it may be risky


So now, would any one try to make his business on Linux?!
Of course not, give me one reason for this!!


Now let's return back to our point, every one from those people, just tells me that he's reading now in Linux source code and start making his own OS!!!

So the question here, what's new here?!
It's still using Unix-Like Arc., even you can't make a community for it as no one will leave Linux community and come to work in exactly the same (let's say that he/she can do it exactly the same like Linux which is hard) arc. and start again from scratch to reach the same result?!!!

No one ever thinks like that.

If it's for learning, then look around you, there're dozens of loaders and kernels every where, ask your self why people haven't completed it to be a complete OS?!!

For the same reason, why re-invent the wheel?!

Why start walking in a street and you know well that at the end you'll be ending on the same place others are beginning now?!!

If you really wanna make a new OS, then make your own arch., invent something new, something which will let the people say: "Hey, this OS is totally new, let's try it".

Because the idea of the Re-Make may be good in movies, in songs, but in software, it's useless, totally mess.

The something happened in making a new programming language, they just try to make a new programming language by just changing the syntax, the question again, why?!!

If you tell me as example that you would make Arabic syntax programming language I may agree with you (although you can build an addition layer over any existing programming language like C/C++ to translate your new syntax to the old one, in other words, just build the parse tree and pass it to the old compiler), why I could leave X language and go to Y language and the only difference that instead of writing int Variable, I'll write Variable int, or things like that, this is also worth nothing, total mess.

Imagine now that someone spent 5 years from his life and then came after that saying: "Heyyy, I invented a wheel from scratch, I didn't use any already made materials, I built it from the ground zero"

What you'll tell him?!
Simply: "Are you fool?!!!
Why you could spend 5 years from your life making something useless like that?!!"

But if he came and said that the wheel he invented is multi-size, or can't be exploded, or anything like that, this will be useful.


My final comment, there're a lot of wheels out there, either use them, or if you don't like to use them, build a spaceship, no one needs more wheels here!

7 comments:

Mohamed Moshrif said...

yes, but what they are doing is re-inventing not re-creating

Mohamed Moshrif said...

@AMS: Iam talking about business man, all these factors don't give any concern in real business where everything is calculated as 1,2,3
They may be for you as to learn, or to fullfill your own desires or stuff like that, but when it come to business people don't give shit to all these, it's just about cost, and nothing except cost (cost here means money, power, time, etc)

Ashraf Al Shafaki said...

I'm having a hard time finding someone who knows how to use the already invented wheel of Microsoft SQL Server 2005. We're looking for a DBA but it seems few are experienced in 2005 in Egypt. Any clues on where to find them?

Mohamed Moshrif said...

Actually if someone has a good experience in SQL Server 2000 and has good experience in .Net platform, he will be able to work easily on SQL Server 2005

Mohamed Samy said...

Interesting topic...
I can think of a few cases where reinventing the wheel has a practical, useful purpose and not just for learning: Control, Competition, Improvement and Innovation. These cases are very similar and they often overlap:

Control
This is why Nokia & co created Symbian instead of licensing Windows CE. When your company's future depends on a new OS feature you just can't afford to wait for the supplier to provide it.

Competition
Why did Microsoft reinvent the wheel by creating windows? Couldn't they just license the MacOS GUI and port it to the PC? Because Apple were their competitors.
Developers can't simply give up competing with other companies just because they would feel stupid recreating software that's already available.

Improvement /Innovation
Programming languages are not really mature. And all of them have vast areas for improvement. When Microsoft wasn't able to improve on Java because Sun didn't let them, they reimplemented the language as C# and added tons of improvements.

Similarly, if I had some nifty features that would be useful in a DBMS, I have three options:
1- Begging Microsoft/Oracle..etc to add it to their software. And hoping they give me credit when they finally implement it.
2- Modifying an open source DB to add those features, but I would have to agree with the GPL or whatever license the code is based on.
3- Implement my own DBMS and use the codebase for innovating.


Yes, often a developer can achieve control/ competition...etc while not reinventing the wheel, but in the real world there are situations where creating your own codebase is the only option.

-- Mohamed Samy

Mohamed Moshrif said...

Yup, but not in the way I am talking about.

Not to see someone whose experience in Operating System is nearly non, and say: "Hey, I want make my own OS" and then collect his friends and start doing it.

Because if it's true, why all these projects have failed?!

Mohamed Samy said...

Not to see someone whose experience in Operating System is nearly non, and say: "Hey, I want make my own OS" and then collect his friends and start doing it.


I see. It's mainly about ego and feeling good about oneself, after all, creating an OS is one of the biggest signs of accomplishment in our field.

I say as long as they don't waste too much time and energy, let them go ahead and attempt to create their own OS. In the best case they will make a cool piece of software, and in the worst ( if they fail), they will learn a lesson about how the real world works, and who knows, maybe one of them will get interested in OS development and help develop the next version of Windows :)

-- Mohamed Samy