Sourcer wrote:Hey, i'm not new to software development, but i am a newbie in OS dev.
I've started to write my own OS for x86, and i was wondering what is the correct and most efficient order of steps..
I'm using GRUB as my bootloader;
I already have a very simple IRQ implementation for my keyboard, and all of the IDT exception handlers.
What should be my next module? some sites say a memory manager, and others say ATA drivers..
I'm not really sure.
Thanks.

You will need to learn a lot and the goal will be to implement many applications.
You should choose your favorite open source applications and also learn which libraries and other kernels will help you learn. Then pick your favorite or oldest version of that application which runs fast and in most new and old systems.
Do the same with the newest versions.
Make a snapshot of the original source code of those applications as the root of that branch and then create another snapshot as the first modified version, your own branch of those projects.
You will lag behind the technology a lot while you try to implement your own OS, and the latest versions of your branched applications also will be left behind newer updates. But you will now need to start your learning from there, from modifying and taking apart those programs until you can understand them fully and apply that knowledge on your own without using those projects.
Now you must create a completely separate project repository to implement your very own projects, code you have written 100%. It should only contain the best you have done and the things you really understand and for which you have the greatest and most brilliant ideas you've had on how to implement them better than in the other projects you've seen.
So the first thing to do is taking a snapshot of the books, the tools, the programs, their source code and the rest of resources you will use as if they were the last versions ever to make it possible a smooth learning.
Also, by totally separating those resources in a repository, and the results of your work in a totally different repository, you will be able to actually make visible your contributions and make their development more interesting and useful to others. And you will also be able to clearly appreciate what you have achieved all of your own and what you have used as the base resources.