Jump to content

How would one go about creating an OS?


AuthenticUser
 Share

Recommended Posts

Hello,

I am planning on starting a company that will compete with Microsoft and Apple. Before I go about any of this I am faced with an extremely difficult task of creating an OS, I haven't the faintest clue where to start and would appreciate it if someone could point me in a general direction of what I should start researching.

edit: Yes I am serious, Yes I realize that this is an extremely difficult task and will be hard to accomplish. I still would like to learn though so that I can best produce the results that I desire.

Best Regards,

AuthenticUser

Edited by AuthenticUser
Link to comment
Share on other sites

Why not do what most people do when they need an OS that isn't owned by Microsoft or Apple, and turn to Linux?

If you are serious about creating your own OS then you will need to sit down and read everything you can get your hands on about OS design and implementation. This means books to get you a good grounding in the area and articles to get you up to date. Also you will need to learn to code at a low level on the machine (this means a lot of C and even some assembler for the architectures your OS is going to support).

Link to comment
Share on other sites

I have so many responses to this I'm not even sure where to begin.

First of all, writing a complete OS from scratch is not just hard, it's extremely time consuming. All of the desktop operating systems you see today are the result of the hard work of dozens or even hundreds of people over the course of 5 - 10 years. If you want to re-invent that wheel, get ready to settle in.

You can start off by reading this introduction to computer science: http://www.amazon.com/The-Elements-Computing-Systems-Principles/dp/0262640686/

Then learn a bit more about programming with some of these resources: http://sitwon.github.io/learnproglang/Home.html

You'll need to know assembly: http://www.amazon.com/Art-Assembly-Language-Randall-Hyde/dp/1593272073/

And also compiler design: http://www.amazon.com/dp/0321486811/

And many many more topics. Just getting up to speed will take you about half a decade, but it's doable.

If all that sounds like too much of an investment, you can do what Mark Shuttleworth did and just build on top of the work other people have already done. You might want to give Linux From Scratch a try, and learn about how the pieces of a typical Linux distro fit together and how you can design your own custom distribution. http://www.linuxfromscratch.org/lfs/

There's no shame in bootstrapping your new OS on the underpinnings of an older OS. Shuttleworth did it with Ubuntu, Google did it with Android, Apple did it with OS X (on top of FreeBSD and NetBSD). Even Microsoft did it originally when they bought DOS.

It's a quick way to get something tangible going, and then you can work on replacing individual parts slowly over time. To get started, you'll just need to know some Bash: http://tldp.org/LDP/abs/html/

It helps to also know enough of C, C++, the compiler toolchain, and build systems like Autotools to fix the trivial build errors you WILL encounter along the way.

http://www.amazon.com/C-Programming-Language-2nd-Edition/dp/0131103628/

http://sitwon.github.io/learnproglang/Home.html

http://www.amazon.com/Definitive-Guide-GCC-Guides-ebook/dp/B001GNBTY6/

http://www.gnu.org/software/make/manual/make.html

http://www.amazon.com/Autotools-Practioners-Autoconf-Automake-Libtool-ebook/dp/B003WUYEL6/

But really, as much as you think you want to start a company that will compete with Apple and Microsoft... you don't. You're already too late. Even if you came out with some revolutionary new OS tomorrow, it just wouldn't matter. There are so many reasons behind this, that I could spend the entire day explaining to you why that window of opportunity has closed, but to boil it down really quick: desktops are done.

The Year Of The Linux Desktop will never happen. Even as Linux is growing in popularity, desktop operating systems are becoming increasingly irrelevant. Application development is continuing to trend toward fatter and fatter web-applications, and desktop operating systems are increasingly just a light dressing on top of the REAL computing environment: the web browser.

By the time you've finished filling out paperwork to incorporate your shiny new company, another million prospective customers will have switched from their old desktop operating system to ChromeOS or FirefoxOS or a tablet running apps which are mostly just thin interfaces over an HTML5 webapp. Desktops are done. Their time has come and gone. Jumping in a the tail would mean competing against the entrenched veterans for an ever decreasing user base. One which is mostly comprised of the die-hard fans of those very operating systems you wish to compete against. So you'll have a steep up-hill battle to win them over, and ever decreasing reward for doing so.

I'm not saying it's impossible, I'm saying that it's never going to be profitable. Even the big players you're looking to compete against can't make a profit on their operating systems, that's why they're all branching out into other markets. They're losing money on their OS development efforts, but it enables them to sell other products and services.

That's the cold hard reality, and that's just one of dozens of reasons why a new OS is going to have a very VERY hard time competing in the current market place.

Link to comment
Share on other sites

why such an aggressive project? Why not start small and learn linux and then mod the code closer to your specifications. If all goes well then try to climb mt everest.

I want to create an aggressive project like this because as a business man I see a market.

What sort of background do you have? Electronic engineering or anything along the lines that might help you in doing this?

I am going to major in Economics, I have a 4 year background in the IT industry and about a year of programming under my belt. I intend to get a lot of help from outside sources.

@Sitwon

Thank you very much for the list of materials. I am looking into linux from scratch, if I can build on top of linux it will make it a great deal easier. I can't determine what I will do right now as I lack the knowledge to make a good decision. As you say, webapps are becoming more of a thing but ultimately there is going to be some processing done locally and that local part is what I am going to try to create.

Link to comment
Share on other sites

As you say, webapps are becoming more of a thing but ultimately there is going to be some processing done locally and that local part is what I am going to try to create.

While there is still some room for innovation, there's very little benefit left that you could squeeze out by creating a whole new OS from scratch.

Remixing Linux into new distributions is what most companies do when they need a "custom OS", but that's basically what Linux was designed for and the pathways are well-trodden. There's room for innovation in most of the layers and components of a Linux system, but it's all well documented and well understood. Tough to create much of a competitive advantage in that arena.

Some processing will always be done locally, but what's happening is that the local OS is just becoming a VM host and the local code is targeted to the generic VM rather than the specific underlying system. So nobody is really paying attention to the underlying OS anymore, instead they pay attention to the VM that their applications are targeting. That VM, in many cases, is the web browser. However, the last thing we need right now is yet another web browser to toss their hat into the ring and create yet more quirks that web developers need to compensate for. So if you're harboring any ideas about creating a new web browser... just don't.

Boy sitwon. That is one sad dose of reality. I hate the thought of ever having to give up my system. Especially for some overpriced shiny piece of glass and plastic that doesn't even run real programs.

Well that depends on what you mean by "real programs". With apps running in a mobile OS or newer web applications running in the browser I can do almost anything and everything that I could do with the native utilities of my host operating system. There are still a few rare exceptions, but they are becoming increasingly rare (especially with HTML5). I don't look at it pessimistically. What that means is that application developers and write to one target platform and support a broader spectrum of users than ever before. I can write an application in HTML5 and it will work on Windows, Mac, Linux, phone, tablets, smart TVs, wrist watches... all without having to do anything special in the source code or touch a cross-compiler or worry about endianness. In a lot of ways, that's a victory for Linux users, for developers, and for end-users.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...