I don’t understand what the purpose of this conversation is. You’re complaining that the shader creation system for GLSL wasn’t very good.
Guess what? We agree! But unless you have a time machine and are going back to 2003/2004 to knock some sense into the ARB before they accept 3D Labs’s ridiculous compilation model, complaining about it now is useless.
Because we have that API now. Observe:
GLuint program = CreateShaderProgramv(GL_VERTEX_SHADER, 1, &shaderString);
Does it matter that it uses a GLuint rather than a void*? No. Does it matter that you could pass multiple strings? No. Those don’t materially affect the functioning of the concept. One function call, and you get a program.
Does it matter that you have to query for the log? Yes, but that’s actually better, because the log querying is explicitly a copy operation. As opposed to your idea that returns a pointer to internal driver memory which will be deleted at some nebulous time in the future.
There’s no point in complaining about a problem that has been resolved.
The absolute most you can complain about is that the old API is still there. Well boo hoo. If you don’t like it, ignore it. I guarantee that the OpenGL police will not bash in your door and force you to build shader objects and so forth.
This discussion started off as a complaint about ARB_separate_shader_objects not being exported to 2.1 hardware, which was false. It’s available on all hardware still supported by NVIDIA and ATI (Intel just doesn’t care, so nothing you suggest will suddenly start making them care). ATI doesn’t support their 2.1 hardware anymore, so it’s not surprising that it hasn’t filtered back to it. Neither have anything else that came out since ATI dropped support for them.
Since then, it has devolved into complaining about something that was fixed. Or at best, complaining about not removing the old way.
If you want to complain about deficiencies in the OpenGL API, then complain about the ones that haven’t been fixed. And complain about it in the suggestions forum; this forum is for driver issues.