"I had a few reports in my forum of people that tried to use Advanced Module Manager and MetaMod together, and encountered problems/conflicts. Stephen Brandon mailed me about his side of the story and the question whether I was interested in trying to come to a collaborative solution." van Westen said.
The two realized the problem was that both were overruling the same core Joomla file. The changes made allowed one module to work but not the other.
"The class JModuleHelper, defined in libraries/joomla/application/module/helper.php gets the list of modules assigned to a particular menu item (or ALL pages) from the database and also handles some of the work of rendering the modules. The most important role of this class that both Advanced Module Manager and MetaMod Pro need to be able to manipulate is the creation of the list of modules that will be returned for any given page," Brandon said.
The decision to work together for the good of the users was an easy one.
"The solution eventually was pretty simple: make a file that works for both. Then it doesn't matter if one extension overrides the file of the other. We essentially just added triggers to different stages in the module(list) rendering process," van Westen said.
The new file allowed the use of both Advanced Module Manager and MetMod Pro in the same Joomla installation.
"I've adjusted the way that I include the new module helper class to match the way that Peter does it. It has the advantage that it's less susceptible to problems that can happen due to the ordering of plug-ins in the plug-in manager. Both Peter and I include our jointly-agreed module helper class inside our respective extensions. One or the other of our 2 classes will be loaded depending on which is first in the list of system plugins, but it doesn't matter which one, as they are both the same" Brandon said.
While the two products do have some duplication of features there are several highly praised elements of each that are not found in the other. The collaborative effort did not force users to choose between the two, making the marketplace friendlier to both.
"My sense of this being "competition" was broken down when I came across an interesting video in late 2009 by internet marketing entrepreneur Frank Kern ("State of the Internet Address 2009"). One of the things he said was: Work side by side with your competitors to ensure the advancement and overall happiness of our collective customers. Grow your collective market, and together strive to give great value," Brandon said. "It also helps that Peter's a really nice guy with a great sense of humor, and works at a technical level that I can relate to."
Both developers and their users have been pleased with the results and would consider working together again if future versions of either product have an effect on the file they both use.
Collaborations are becoming more popular among developers who realize it can benefit the entire industry.
Van Westen has worked with Kyle Ledbetter (JoomlaPraise/AdminPraise) to allow his extensions work with Ledbetter's admin templates. Van Westen often consults other developers like Emmanuel Danan (FlexiContent)and Daniel Chapman (NinjaForge) on code issues and new ideas.
"I notice that a lot of developers are very willing to help each other." he said.
Brandon is also working to ensure his products work well with others.
"I'm constantly getting requests from people who want to use MetaMod or MetaTemplate to target particular modules or templates onto particular pages in other Joomla extensions. This means I often have to install other extensions and learn about them in order to provide recipes for users. The creators of these other extensions are always very supportive and helpful if I ask for help - it benefits their customers and mine," he said.