howto become a reactos programmer?

All development related issues welcome

Moderator: Moderator Team

Post Reply
Witch
Posts: 293
Joined: Thu Jul 24, 2008 12:30 pm
Location: Stockholm, Sweden
Contact:

howto become a reactos programmer?

Post by Witch »

Goal: ReactOS-(janitorial)-programmer, Tactic: Unknown?


Who am I?
I don't have much experience as a programmer in any kind of languages. You could say that I got serious in learning to become a programmer around the year 2007.

From 2007 until now I mostly spent my time reading about the theories regarding PHP OOP and PHP Zend Framework. I managed to get my hands dirty around 2008-2009 with Zend Framework but I haven't finished playing with it yet.

2010 I started to attend a night course in introductory C programming. This is the sum of my programming experience.


Goal
My goal is to become a ReactOS programmer. I realize that this will be a very long and exhausting journey. However I didn't plan to become a super-programmer that can understand, build and maintain operating systems. I let the smart people do all that heavy lifting.

My goal is to do what I think you guys refer to as janitorial work on the ROS code. That is to do the easiest of the easiest of works on the ROS code. I want to work from the bottom-up.


( The Question ) / Tactic 1
So my question is basically. What tactic do you recommend me, when it comes to learning and reaching that goal? My tactic so far is this:

1. Attend introductory C programming night course and learn the basics for C.
2. Buy this C++/Win API book to learn how to make games: Beginning Game Programming
3. Then do some easy ROS work like: finding bugs, fixing bugs, translations, etc. etc.

What do you think about this tactic? Will it work for me?
Actually I already asked most of these questions at cprogramming.com but the tactics seems to be lacking, so I ask here instead.


Tactic 2
I got some pretty good and lengthy explanations over there which I don't know how to re-explain with my own words without sounding too long-winded. But basically my new questions are these.
  • What should I replace step 2 with in order to reach my goal in the shortest amount of time?
  • What book is most appropriate for me a 3 year-old-newbie?
1. Attend introductory C programming night course and learn the basics for C.
2. ?
3. Then do some easy ROS work like: finding bugs, fixing bugs, translations, etc. etc.

.
hto
Developer
Posts: 2193
Joined: Sun Oct 01, 2006 3:43 pm

Post by hto »

1. Attend introductory C programming night course and learn the basics for C.
2. ???
3. Profit!

:)
Witch
Posts: 293
Joined: Thu Jul 24, 2008 12:30 pm
Location: Stockholm, Sweden
Contact:

Re: howto become a reactos programmer?

Post by Witch »

@hto
Error, I cannot compute your instructions!


Tactic 2
http://wiki.osdev.org/History#Famous_Qu ... enet_Posts
Bill Gates: The best way to prepare [to be a programmer] is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and fished out listings of their operating system.
Does this mean that I need to learn and study Linux kernel code before I will understand howto work with ReactOS code? Since the Linux kernel is a complete and non proprietary semi-OS.


1. Attend introductory C programming night course and learn the basics for C.
2. Follow Bill Gates advice and study other peoples work in this case the Linux kernel.
3. What amateur hobbyist book will suit me the best?
4. Goal: be able to do some ROS janitorial code work.

.
hto
Developer
Posts: 2193
Joined: Sun Oct 01, 2006 3:43 pm

Post by hto »

Here's a big garbage can with listings of some operating system. :)

Seriously, ask the devs on the IRC channel, what janitorial work is needed.
Haos
Test Team
Posts: 2954
Joined: Thu Mar 22, 2007 5:42 am
Contact:

Re: howto become a reactos programmer?

Post by Haos »

There is no HOWTO become System developer in 28 days. Learning C is the first step, then you can study architecture itself.
hto
Developer
Posts: 2193
Joined: Sun Oct 01, 2006 3:43 pm

Post by hto »

For example, some translations got out-of-sync with English originals. There were even crashes because of it. It would be good to find and fix, and to alert translators about untranslated words in them.
vicmarcal
Test Team
Posts: 2733
Joined: Mon Jul 07, 2008 12:35 pm

Re: howto become a reactos programmer?

Post by vicmarcal »

TACTIC VICMARCAL


STEP1: FIND TIME

You need time to become a Developer.That is the first and main thing you need to become a Dev,as easy and difficult as that.
Main Objective: FIND TIME

STEP2: Learn C

Learn C.Take your time.No hurry.Nooooo Hurry.
Main Objective: Get used to C.Create apps.


STEP3: Create C apps

Create some Console-C apps and meanwhile begin learning WinAPI. WinAPI is C but oriented to Windows APIS.You need a good base of C first.Dont´t have hurry to jump to next step.Having a good C basement is needed.Have i said "Do not have hurry"?I will repeat again: "Do not...".Ok.Enough.
Main Objective: Create tons of simple Console-C apps.


STEP4: Lean+Create WinAPI apps

Try to create small and little GUI-Apps with WinAPI, follow any of the WinAPI books examples. Remember that our Sol.exe,winemine.exe,rapps.exe,etc are created with WinAPI.So you are one step closer to understand these apps.It will be a nice exercise to understand(after having done/understood WinAPI book examples)how these apps work.Tip: Before jumping to the next step,create tons of small WinAPIS apps.Try to use different APIs so you will get used to them.
Main Objective: Dont worry if you dont understand the WinAPI code of our Apps.You will.Dont get frustrated.Create more and more simple WinAPI apps.


STEP5: MSDN site

Thanks to give a look to our ReactOS Apps,you will discover some nice APIS which are quite powerful(as FindFirstFile,CreateWindow,and tons more),but the best thing is that you will know now how to move inside MSDN.com site. This is our reference page.And all the APIs behaviors are explained there.From "What does the API returns"to "Which Params needs the API to perform its work".
Main Objective: Try new Apis,not just the typical ones, and get used to MSDN site.Bookmark the MSDN pages to get fast to the API reference.


STEP6: Testcases

Run your WinAPI apps in XP,check they are working perfectly in XP, and then Run them in ReactOS.They should work.If you see something of your App is not working in ReactOS then recheck that this "something" is working in XP.If you confirm that this just happens in ReactOS, then you have found a ReactOS Bug.
The best thing is that you understand perfectly your own code,so you will guess quite fast which function is failing.Create a Bugreport, attach your little app,tell us what is not working,and point us to the function that is not working correctly in ReactOS.If your app performs 123 different-independent tasks,and just 1 is failing, try to trim your app and send us your app with just the function that leads to a wrong ReactOS behavior.Less code==Easier to understand.
Main Objective: Transform your non-useful apps in quite useful testcases

STEP7: Debugging Tactics

If you have reached this step then you should know how to create easy-WinAPI apps.Then you can become an "APP Mantainer":
Apps Mantainer: If you dont know or dont want to learn how the OS behaves internally.If you just know how to code apps with WinAPI then you can give a deep look to ALL the .EXEs inside ReactOS.
Like: paint.exe, cmd.exe, sol.exe, rapps.exe, whatever.exe.They are OS independent.So NO knowledge about how OSes behaves INTERNALLY is needed.
Download their code,study it, play with it(try to add new features thanks to your new WinAPI knowledge).In this point you will learn a lot of new APIs that you didnt imagine they could exist and that will make your coding task easier since now.But over all, ADD and Study how DebugPrints are added to ReactOS files.Add DebugPrints to winemine.exe,to cmd.exe or to rapps.exe.
Main Objective:Debugging is your objetive here,in order to work in ReactOS code you need to understand how ReactOS Debug works.You will understand why a DebugLog is a quite valuable tool.


STEP8: Books

Study and understand the Windows Internals 4-5th Edition,and i suggest the Operating System Concepts 8th Edition book too.This latest one helps to understand the basics concepts of the OSes focused in Linux and Windows XP.As WI4th and OSC are books which sums 1000 pages,read them while you enjoy coding WinAPI apps and featuring ReactOS Apps.Dont have hurry, or those books will kill you.Meanwhile continue with the next steps.
Main Objective: Begin studying OSes concepts as soon as possible.You will need extra support from Wikipedia.This is a long task, quite difficult and quite wide.Don´t stress yourself.


STEP9: Create WinAPI apps

Continue creating small WinAPI apps, maybe at this time you will like to create a Chess App,or any app that Windows has but ReactOS doesnt.At this point you should be familiar with the most commun APIs, indeed more,you should have understood that an API is just a quite-valuable-function coded by ReactOS in the same way you coded some functions,that makes your (coding) life much more easier because you can just call them and use them forgetting about HOW is it coded.Also you will know at this time that these API functions are coded inside the DLLs in System32
Main Objective: With your wide knowledge of WinAPI you should be able to understand our .exes. Use MSDN to find those APIs you dont know about.Try to link the books concepts(like Dlls,APIs,threads) with our Code.


STEP11: Winetests

Until now you have been working with the APIs believing they are correctly coded.You didnt mind about How they are coded.Dont you feel as a leecher?:3.If you have arrived to this Step you also should have discovered some bugs in APIs.And you should have reported them. Now, you have to lurk inside the code of these functions that have a special name: The APIs.APIS are just complex functions that helps a lot to Apps Developers.We check our APIs compatibility with Millions of tests.
Main Objective: Learn about "Winetests" and how we test our "Apis".You can create "Winetests" too.


STEP12: Moar Time

At this point i am sure you still didnt finished both books.But keep going.
Main Objective: Continue reading.


STEP13: Fixing Winetests

It´s time to move through our APIs. Our Winetests show where our APIs are failing.And how they are failing.These are bugs to be solved.Choose some of these tests and try to solve them.Remember that some of these DLLs are full synced with Wine,so we reject patches for these APIS.So select a DLL which doesnt come from Wine.Overall,begin with those APIs you feel comportable(as you have used them in your WinAPI apps).You will discover a powerful tool: "ReactOS Doxygen".
Main Objective: Try to fix winetests.

From 13) to N) you will have to choose your way.Since 11) you have become a Developer.You are working inside ROS.After reading and understanding the referal books, now you can choose to stay in User Mode, Kernel side,or whatever:Music,Networking,etc...
I can´t tell you more steps since i am stuck in 11 :)
b4dc0d3r
Posts: 148
Joined: Fri Sep 28, 2007 1:17 am

Re: howto become a reactos programmer?

Post by b4dc0d3r »

b4dc0d3r tactic:

Kernighan & Ritchie
http://www.amazon.com/Programming-Langu ... 900&sr=1-1

Petzold:
http://www.charlespetzold.com/pw5/index.html

Buy/borrow/steal, read, and start writing your own apps. Read source code to other apps - step through other people's code if you can find it for your preferred compiler. Understanding what someone is doing is one thing, understanding why is the part that will let you decide on your own. Then go back and rewrite your apps. Then read more, then rewrite. Keep going until you don't see anything that needs rewritten. Big projects like emulators are particularly interesting - they usually have lots of interesting ideas, some good some bad.

Your own apps should be things that you use, preferably daily. I have an app that searches, compares, and prompts me to select one of duplicate files that I use all the time. I have an app that tracks/corrects filenames based on MD5/CRC32 hashes (checking both), making and reading from CSV data, handy for noticing changes in specific files like maybe the operating system, or after installers run. There are freeware apps for this, but I learn more by writing my own. I started by making a program to take URLs out of web pages, kinda like MP3Wolf (which was a paid software at the time). I intended to make my own MP3wolf, but by the time I figured out the internet part there were *ahem* other applications to accomplish whatever it was I might have been attempting.

As the user, you will see problems and have to fix it, and it would not be a bad idea to track/control what you are doing using a local SVN server, backing it up regularly. That way you can see your own progress.
Ged
Developer
Posts: 925
Joined: Thu Sep 29, 2005 3:00 pm
Location: UK

Re: howto become a reactos programmer?

Post by Ged »

That's exactly how I learnt, using those 2 books.
vicmarcal
Test Team
Posts: 2733
Joined: Mon Jul 07, 2008 12:35 pm

Re: howto become a reactos programmer?

Post by vicmarcal »

Ged wrote:
That's exactly how I learnt, using those 2 books.
Useful to learn C and WinAPI, but you need more books to understand how an OS behaves.
SuperDog
Translation Team
Posts: 124
Joined: Tue Mar 04, 2008 2:52 am

Re: howto become a reactos programmer?

Post by SuperDog »

Kernighan & Ritchie is not a good book for a beginner, despite its "fame".

Windows API - even following Petzold - requires solid skills in C first.
b4dc0d3r
Posts: 148
Joined: Fri Sep 28, 2007 1:17 am

Re: howto become a reactos programmer?

Post by b4dc0d3r »

K&R is not a good book for an average beginner. "become a reactos programmer" is not for an average beginner. If the recommendation worked for me, and it worked for Ged, I think we can propose that this recommendation is appropriate. Q.E.D. I'm not arguing that my suggestion is the best, but I thought I should explain a bit more why I suggested this path. I think vicmarcal's post is an excellent generic example for anyone who wants to be a part of the core OS development, but not customized for Witch's goal.

Petzold tells you how to talk to the OS, not build it. So it's appropriate for "I didn't plan to become a super-programmer that can understand, build and maintain operating systems... My goal is to do what I think you guys refer to as janitorial work on the ROS code." You don't need to understand the architecture for that. Once you see how to call Windows, you can start to imagine how it works underneath, and maybe learn more about the internals later.

K&R is going to be your best friend when looking at the stuff in hto's link, especially if you are a beginner. It's not hundreds of pages of example, it's succinct and easy to find information. You can re-read parts as a bedtime story to remind yourself of things you learned, or forgot. The most important aspect of joining an existing project like this is being able to read code and make sense of it. Then you can make changes and fixes, and add new components that fit the existing system. The steps I proposed achieve the end result of being a code reader, and you will gain experience writing as you progress. If you want to write code from scratch, my advice is terrible and you should attend university (rule: spend more time with fellow programmers than in classrooms, or even better skip tuition and just room with other programmers off-campus), and come back to Petzold later.

I found the "beginning programming" books and classes push your thinking a certain way (yes uni does the same but you get different professors and different pushes) . They give you an example programming problem and introduce a new concept to solve it. It is easy to generalize that the given solution is the best one for all problems of the same type, and that's how bad code ends up on the Daily WTF (http://thedailywtf.com/Articles/) - an example here: http://thedailywtf.com/Articles/A-Better-Date-Diff.aspx - the first patches you submit after getting out of beginning programming books will be rejected as "lrn 2 c n00b", possibly with more explanation.

If you get through even a small part of K&R and Petzold books, you will be able to learn C and Windows just by reading code, and occasionally looking some things up for clarification. Differing styles shouldn't make a difference, and you'll be able to learn from a linux syscall just as well as from MSDN, or an emulator as well as an operating system.

Above all, anyone should be suspicious of advice - test it and see if it works for you, and if not try something else.
KermEd
Posts: 4
Joined: Sat Aug 01, 2009 10:45 am

Re: howto become a reactos programmer?

Post by KermEd »

I actually thought this was a good post. I felt the same way months and months ago when I first came across the ReactOS project. I have been programming in different languages (including C) since 1991 and on many different platforms including Windows, Linux and MacOSX..

Originally I had the same thoughts as you - how do I contribute, how do I help (etc). I have a half a dozen computers at home and a ton of Virtualization software I use for testing on a day-to-day basis for work that I could dedicate to assisting. Everyone who I approached about the subject said the same thing - go to the IRC chatroom.

Although I do understand their purpose I have no intention of using IRC channels for communication. I visited it a few times but its not for me. I prefer to work in a heavy job-oriented approach for large multi-user projects (ie: Signing out and working on specific parts of the code as a group instead of freelancing in all directions). Because (and I mean this with no disrespect) it is difficult to join as a developer without 'sitting' in an IRC chatroom - I pretty much scrapped the idea and went back to working on other projects I'm a part of.

For now I check out the code on my own, make changes as needed and file it away. You can submit code back using the bug-tracking software and I did give it a try once or twice. But truth is, by the time I find a bug / fix a bug and am about to send it back it usually already repaired by someone on the ReactOS team.

If you really want to focus on helping with ReactOS, the general consensus seems to be that you have to go to an IRC chatroom and ... well I don't know what then. Its not my type of thing. But I wish you the best of luck with it. :D :D
Haos
Test Team
Posts: 2954
Joined: Thu Mar 22, 2007 5:42 am
Contact:

Re: howto become a reactos programmer?

Post by Haos »

@KermEd
You can submit code back using the bug-tracking software and I did give it a try once or twice. But truth is, by the time I find a bug / fix a bug and am about to send it back it usually already repaired by someone on the ReactOS team.
There are so many bugs lying open for years i find that statement hard to believe. If you could precise what area/component of ReactOS you are comfortable with, i think i can find a dozen of bugs no one is looking into.
If you really want to focus on helping with ReactOS, the general consensus seems to be that you have to go to an IRC chatroom and ... well I don't know what then. Its not my type of thing.
Eric and hto never appear on IRC, but this didn't stop them from being part of the team. You still need some kind of communication channel you accept, be it the maillist and email for example. If you really want to help us out but you don't want to use IRC, we have no problem with that at all. Our preference in IRC communication comes from ease of use and speed but its not a must have.

If you are still interested then, please send me a pm.
bugboy
Developer
Posts: 39
Joined: Thu May 22, 2008 9:23 pm

Re: howto become a reactos programmer?

Post by bugboy »

KernEd,
cc me on any patches you submit to bugzilla, I'll do my best to get them committed if they are good.
Based on what you said your experiences are,I think you'd be a great addition.

Mjmartin
Post Reply

Who is online

Users browsing this forum: No registered users and 19 guests