If there's one consistent piece of criticism that gets lobbed in Canonical's and Mark Shuttleworth's direction, it's that they do not contribute enough code - or anything else for that matter - to the Free software world. Mark Shuttleworth has apparently had enough, and has written a very, very lengthy blog post detailing how he feels about this criticism.

This creates a problem in the long term because features Canonical will push to end users are not the same as those found in upstream and in other distributions and users who will first start using Canonical distributions will make simple assumptions that the way of the *buntu* is the way of linux and this will intime fragment the ecosystem ..its kind of hard to understand why he doesnt understand this

mtzmtulivu is right. Everybody who snickers and winks at the "fragmentation"bit, doesn't get it. There is a difference between having different flavors of the same core infrastructure and having two equally named, but drastically divergent pieces of core infrastructure.

In the good old days it used to be that the core infrastructure was provided by the upstream projects and the distributors added their own small customizations on top of that. If a fundamental change in infrastructure was needed, the distributors, developers and the upstream projects got together to discus the best way forward. The end result was a consistent piece of technology used among several distributions.

In the current situation we have Canonical dreaming up new core infrastructure and adding that locally to upstream code and pushing it out on one their websites and telling the world "If you want it, come and get it" and thinking that is contributing and collaborating. In essence Canonical is forking upstream projects, changing them to suit their vision and then offering to upstream to abandon their own versions and adopt what Canonical dreamed up.

It's no wonder Canonical is being blasted over it. It took the "ecosystem" several years to come up with working structures to make sure that every contributor in the chain could collaborate with the other contributors in the chain and have the contributions flow to the place where they make the most sense and have the most reach. Reach in this case is not only how many end users get the code, but also how many distributors can depend on and benefit from the changes made in the upstream projects.

In this case we have the Canonical fork and then the rest of the community. The rest doesn't have any benefit from what Canonical does, because to get benefit from what Canonical does, the rest would basically have to become Ubuntu remixes. There is no communication, discussion and collaboration over the features Canonical is coding. Just dumping them as is, does not constitute a meaningful contribution. The best code originates from cross polination of ideas between diverse groups dependent on a project.

Why do we want to give Canonical a free pass for this behavior, while Novell was blasted for the way they developed XGL and Apple was bashed over the Webkit code dumps?