With Drupal growing and maturing as a project, a formal and explicit structure of roles and decision making would probably be appropriate.
I've recently attempted to capture current practice in the post "Proposed, draft guidelines for contributing to Drupal" and the book page "The Drupal community". But I was unclear on several areas, e.g., how are different types of decisions made in the project?, how are individuals accepted into specific roles (e.g., core developer)?.
Formal policy on these questions increases the transparency and ultimately the effectiveness of a project.
Towards this end, I think the Jakarta Project Guidelines provide an excellent model. They set out composition and responsiblities of four distinct roles - users, contributors, committers, and the project management committee (PMC) - along with specific details of how individuals are admitted into these roles and how decisions are made.
The Jakarta model provides an explicit and proven way for active contributors to take on appropriately higher levels of responsibility within the project as they prove their skills and accomplish substantively larger tasks. This increased responsibility can help to retain skilled developers, who might otherwise become frustrated by a feeling that no matter how hard they work they are still outside the project. By creating a growing base of "committers", it also relieves pressure on project management committee members to make minute decisions personally, preventing bottlenecks and freeing up core developers for larger tasks and planning.
With its expanding code base, skilled group of active developers, and emerging profile, Drupal seems very ready for the formality and transparency of a Jakarta-like structure.
Is there support for and interest in moving in this direction? If so, let's draft a specific proposal drawing on the Jakarta model and existing Drupal practice.
Comments, suggestions, clarifications of existing practice?
Comments
interesting
I think Drupal project would benefit from some more structure. Yet I find the Jakarta guidelines a bit too formal. We have to walk before we can run. Can anyone propose a compromise between current practice and Jakarta?
I agree that this is a worthwhile effort. Many potential contributors become frustrated with our current CVS review practice leave the project. We have seen many patches which were slightly unacceptable, and thus never got committed (e.g. drupal for bloggers, enhanced statistics.module with graphing, ...). I think some guidelines would reduce this friction.
Clarify current structure
Thanks for your comments. I agree that the full Jakarta approach might be more structure than is needed.
Likely a valuable first step is to clarify the existing policies and structure. Here's a redraft of the material I presented as "The Drupal Community", with questions identified [[in double brackets]]. Answering these questions would put the project in a good position for (a) providing improved documentation and (b) reviewing and potentially refining the current structure.
Anyone able to provide clarification on these questions? Thanks!
There are four defined roles in the Drupal project, with specific rights and responsibilities to
each.
"contributed" code (mainly, modules and themes). A
contributor has applied for and received write access to the
"contributions" CVS repository and may also have
special privileges on the drupal.org site enabling her or him to post
content (book pages, new project releases) to the site. Contributors do not have any special status, rights, or responsibilities when it comes to making contributions to the Drupal core.
responsibility for a designated portion of the core (e.g., a particular core
module). Individual areas of responsibility are listed in the file MAINTAINERS.txt. [[How do individuals become maintainers? How are changes introduced by maintainers reviewed, approved, and committed?]]
answers
[[How do individuals become maintainers? How are changes introduced by maintainers reviewed, approved, and committed?]]
The Maintainer list is managed like other CVS core files. Meaning, you have to convince a CVS Commit person (this is a new role) to name you as a maintainer. In practice, Dries picks maintainers based on past contributions. You may nominate others or yourself via email to Dries.
[[Where are the core developers listed? How are decisions made? Is consensus needed among all core developers for changes or can one core developer approve a change? How do individuals become core developers?]]
Anyone can become a core contributor by uploading patches into the issue system. Patches are reviewed by everyone but final decision to commit belongs tothe CVS review team.
CVS review team currently consists of UnConeD, Natrak, and Dries.
New draft of structure, plus discussion questions
Thanks again for the clarifications. Here, then, is a revised draft of the current structure--followed by suggestions for discussion. I've kept the "CVS review team" as "core developers" since I think that's a more applicable description.
Drupal roles and responsiblities
The roles and responsibilities that people can assume in the project are based on merit and contributions. Everybody can help no matter what their role. Those who have been longer term and valuable contributors to the project may obtain correspondingly greater roles in maintaining the code.
"Contributions" contributors develop and maintain "contributed" code (mainly, modules and themes) that are hosted on the Drupal site but not part of the Drupal core. A "contributions" contributor has applied for and received write access to the "contributions" CVS repository. Contributions contributors are improving the overall reach of Drupal by producing and sharing enhancements that can be used by others. This is not, however, a route to becoming a Maintainer; for that, one must first be a Core Contributor.
For discussion:
Page updated
I've updated the book page The Drupal community based on the draft above.
My thoughts at this point on the question of structure in Drupal are:
If there's interest, I'd be happy to draft a proposed revision of the current structure for discussion.