How do I start my journey to develop OS?

Hello, I am a student and currently pursuing Electrical Engineering. But I want to pursue the path of developing operating system. Now I am stuck or may I say that I am lost in this vast space of knowledge. I have learned about C programming and is currently reading about data structure and algorithms. But I don’t know what to do next and is confused.

Any suggestions will be of great use for me. Please suggest me some paths to follow or topics that I can learn next. THANK YOU in advance.

Hi Arghadeep_Saha.

The best way to learn or build your own operating systems is to join development groups about kernel, operating systems like redox-os, linux etc. For this first alternative, there is a repository that selects or lists all existing operating system types and the responsible development group:

  • https://github.com/jubalh/awesome-os
  • https://github.com/zriyansh/awesome-os
  • https://github.com/penberg/awesome-os
  • https://github.com/Carlangueitor/awesome-os-dev
  • https://github.com/tommy-u/awesome-operating-systems

A second way or way to learn and build your own operating system would be for you to have access to technical documentation about it. About this second alternative there is this website: https://wiki.osdev.org/Expanded_Main_Page here is how to build your operating system from scratch.

3 Likes

Thank You for your help.

1 Like

Hello Arghadeep Saha

Developing a full operating system (handling graphics, keyboard, mouse on a typical PC …) is really a huge amount of work (several years of full time development). Look for example into the amount of open source code in Linux or even in the simpler and smaller https://freedos.org/ or in FreeBSD or in µkernels like https://sel4.systems/ . Use David Wheeler’s sloccount utility to measure it and guess the development efforts and costs. A rule of thumb is that a full time developer produces 20 to 50 thousands lines of code (debugged, somehow documented) every year.

This is even harder if you want to handle various hardware (e.g. several Ethernet controllers, various motherboards, different Wifi chipsets, different graphics cards - Nvidia is very different to AMD cards, and even within a single brand there are lots of differences, different keyboard layout -in France AZERTY is more common than QWERTY)

Did you consider instead contributing to some smaller project like the RefPerSys open source inference engine?

You could contact me (Basile Starynkevitch) by email: at office (CEA LIST in France) to basile.starynkevitch@cea.fr or at home (near Paris) to basile@starynkevitch.net

2 Likes

Thank You for your help. If you find anymore resources that might help me please inform me.

Another resource relevant for OS development is https://osdev.org/

2 Likes

Does taking part in the GNU project and contributing to it help me in learning operating system development?

GNU project is only part of an OS. It is a reasonable place to start. If you specifically wanted to work on kernel development you would have to look elsewhere.

1 Like

Thank You for your help. Could you suggest me some projects or places to work in?

The Lumina desktop project is looking for C++ programmers with Qt5 knowledge.