Try   HackMD

Part 1 - Core Team Rules & Guidelines

Version 2.0 2025-03-08

Preamble

This doc is not a rule-of-law but a point to start from for expectations of core team members. In general, our core team does all these things already, and prospective core team members should be meeting many, if not most, of the expectations below before joining.

Proposed changes to this document should be discussed with the entire team.

If you feel these expectations have not been met by a member, a private team meeting should be called for discussion.

Expectations

Members who regularly fail to meet expectations may need to be removed from the core team until they can agree to follow them again.

  1. Engagement is important, but balance is key. Prioritize your health, personal life, and other obligations as needed. The team understands that availability varies. Burn-out is real and we always want to avoid it. Focus on enjoying your Nushell experience rather than trying to stay on top of everything. There will be items that slip through the cracks every now and then, and while unfortunate, it's okay.
  2. Agree to the Code of Conduct
  3. Treat everyone on Discord and on GitHub with respect, irregardless of how they behave.
  4. Approach discussions constructively, assume good intentions, help others to do likewise when needed, and de-escalate conflicts when possible.
  5. No foul language. This isn't the place to demonstrate your lack of vocabulary and etiquette.
  6. Give grace even when it's not required. None of us are perfect and we all make mistakes.
  7. Keep all conversations about community members in Discord in DMs or the #core-team channel only.
  8. Exercise humility in all things.

Guidelines

Guidelines should be followed but there can be exceptions.

  1. Engage in key discussions in GitHub issues, PRs, discussions, and Discord channels, but don’t feel obligated to track everything. Focus on areas where you contribute most effectively while staying up-to-date on general project direction. This means following the core-team thread and anything in your area(s) of expertise, plus a general scan of design and user-feedback discussions.
  2. Always feel free to jump into the conversations on GitHub. No one is assigned any particular issues. However, some people have more expertise in certain areas.
  3. Be able to claim responsibility over, make decisions about, and work independently on some part of the project.
  4. Join team meetings as often as possible. Our regular design meeting is open to the public and occurs on Wednesdays 13:00/1pm Pacific Time (following US day-light-saving). When you can't be there please give the #core-team a shout, or a DM if it's personal, just so we know not to wait for you. We try to take notes, try to read them if you can't be there.
  5. If you are located in a timezone that doesn't allow you to join the team meetings this is not an issue. Feel free to propose agenda items even if you can't attend. We will try to update the meeting notes during and immediately after the call, but feel free to ask for additional info if needed.

Review and Development

  1. When reviewing PRs, focus on correctness, clarity, and maintainability. Suggest additional test cases when needed. The aim isn’t perfection — We just want to keep things moving in a smart direction.
  2. Encourage and mentor contributors by asking questions when necessary and providing feedback instead of just being the judge on whether things get approved or not. That new contributor may become a future core-team member with your help!
  3. @Tag other team members where you believe their expertise may be useful in discussions.
  4. Be aware that adding additional dependencies and features could/will slow down compile time.

Trust and Security

  1. Keep discussions of potential security vulnerabilities to the core team or trusted contributors.
  2. Coordinate with other members of the core team before making changes to GitHub or Discord roles/permissions, creating Nushell-related accounts, or creating projects or infrastructure changes that impact the Nushell ecosystem.

Stepping back if needed

We want to cultivate a core-team community that complies with these rules and guidelines but also let's you come and go freely as needed. See the "Voluntary Retirement" section below if you need to step back from the team.


Part 2 - Process for Nushell Core Team Membership

Profile of a Core Team Member

A strong candidate for the core team:

  • Demonstrates initiative in a particular area, such as:
    • Contributing patches and improving core functionality.
    • Building up a subproject or maintaining a specific feature area.
    • Contributing significantly to documentation, education, or community outreach.
    • Any other meaningful, sustained contribution that improves Nushell.
  • Has sufficient experience with Nushell to understand its architecture, goals, and development process.
  • Engages positively with the community, providing help, gathering feedback, and addressing user concerns.
  • Can guide development by reviewing PRs, discussing design decisions, and collaborating with other contributors.
  • Is able to lead projects independently while staying aligned with the broader team.
  • Takes responsibility for:
    • Merging PRs and making informed decisions on issues.
    • Serving as a trusted point of contact for the community (e.g., on Discord).
    • Moderating and facilitating core team meetings to ensure productive discussions.

Nomination Process

  • Core team members suggest excellent contributors who demonstrate both initiative in a specific area and broad positive engagement across GitHub, Discord, and meetings.
  • Candidates may also express interest in joining by reaching out to the core team.

Voting & Decision Process

  • The active core team considers the candidate.
  • Preferably, a private call is held for discussion and voting.
    • Enables members to raise concerns and discuss pros/cons off the record.
    • Members unable to attend can send endorsements or concerns through a trusted representative.
  • After a quorum of members vote in favor:
    • A designated team member reaches out to confirm the candidate's interest.
    • If the candidate needs time to decide, they can deliberate before confirming.
  • Upon acceptance:
    • They are invited to the core team channel.
    • They receive GitHub triage privileges (e.g., closing and labeling issues).
    • Full merge privileges are granted after a one-month period, during which they are encouraged to actively review PRs and receive feedback privately.

Retirement & Removal

Voluntary Retirement

  • Core team members may step down at any time if they can no longer commit to active engagement or move on to other projects.
  • A departing member is encouraged to notify the team in advance to ensure a smooth transition.
  • They become part of the core-team-alumni role on Discord.

Removal

  • Trust-based decisions: Removal due to trust concerns requires a vote by the other core team members.
  • Emergency cases: Immediate removal can occur if a member:
    • Distributes malware or other malicious code.
    • Has a compromised (hacked) account that poses a security risk.
    • Modifies user permissions without authorization in a way that could compromise the team.

Raising concerns

If you feel another team member is not meeting the expectations in Part 1 of this document:

  • If possible, discuss your concerns with the other team member.
  • If needed, raise the issue in written form and call for a private team meeting to discuss how to handle the situation. Enough advance notice for the meeting should be given to obtain a quorum. This will also allow members outside the regular meeting time-zone time to ponder the issue and the involved parties time to consider how they want to respond and make their case.
    • Members who cannot attend the meeting can make their views known in written form.