Is Ubuntu contributing to Open Source or not?

Mark Shuttleworth wrote an interesting piece as a rebuttal on complaints from the community that Ubuntu and Canonical are not contributing enough. He states that Ubuntu is contributing by polishing, bug fixing and bringing Linux to the people.
The critics say that only very little code is written by Canonical or Ubuntu community as a whole which flows back into the underlying projects like Gnome or

And I have to agree that Ubuntu has too much focus on their own products. It is their right to do so. There is no legal obligation that they should. But they cannot claim that they are really contributing to the Open Source community. Their behavior is to look the upstream projects as suppliers. And they do not go into partnerships with them. Instead they fork and extend as they see fit. Without active participation of Ubuntu there will be a divide between Ubuntu and the upstream projects since the vision and goals are never part of the upstream projects. The community at large will go in their own direction and if that does not match up with the direction or vision of Ubuntu the divide will only get bigger.

But there is also the moral obligation. That is what I read in all the posts made by critics. The community expects more back from Ubuntu. And to be honest I think that with 300 developers on staff it is really not impossible to have 30 people working exclusively on Open Source projects. It may sound not very business like for Mark but without the continuous improvements of the underlying software Ubuntu could not come to where they are today.

And as a regular Linux desktop user I am still not convinced that it is good enough for the masses. There is still much to do. The upstream projects could really benefit from the insights and vision of Ubuntu.

So please Canonical hire some important Open Source developers and let them work on their projects. What would have happened if Linus Torvalds would spent his time on porting the Linux kernel to some obscure CPU? Would the Linux kernel be where it is today?