I'm sure there is a lot of people out there whose inner hackers wants to someday get involved with open source Radeon driver or Mesa development, but lack of introductory and scattered material makes it to look like a black box to them. So I'm asking developers involved with Mesa and open source drivers development to take a part in this discussion and share their experience.

We are going to assume that target audience (newbie) does already have a solid knowledge of C programming language.

1) First things first. What is usual set of documents, tool chain and software required to develop, test and debug drivers by developers?

2) Where to access source code, fork and start developing?

3) What compiler switches and libraries should be used during development?

4) How is work flow of development and testing drivers happening? (Dual boot, virtual machines, etc)

5) Is it mandatory to have access to multiple generations of hardware to get started?

6) How is Mesa and open source drivers source code structured? (Related directories and files)

7) How do drivers work internally? (Important functions and their calling order)

8) Where are the usual hot spots and how to profile the code?

9) What is usual coding conventions and styles being used?

10) What kind of tasks should newbies start with? Is there any list?

11) Who and where to ask when in trouble?

Feel free to add your own if anything necessary is missed.