As I talked about in the core announcement, Drupal has experienced phenomenal growth over the past 14+ years. I wanted to take an opportunity to reflect on our current governance structure and try to evolve the Drupal leadership team and decision-making, enable better scaling, and document both the formal and informal processes we have currently in place.

What follows is a document builds on ideas that have been blogged about or presented at Drupal events by many people, and attempts to clearly document how things are currently done, and also proposes some incremental improvements. I've run this past the core committer team, as well as numerous others who've contributed to these conversations, and this policy draft is a result of that work.

I'd like to leave this open for feedback for two weeks, at which point I will incorporate feedback and finalize as a document in https://www.drupal.org/project/governance.

---

Introduction

This document provides an overview of Drupal core's organizational structure, outlines what roles/responsibilities exist, and defines how decisions are made. The goal is to help the broader community understand the process, to ensure that both old and new maintainers understand their responsibilities, and to eliminate uncertainty about who has the ability to make decisions in various parts of the project.

This is a living document; if you see something out of date or missing, please file an issue in the "Drupal core" issue queue with the "Project governance" issue tag.

What is a core contributor? (#)

Anyone at all with a Drupal.org account can be a core contributor, simply by participating in the Drupal core issue queue. A core contributor is someone who:

  • Posts bug reports and feature requests
  • Uploads code changes ("patches") to the issue queue
  • Reviews the behavior and code changes from a given patch
  • Posts constructive, actionable feedback on how other core contributors can improve their work
  • Performs "triage" of the issue queue, such as closing out duplicate issues, setting metadata properly
  • Contributes their skills and experience such as architecture, design, accessibility, access to non-technical users, and development
  • Various other collaborative activities

In short, core contributors are empowered to drive changes within Drupal's code base, and to work with other core contributors to help get changes they care about in, using a variety of both technical and non-technical skills.

Most proposed changes follow a standard peer review process, with sign-off from one or more maintainers (who are themselves a subset of core contributors).

What is a maintainer? (#)

(Thanks to Docker for the inspiration.)

There are different types of maintainers, with different responsibilities, but all maintainers have three things in common:

  1. They share responsibility for the project's success.
  2. They have made a long-term, recurring time investment to improve the project.
  3. They spend that time doing what needs to be done, not always what
    is the most interesting or fun.

Maintainers are essential, but the results of their work are not always immediate or obvious. It's easy to appreciate a really cool and technically advanced feature. It's harder to appreciate the absence of bugs, the slow but steady improvement in stability, or the reliability of a release process. But those things distinguish a good project from a great one.

Potential maintainers generally demonstrate expertise, consistency, and passion contributing in their area before they become maintainers.

Maintainers with commit access need additional skills. They are reliable, decisive when needed, open to feedback, and able to give others feedback constructively. They also need significant prior experience participating broadly in core issues (usually at least a year).

It's generally desired to have at least two people in any given maintainership role, in order to prevent burnout and to help ensure there are ample people available for unblocking a given decision; however, this is not a hard requirement. Maintainers are expected to give clear, objective reasons and actionable feedback in the event they push back on a given change.

What are the different types of maintainers? (#)

The list below defines the different maintainer roles. (Detailed responsibilities for each role are outlined later.)

  • The Benevolent Dictator for Life (BDFL): The founder and chief decision-maker for the project.
  • Core Committers: The small subset of people who, along with the BDFL, can commit changes to Drupal core itself. Within the core committer team there are:
    • Product Managers: Focus on user-facing features and Drupal's user experience.
    • Framework Managers: Focus on cohesiveness of Drupal's architecture, APIs, and developer experience.
    • Release Managers: Focus on processes to increase release stability, and on facilitating effective collaboration among contributors.
  • Subsystem Maintainers: Maintainers of one particular part of Drupal core, such as the Entity system or Comment module.
  • Topic Maintainer: Subject-matter experts in a topic that spans multiple subsystems—Accessibility, Documentation, Performance, Testing, and Usability. These correspond to the core gates which all proposed changes must pass.
  • Initiative Coordinator: Community members appointed by the BDFL to coordinate strategically important work. Initiatives are typically cross-functional in that they span different subsystems and different topics, and can affect both Drupal the product and Drupal the framework.

How are decisions made? (#)

Anyone with a Drupal.org account can create or update a Drupal core issue to propose a change. Issues should be processed according to the following flow:

  1. Drupal employs a peer review process. All proposed changes require sign-off from someone other than the author(s).
  2. If a change doesn't significantly impact any given area of Drupal, it simply needs a peer's sign-off.
  3. If a patch significantly impacts a single subsystem, the maintainers of that subsystem must be given opportunity to sign off.
  4. If the change significantly impacts any area covered by a topic maintainer, that topic maintainer needs to approve or refuse it.
  5. If a subsystem/topic maintainer sign-off is not given in a timely manner, or if sign-off is not possible because the patch was authored by those who need to provide sign-off, it gets escalated to the core committers.
  6. If the change significantly impacts multiple subsystems, or represents a significant change in architecture or public APIs, the framework managers must approve or refuse it.
  7. If the change represents a significant new feature, UI change, or change to the "user experience" of the project, the product managers must approve or refuse it.
  8. If the change significantly affects the overall technical debt or release timeline of the project, the release managers must approve or refuse it.
  9. If the change affects the governance, philosophy, goals, principles, or nature of the project, it must be approved by the BDFL.
  10. Once a change has the required sign-offs, any core committer may commit it.

See the Frequently Asked Questions for explanations of what it means to sign off on a change and examples of what constitutes a "significant" change.

Also see the Responsibility Assignment Matrix version.

Who are the Drupal core maintainers, and what do they do? (#)

This section:

  • Defines in detail each of the roles discussed above.
  • Outlines their overall responsibilities and the tasks they're expected to do.
  • Lists both the current and "provisional" membership of each role.

The BDFL (#)

BDFL stands for "Benevolent Dictator for Life." All decisions are made, by default, by the BDFL. However, since the BDFL making every decision would be highly un-scalable, in practice decisions are spread across multiple maintainers. The BDFL appoints and replaces those maintainers, and spends time thinking about how to make the team function well. The BDFL also holds final say in any disagreements, and can be escalated to when decisions cannot be reached through the normal process. Finally, the BDFL also preserves the philosophy, culture, and principles of the project.

Tasks

  • Are there issues assigned to the BDFL which have been escalated by the other maintainers?
    • If yes: either resolve them, or appoint someone to resolve them
  • Are there "Project governance" issues that need review?
    • If yes: appoint new maintainers, and/or replace maintainers.
  • Is the project governance stuck in a deadlock, irreversibly fragmented, or off track?
    • If yes: refactor the project governance.

Core Committers (#)

Core committers are the people in the project with commit access to Drupal core. Within the core committer team, the BDFL assigns people certain areas of focus (defined below) to help with decision-making. Nevertheless, core committers are a group of peers, and are expected to work closely together to achieve alignment, to consult each other freely when making difficult decisions, and to bring in the BDFL as needed.

In addition, note that the Documentation Topic Maintainer also has commit access for documentation patches only, across all major versions.

While core committers tend to stay focused on their particular versions, where needed they can step in to fill needs in other versions (for example, the Drupal 7 Release Manager rolling a security release for Drupal 6 at the same time). It's also possible that a non-technical Product Manager or Release Manager could be appointed at some point, who would only very rarely use their commit access. The distribution of committing work is something to be worked out among the core committer team.

Tasks

  • Are there issues in the "Reviewed & tested by community" (RTBC) issue queue?
    • If yes: Verify the issues have proper sign-offs and review the changes therein; commit the change or modify issue statuses/assignments as appropriate.
  • Was a change escalated to your area of focus?
    • If yes: Either make a decision or ask advice from one of the similarly focused committers.
  • Does a change span multiple areas of core committer concern (product, framework, and, release management?)
    • If yes: A relevant subset of committers meets as a group to discuss.
    • Is there consensus among affected core committers on what to do?
      • If yes: Post a summary to issue.
      • If no: Escalate to the BDFL.

Core Committer: Product Manager (#)

Product managers are expected to talk extensively with different types of Drupal’s users, gather data about how Drupal is used in the “real world,” and present this information back to Drupal's various audiences.

The product managers are responsible for:

  • Determining what user-visible features Drupal core ships with
  • Drupal's out-of-the-box experience
  • The overall integrity of Drupal’s user experience
  • Representing the Drupal product's audiences (site builders, content authors, etc.) in core decisions

Significant changes to user-visible features, the user interface, and install profiles must be approved by the product managers.

Tasks

  • Are there issues tagged "Needs product manager review"?
    • If yes: provide feedback and make a decision.

Core Committer: Framework Manager (#)

The framework managers are responsible for the overall integrity of the technical architecture across all subsystems, the consistency of APIs, and the overall developer experience of Drupal.

Significant developer features, changes to public APIs, external libraries, and overall architecture must be approved by the framework managers.

Tasks

  • Are there issues tagged "Needs framework manager review"?
    • If yes: Provide feedback and make a decision.

Core Committers: Release Manager (#)

The release schedule is set by the BDFL in consultation with the other core committers, and the release managers make sure that we manage towards it. This includes rolling the releases, tracking the release schedule, facilitating communication between all participants, measuring progress, and defining the processes that help contributors collaborate effectively and efficiently. Release managers also make the final call on issue "metadata", such as status and priority, unless overruled by the BDFL.

Tasks

  • Are there issues tagged "Needs release manager review"?
    • If yes: Provide feedback and make a decision.
  • Has the next release been scheduled?
    • If no: Schedule it; if it's scheduled for today, tag it. Coordinate with the security team as needed.
  • Are all release blockers and risks properly identified,triaged, and on a path to resolution?
    • If no: Coordinate triage of critical issues or propose steps to accelerate them.

Topic Maintainers (#)

Some aspects of the project are system-wide and correspond to one of the core gates that all proposed changes must pass. Topic maintainers ensure that patches improve rather than cause regressions for these topics and help educate other contributors on how to do the same in their patches.

(*) While generally topic maintainers do not have core commit access, the Documentation Topic Maintainer is an exception and has commit access for documentation patches only, since they cannot functionally break the system. (Note that class annotations are not considered documentation.)

Tasks

  • Are there any issues tagged "Needs $topic review"?
    • If yes: Provide review.

Subsystem Maintainers (#)

Subsystem maintainers oversee the development of parts of Drupal known as "subsystems". They can make a shorter-term commitment to maintaining a subsystem, or a longer-term commitment that spans several major Drupal versions.

The maintainers of each subsystem are responsible for:

  • Communicating the vision for their subsystem.
  • Delivering prompt feedback and decisions on issues affecting their subsystem when needed.
  • Being available to other contributors with questions, bug reports, and feedback on their component, primarily on Drupal.org issues.
  • Working with the security team to resolve security issues in the subsystem.
  • Ensuring their subsystem respects the philosophy, design, and goals of the project.
  • Periodically triaging their subsystem's issue queue to ensure that issues therein are relevant and current.

Anyone can be a provisional maintainer to a subsystem by simply contributing to it. Most subsystem maintainers start out contributing to their component by triaging issues, supplying patches, and reviewing others' patches.

Tasks

  • Are there issues tagged "Needs subsystem maintainer review" in your component?
  • Are there contributors in your queue who are providing consistently great code and reviews?
    • If yes: File an issue with the "Project governance" tag recommending them as fellow subsystem maintainers.
  • Are there fellow maintainers in your subsystem who are no longer active?
    • If yes: Try and reach out to them first.If there is no response, file an issue against the "Project governance" tag recommending removal.

Subsystem maintainers also ensure that the issues in their queues are properly triaged, either through their own work or by organizing other contributors:

  • Are there issues you've not yet responded to in your subsystem's issue component?
    • If yes: Provide review and feedback.
  • Are there duplicate issues in your subsystem, or issues that more rightly belong in another subsystem?
    • If yes: Triage issue queue accordingly.
  • Do some of the issues in your subsystem represent significant changes to user experience, architecture, release timelines, or one of the topics?
    • If yes: Tag "Needs X review" accordingly.

Initiative Coordinator (#)

Initiatives are larger projects for the current development release that are intended to re-architect or otherwise improve large areas of the Drupal core code-base. The BDFL determines these initiatives. Each initiative has initiative coordinators who act as project and community managers with a strategic agenda, and help guide a team of people interested in helping the initiative to succeed. Initiative coordinators don't have direct decision making powers; rather, they work to build buy-in among those who do have decision-making powers (product managers, subsystem maintainers, topic coordinators, etc.).

Tasks

  • Coordinate work on the initiative.
  • Communicate the plans, progress, and needs of the initiative to the community and the other maintainers.

Frequently Asked Questions (#)

How is a "significant" change defined? (#)

Here are some examples:

  • A typo fix in the documentation of the Batch API. This will not significantly impact the Batch API, nor will it significantly impact the topic of Documentation, so only a simple peer review and sign-off is needed.
  • A change in Entity API to the arguments of a method that's called from numerous core modules. The change will be a significant one to Entity API because it has impact on multiple modules. However, to each consuming module it will be a simple one-line fix and therefore insignificant to them. Only the Entity API subsystem maintainers' sign-off is needed.
  • The introduction of a brand new configuration system API, which multiple subsystems are expected to use in a consistent way. In this case, current Configuration subsystem maintainer sign-off alone is not enough; because of the impact to multiple other subsystems, the framework managers must also approve the change (and will likely consult with multiple other subsystem maintainers who would be major consumers of that API in the process). Additionally, the Documentation topic maintainer will need to provide sign-off to ensure the documentation for this new system is clear and complete.
  • Switching the order of fields on a configuration form. Unless done on a very frequently used page, chances are this would not qualify as a significant change, and simple peer-review sign-off would be sufficient.
  • Introduction of a new UI pattern, such as a new tag selection widget. Depending on how widespread its use will be, this may require product manager sign-off, but will certainly require both Usability and Accessibility topic maintainer sign-offs to ensure product cohesiveness is retained.
  • Redesign of the node creation form. Because this change will be to the most frequently-accessed screen for content editors, as well as one of the most frequent targets for module developers for enhancements, it has significant impact on multiple fronts. In addition to the Node module subsystem maintainer, product managers must approve this change (to ensure the quality of the default user experience of Drupal), as must Framework Managers (to ensure that contrib extensibility is retained), as must Usability and Accessibility topic maintainers (to ensure there are no regressions in those areas).
  • Convert the code base from procedural to object-oriented code. While clearly something that will affect multiple subsystems and thus will fall to framework managers to sign off, this also will have impacts for the very nature of Drupal itself and its target audience, so BDFL sign-off is also required.
  • A new release process is proposed to define what changes are/are not allowed during beta. This is squarely in the Release Managers' purview, but they should consult with the rest of the core committers (as well as other core maintainers if they so choose) when formulating a proposal. Any new release process will ultimately need to be signed off by the BDFL as well, since it will impact both the goals and governance of the project.

As a maintainer, how do I "sign off" on a change in an area I am responsible for? (#)

  1. Look for issues tagged "Needs $role review" for your role.
  2. Review each issue and provide feedback by leaving a comment.
  3. If the issue needs more work, set it to "Needs work" (NW).
  4. If you agree with the change, update the issue's summary to indicate that you have signed off on the change.
  5. If a committer set the issue back from "Reviewed and tested by the community" (RTBC) for your signoff and no other sign-offs are needed, set it back to RTBC.
  6. Remove the "Needs $role review" tag for your role.
  7. If you are a committer and no other sign-offs are needed, you can review and commit the change as appropriate.

Are there objective criteria for sign-offs or is it purely up to the maintainer? (#)

Drupal core has existing objective criteria for what changes can be accepted, including:

Maintainers both evaluate changes in terms of these criteria and provide specific guidance for their area based on their domain-specific expertise and overall plan. (Also see the overall Drupal mission, values, and principles.)

What happens if sign-offs are missing? (#)

Any contributor can suggest that a change needs a particular sign-off and add the appropriate "Needs $role review" tag. (Refer to the Responsibility Assignment Matrix for guidelines.)

Core committers are ultimately responsible for assessing which sign-offs are needed or missing for a given change in the RTBC queue. If one or more sign-offs are missing, the committer will add the appropriate "Needs $role review" tag(s) and set the issue back to "Needs review" or "Needs work". (Also see How are patches committed?)

What timeframes are given for sign-offs before decisions are escalated? (#)

In general, when an issue is tagged as needing a particular signoff, it is the responsibility of the maintainers for that role to provide feedback within one week. If the review is not done within that timeframe, the issue should be escalated to the next step. For time-sensitive issues (such as critical regressions or issues that are blocking other work), this timeframe may be shortened or a committer may recommend a follow-up discussion instead.

Maintainers can and should take time off, whether for vacations or just because they feel the need to. However, when doing so, maintainers should let their co-maintainers and/or the core committers know about their impending absence and what they'd ideally like done with any issues that need their feedback in the meantime, such as delegating these decisions to another individual.

Also see I disagree with a patch that was committed, and it introduced problems with an area of core I am responsible for. What should I do? and How are patches committed?.

What are the issue tags used to alert maintainers that a signoff is needed? (#)

  • Needs subsystem maintainer review (within the particular subsystem's issue queue)
  • Needs usability review
  • Needs accessibility review
  • Needs performance review
  • Needs documentation review
  • Needs testing review
  • Needs product manager review
  • Needs framework manager review
  • Needs release manager review
  • Project governance

(There is no "Needs BDFL review" tag; issues should be tagged with "Project governance" if appropriate or otherwise simply be assigned to the BDFL by a maintainer.)

How is commit access allocated? (#)

The roles of BDFL, product manager, framework manager, and release manager have commit access and are collectively referred to as "core committers" (or "branch maintainers" for a specific major Drupal version). With the exception of Documentation, topic maintainers and subsystem maintainers do not have commit access.

How are patches committed? (#)

Core committers work together to provide timely feedback on all issues that are marked "Reviewed & tested by the community" (RTBC), either reviewing and committing patches or setting an issue back to "Needs work" (NW) or "Needs review" (NR) for additional work or (in the case of significant changes) for missing signoffs.

For the current development branch of Drupal, committers work together to provide feedback on issues in the RTBC queue as soon as their availability permits. For stable branches, committers may leave issues at RTBC for a longer period to ensure they are adequately reviewed by others.

Committers will sometimes assign an issue to a different committer who has more expertise for that issue or whose signoff is needed.

What is a "provisional" maintainer? (#)

A "provisional" maintainer is a maintainer who do not yet have full authority for their role, but is working alongside the primary maintainers with the aim to become a full-fledged maintainer in the future. "Provisional" product, framework, and release managers can perform the same sign-off duties as core committers, but do not yet have commit access.

Are maintainers required to have any particular skills/expertise? (#)

No. Maintainers can rely on others from the team to support them in areas where they have less expertise. For this reason, it is valuable to have a range of technical skills on the team, but there are no specific requirements like "at least one of the product managers must have a design/UX background" or "one of the architects must be a performance or front-end engineer".

Are there any provisions for various maintainers like "no more than X people from a certain company"? (#)

No. In general, maintainers consult others for any significant decision; see How are decisions made? above. Since decisions are made through a system of signoffs and consensus rather than by vote, this mitigates the effect of any one group having a larger majority. If there are concerns about a maintainer making biased decisions on behalf of a particular employer or audience, these can be escalated "up the chain" to the next level, up to the BDFL, or in a worst case scenario up to the Community Working Group. (If there are simply objective concerns about a specific decision, a followup issue should be filed instead.)

What's the difference between a "Product manager" and a "Usability topic maintainer"? (#)

A product manager sets forth the "vision" for what Drupal will look like, and decides on its feature set. A Usability maintainer helps maintain that vision by enforcing usability guidelines and providing usability feedback in their patch reviews. It's expected that the product managers and usability maintainers will work closely with one another, by drawing on each others' expertise.

What's the proper way to add myself as a maintainer? What's the proper way to step down as a maintainer? (#)

In either case, file an issue in the "Drupal core" issue queue with the "Project governance" issue tag. If stepping up, it's helpful to list a few issues you've helped with recently to demonstrate your track record. If stepping down, it's helpful to recommend another person to take your place (when possible).

I disagree with a patch that was committed, and it introduced problems with an area of core I am responsible for. What should I do? (#)

Cross-post a followup issue explaining your concern and reach out to the core committer. For urgent or critical regressions, reopen the original issue and request a revert.

Doesn't this structure add all kinds of overhead to the committing process? (#)

While it's possible that this process may introduce slightly more overhead, the intent is to simply formalize what is informally done anyway, and help make the decision-making process explicit so both contributors and maintainers know what to expect and who to talk to if they're stuck. Also, formally spreading sign-off responsibilities to the various parties will hopefully result in fewer RTBC patches being rejected by core committers and a faster and more efficient process for everyone overall.

Appendices

(#)

Appendix: Responsibility assignment matrix (#)

The following Responsibility Assignment Matrix illustrates the Drupal core decision-making process.

While the most common format for such matrices is RACI (Responsible, Accountable, Consulted, and Informed), this table uses a variation called PACSI (Perform, Accountable, Control, Suggest, Informed), which more closely matches the collaborative nature of our culture.

Key

Perform (P)

The role(s) that carry out the activity.

This is placed in the column of the role(s) that predominantly drive those changes, but this doesn't preclude other roles from also carrying out work.

Accountable (A)

The role(s) ultimately accountable for the correct and thorough completion of the task, and often the ones who delegate the work to the performer (P).

Control (C)

The role(s) that review the result of the activity (other than the Accountable, A). They have a right of veto and their advice is binding.

Suggest (S)

The role(s) consulted for advice based on their expertise. They provide non-binding advice.

These are role(s) whose input via two-way communication is actively sought, though this does not preclude others from making suggestions.

Informed (I)

The role(s) that must be informed of the result of the activity.

Matrix

Note that if a change includes multiple rows in this table, there will be multiple roles involved.

PACSI representation of decision-making process outlined above.

* The BDFL may proactively make or override these decisions if they deem it necessary.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

webchick’s picture

For those who'd prefer to comment on the Google Doc version it can be found here: https://docs.google.com/document/d/1xDYdseCae9RWGScFmrKkf_d6TkwLR_GoyAui...

Dries’s picture

Issue summary: View changes
dawehner’s picture

Thank you for posting that post without the word leader in it. Highly appreciated!

Documenting which process we have, absolutely makes sense, as it makes it easier for new contributors to understand what is going on.
I really like the structure of IO.js, because it has a much lower bus factor.

If a change doesn't significantly impact any given area of Drupal, it simply needs a peer's sign-off.

So, basically this is about formalizing what already happens many times.

If the change significantly impacts any area covered by a topic maintainer, that topic maintainer needs to approve or refuse it.

Can we make the text more clear and describe that it should be based upon a reason?

a timely manner,

Odd, that fragment link doesn't work. Based upon that, we should be clear, that single maintainership is problematic, as it causes way easier burnouts, due to being
the only person, having to deal with conflicting interests, for a particular subset of issues.

Once a change has the required sign-offs, any core committer may commit it.

I'm curious, will this be supported by Drupal.org in some way, so will it be for example possible to have a look at the most recent signed off issues, and for each individual, will there be clear
markers that something is signed off / has to be signed off? I'm thinking about new people coming into the community,
if we adapt this framework, we want to make people it as clear as possible, and fast, what basic principles we care about. I think we don't want to introduce an informal formal structure.

Note: This issue has 8.0.x as version, so it will apply in 2 weeks? The issue just talks about documenting it, which work

Alright, two more core committers

Note that if a change includes multiple rows in this table, there will be multiple roles involved.

There should be tools not requiring everyone to remember that. If issues are aware of their significance, some information about the next step, could be presented to the contributor.

xjm’s picture

Issue summary: View changes

Just fixing the "timely" link per @dawehner's comment.

xjm’s picture

Based upon that, we should be clear, that single maintainership is problematic, as it causes way easier burnouts, due to being
the only person, having to deal with conflicting interests, for a particular subset of issues.

Very true! How exactly to get more than single maintainers in a given area (or any at all in many areas) is of course the 90% of the work we have to do once the 10% work of improving the process is done.

I'm curious, will this be supported by Drupal.org in some way, so will it be for example possible to have a look at the most recent signed off issues, and for each individual, will there be clear
markers that something is signed off / has to be signed off? I'm thinking about new people coming into the community,
if we adapt this framework, we want to make people it as clear as possible, and fast, what basic principles we care about. I think we don't want to introduce an informal formal structure.

I think this is great feedback, and I also think it'd be really, really good if our issue queue surfaced this decision-making to contributors. Committers and other reviewers have suggested a desire for "checklist" functionality for issues in the past. However, making improvements to the issue queue of course takes work, and plus there's the fact that since this is specifically for core, we have to be careful for how we impact contrib with any changes we make to the issue queue. So I think it's just the issue tags for now. But +1 for making it more explicit on d.o somehow.

xjm’s picture

Can we make the text more clear and describe that it should be based upon a reason?

Should we link the objective criteria FAQ in that section somewhere? Does that address it? There is also the how to sign off section which implies (but does not explicitly state) that the maintainer should document the reasons for the signoff (or lack thereof) on the issue.

xjm’s picture

There should be tools not requiring everyone to remember that. If issues are aware of their significance, some information about the next step, could be presented to the contributor.

Also a good point. I think that what mitigates this for now is that most of the responsibility for making sure the steps were taken falls to the committers -- i.e. if something was missed, it's their job to catch it and let others know on the issue. (Same as now really.) But a better way is definitely possible with improvements to our tools.

dasjo’s picture

Thanks for putting this all together!

I know that a birds eye view is essential to understand the whole piece, though my first thought was if it was more intuitive to use turn the order around. If the guide could start with what a single contributor may do on their own and when upper authorities come into play might be a good second way to look at this? Just thinking out loud, not that I have the picture fully in my mind...

dawehner’s picture

Very true! How exactly to get more than single maintainers in a given area (or any at all in many areas) is of course the 90% of the work we have to do once the 10% work of improving the process is done.

So i'm curious whether we could expand the text to something like:

Subsystem Maintainers: Maintainers of one particular part of Drupal core, such as the Entity system or Comment module. In order to avoid burnout and conflict
there should be at least two people taking care of it, at the same time.

But +1 for making it more explicit on d.o somehow.

Let's create an issue to discuss that, because I think its an important part of the onboarding process: #2458333: Design / discuss how to help people understand the formal structure of Drupal core but not directly impacting this.

Should we link the objective criteria FAQ in that section somewhere?

Well, for me its missing the part where people turn on their brain and find rational arguments beside written down rules.

catch’s picture

If the guide could start with what a single contributor may do on their own and when upper authorities come into play might be a good second way to look at this?

That would be a useful way to present this. Also ties in with how the issue queue is day-to-day (i.e. more of a funnel/sieve).

jhodgdon’s picture

Just to amplify what I think has at least partially been said above:

Those of us who are performing Maintainer roles (component, subsystem, etc.) need to have better tools on drupal.org Should we start another issue to discuss the tools we need?

I think we also need to think about who maintains what components in what versions of Drupal.

Specifically... Currently, I rely on a *large* set of bookmarked drupal.org issue searches to manage my responsibilities, and it's very clumsy. This proposal would greatly increase the number of bookmarked searches I'd need to look at, and I'd need to look at them at least once a week in order to comply with the requirements in this document, I think.

Here are the searches I would need to be doing:

a) Issue triage (subsystem/topic maintainer): I would need to see a list of all issues in all components I maintain or co-maintain, for the versions in which I've agreed to be the maintainer. Ideally this would be one link that would contain (currently) all issues in Search module for Drupal 8, Documentation subsystem for all versions, and Transliteration component for Drupal 8. Currently this is 3 separate bookmarked searches. I'd like to see it as one page. And this doesn't count the other components that I'm unofficially kind of watching, like the Help module, the Tour module, etc.

b) Sign-off (subsystem/topic maintainer): I would want to see a separate list of all the issues I need to sign off on. These would be:
- Issues tagged "Needs documentation review", independent of component and version
- Issues tagged "Needs subsystem maintainer review" in either the Search component or Transliteration component for Drupal 8.
Again, this would currently be 3 separate bookmarked searches. I'd like to see it as one page that I would look at daily in order to provide timely feedback on these rather time-sensitive sign-offs.

Ideally, I think that the best way to provide this might be to make a UI where any Drupal user could set up an issue search with and/or logic, and let each of us create multiple search pages. I really don't want the Triage stuff mixed in with the sign-off stuff -- I might not look at the Triage page as often or treat it with the same urgency. But at the same time I don't really want to double the amount of bookmarks I need to look at in order to be a good Maintainer. The tools we have now are crude and not supporting these roles very well.

webchick’s picture

A spin-off for Drupal.org tools improvements to support this proposal sounds like a fantastic idea.

jhodgdon’s picture

Another problem: vacation. As a sub-system and topic maintainer, and without a co-maintainer at least for Documentation, I do not think I can commit to the responsibility of always providing feedback on "needs $whatever review" issues within one week. I am not always available, and even for the components where there are co-maintainers, I do not want to have to coordinate vacations with my co-maintainer(s). What can we do about this?

jhodgdon’s picture

webchick’s picture

Vacations are attempted to be addressed by point #5 in the decision-making process:

"If a subsystem/topic maintainer sign-off is not given in a timely manner, or if sign-off is not possible because the patch was authored by those who need to provide sign-off, it gets escalated to the core committers."

Basically, same as now.

jhodgdon’s picture

OK I filled in #2458505: Need better issue search tools to support new Drupal Core governance structure to address the issue search tools. Someone else can write up the "checklist" idea. ;)

jhodgdon’s picture

Regarding vacations and #13/#15... Maybe we need to put something about this in the Responsibilities section or in the FAQ about "timely manner". It currently says in the Subystem Maintainer section that maintainers need to provide "prompt feedback", and to me, the wording about "if it's not provided in a timely manner" in the "how it works" section sounds like this case is a fallback in case of a failure of some sort instead of a normal occurrence.

We're all volunteers here, and there is no way we can realistically commit to being available at all times to provide feedback promptly... But the way things are worded, it sounds like we're shirking our defined responsibilities or failing in some way if we don't, rather than it being OK.

Anyway. Just a small thing in an otherwise great proposal!

mikey_p’s picture

I can't really put my finger on it, but the matrix at the struck me as somewhat depressing – almost all of the "performs' tasks fall on the 'core contributor' which isn't even defined in this document. I'm concerned that with people feeling burnout and core development slowing to the point that the DA is funding core development, this mentality is going to make core contributors feel even more pressured.

I'm further concerned about how that will be viewed in light of the new core committers and maintainers listed. 4 of the 6 core committers are now Acquia employees and our BDFL is the founder of the company. I'm not trying to question their leadership, decisions, or contributions, rather I'm concerned about the way that this could be perceived by the community. In the past there have been concerns about Acquia's influence over Drupal, and the affect that had on the community was discouraging to contributors, and this feels like it could perpetuate more of the same concerns.

If I were a total cynic, I would read this policy and conclude, "Well Acquia is taking greater control of core, and they expect 'core contributors' to keep doing all the work for them." I'm not that cynical, because I know a lot of great people in the Drupal community and I know the core committers well, and I trust them. However that experience comes from knowing those core committers on a personal level, not any kind of policy or control structure.

I guess my question is this: What steps are being taken to ensure that a policy like this doesn't cause trust issues or perpetuate contributor burnout?

webchick’s picture

(EDIT: In reply to #17)

It's tricky though, because the people supplying patches are also largely volunteers. And when I asked a few months back on Twitter what burns people out from core development, patches sitting there with no one to care about them was #1 or #2 in the list. (The other one of #1 or #2 was lack of a clear decision-making process so check and check! ;))

The intent of this is to give subsystem maintainers a) a heads-up that something's going in that might need their attention, and b) a reasonable timeframe in which to say "wait! what about this?" But the intent is not hold up the entire committing process on their approval. Does that make sense?

So vacations are fine. How I would handle that as a product manager is if there were things saying "Needs product manager feedback" in my queue, I'd respond and let them know I'll be gone for the next N days and either a) I'd really prefer if this could wait until I get back or b) feel free to move along without me.

webchick’s picture

#18 is a great question and brings up a lot of good points. I want to thinker on it more.

The reason for the committer change-up as part of this document is Alex and Jess already effectively play this "provisional" committer role and have for months, but this is not currently transparent at all. We also have one core committer about to go AFK for 4+ weeks.

What I see happening after this policy is approved is Dries appointing additional people to the various "provisional" committer roles with the aim to make them full-fledged committers in a couple of months, after we kind of see how this process shakes out in practice. But you're right that in the meantime, this certainly has the risk of creating trust issues, particularly among those who don't have personal relations with the Acquians in this list to know that they're extremely high-integrity individuals.

mikey_p’s picture

Let me make it clear that I am excited and received to see Jess and Alex recognized for the work they already do, and I honestly can't think of any individuals in the community who would be a better fit for the role. I am grateful and I hope the rest of the community is for all the hard work they do, especially with getting hard issues unstuck.

I'm really much less worried about the issues with corporate influence of the project, and more worried about contributor burnout and how this policy (or even it's apparent interpretation) could affect that.

xjm’s picture

Thanks @mikey_p.

core development slowing to the point that the DA is funding core development

I just need to point out that this statement is fallacious. The momentum on core issues is higher than it has ever been in the past five years, whether or not issues sponsored by D8 Accelerate are counted (they are a small, but valuable percentage of the total work). D8 Accelerate is not a compensation for a lack of momentum; it is a way to provide focus and, well, acceleration specifically on tough release blockers. In D7, there were other ways that people were paid for work on nasty issues. The D8 Accelerate way is just (IMO) better. :)

jhodgdon’s picture

Also pointing out that @dawehner filed #2458333: Design / discuss how to help people understand the formal structure of Drupal core to discuss how to structure a checklist or something, so that contributors can understand the sign-off process. (Possibly so *maintainers* can follow this process too.) So we have two issues now about drupal.org improvements that would be useful to support these changes.

thamas’s picture

…finalize as a document in https://www.drupal.org/project/governance.

I think it is OK to maintain this information as a project but it should be placed in the Documentation section of drupal.org IMHO.

If I looked for information like this I would look for it in the Documentation section and would never thinking about it as a project.

jhodgdon’s picture

@thamas, that is good feedback. Where in the Documentation section would you expect the page to be? We can at least make a link there.

mpdonadio’s picture

@jhodgdon, how about a Dashboard block for this and similar topics, too? Or maybe just add it to the top of Contributor Links? The later may be better, as the people who would refer to it probably already have this block on their dashboard.

jhodgdon’s picture

@mpdonaido: Maybe. I don't use the dashboard myself, so I am not sure whether that would be useful or not.

xjm’s picture

I assumed that any Views for maintainer search would also be available as dashboard blocks.

Edit: I commented to this effect on #2458505-11: Need better issue search tools to support new Drupal Core governance structure which is probably the place to discuss it.

thamas’s picture

@jhodgdon I've just realized that there is a Governance page in the "About" section of the Docs: https://www.drupal.org/governance So it should go there, I think.

@mpdonadio If you are talkin' about displaying this information to the users, I think it is useful, but not enough. We should think about not registered / logged in users too. If you are talkin' about something else than sorry. :)

davidhernandez’s picture

+1 to anything that gets this out of tags into fields or something readily available on an issue. I've already had to come back here several times, because for the life of me I can't remember "framework manager".

xjm’s picture

I've closed #2050451: Formalize the role of core component maintainers as a duplicate of this issue.

xjm’s picture

Also linked some existing issues:

We should also retag all the issues tagged with Component maintainers to "Project governance" instead (aside from the d.o issues which can probably just be untagged and referenced as related issues). That can happen right now, even before this policy is finalized, if anyone is bored on their lunch break. :)

Crell’s picture

Huge thanks to everyone who's been involved with this so far! Formalizing this structure in a clear fashion is the first step toward improving our overall Contributor eXperience. (It's the cool thing to make everything an eXperience now, isn't it?)

Some additional comments:

- As others have noted above, additional Drupal.org tooling will be enormously helpful in ensuring the various *Maintainers are able to do their jobs, and ensuring everyone else understand who is responsible for and has authority regarding what. As there's already another thread for that I won't add more here other than +1.

- Traditionally, the non-Dries non-subsystem maintainer(s) have changed with each release. The document is mum on whether that is intended to still be the case going forward. Is it? Should we clarify which roles are expected to be per-major and which are indefinite and which are "whatever" (eg, subsystems)?

- The doc implies that the Product Manager, Framework Manager, and Release Manager are always core committers. While that makes sense for the Framework and Release Managers, I'm not sure about the Product Managers. Our current PMs are both code-savvy and Git savvy (even if it took Dries a while on the latter. ;-) ), but I can certainly envision a situation where we have someone who is an excellent product-level visionary with good user-understanding, sense of the market, and organizational skills but who is totally lost on PHP code. Those skills are sufficiently distinct that while they currently overlap we should not presume they do, and leave the door open for non-developer Product Managers. (Part of not making non-devs second class citizens inadvertently.)

- "Provisional" as a name sounds weird. From the description it's really an apprentice position. Would that be a better term?

- I suspect this formalization will succeed or fail based on the success of working out the nuance between the Committer-level maintainers and the subsytem maintainers. The document leaves much of the nuance there unsaid, which is reasonable given that there's so much context-specific information that goes into whose job it is in edge cases to make a call on something. I don't have a specific recommended change here, just calling out that this will be an important relationship and evolving the cultural expectations around it (which right now are fairly thin and poor) will be critical.

- How aggressive can subsystem maintainers be on triage? I don't mean just in cases of status tug-of-war, but for instance I would wager that at least a third, maybe half, of the open issues on core right now are either no longer relevant (old versions, code has changed too far since it was last touched, feature no longer even exists, etc.) or are only open as a courtesy because someone felt that "won't fix" as a way to reject a feature "for now" was too mean/aggressive. (And therefore the issue has been in needs work or postponed for 5 years and now in category 1). I'm sorely tempted to go through at some point and just mass-close a whole crapload of issues that are not relevant now nor have been for a while (eg, anything still tagged Drupal 5), but the last time I tried a few years ago Angie took a ruler to my hands. :-P Is closing out, say, feature requests with a "no, not on the roadmap" something within a subsystem maintainer's purview?

- Initiative Coordinator is a more descriptive name than Owner or Lead for what the job description reads as, so that's an improvement. However, at every DrupalCon of the last 3 years it's been fairly well agreed that Initiatives need to not be single-person but have a formal and named team behind them with various roles. Should that be incorporated here to be forward-looking? (Or, will we even need initiatives post 8.0.0 since hopefully we won't have 10 massive rewrites going on at the same time ever again?)

webchick’s picture

Thanks a lot for all the excellent feedback so far. Going to attempt to synthesize it in advance of a meeting I have tomorrow with Dries, but please feel free to mention if I've left anything out.

  • No objections to documenting the process in general, so it's clearer to people (especially newcomers) how things work. Hooray! That's a good start. :)
  • dawehner made a suggestion to explicitly state that we should aim to have multiple at least two people in any given maintainership role, in order to prevent burnout and to ensure there are ample people available for unblocking a given decision.

    I think everyone would agree that this is desired, but this is also only really possible if we massively scale back the current granularity of subsystems, and let larger subsystem maintainers self-organize around "sub-sub systems" (for example, how the database maintainers are structured). Once this proposal is adopted, we'll have a guiding framework, that will enable a second chunk of follow-up work around updating MAINTAINERS.txt to make it both accurate and more manageable. (see #1854480: Remove inactive maintainers from MAINTAINERS.txt, #2050477: [META] Identify component maintainers for components with no maintainer listed in MAINTAINERS.txt for starters).

  • dawehner also voiced a concern that a certain subset of people might use this document to bludgeon people over the head with "I'm the boss of this"-style comments, rather than giving rational, objective reasons for why they're pushing back on a patch. His suggestion was to add some additional spelling of this out around any language about rejecting patches.

    I'm a little torn on that personally... I can see the logic, but it feels a lot like "babysitting," and if that kind of thing is happening a lot it's unlikely more words will stop it. Instead, it should really get escalated "up the chain" instead, as defined in the document (subsystem/topic maintainer/initiative coordinator -> core committer -> BDFL -> CWG), so I'd prefer to emphasize "what to do in case you disagree with a decision," personally.

  • There are concerns by dawehner/jhodgdon/Crell/others about putting this into practice without better Drupal.org tooling support, since there are more tags for maintainers to keep track of (#11 lays this concern out pretty well), and also because the path to get an issue to RTBC and commit is more complex without providing a "checklist" of sign-offs. These are both "pre-existing conditions," but they are exacerbated by the additional explicitness this proposal provides. #2458333: Design / discuss how to help people understand the formal structure of Drupal core and #2458505: Need better issue search tools to support new Drupal Core governance structure have been spun out to discuss these more. From the Drupal.org SWG meeting today, it sounds like it's unlikely these issues would get on the DA tech team's plate until later in the year, but they could potentially be handled through community-driven improvements sooner.
  • jhodgdon also suggested some wording under the "timely manner" part of how to deal with vacations, since those should be welcome and encouraged. There was a suggestion made on #19 on possible wording to handle this.
  • While the document originally began as guide for Maintainers, it evolved since then to covering the gamut of how core operates. As a result, dasjo pointed out that we could be doing more to emphasize the power of the individual contributor (which is actually quite substantial), perhaps by adding a section about them first-thing, before getting into the list of maintainers. mikey_p also cited this disempowerment as a concern. +1 from me.
  • mikey_p also raised some questions in #18 about how to deal with outside perception to the particular core committers who are suggested here and the company they work for. I'll try and talk with Dries about this tomorrow.
  • Crell raised a number of questions in #33, including:
    • Right now product managers are committers, but doesn't this leave out someone who is a product-level visionary with good user-understanding, sense of the market, and organizational skills but who is totally lost on PHP code?
    • - "Provisional" as a name sounds weird. From the description it's really an apprentice position. Would that be a better term?

      My response to that btw, is Docker called these roles "in-training" and we didn't want to call them that because of the lack of experience implied, when everyone who'd be in one of these roles would've most likely been a core developers for 3+ years. "Apprentice" has the same "lack of experience" connotation, so not sure it's better.

    • How aggressive can subsystem maintainers be on triage? Can they mass-close issues that are 5+ years old with "won't fix"? Is closing out, say, feature requests with a "no, not on the roadmap" something within a subsystem maintainer's purview?

      My response: I'd need to see the issue I ruler-slapped to understand the context... in general I don't think I have a problem closing out old issues, but if it's still a legit bug report (for example) that doesn't really make sense, as it risks losing a bunch of work that went into finding the solution. So IMO it's kind of case-by-case.

    • Crell asks a similar question as dawhener about initiative coordinators and making it explicit that we should always strive to have multiple.

      AFAIK Dries agrees future initiatives should have teams behind them so it's just a matter of whether we want to make that desire explicit in this section.

webchick’s picture

thamas, is there anything on https://www.drupal.org/project/governance (the canonical Git copies that are version-controlled) that's not on https://www.drupal.org/governance (the documentation section)? Or are you just suggesting we drastically shorten the project description to mainly a pointer to the docs, so there's not two places for the same info?

webchick’s picture

Ok talked with Dries today about the feedback so far. He's heading on vacation tomorrow, so paraphrasing on his behalf:

  • +100 to adding a section on core contributors, and emphasizing their importance.
  • Tools improvements are important, but shouldn't be a hard dependency.
  • For subsystem maintainers, it's fine to add a general goal to have multiple people holding each role given the benefits, but it should not be a hard requirement.
  • +1 for encouraging people to take time off, whether for vacations or simply because they need a break. This can just be an informal process.
  • Terms are deliberately kept unspecified because it allows re-balancing the team if necessary during 8.1.x or 9.x.
  • For product managers, it would be fine to appoint someone who focused predominantly on product management and didn't necessarily focus on committing, if that's the skillset of the best person for the job. Core committers can work out the distribution of committing amongst themselves.
  • +1 to "Apprentice," since that's a more accurate term. Someone can be an expert in general, but they're still learning the ropes on being a core committer (for example).
  • +1 to subsystem maintainers being empowered to tightly triage their queues, as long as they're providing sound rationale, and not stepping on any of the other maintainers. We might develop guidelines in the future if things go off the rails or if we really feel we need consistency across subsystems.
  • Initiatives should have a team, but there are different roles in a team, and generally only one coordinator. However, can add a sentence emphasizing the team aspect to initiatives.
  • Trust issues mikey_p brings up do need consideration, but generally appointing more core committers seems like it's of greater community benefit than not, regardless of who they work for.

I think that was everything.

I'll make another edit to the issue summary hopefully tomorrow that attempts to incorporate the feedback so far while still allowing more time for comments.

Dries’s picture

Thanks, Angie! You summarized our conversation well.

Thanks everyone for the feedback so far. Keep in mind that this will be a living document. If we missed a few things in v1.0, we can add or refine it in version v1.1, v1.2, etc. As with everything Drupal, we'll take the time to get it right in v1.0 but will continue to evolve the document over time based on what we learn.

thamas’s picture

@webchik I think it would be good to make more clear the goal of the project page and shortening that could be a good idea.

Also the project page says "Other governance policy documentation can be found at About Drupal: Governance." While I'm not a native English speaker I did not understand first that "other" here does not mean a different / additional documentation but it means an another "copy" of the actual information on project page.
(FYI I did not looked for differences and has no information about how the project page and the documentation page are kept in sync. But if it is done manually, that includes the possibility of mistakes.)

xjm’s picture

FWIW -1 on "apprentice"; I find it has the same demeaning connotations that "in training " did. Only one person has proposed that label, whereas several people already agreed on "provisional" over "in training".

davidhernandez’s picture

I agree with xjm.

webchick’s picture

Well, provisional in some ways has worse connotations: temporary, interim, etc. Implies people can be replaced at any point, more so than "on their way up." However, per #37 we can always change it later. :)

Les Lim’s picture

Re: "apprentice" vs "provisional" -- how about "assistant" or "deputy" maintainer?

mpdonadio’s picture

Isn't provisional used for secteam members who aren't full members yet?

alexpott’s picture

Implies people can be replaced at any point

I've always assumed that this was the case. Maintainership with commit access is at the BDFLs discretion and so (i guess) is the removal of a maintainer with commit access

@mpdonadio yep provisional is used by the secteam.

Crell’s picture

Not to go too far off on a tangent, but I see nothing "demeaning" in "apprentice". If anything, OSS and programming in general needs a stronger apprenticeship/mentoring mindset. It's a learning and training role, which is exactly what I understand we're describing here.

Developers in general could stand to use a bit more humility. (And I do not exclude myself from that statement at all.)

markhalliwell’s picture

+1 #45. Given that we already have core mentors, "Apprentice" does seem the more logical word. However, given the context of which all of this is related to, "Tentative" seems the more appropriate word. "Provisional" implies they're standing in for someone and will eventually relinquish said role, not ultimately (and more than likely) advance to full status membership.

dawehner’s picture

Well, as a non native speaker I neither was aware of the meaning of "Apprentice" nor "provisional", but at least for the second word you can guess the meaning.
We want to be inclusive, so let's try to use simple words.

Some other ideas: representative maintainer, supportive maintainer. Some other idea you could think about is going back to the notion of teams, also for subsystems.
Another idea: "Call it subsystem team membership", which makes it IMHO quite clear that we don't talk about a hierarchy but rather a set of individuals working together.
All that leadership thinking is horrible in so many ways, kill it with fire!

benjy’s picture

Call it subsystem team membership

I like the concept of teams, +1 to this.

YesCT’s picture

during the mentoring meta meeting, we realized that there was a part of maintainers.txt that we did not notice before #2465617: [policy, no patch] Documenting Drupal Core Mentoring lead responsibilities

webchick’s picture

Issue summary: View changes

Ok, made (I think) all of the non-controversial changes outlined in #34/#36.

"What is a core contributor?" is a longer thing so to avoid death by issue summary updates, added that here https://docs.google.com/document/d/1Vd_Ss1pKUGx2JQB30lcBxOpRSTxvxCIDQq0w... for us to bang on for a few days. I've turned on commenting access for everyone.

I kept Provisional alone. It sounds like it's something we could always discuss in a sub-issue if enough people feel strongly about it, given the "living document" aspect of this pointed out in #37.

I do not think "subsystem team membership" works, however, so I did not add that change. For one, because Dries stated that although a team behind a subsystem is great for all the various reasons, it is not a requirement. And for two, check out all of the ?s in MAINTAINERS.txt sometime. :) We're not currently set up at all for subsystem teams giving our overly granular subsystem definitions atm. Once we've fixed that problem, maybe we can revisit this idea in a later revision.

I also have to confess I'm a bit mystified on the nervousness/concern around the word/concept of "leader." Because let's face it: we do have lots of leaders in our community (or "people with more karma than others" or "people who've been around longer than others" or however you choose to phrase it). This is a by-product of the "do-ocracy" way in which the Drupal community is empowered to make changes. Not making those people who the community looks to for guidance explicit turns into the tyranny of structurelessness where only those deeply involved have any idea how the whole core development thing actually works and how to get their patches through. That's one of the things this document is explicitly trying to help fix.

webchick’s picture

Issue summary: View changes

Now cleaning up some stupid HTML things that I noticed when I was doing that. :P

webchick’s picture

Issue summary: View changes

Sigh. I really wish Google had a "do not ever copy my organization URL to a public doc" option. :P~

Crell’s picture

webchick: As I understand it, dawehner's concern with "leader" is not about "people in positions of explicit authority and responsibility" but a bit of cultural linguistic baggage. (Remember what country he's from; I didn't get it either until he pointed that out to me.)

Also, the pop business press is filled with "how to be a leader" articles, all of which are utter BS when you get right down to it so the word has sadly gotten rather diluted. :-)

YesCT’s picture

I would recommend removing obviously from
Obviously, maintainers can and should take time off, whether for vacations or just because they feel the need to.
and make it just
Maintainers can and should take time off, whether for vacations or just because they feel the need to.

webchick’s picture

Issue summary: View changes

Agreed.

webchick’s picture

Issue summary: View changes
Status: Active » Reviewed & tested by the community

Ok, didn't see any critique of the definition of a core contributor in the past couple of days, so formally incorporating that into the issue summary.

Also tentatively marking RTBC, as most of the recent discussion has been around specific wording improvements, rather than about the overall concept, and as Dries noted in #37, the specific words can (and will) be improved over time.

Thanks, all!

Dries’s picture

Status: Reviewed & tested by the community » Needs review

Thanks all of the thoughtful discussion here.

I went ahead and added Alex B and Jess as committers. Congratulations!!

I'm also ready to commit the governance policy document, but I think we should discuss a bit more about where this document should live.

Given that I'm responsible for maintaining the policy and the names, I'd strongly prefer to have the document live in Git so we have some access control and history as to when changes were made and why.

I see three options:

  1. Add it to the Governance repository, with the other governance charters. This would be consistent with other governance docs, but inconsistent in that MAINTAINERS.txt is in the core repo.
  2. Add it to the core repository as GOVERNANCE.html, but that is inconsistent with the other docs here, which are text files. The additional problem is that the document risks getting outdated in older branches; policy changes would need to be backported.
  3. Add the policy in the Governance repository, but add the names to MAINTAINERS.txt or something equivalent.

I'm leaning towards #3 but would love your thoughts.

webchick’s picture

#3 sounds good to me too. The names *will* be different per-version most likely.

Fabianx’s picture

+1 to #3

webchick’s picture

Assigned: Unassigned » webchick

Ok, let me do a bunch of annoying formatting again. :)

webchick’s picture

Issue summary: View changes
FileSize
4.61 KB

Ok, membership/provisional membership removed from the HTML. Here's a patch to MAINTAINERS.txt that:

- *Adds* new names (leaves the old ones there to sort out later)
- Switches the role labels to be consistent with the doc.
- Moves node access and translations to a subsystem, rather than topic, since the list of topics was explicitly intended to match the gates. We'll clean this up in a follow-up to fix subsystems.

webchick’s picture

Assigned: webchick » Dries

Back to Dries. :)

alexpott’s picture

Status: Needs review » Needs work
+++ b/core/MAINTAINERS.txt
@@ -171,15 +197,17 @@ Theme system
+Topic maintainers ¶

Space at the end of the line.

webchick’s picture

Status: Needs work » Needs review
FileSize
378 bytes

Dang it. I thought I got all of those. Thanks.

webchick’s picture

BLAH.

webchick’s picture

FileSize
4.61 KB

DOUBLE BLAH.

The last submitted patch, 65: maintainers-governance-blah.patch, failed testing.

The last submitted patch, 64: maintainers-governance-blah.patch, failed testing.

tim.plunkett’s picture

  1. +++ b/core/MAINTAINERS.txt
    @@ -3,25 +3,46 @@ encouraged to submit issues and changes (patches) to improve Drupal, and to
     - Dries Buytaert 'dries' http://drupal.org/user/1
    

    Does Dries get a (Something something) added below his name?

  2. +++ b/core/MAINTAINERS.txt
    -- Nathaniel Catchpole 'catch' http://drupal.org/user/35733
    +information on their responsibilities, and to find out how to become a subsystemmaintainer. Current subsystem maintainers for Drupal 8:
    

    subsystemmaintainer is where this should be split across two lines

alexpott’s picture

@tim.plunkett... (BDFL)?

plach’s picture

This is really awesome!

Suggested addition for the FAQ section:

Do I need to be named Alex to be a Framework Manager?
You don't have to, but statistically it helps.

@eff++ :)

webchick’s picture

LOL :)

Here's an update for #69/70, thanks!

YesCT’s picture

Applied it to look at it in context and looks good.

Right now, provisional membership line is at the end of a group, we can see later how best to list provision people once we start actually documenting them.

YesCT’s picture

Issue summary: View changes

In the issue summary, added html link # next to "What is a core contributor?" for symmetry with other sections.

YesCT’s picture

Status: Needs review » Reviewed & tested by the community

I looked it over and could not find anything wrong with it, I even applied it and looked at it context, and it also still applies.

fgm’s picture

Something strikes me as conspicuously lacking : the governance of everything security related. Indeed, the security team might well be the most formalized structure we've been having for long, but that does not seem to be a reason not to include its governance here : there are references to it at various places in the document, but nothing about the team itself.

Should it not be included in that overarching document in some way ?

webchick’s picture

It could, though the Security Working Group has its own charter, and it is not specific to core. See http://cgit.drupalcode.org/governance/plain/charters/security-working-gr... and https://www.drupal.org/governance/security-working-group

fgm’s picture

These charters do indeed exist, and existed before this document was elaborated. But it still seems not-so-logical not to describe the SecWG and Security Team governance in this document, since it is (AIUI) a general framework to provide a reference for governance on Drupal core. Even though, as you mention, the SecWG (and Security Team) also have responsabilities outside core: at least referencing them, providing pointers to their own specific procedures, and their place in the grand scheme of things, even as "somewhat separate" entities, would make the document more consistent.

mparker17’s picture

Some of the issue tags used to alert maintainers that a signoff is needed are already in use, so I updated the Special issue tags documentation.

mparker17’s picture

Issue tags: +Needs documentation

Note that the following special issue tags don't exist yet and will need to be created (and the special issue tags documentation will need to be updated to link to them):

  • Needs documentation review
  • Needs performance review
  • Needs release manager review
  • Needs testing review
webchick’s picture

I would say go ahead and document them (and thanks for doing that!). They'll automatically get created the first time there's a reason to use one of them.

Also spun off #2492533: Figure out how to reference the security team in the core governance docs for #76/78 so we can discuss the best way of doing that without expanding this issue by another 20+ comments. Dries will have time on Friday once again to look at this and I'd love to get the policy itself formally documented so it's public before we start tweaking things.

mparker17’s picture

I would say go ahead and document them (and thanks for doing that!). They'll automatically get created the first time there's a reason to use one of them.

They've already been documented! :D

What I meant to say is that, once the terms have been created for the first time, the documentation page will need to be updated to link to the terms (they currently have <a id=""> wrappers, but we'll have to add the href attributes).

mbrett5062’s picture

Hmmm I may be wrong, but should the issue title be changed from:

[policy, no patch] Evolving and documenting Drupal core's structure, responsibilities, and decision-making

to:

[policy] Evolving and documenting Drupal core's structure, responsibilities, and decision-making.

As we actually have an RTBC patch attached??

mbrett5062’s picture

+++ b/core/MAINTAINERS.txt
@@ -3,25 +3,47 @@ encouraged to submit issues and changes (patches) to improve Drupal, and to
+core committers for Drupal are (per major version, in alphabetical order):

D8 list is not in alphabetical order

mbrett5062’s picture

Title: [policy, no patch] Evolving and documenting Drupal core's structure, responsibilities, and decision-making » [policy] Evolving and documenting Drupal core's structure, responsibilities, and decision-making
Status: Reviewed & tested by the community » Needs work
alexpott’s picture

@mbrett5062 I thought it was in alphabetical order by surname?

penyaskito’s picture

Offtopic, but worth to know for inclusivity: http://www.w3.org/International/questions/qa-personal-names#sorting

mbrett5062’s picture

Status: Needs work » Reviewed & tested by the community

@alexpott of course you are correct, my bad. Have reviewed further and is indeed RTBC.

Sorry for the noise.

jhodgdon’s picture

You know... There's one thing missing from this document that I think is kind of important... could be a follow-up issue too. Maybe it belongs in the Skills topic in the FAQ, and maybe it's a separate topic, and maybe it doesn't belong in this document. But I think we need to address the question of tone in responses to issues.

I know that we have general guidelines in the Drupal project (the Code of Conduct) about respect and politeness... But when someone in a position of some authority, such as a Drupal Core maintainer (of any of the various types listed in this document), makes a comment on an issue, it automatically carries extra weight beyond what a regular contributor comment would. So it seems to me that as Maintainers (again, of any type), we have an extra responsibility to keep the tone not only civil and polite, but to add an extra dose of patience, respect, and appreciativeness to our comments.

This is sometimes difficult. For instance, I am often faced with an issue where I've made the same patch review comment several times, and the problem still isn't fixed in the way I would like to see. It's often quite frustrating to be a reviewer/maintainer. But I try to start my next comment with "Thanks for the new patch! This still needs some adjustment to comply with the standards on (specific link):" or something like that, rather than "I've said this 5 times already and it still isn't fixed!!!". Or maybe it's just something I see over and over on different patches, but probably this particular contributor doesn't know about this common problem. In this case, I need to be extra sure not to convey my frustration of "this same problem again!!!" to the new contributor (or even to an experienced contributor who I know has made this same mistake before... it's not like I never have typos or lapses myself!

So...

That is a bit wordy, but... My specific suggestion would be to add something like this to this document:

----

Tone in issue responses

An issue comment from a Maintainer (of any type listed in this document), when commenting on an issue in their area of maintainership, will automatically be perceived as carrying more weight than the comments from non-maintainer contributors. Because of this, besides following the Drupal Code of Conduct (expected of any contributor), maintainers need to take extra care in their comments to be:

  • Appreciative of the time and effort put in by the other issue contributors.
  • Respectful of the knowledge, expertise, ideas, and opinions of the other contributors.
  • Constructive and gentle in offering suggestions for how the patch or idea can be improved, including links to instructions and standards documents if applicable.

---
And then maybe we should make sure that both seasoned and new maintainers are specifically reminded of this guideline periodically, because we can all use the reminder now and then... or maybe reminded of the document as a whole? But this is really important -- violating it can drive both new and seasoned contributors away.... Maybe it should be part of that Skills bullet in the FAQ, not sure.

xjm’s picture

@jhodgdon, I think that's a great suggestion.

Dries’s picture

Committed the updated MAINTAINERS.txt. Thanks Angie! Will commit the governance policy next.

  • Dries committed 2d586a1 on 8.0.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...
mpdonadio’s picture

I think #89 is a good idea, and I may be going even more tangential here to the actual, but what gets confusing at times is when reviews/comments are made by people outside their "authority", and also it isn't always apparent to new contributors when an authoritative comment is coming from a maintainer. As a worker-bee in most of my contributions, I have been stuck in this situation several times (and ironically, I think the last one was related to an issue @jhodgdon was driving forward :) but not in an area where she is listed as a maintainer). I know who to pester in situations like this, but knowing who-is-who and what they do takes time to learn.

jhodgdon’s picture

Yeah, that's a good point. I am only a partial "authority" when it comes to Documentation, Search, and Transliteration. On other issues, I'm a regular contributor. It may not be clear which "hat" I'm wearing... although MAINTAINERS.txt would be the central place to look.

Dries’s picture

Status: Reviewed & tested by the community » Fixed

I just committed the governance document to http://cgit.drupalcode.org/governance! It's a big deal so thanks for all the work and feedback on this everyone, especially Angie who help me drive this home!

There are a few things we have to follow-up on still but I recommend we do that in follow-up issues.

webchick’s picture

I love the suggestion in #89 and it sounds like other people do too, so spun off #2493659: Add language about maintainer conduct in the core governance doc to discuss that explicitly.

David_Rothstein’s picture

Version: 8.0.x-dev » 7.x-dev
Status: Fixed » Patch (to be ported)

The MAINTAINERS.txt changes are needed in Drupal 7 too.

And now that this policy is officially in place, it's time to start thinking about additional core committers for Drupal 7 also. I think at least two more are needed (one regular committer, and one provisional). It' s not clear to me whether the self-nomination process is for people who are interested in being core committers or only for people interested in being regular maintainers, but assuming the former, https://www.drupal.org/node/add/project-issue/drupal?version=7.x-dev&tag... is the place to do it if you are reading this and are interested in self-nominating. Otherwise, I'm sure I could come up with suggestions :)

David_Rothstein’s picture

By the way, is the final policy linked from somewhere?

I do not see a link to it at https://www.drupal.org/project/governance even. I had to dig around a while to find http://cgit.drupalcode.org/governance/plain/drupal-core.html?id=refs/hea... (the link I used above) which I guess is the best place to see the current version.

webchick’s picture

Oops. Quite right. Mirrored in the handbook at: https://www.drupal.org/governance/core

Also I think self-nomination works for any maintainer, though most core committers are appointed "top-down." So if you have specific suggestions for extra D7 core committers (+1 to that!) maybe also try reaching out to Dries directly.

webchick’s picture

Also, since this is at least the second time this came up, radically shortened https://www.drupal.org/project/governance to basically just point over to https://www.drupal.org/governance which is the actual canonical place.

dawehner’s picture

In general, when an issue is tagged as needing a particular signoff, it is the responsibility of the maintainers for that role to provide feedback within one week.

Let me quote that line. It would be great if this would be applied not only to maintainers of certain subsystems but also to people higher up in the tree

#2057767: [policy, no patch] Revise the Druplicon logo now burns out actively contributors, which put a LOT of effort into that issue. Fairness should be applied across the community

jhodgdon’s picture

@dawehner: That issue does not, as far as I can see, have one of the specific tags listed here that says it needs XYZ type of maintainer signoff that was missed.

Or are you referring to it being RTBC, and saying that any RTBC patch should get replied to within a week? That seems like a reasonable thing to add to the guidelines here, but I think maybe it should be a new sub-issue?

Also I see that your post here alerted webchick and Dries that action was needed and they did respond, but that doesn't change the underlying problem that it was sitting for quite a while first... but to be fair, the issue does not have one of the tags on it that says "This needs a specific type of maintainer feedback", so I don't think it falls within the guidelines here.

webchick’s picture

Right, it's also a feature, and it's well publicized that those do not get focus/attention during the lead up to release. So that particular issue definitely is in a bit of a grey area, not an indication that participation expectations don't propagate up the tree.

davidhernandez’s picture

One thing I'm not clear on is how to manage the process when multiple components are involved.

I read this:

If a patch significantly impacts a single subsystem, the maintainers of that subsystem must be given opportunity to sign off.

then this:

If the change significantly impacts multiple subsystems, or represents a significant change in architecture or public APIs, the framework managers must approve or refuse it.

It reads like if the change is confined to one component the maintainer can reject the change (the approach, whatever,) but if it involves multiple components only the framework maintainer can do that? According to the matrix the subsystem maintainer has C/A (control/accountable) but with multiple they switch to S (suggest.) Without C, they lose the right to veto a change to their own component.

I started this thinking about a different question, though. How do we directly notify multiple component maintainers. We are suppose to use this tag, correct? Needs subsystem maintainer review (within the particular subsystem's issue queue)

But, how do we get the attention of a maintainer of another component? Pinging them individually is not a good solution, because it assumes the person working on the issue is comfortable doing so or even knows how to get their attention. Also, if that is left for the framework manager to do, it might only happen very late in the process.

Lastly, the word "subsystem" is being used interchangeably with "component," though the summary is primarily using subsystem. Is everything that isn't a topic considered a subsystem? The maintainers.txt still has a clear separation between subsystems, and modules and themes. If we refer to everything as a subsystem, the label on the issue metadata should be changed.

jhodgdon’s picture

@davidhernandez: At this point, we've been asked to file follow-up issues for things that need to be updated (or that need further discussion) in this policy. #104 seems like a good one to discuss, but not in this issue. Thanks!

jibran’s picture

@larowlan wrote his thoughts on core process and roadmaps https://gist.github.com/larowlan/7864a8987e2ebbc24260. Just linking here.

xjm’s picture

Assigned: Dries » Unassigned

Doesn't need to be assigned to Dries until the backport is RTBC. :)

YesCT’s picture

opened #2590327: Fill out Provisional membership in maintainers.txt to fill out the provisional sections.

  • Dries committed 2d586a1 on 8.1.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...

  • Dries committed 2d586a1 on 8.3.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...

  • Dries committed 2d586a1 on 8.3.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...

  • Dries committed 2d586a1 on 8.4.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...

  • Dries committed 2d586a1 on 8.4.x
    Issue #2457875 by webchick: reorganized MAINTAINERS.txt for new...
quietone’s picture

Status: Patch (to be ported) » Fixed

I stumbled across this issue today while looking at various governance issues. This was committed back in 2015. It was reopened in #97 to "The MAINTAINERS.txt changes are needed in Drupal 7 too." That D7 version of that file has been updated many times since 2015. I think this can be closed.

If there are points that still need to be discusses, I think it will be best to open a new issue and refer to this one.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.