How old are you? High school still?
You might want to familiarize yourself with linux-next, and linux-staging. Linux-next is like a pre-RC, i.e. BETA. Linux-staging is like a pre-pre-RC, i.e. ALPHA. You have your completely insane changes that will break all kinds of things in their current form.... they go into linux-staging, which you can pretty well assume will be so completely broken that it might eat your dog. At some point, if it cleans up reasonably well and starts to shape up into something useful, it ends up in next, which is basically what the NEXT kernel version will become.... i.e., the current RC is 2.6.36, so next has stuff that you can expect to see going into 2.6.37... i.e. 2.6.37 BETA. These are big changes, but not so big that they pose any particularly major risk -- they've already passed staging (if applicable) and most likely they will build and run.
Now you want to make some MAJOR architectural changes that will wreak all kinds of havoc.... that goes into staging. If other stuff breaks in a major way, it may be your responsibility to fix it.
Of course, not everything can just get dumped into staging... it still has to pass some basic tests and convince those in charge that it is worthy.... in other words, it can't just be raw insanity.
So... if you're just interested in fixing bugs, then it will probably just go straight in as a bug fix to be incorporated in the next point release. A little more significant of a change and it goes in next. Major, but well conceived architectural change and it goes in staging. Complete insanity and it goes nowhere.
The name sounds pretty self-exploratory to me. What else could "release candidate" possibly mean? I'm aware it isn't formally defined in any standard unlike alpha/beta.
It's the first release where everything has actually been assembled and feature-frozen for wider testing, which I would imagine would make refactoring beyond simple bug fixing in order to fix non-trivial performance regressions hard. My point is that regressions discovered during this phase are inevitable. With all the SDLC possibilities that you could come up with to leverage git I would think you could think of something that avoids regressions after it's too late to fix.Also it's no because you think that the rc1 is the first release of code that no testing was done before.
I know they probably do something better than "Hey Linus plx merge my hax kkthx. Hope it doesn't break anything on your end! Guess we'll find out when Phoronix discovers it."
Completely irrelevant to the testing/release methodology is it not?Your whole post prove that you have nearly no understanding , if absolutely none, on how the kernel is structured and organized.
Obviously.You will have to learn a little bit more than C before you can "fix this shit".
Ya. All the languages I play with (currently Java in computer science) require basically no knowledge of how to implement anything in an operating system...How old are you? High school still?
The distributed development seems like it might complicate regression testing where performance is affected by complex interactions between large-scale components. I suppose that all depends on the exact implementation and how modularized things can be. If you had inefficient code-paths which only arise when various branches are merged into an rc then bug fixy workarounds could be hard assuming everybody's code performed well when tested independently.You might want to familiarize yourself with linux-next, and linux-staging. Linux-next is like a pre-RC, i.e. BETA. Linux-staging is like a pre-pre-RC, i.e. ALPHA. You have your completely insane changes that will break all kinds of things in their current form.... they go into linux-staging, which you can pretty well assume will be so completely broken that it might eat your dog. At some point, if it cleans up reasonably well and starts to shape up into something useful, it ends up in next, which is basically what the NEXT kernel version will become.... i.e., the current RC is 2.6.36, so next has stuff that you can expect to see going into 2.6.37... i.e. 2.6.37 BETA. These are big changes, but not so big that they pose any particularly major risk -- they've already passed staging (if applicable) and most likely they will build and run.
Now you want to make some MAJOR architectural changes that will wreak all kinds of havoc.... that goes into staging. If other stuff breaks in a major way, it may be your responsibility to fix it.
Of course, not everything can just get dumped into staging... it still has to pass some basic tests and convince those in charge that it is worthy.... in other words, it can't just be raw insanity.
So... if you're just interested in fixing bugs, then it will probably just go straight in as a bug fix to be incorporated in the next point release. A little more significant of a change and it goes in next. Major, but well conceived architectural change and it goes in staging. Complete insanity and it goes nowhere.
If there is a cascading waterfall like thing then whats up with the "merge requests"? Wouldn't Linus just make a copy of the next-most-tested version with no assembly multiple of branches directly into what eventually becomes a rc.
If you know java then just try some c by example code ... first time I programmed C it was like: "I have no idea .. let's do it like java and see what happens" and it worked ... until I hit the necessity for malloc which took some time to figure, because I was accustomed to the Java automagic way.
And isn't it rather ironic that pretty much the only platform you could sensibly write a kernel in Java with happens to be designed by Linus. *chuckle*