Note, I wasn't saying that complexity was a reason to keep the GPU code private. I was saying that people who think they can just dive in and fix stuff are mistaken, just like anyone coming to the Linux kernel fresh saying they are going to fix it, would also be in for a nasty shock. In fact, in the GPU's case, the combinations of vector processors, Quad processors, camera ISP and a multitude of HW blocks make the GPU a very difficult thing to get to grips with. Like I said, I've done 4 years, and I know a bit about the camera and ISP...iamfraggle wrote:I should preface by saying I'm satisfied that the route that's been taken so far is probably the best we can do under current constraints. There are other reasons that the GPU code is closed. I have to say, however, that you don't strengthen your case by talking about complexity. Complexity is not a reason to close something.<jamesh> I also get phased over all these comments by people saying 'access to GPU means we can find and fix bugs". I've been working on the GPU code for 4 years, and I've only scratched the surface. There are over 5 million lines of code in the GPU. That's the same order of magnitude as in the whole of the Linux kernel code. Finding and fixing bugs in an arbitrary piece of code on the GPU is NOT easy, requires specialist equipment, compilers and knowledge. People jumping in and saying this really have NO IDEA of the complexity involved.
What would have happened if 4 years ago Broadcom thought "You know what? Jamesh doesn't know anything about the GPU code, we shouldn't let him see it!"? How much would you know about it now?
The simple fact is that you don't know what people are capable of doing unless you let them try. Your mentioning that the Linux kernel is 10m lines is a case in point. People just get involved. Most probably don't do much, and even more probably take a look and think "Forget that!". There's always a core of people that, due to their familiarity, do most of the progress, but that core inevitably can't do everything. And some of those who just take a look end up becoming part of the core. Plus, even if you end up changing nothing, you can still learn an awful lot.
There are coherent (I struggle to refer to them as 'good') reasons for keeping the GPU source closed. Complexity is not one of them.
This is what, to me, makes the FSF's position re: Firmware so amusing. They're so myopically focused on 'software' that they literally don't care about hardware which is, at the end of the day, the same thing in a different form. The reasons that software should be open are the same reasons that hardware should be open. The idea that blowing a PROM changes the openness of code is ludicrous.<Heater> Logically any amount of software can be implemented in hardware given enough gates.
Now I'm not saying people won't be capable of it after a while. But it's not a "Wow, its open, let's go and fix all those bugs" thing. Also, has anyone using a Raspi ever reported a bug on the GPU?
Note, I was employed to work on the GPU by Broadcom, so its unlikely Broadcom would have said it was too complicated so I shouldn't do it.