The place for that part of cooperation is the standards bodies. Having good, frequent communication between parties means that everyone can build their own implementation in their own style, yet still have an end product that renders thing the same. One engine may want to focus on raw speed at the cost of memory consumption, one may want the opposite, a third may want to strike a balance, and getting all of those parties cooperating would be like herding cats. So no, competing engines are a good thing, because it results in you being able to choose the best tool for the job, instead of needing to compromise.