Last updated April 23, 2013.
The Drupal community follows the ethos collaboration rather than competition. Too often new modules are contributed that do nothing new; instead, they only do it in a different way. We are then stuck with two modules that offer nearly similar functionality, but neither do it well enough. This leads to confusion, clutter, and a lot of inefficiency.
So please consider the following guidelines or ideas:
- Develop and use one central API. Do not introduce new .incs, .modules, or other files with APIs, if there are modules that have these already.
- Consult other developers of modules in your domain when you plan to add features, or plan to add a module. Try to agree on features, to avoid overlapping. Nothing is more confusing for a user when he has, for example a Spam Queue for comments, and a completely different one for trackbacks, which does not respect the options you set for comments. Even worse, but certainly not unheard of, is that module Foo breaks module Bar, because they want to do the same, or want to use the same database tables.
- Do not try to duplicate functionality because "you don't really like how it's done there". That only adds clutter. Work to improve an existing module rather than introduce yet another random module, as that leads to confusion and frustration for the development, support and end user communities.
Respecting these guidelines will help you and the community get better. Only then will we be able to "stand on the shoulders of giants" as they say in Open Source Land. If you keep reinventing wheels, you will be stuck with lots of incompatible and half finished wheels. When you use someone else's existing wheel, and build a car on top of it, you can actually get somewhere.
Contributed Module Ideas Group
When a developer has an idea for a module, they are often not the only one with that idea. The Contributed Module Ideas Group aims to:
- Reduce module duplication. We can prevent two independent developers from writing separate, duplicate modules.
- Increase developer collaboration. We can get interested developers working together at an early stage of development.
- Improve module quality. Others can shape and improve the ideas, leading to a better module from the beginning (or, at the least, a better road map for future development.)
Before submitting a new module idea, please do a little research and search for an existing module with the same functionality.
How to find a co-maintainer
If you are already maintaining a project and would like to collaborate with other members of the community, you could team up with a co-maintainer. Here are some tips on how to find a co-maintainer:
- Post an announcement on the project page itself that you are looking for a co-maintainer
- Post to the Development mailing list
- Post to the co-maintainers group and, if your request is for people with a specific skillset then cross-post it to an appropriate group
- Find people who consistently post issues or patches in the queue and use their contact tab or discuss the idea in the queue.
- Find a module which has the kinds of features you need (e.g. AJAX features) and then offer to provide review/code to that maintainer if they will help you with your module
- If you just need reviewers, post to the reviewers group